diff --git a/.bazelrc b/.bazelrc index 0f538d661b0da..c3cd5120eb517 100644 --- a/.bazelrc +++ b/.bazelrc @@ -6,7 +6,6 @@ run:ci --color=yes build --announce_rc build --experimental_guard_against_concurrent_changes -build --experimental_remote_merkle_tree_cache build --java_language_version=17 build --java_runtime_version=17 build --tool_java_language_version=17 diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 0000000000000..815da58b7a9ed --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +7.4.1 diff --git a/.github/workflows/integration-test-dumpling.yml b/.github/workflows/integration-test-dumpling.yml index 55d65a47dfb9f..a131a71abaec6 100644 --- a/.github/workflows/integration-test-dumpling.yml +++ b/.github/workflows/integration-test-dumpling.yml @@ -53,6 +53,7 @@ jobs: - 8.0.22 - 8.0.26 - 8.0.37 + - 8.4.3 runs-on: ubuntu-latest timeout-minutes: 15 services: diff --git a/DEPS.bzl b/DEPS.bzl index 74f9c36ae3bd0..4bfa40bf786a7 100644 --- a/DEPS.bzl +++ b/DEPS.bzl @@ -86,13 +86,13 @@ def go_deps(): 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", + sha256 = "6759eba4e53fed12c33e42de78038799e92f3f3e5862034ada96fb330da68478", + strip_prefix = "github.com/Abirdcfly/dupword@v0.1.3", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.3.zip", + "http://ats.apps.svc/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.3.zip", + "https://cache.hawkingrei.com/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Abirdcfly/dupword/com_github_abirdcfly_dupword-v0.1.3.zip", ], ) go_repository( @@ -164,13 +164,13 @@ def go_deps(): 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", + sha256 = "b90c25a0c08142b33ca82c81a4f9abdfd58ab553d09451e128538f90bd1a59c0", + strip_prefix = "github.com/alecthomas/go-check-sumtype@v0.2.0", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.2.0.zip", + "http://ats.apps.svc/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.2.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.2.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alecthomas/go-check-sumtype/com_github_alecthomas_go_check_sumtype-v0.2.0.zip", ], ) go_repository( @@ -216,13 +216,13 @@ def go_deps(): 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", + sha256 = "d702771115e08bed1863e0e64a94d44e3b63fd85c9e1ff6ec8a07a8302366547", + strip_prefix = "github.com/alexkohler/nakedret/v2@v2.0.5", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.5.zip", + "http://ats.apps.svc/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.5.zip", + "https://cache.hawkingrei.com/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/alexkohler/nakedret/v2/com_github_alexkohler_nakedret_v2-v2.0.5.zip", ], ) go_repository( @@ -294,39 +294,39 @@ def go_deps(): 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", + sha256 = "40498c79150c6e5de9b8abd55608bdc1be12839c35f68175fd725ddaf984b30c", + strip_prefix = "github.com/Antonboom/errname@v1.0.0", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v1.0.0.zip", + "http://ats.apps.svc/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Antonboom/errname/com_github_antonboom_errname-v1.0.0.zip", ], ) 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", + sha256 = "d64ec9346883aec9b4184c387c51c1e6853b0d60ef8c69070050ca9062d4e3fb", + strip_prefix = "github.com/Antonboom/nilnil@v1.0.0", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v1.0.0.zip", + "http://ats.apps.svc/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v1.0.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v1.0.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Antonboom/nilnil/com_github_antonboom_nilnil-v1.0.0.zip", ], ) 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", + sha256 = "590486be2876eb619db5b288ba3f1a8f102eb0a968dbf5563b3e0c7c6b868c71", + strip_prefix = "github.com/Antonboom/testifylint@v1.5.2", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.5.2.zip", + "http://ats.apps.svc/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.5.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.5.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Antonboom/testifylint/com_github_antonboom_testifylint-v1.5.2.zip", ], ) go_repository( @@ -658,13 +658,13 @@ def go_deps(): 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", + sha256 = "03d2440ee0559be4d6434cbaee59c9336f37dafe09ba085e1405506f9cd08e1d", + strip_prefix = "github.com/bkielbasa/cyclop@v1.2.3", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.3.zip", + "http://ats.apps.svc/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.3.zip", + "https://cache.hawkingrei.com/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/bkielbasa/cyclop/com_github_bkielbasa_cyclop-v1.2.3.zip", ], ) go_repository( @@ -736,26 +736,26 @@ def go_deps(): 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", + sha256 = "684a5e3b2b5d805625981f9392dd82c530b6d5ce8720b148b311e51413782911", + strip_prefix = "github.com/breml/bidichk@v0.3.2", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.2.zip", + "http://ats.apps.svc/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/breml/bidichk/com_github_breml_bidichk-v0.3.2.zip", ], ) 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", + sha256 = "568ca54e5b8b25b2455941e3cc0279e22bc9712e805553c573490f8b43abf24a", + strip_prefix = "github.com/breml/errchkjson@v0.4.0", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.4.0.zip", + "http://ats.apps.svc/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.4.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.4.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/breml/errchkjson/com_github_breml_errchkjson-v0.4.0.zip", ], ) go_repository( @@ -1373,13 +1373,13 @@ def go_deps(): 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", + sha256 = "e63b96abc5dbd6b8aff6c6ea5b16e80f32001e7e7555c30eb580bb1c9ba3f297", + strip_prefix = "github.com/Crocmagnon/fatcontext@v0.5.3", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.3.zip", + "http://ats.apps.svc/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.3.zip", + "https://cache.hawkingrei.com/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/Crocmagnon/fatcontext/com_github_crocmagnon_fatcontext-v0.5.3.zip", ], ) go_repository( @@ -1854,13 +1854,13 @@ def go_deps(): 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", + sha256 = "4dc6907b7f6807b37c21ad527d966437d398f03472115f471eaa8fe5875363d3", + strip_prefix = "github.com/fatih/color@v1.18.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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/fatih/color/com_github_fatih_color-v1.18.0.zip", + "http://ats.apps.svc/gomod/github.com/fatih/color/com_github_fatih_color-v1.18.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/fatih/color/com_github_fatih_color-v1.18.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/fatih/color/com_github_fatih_color-v1.18.0.zip", ], ) go_repository( @@ -2114,13 +2114,13 @@ def go_deps(): 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", + sha256 = "12f60c72561d69868a4f16ecf0d3c3a9c076288f63dcc892f7b10ce9c8827338", + strip_prefix = "github.com/go-critic/go-critic@v0.11.5", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.5.zip", + "http://ats.apps.svc/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.5.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.5.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-critic/go-critic/com_github_go_critic_go_critic-v0.11.5.zip", ], ) go_repository( @@ -2647,13 +2647,13 @@ def go_deps(): 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", + sha256 = "bbc0a1a1633c0e9024950a595e4e05e0eaff024de06fb8318a7764f0566007dd", + strip_prefix = "github.com/go-viper/mapstructure/v2@v2.2.1", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.2.1.zip", + "http://ats.apps.svc/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.2.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.2.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/go-viper/mapstructure/v2/com_github_go_viper_mapstructure_v2-v2.2.1.zip", ], ) go_repository( @@ -2929,6 +2929,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/dupl/com_github_golangci_dupl-v0.0.0-20180902072040-3e9179ac440a.zip", ], ) + go_repository( + name = "com_github_golangci_go_printf_func_name", + build_file_proto_mode = "disable_global", + importpath = "github.com/golangci/go-printf-func-name", + sha256 = "7f882087769b5ed4650a7cc71f085aa8e5fc5a8bbe6481b73eb7853d3ced7e7b", + strip_prefix = "github.com/golangci/go-printf-func-name@v0.1.0", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/go-printf-func-name/com_github_golangci_go_printf_func_name-v0.1.0.zip", + "http://ats.apps.svc/gomod/github.com/golangci/go-printf-func-name/com_github_golangci_go_printf_func_name-v0.1.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/golangci/go-printf-func-name/com_github_golangci_go_printf_func_name-v0.1.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/go-printf-func-name/com_github_golangci_go_printf_func_name-v0.1.0.zip", + ], + ) go_repository( name = "com_github_golangci_gofmt", build_file_proto_mode = "disable_global", @@ -2946,13 +2959,13 @@ def go_deps(): 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", + sha256 = "87d2ed0a3ffc8b630dd049c5878ed3bd66317e095a085a48d701282971e1e76a", + strip_prefix = "github.com/golangci/golangci-lint@v1.62.2", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.62.2.zip", + "http://ats.apps.svc/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.62.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.62.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/golangci/golangci-lint/com_github_golangci_golangci_lint-v1.62.2.zip", ], ) go_repository( @@ -4000,19 +4013,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/jinzhu/now/com_github_jinzhu_now-v1.1.5.zip", ], ) - 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", - ], - ) go_repository( name = "com_github_jjti_go_spancheck", build_file_proto_mode = "disable_global", @@ -4333,13 +4333,13 @@ def go_deps(): patches = [ "//build/patches:com_github_kisielk_errcheck.patch", ], - sha256 = "f394d1df1f2332387ce142d98734c5c44fb94e9a8a2af2a9b75aa4ec4a64b963", - strip_prefix = "github.com/kisielk/errcheck@v1.7.0", + sha256 = "8da6492556f8de43f4e8a264477adda8932f0010baa880c62014c6030c3b6bce", + strip_prefix = "github.com/kisielk/errcheck@v1.8.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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.8.0.zip", + "http://ats.apps.svc/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.8.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.8.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/kisielk/errcheck/com_github_kisielk_errcheck-v1.8.0.zip", ], ) go_repository( @@ -4576,30 +4576,17 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/labstack/gommon/com_github_labstack_gommon-v0.4.0.zip", ], ) - go_repository( - name = "com_github_lance6716_pebble", - build_file_proto_mode = "disable_global", - importpath = "github.com/lance6716/pebble", - sha256 = "fad807913eaf5ff14651929475dda5e5c6f6838dbaeef11b7eddefe771f01f1e", - strip_prefix = "github.com/lance6716/pebble@v0.0.0-20241104073946-6f55c09bd183", - urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/lance6716/pebble/com_github_lance6716_pebble-v0.0.0-20241104073946-6f55c09bd183.zip", - "http://ats.apps.svc/gomod/github.com/lance6716/pebble/com_github_lance6716_pebble-v0.0.0-20241104073946-6f55c09bd183.zip", - "https://cache.hawkingrei.com/gomod/github.com/lance6716/pebble/com_github_lance6716_pebble-v0.0.0-20241104073946-6f55c09bd183.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lance6716/pebble/com_github_lance6716_pebble-v0.0.0-20241104073946-6f55c09bd183.zip", - ], - ) 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", + sha256 = "62dc50594ced395442904074d473f24e425a253f48dad108974835e2c98d8701", + strip_prefix = "github.com/lasiar/canonicalheader@v1.1.2", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.2.zip", + "http://ats.apps.svc/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.2.zip", + "https://cache.hawkingrei.com/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.2.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/lasiar/canonicalheader/com_github_lasiar_canonicalheader-v1.1.2.zip", ], ) go_repository( @@ -4745,19 +4732,6 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/linode/linodego/com_github_linode_linodego-v1.27.1.zip", ], ) - 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", - ], - ) go_repository( name = "com_github_lufia_plan9stats", build_file_proto_mode = "disable_global", @@ -4996,13 +4970,13 @@ def go_deps(): 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", + sha256 = "a349123cc03e6d0a89328aebe884aa8b3e405d9548a44a4d20437dec7e7b11d0", + strip_prefix = "github.com/mgechev/revive@v1.5.1", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.5.1.zip", + "http://ats.apps.svc/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.5.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.5.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/mgechev/revive/com_github_mgechev_revive-v1.5.1.zip", ], ) go_repository( @@ -5373,13 +5347,13 @@ def go_deps(): 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", + sha256 = "127b10f19197569cac362cc3fac726db8a42fe85946db4e6fa27ce0e99f40be6", + strip_prefix = "github.com/nunnatsa/ginkgolinter@v0.18.3", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.18.3.zip", + "http://ats.apps.svc/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.18.3.zip", + "https://cache.hawkingrei.com/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.18.3.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/nunnatsa/ginkgolinter/com_github_nunnatsa_ginkgolinter-v0.18.3.zip", ], ) go_repository( @@ -5451,26 +5425,26 @@ def go_deps(): name = "com_github_onsi_ginkgo_v2", build_file_proto_mode = "disable_global", importpath = "github.com/onsi/ginkgo/v2", - sha256 = "f41e92baa52ec53d482603e4585c0906ca0c02e05004dca78a62bf1de88833ad", - strip_prefix = "github.com/onsi/ginkgo/v2@v2.9.4", + 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.9.4.zip", - "http://ats.apps.svc/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.9.4.zip", - "https://cache.hawkingrei.com/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.9.4.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/onsi/ginkgo/v2/com_github_onsi_ginkgo_v2-v2.9.4.zip", + "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", ], ) go_repository( name = "com_github_onsi_gomega", build_file_proto_mode = "disable_global", importpath = "github.com/onsi/gomega", - sha256 = "ea2b22782cc15569645dfdfc066a651e1335626677ad92d7ba4358a0885bf369", - strip_prefix = "github.com/onsi/gomega@v1.20.1", + 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.20.1.zip", - "http://ats.apps.svc/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.20.1.zip", - "https://cache.hawkingrei.com/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.20.1.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/onsi/gomega/com_github_onsi_gomega-v1.20.1.zip", + "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", ], ) go_repository( @@ -5789,26 +5763,26 @@ def go_deps(): name = "com_github_pingcap_kvproto", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/kvproto", - sha256 = "6f2a7d747d05ae61a8f4a3c066058fa69f724480f8dc4a427d66fd066ce730c7", - strip_prefix = "github.com/pingcap/kvproto@v0.0.0-20240924080114-4a3e17f5e62d", + sha256 = "7d3b6f6b755b027ba138d3069238f4a4e91d0d1f573de17cda00985616adc843", + strip_prefix = "github.com/pingcap/kvproto@v0.0.0-20241120022153-92b0414aeed8", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20240924080114-4a3e17f5e62d.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20240924080114-4a3e17f5e62d.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20240924080114-4a3e17f5e62d.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20240924080114-4a3e17f5e62d.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20241120022153-92b0414aeed8.zip", + "http://ats.apps.svc/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20241120022153-92b0414aeed8.zip", + "https://cache.hawkingrei.com/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20241120022153-92b0414aeed8.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/kvproto/com_github_pingcap_kvproto-v0.0.0-20241120022153-92b0414aeed8.zip", ], ) go_repository( name = "com_github_pingcap_log", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/log", - sha256 = "c393f943bb688e240dcf9a50ac1d915aa27371803524887ab61a235834bb7438", - strip_prefix = "github.com/pingcap/log@v1.1.1-0.20240314023424-862ccc32f18d", + sha256 = "ecdf624669a639a91f49a368f7090df11e9bff366f404fc8a379035fb4d9fe7f", + strip_prefix = "github.com/pingcap/log@v1.1.1-0.20241212030209-7e3ff8601a2a", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20240314023424-862ccc32f18d.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20240314023424-862ccc32f18d.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20240314023424-862ccc32f18d.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20240314023424-862ccc32f18d.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20241212030209-7e3ff8601a2a.zip", + "http://ats.apps.svc/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20241212030209-7e3ff8601a2a.zip", + "https://cache.hawkingrei.com/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20241212030209-7e3ff8601a2a.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20241212030209-7e3ff8601a2a.zip", ], ) go_repository( @@ -5828,13 +5802,13 @@ def go_deps(): name = "com_github_pingcap_tipb", build_file_proto_mode = "disable_global", importpath = "github.com/pingcap/tipb", - sha256 = "b39e154272ba36d145c6049947a012a76be740b32a44a46d7253caa145c56cc9", - strip_prefix = "github.com/pingcap/tipb@v0.0.0-20241008083645-0bcddae67837", + sha256 = "923efe448355ba420cfbd82e93df2f99b08c3fb36191b1f2cabdd3bf32904852", + strip_prefix = "github.com/pingcap/tipb@v0.0.0-20241105053214-f91fdb81a69e", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241008083645-0bcddae67837.zip", - "http://ats.apps.svc/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241008083645-0bcddae67837.zip", - "https://cache.hawkingrei.com/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241008083645-0bcddae67837.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241008083645-0bcddae67837.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241105053214-f91fdb81a69e.zip", + "http://ats.apps.svc/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241105053214-f91fdb81a69e.zip", + "https://cache.hawkingrei.com/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241105053214-f91fdb81a69e.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20241105053214-f91fdb81a69e.zip", ], ) go_repository( @@ -5919,13 +5893,13 @@ def go_deps(): 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", + sha256 = "421acb1dbec5431ea422488c9957968cf02596a2519aa5702f9d99b0dd605e23", + strip_prefix = "github.com/polyfloyd/go-errorlint@v1.7.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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.7.0.zip", + "http://ats.apps.svc/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.7.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.7.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/polyfloyd/go-errorlint/com_github_polyfloyd_go_errorlint-v1.7.0.zip", ], ) go_repository( @@ -6231,13 +6205,13 @@ def go_deps(): 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", + sha256 = "cc0746bf67c2d5d536d305db9f7c5cbe8ffa84928fd90262fb447685db0f1bc2", + strip_prefix = "github.com/rogpeppe/go-internal@v1.13.1", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.13.1.zip", + "http://ats.apps.svc/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.13.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.13.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/rogpeppe/go-internal/com_github_rogpeppe_go_internal-v1.13.1.zip", ], ) go_repository( @@ -6413,13 +6387,13 @@ def go_deps(): 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", + sha256 = "c7fbcd4bc2d00acdd48046ceffd9394fb8a3b37871b5672df63a7eef9aa5ca48", + strip_prefix = "github.com/securego/gosec/v2@v2.21.4", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.4.zip", + "http://ats.apps.svc/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.4.zip", + "https://cache.hawkingrei.com/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.4.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/securego/gosec/v2/com_github_securego_gosec_v2-v2.21.4.zip", ], ) go_repository( @@ -6608,13 +6582,13 @@ def go_deps(): 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", + sha256 = "565da213c6655ba167f96327ab0e616365327f1c870b5056a50b32a9d5a0cf9b", + strip_prefix = "github.com/sivchari/tenv@v1.12.1", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.12.1.zip", + "http://ats.apps.svc/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.12.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.12.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/sivchari/tenv/com_github_sivchari_tenv-v1.12.1.zip", ], ) go_repository( @@ -6803,13 +6777,13 @@ def go_deps(): 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", + sha256 = "36c87573527a97ce97fc15ce2a101e65e5ebb350db142d09f633580cb8d5c839", + strip_prefix = "github.com/stretchr/testify@v1.10.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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.10.0.zip", + "http://ats.apps.svc/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.10.0.zip", + "https://cache.hawkingrei.com/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.10.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/stretchr/testify/com_github_stretchr_testify-v1.10.0.zip", ], ) go_repository( @@ -6946,26 +6920,26 @@ def go_deps(): name = "com_github_tikv_client_go_v2", build_file_proto_mode = "disable_global", importpath = "github.com/tikv/client-go/v2", - sha256 = "81065eb2f65e0874e7519d41580bdbe279bc93b1b9631bdc6c3092bc9f9458a1", - strip_prefix = "github.com/tikv/client-go/v2@v2.0.8-0.20241023023120-691e80ae0ea9", + sha256 = "4bc779621156c4ee6f46b57235da9c34c8ec0ee6d3be5f52e33da4c47098eeed", + strip_prefix = "github.com/tikv/client-go/v2@v2.0.8-0.20241120024459-05d115b3e88b", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241023023120-691e80ae0ea9.zip", - "http://ats.apps.svc/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241023023120-691e80ae0ea9.zip", - "https://cache.hawkingrei.com/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241023023120-691e80ae0ea9.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241023023120-691e80ae0ea9.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241120024459-05d115b3e88b.zip", + "http://ats.apps.svc/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241120024459-05d115b3e88b.zip", + "https://cache.hawkingrei.com/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241120024459-05d115b3e88b.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/client-go/v2/com_github_tikv_client_go_v2-v2.0.8-0.20241120024459-05d115b3e88b.zip", ], ) go_repository( name = "com_github_tikv_pd_client", build_file_proto_mode = "disable_global", importpath = "github.com/tikv/pd/client", - sha256 = "da76c552e8a9cfcc707d462d7cdc1ea6bea4b8e9017a60fc0a23200db500978d", - strip_prefix = "github.com/tikv/pd/client@v0.0.0-20241016064947-b70107ec31e6", + sha256 = "52a62b6f6247ce31ee9d0a5dbde941ba3be3db74a713fd79643d015d98a15c5f", + strip_prefix = "github.com/tikv/pd/client@v0.0.0-20241111073742-238d4d79ea31", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241016064947-b70107ec31e6.zip", - "http://ats.apps.svc/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241016064947-b70107ec31e6.zip", - "https://cache.hawkingrei.com/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241016064947-b70107ec31e6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241016064947-b70107ec31e6.zip", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241111073742-238d4d79ea31.zip", + "http://ats.apps.svc/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241111073742-238d4d79ea31.zip", + "https://cache.hawkingrei.com/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241111073742-238d4d79ea31.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/tikv/pd/client/com_github_tikv_pd_client-v0.0.0-20241111073742-238d4d79ea31.zip", ], ) go_repository( @@ -6985,13 +6959,13 @@ def go_deps(): 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", + sha256 = "73845065321636f4129b10c0cb03bb0a71a7236042e5e257164a11988831f0d2", + strip_prefix = "github.com/timonwong/loggercheck@v0.10.1", 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", + "http://bazel-cache.pingcap.net:8080/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.10.1.zip", + "http://ats.apps.svc/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.10.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.10.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/timonwong/loggercheck/com_github_timonwong_loggercheck-v0.10.1.zip", ], ) go_repository( @@ -7163,6 +7137,19 @@ def go_deps(): "https://storage.googleapis.com/pingcapmirror/gomod/github.com/uudashr/gocognit/com_github_uudashr_gocognit-v1.1.3.zip", ], ) + go_repository( + name = "com_github_uudashr_iface", + build_file_proto_mode = "disable_global", + importpath = "github.com/uudashr/iface", + sha256 = "080002c1f5f400398a3337b0ae43cabd881e5ef133559d8c47af75790814d042", + strip_prefix = "github.com/uudashr/iface@v1.2.1", + urls = [ + "http://bazel-cache.pingcap.net:8080/gomod/github.com/uudashr/iface/com_github_uudashr_iface-v1.2.1.zip", + "http://ats.apps.svc/gomod/github.com/uudashr/iface/com_github_uudashr_iface-v1.2.1.zip", + "https://cache.hawkingrei.com/gomod/github.com/uudashr/iface/com_github_uudashr_iface-v1.2.1.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/github.com/uudashr/iface/com_github_uudashr_iface-v1.2.1.zip", + ], + ) go_repository( name = "com_github_valyala_bytebufferpool", build_file_proto_mode = "disable_global", @@ -9481,26 +9468,26 @@ def go_deps(): name = "io_k8s_api", build_file_proto_mode = "disable_global", importpath = "k8s.io/api", - sha256 = "2255428d2347df0b3a9cf6ac2791f5be6653b3c642359736e46733584d917335", - strip_prefix = "k8s.io/api@v0.28.6", + 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.28.6.zip", - "http://ats.apps.svc/gomod/k8s.io/api/io_k8s_api-v0.28.6.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/api/io_k8s_api-v0.28.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/api/io_k8s_api-v0.28.6.zip", + "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", ], ) go_repository( name = "io_k8s_apimachinery", build_file_proto_mode = "disable_global", importpath = "k8s.io/apimachinery", - sha256 = "efc7e38cb4662d0b6c5648772e1ae92040a4d03af0a3a7731aedf17f8eab7359", - strip_prefix = "k8s.io/apimachinery@v0.28.6", + 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.28.6.zip", - "http://ats.apps.svc/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.28.6.zip", - "https://cache.hawkingrei.com/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.28.6.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/k8s.io/apimachinery/io_k8s_apimachinery-v0.28.6.zip", + "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", ], ) go_repository( @@ -9871,13 +9858,13 @@ def go_deps(): 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", + sha256 = "d756671c5e150c4572cce2793f5c7ffb35a723730d34c6c01c74c14b2b04a213", + strip_prefix = "go-simpler.org/musttag@v0.13.0", 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", + "http://bazel-cache.pingcap.net:8080/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.13.0.zip", + "http://ats.apps.svc/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.13.0.zip", + "https://cache.hawkingrei.com/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.13.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/go-simpler.org/musttag/org_go_simpler_musttag-v0.13.0.zip", ], ) go_repository( @@ -10014,13 +10001,13 @@ def go_deps(): name = "org_golang_x_crypto", build_file_proto_mode = "disable_global", importpath = "golang.org/x/crypto", - sha256 = "959acbe3514430c2c009dc93f27e41ddad4fee178a4c680c753bc09b5d2e77d0", - strip_prefix = "golang.org/x/crypto@v0.28.0", + sha256 = "7cbc5fbc206b07db3c691ad59bc1b31f2c32a1dae2b04c9a7772f93a696381bf", + strip_prefix = "golang.org/x/crypto@v0.31.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.28.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.28.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.28.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.28.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.31.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.31.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.31.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.31.0.zip", ], ) go_repository( @@ -10040,13 +10027,13 @@ def go_deps(): 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", + sha256 = "8a21e66acee08c4450d929141d083e92c05d2a035e4b1933e8703dcb9fe425fc", + strip_prefix = "golang.org/x/exp/typeparams@v0.0.0-20241108190413-2d47ceb2692f", 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", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20241108190413-2d47ceb2692f.zip", + "http://ats.apps.svc/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20241108190413-2d47ceb2692f.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20241108190413-2d47ceb2692f.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/exp/typeparams/org_golang_x_exp_typeparams-v0.0.0-20241108190413-2d47ceb2692f.zip", ], ) go_repository( @@ -10092,26 +10079,26 @@ def go_deps(): 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", + sha256 = "0d0a96054b32dfa40cec2a2868bf87cdda31e3bb2dac0a5e2218efe3ef3ef3cc", + strip_prefix = "golang.org/x/mod@v0.22.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", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/mod/org_golang_x_mod-v0.22.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/mod/org_golang_x_mod-v0.22.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/mod/org_golang_x_mod-v0.22.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/mod/org_golang_x_mod-v0.22.0.zip", ], ) go_repository( name = "org_golang_x_net", build_file_proto_mode = "disable_global", importpath = "golang.org/x/net", - sha256 = "c357b779cdc08d0952f7bad4c45ce84223b7c6005d775822a17901ae8f65bbba", - strip_prefix = "golang.org/x/net@v0.30.0", + sha256 = "ced2b8369a529613741b5bfe1f0df0dc98545d9203341cfcef5f824cdd961016", + strip_prefix = "golang.org/x/net@v0.32.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/net/org_golang_x_net-v0.30.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/net/org_golang_x_net-v0.30.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/net/org_golang_x_net-v0.30.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/net/org_golang_x_net-v0.30.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/net/org_golang_x_net-v0.32.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/net/org_golang_x_net-v0.32.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/net/org_golang_x_net-v0.32.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/net/org_golang_x_net-v0.32.0.zip", ], ) go_repository( @@ -10144,26 +10131,26 @@ def go_deps(): name = "org_golang_x_sync", build_file_proto_mode = "disable_global", importpath = "golang.org/x/sync", - sha256 = "c79473c265ca571d389bf64fa1e7b2d8999b4ab3eb7af5e3bc185644783a1087", - strip_prefix = "golang.org/x/sync@v0.8.0", + sha256 = "94ea75ea625ecb8d81ab473a2d7e03433e63083768cd27d48a03f8c1c9da3d8d", + strip_prefix = "golang.org/x/sync@v0.10.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sync/org_golang_x_sync-v0.8.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/sync/org_golang_x_sync-v0.8.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/sync/org_golang_x_sync-v0.8.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sync/org_golang_x_sync-v0.8.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sync/org_golang_x_sync-v0.10.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/sync/org_golang_x_sync-v0.10.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/sync/org_golang_x_sync-v0.10.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sync/org_golang_x_sync-v0.10.0.zip", ], ) go_repository( name = "org_golang_x_sys", build_file_proto_mode = "disable_global", importpath = "golang.org/x/sys", - sha256 = "f44842acff792af010dcb5a24308b72272ebd57c74e00d5f530c9e5d55b86979", - strip_prefix = "golang.org/x/sys@v0.26.0", + sha256 = "0ed47a83fe7d7a7e743e815172bc10c1ac0ed0d31ebb095e75717428e09aa895", + strip_prefix = "golang.org/x/sys@v0.28.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sys/org_golang_x_sys-v0.26.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/sys/org_golang_x_sys-v0.26.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/sys/org_golang_x_sys-v0.26.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sys/org_golang_x_sys-v0.26.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sys/org_golang_x_sys-v0.28.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/sys/org_golang_x_sys-v0.28.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/sys/org_golang_x_sys-v0.28.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sys/org_golang_x_sys-v0.28.0.zip", ], ) go_repository( @@ -10183,26 +10170,26 @@ def go_deps(): name = "org_golang_x_term", build_file_proto_mode = "disable_global", importpath = "golang.org/x/term", - sha256 = "e058796198c690102b79367c0501a66a4867c323aee42b6315726de0ac015676", - strip_prefix = "golang.org/x/term@v0.25.0", + sha256 = "a4cf3d2cab860c5aad555d58c2545ebced118c1610d854fdb302b9c2866d858e", + strip_prefix = "golang.org/x/term@v0.27.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/term/org_golang_x_term-v0.25.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/term/org_golang_x_term-v0.25.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/term/org_golang_x_term-v0.25.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/term/org_golang_x_term-v0.25.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/term/org_golang_x_term-v0.27.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/term/org_golang_x_term-v0.27.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/term/org_golang_x_term-v0.27.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/term/org_golang_x_term-v0.27.0.zip", ], ) go_repository( name = "org_golang_x_text", build_file_proto_mode = "disable_global", importpath = "golang.org/x/text", - sha256 = "37f9f40b6c3c56e079684d612439b61ce4e891c3cea32298fbab53a1cac47c35", - strip_prefix = "golang.org/x/text@v0.19.0", + sha256 = "be3db791651af6f2cb0225aa5d5578c23149b2017246ba8e59586080baadd612", + strip_prefix = "golang.org/x/text@v0.21.0", urls = [ - "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/text/org_golang_x_text-v0.19.0.zip", - "http://ats.apps.svc/gomod/golang.org/x/text/org_golang_x_text-v0.19.0.zip", - "https://cache.hawkingrei.com/gomod/golang.org/x/text/org_golang_x_text-v0.19.0.zip", - "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/text/org_golang_x_text-v0.19.0.zip", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/text/org_golang_x_text-v0.21.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/text/org_golang_x_text-v0.21.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/text/org_golang_x_text-v0.21.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/text/org_golang_x_text-v0.21.0.zip", ], ) go_repository( @@ -10222,13 +10209,13 @@ def go_deps(): 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", + sha256 = "3ac1c5530724296b8ed1f5b3df6c2aa1f6312371ab20812ad5fcb35ceaf2a177", + strip_prefix = "golang.org/x/tools@v0.28.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", + "http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/tools/org_golang_x_tools-v0.28.0.zip", + "http://ats.apps.svc/gomod/golang.org/x/tools/org_golang_x_tools-v0.28.0.zip", + "https://cache.hawkingrei.com/gomod/golang.org/x/tools/org_golang_x_tools-v0.28.0.zip", + "https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/tools/org_golang_x_tools-v0.28.0.zip", ], ) go_repository( diff --git a/Makefile b/Makefile index 7b6149c8cd9fc..de33003ef8db6 100644 --- a/Makefile +++ b/Makefile @@ -489,7 +489,7 @@ mock_lightning: mockgen .PHONY: gen_mock gen_mock: mockgen - tools/bin/mockgen -package mock github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor TaskTable,Pool,TaskExecutor,Extension > pkg/disttask/framework/mock/task_executor_mock.go + tools/bin/mockgen -package mock github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor TaskTable,TaskExecutor,Extension > pkg/disttask/framework/mock/task_executor_mock.go tools/bin/mockgen -package mock github.com/pingcap/tidb/pkg/disttask/framework/scheduler Scheduler,CleanUpRoutine,TaskManager > pkg/disttask/framework/mock/scheduler_mock.go tools/bin/mockgen -destination pkg/disttask/framework/scheduler/mock/scheduler_mock.go -package mock github.com/pingcap/tidb/pkg/disttask/framework/scheduler Extension tools/bin/mockgen -embed -package mockexecute github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/execute StepExecutor > pkg/disttask/framework/mock/execute/execute_mock.go @@ -530,7 +530,7 @@ br_bins: .PHONY: data_parsers data_parsers: tools/bin/vfsgendev pkg/lightning/mydump/parser_generated.go lightning_web - PATH="$(GOPATH)/bin":"$(PATH)":"$(TOOLS)" protoc -I. -I"$(GOPATH)/src" pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto --gogofaster_out=. + PATH="$(GOPATH)/bin":"$(PATH)":"$(TOOLS)" protoc -I. -I"$(GOMODCACHE)" pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto --gogofaster_out=. tools/bin/vfsgendev -source='"github.com/pingcap/tidb/lightning/pkg/web".Res' && mv res_vfsdata.go lightning/pkg/web/ .PHONY: build_dumpling @@ -678,121 +678,90 @@ bazel_golangcilinter: .PHONY: bazel_brietest bazel_brietest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ --@io_bazel_rules_go//go/config:cover_format=go_cover \ -- //tests/realtikvtest/brietest/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_pessimistictest bazel_pessimistictest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/pessimistictest/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_sessiontest bazel_sessiontest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/sessiontest/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_statisticstest bazel_statisticstest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/statisticstest/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_txntest bazel_txntest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/txntest/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_addindextest bazel_addindextest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/addindextest/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_addindextest1 bazel_addindextest1: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/addindextest1/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_addindextest2 bazel_addindextest2: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/addindextest2/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_addindextest3 bazel_addindextest3: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/addindextest3/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_addindextest4 bazel_addindextest4: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/addindextest4/... - ./build/jenkins_collect_coverage.sh # on timeout, bazel won't print log sometimes, so we use --test_output=all to print log always .PHONY: bazel_importintotest bazel_importintotest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/importintotest/... - ./build/jenkins_collect_coverage.sh # on timeout, bazel won't print log sometimes, so we use --test_output=all to print log always .PHONY: bazel_importintotest2 bazel_importintotest2: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/importintotest2/... - ./build/jenkins_collect_coverage.sh # on timeout, bazel won't print log sometimes, so we use --test_output=all to print log always .PHONY: bazel_importintotest3 bazel_importintotest3: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/importintotest3/... - ./build/jenkins_collect_coverage.sh # on timeout, bazel won't print log sometimes, so we use --test_output=all to print log always .PHONY: bazel_importintotest4 bazel_importintotest4: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/importintotest4/... - ./build/jenkins_collect_coverage.sh # on timeout, bazel won't print log sometimes, so we use --test_output=all to print log always .PHONY: bazel_pipelineddmltest bazel_pipelineddmltest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/pipelineddmltest/... - ./build/jenkins_collect_coverage.sh # on timeout, bazel won't print log sometimes, so we use --test_output=all to print log always .PHONY: bazel_flashbacktest bazel_flashbacktest: failpoint-enable bazel_ci_simple_prepare - bazel $(BAZEL_GLOBAL_CONFIG) coverage $(BAZEL_CMD_CONFIG) $(BAZEL_INSTRUMENTATION_FILTER) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ - --@io_bazel_rules_go//go/config:cover_format=go_cover \ + bazel $(BAZEL_GLOBAL_CONFIG) test $(BAZEL_CMD_CONFIG) --test_output=all --test_arg=-with-real-tikv --define gotags=deadlock,intest \ -- //tests/realtikvtest/flashbacktest/... - ./build/jenkins_collect_coverage.sh .PHONY: bazel_lint bazel_lint: bazel_prepare diff --git a/Makefile.common b/Makefile.common index 94cd9734d2582..8a59f8a9fe96f 100644 --- a/Makefile.common +++ b/Makefile.common @@ -14,6 +14,7 @@ PROJECT=tidb GOPATH ?= $(shell go env GOPATH) +GOMODCACHE ?= $(shell go env GOMODCACHE) P=8 # Ensure GOPATH is set before running build process. @@ -132,4 +133,4 @@ ifneq ("$(CI)", "") endif BAZEL_INSTRUMENTATION_FILTER := --instrument_test_targets --instrumentation_filter=//pkg/...,//br/...,//dumpling/... -NOGO_FLAG=true \ No newline at end of file +NOGO_FLAG=true diff --git a/WORKSPACE b/WORKSPACE index fbc5b6484fb9d..e3ffd55d8cfcc 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -85,7 +85,7 @@ go_download_sdk( "https://mirrors.aliyun.com/golang/{}", "https://dl.google.com/go/{}", ], - version = "1.23.2", + version = "1.23.4", ) go_register_toolchains( diff --git a/br/cmd/br/backup.go b/br/cmd/br/backup.go index d8b313ce504f3..1ca18ab7aaa57 100644 --- a/br/cmd/br/backup.go +++ b/br/cmd/br/backup.go @@ -22,10 +22,11 @@ import ( func runBackupCommand(command *cobra.Command, cmdName string) error { cfg := task.BackupConfig{Config: task.Config{LogProgress: HasLogFile()}} - if err := cfg.ParseFromFlags(command.Flags()); err != nil { + if err := cfg.ParseFromFlags(command.Flags(), false); err != nil { command.SilenceUsage = false return errors.Trace(err) } + overrideDefaultBackupConfigIfNeeded(&cfg, command) if err := metricsutil.RegisterMetricsForBR(cfg.PD, cfg.KeyspaceName); err != nil { return errors.Trace(err) @@ -216,3 +217,10 @@ func newTxnBackupCommand() *cobra.Command { task.DefineTxnBackupFlags(command) return command } + +func overrideDefaultBackupConfigIfNeeded(config *task.BackupConfig, cmd *cobra.Command) { + // override only if flag not set by user + if !cmd.Flags().Changed(task.FlagChecksum) { + config.Checksum = false + } +} diff --git a/br/cmd/br/cmd.go b/br/cmd/br/cmd.go index b40819713d272..695d9975717a9 100644 --- a/br/cmd/br/cmd.go +++ b/br/cmd/br/cmd.go @@ -85,8 +85,8 @@ func timestampLogFileName() string { return filepath.Join(os.TempDir(), time.Now().Format("br.log.2006-01-02T15.04.05Z0700")) } -// AddFlags adds flags to the given cmd. -func AddFlags(cmd *cobra.Command) { +// DefineCommonFlags defines the common flags for all BR cmd operation. +func DefineCommonFlags(cmd *cobra.Command) { cmd.Version = build.Info() cmd.Flags().BoolP(flagVersion, flagVersionShort, false, "Display version information about BR") cmd.SetVersionTemplate("{{printf \"%s\" .Version}}\n") @@ -103,6 +103,8 @@ func AddFlags(cmd *cobra.Command) { "Set whether to redact sensitive info in log") cmd.PersistentFlags().String(FlagStatusAddr, "", "Set the HTTP listening address for the status report service. Set to empty string to disable") + + // defines BR task common flags, this is shared by cmd and sql(brie) task.DefineCommonFlags(cmd.PersistentFlags()) cmd.PersistentFlags().StringP(FlagSlowLogFile, "", "", diff --git a/br/cmd/br/debug.go b/br/cmd/br/debug.go index 7dd600d025783..a858bfb00dee6 100644 --- a/br/cmd/br/debug.go +++ b/br/cmd/br/debug.go @@ -285,6 +285,19 @@ func decodeBackupMetaCommand() *cobra.Command { fieldName, _ := cmd.Flags().GetString("field") if fieldName == "" { + if err := metautil.DecodeMetaFile(ctx, s, &cfg.CipherInfo, backupMeta.FileIndex); err != nil { + return errors.Trace(err) + } + if err := metautil.DecodeMetaFile(ctx, s, &cfg.CipherInfo, backupMeta.RawRangeIndex); err != nil { + return errors.Trace(err) + } + if err := metautil.DecodeMetaFile(ctx, s, &cfg.CipherInfo, backupMeta.SchemaIndex); err != nil { + return errors.Trace(err) + } + if err := metautil.DecodeStatsFile(ctx, s, &cfg.CipherInfo, backupMeta.Schemas); err != nil { + return errors.Trace(err) + } + // No field flag, write backupmeta to external storage in JSON format. backupMetaJSON, err := utils.MarshalBackupMeta(backupMeta) if err != nil { @@ -294,7 +307,7 @@ func decodeBackupMetaCommand() *cobra.Command { if err != nil { return errors.Trace(err) } - cmd.Printf("backupmeta decoded at %s\n", path.Join(cfg.Storage, metautil.MetaJSONFile)) + cmd.Printf("backupmeta decoded at %s\n", path.Join(s.URI(), metautil.MetaJSONFile)) return nil } @@ -353,6 +366,9 @@ func encodeBackupMetaCommand() *cobra.Command { if err != nil { return errors.Trace(err) } + if backupMetaJSON.Version == metautil.MetaV2 { + return errors.Errorf("encoding backupmeta v2 is unimplemented") + } backupMeta, err := proto.Marshal(backupMetaJSON) if err != nil { return errors.Trace(err) diff --git a/br/cmd/br/main.go b/br/cmd/br/main.go index f745920f5bfba..cad081606a0ea 100644 --- a/br/cmd/br/main.go +++ b/br/cmd/br/main.go @@ -20,7 +20,7 @@ func main() { TraverseChildren: true, SilenceUsage: true, } - AddFlags(rootCmd) + DefineCommonFlags(rootCmd) SetDefaultContext(ctx) rootCmd.AddCommand( NewDebugCommand(), diff --git a/br/cmd/br/restore.go b/br/cmd/br/restore.go index cbf9ccff5f329..a37f55b904ca4 100644 --- a/br/cmd/br/restore.go +++ b/br/cmd/br/restore.go @@ -25,7 +25,7 @@ import ( func runRestoreCommand(command *cobra.Command, cmdName string) error { cfg := task.RestoreConfig{Config: task.Config{LogProgress: HasLogFile()}} - if err := cfg.ParseFromFlags(command.Flags()); err != nil { + if err := cfg.ParseFromFlags(command.Flags(), false); err != nil { command.SilenceUsage = false return errors.Trace(err) } diff --git a/br/pkg/backup/BUILD.bazel b/br/pkg/backup/BUILD.bazel index a513511cdf8ff..2febe37641b01 100644 --- a/br/pkg/backup/BUILD.bazel +++ b/br/pkg/backup/BUILD.bazel @@ -32,7 +32,7 @@ go_library( "//pkg/meta", "//pkg/meta/model", "//pkg/statistics/handle", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/util", "//pkg/util/table-filter", "@com_github_google_btree//:btree", diff --git a/br/pkg/backup/prepare_snap/env.go b/br/pkg/backup/prepare_snap/env.go index 672a052ae555a..f0b2301f76477 100644 --- a/br/pkg/backup/prepare_snap/env.go +++ b/br/pkg/backup/prepare_snap/env.go @@ -176,15 +176,17 @@ func (c CliEnv) LoadRegionsInKeyRange(ctx context.Context, startKey []byte, endK type RetryAndSplitRequestEnv struct { Env - GetBackoffer func() utils.Backoffer + GetBackoffStrategy func() utils.BackoffStrategy } func (r RetryAndSplitRequestEnv) ConnectToStore(ctx context.Context, storeID uint64) (PrepareClient, error) { - rs := utils.ConstantBackoff(10 * time.Second) - bo := utils.Backoffer(rs) - if r.GetBackoffer != nil { - bo = r.GetBackoffer() + var bo utils.BackoffStrategy + if r.GetBackoffStrategy != nil { + bo = r.GetBackoffStrategy() + } else { + bo = utils.ConstantBackoff(10 * time.Second) } + cli, err := utils.WithRetryV2(ctx, bo, func(ctx context.Context) (PrepareClient, error) { cli, err := r.Env.ConnectToStore(ctx, storeID) if err != nil { diff --git a/br/pkg/backup/prepare_snap/prepare_test.go b/br/pkg/backup/prepare_snap/prepare_test.go index d6a5a7c16ae31..69be58e800304 100644 --- a/br/pkg/backup/prepare_snap/prepare_test.go +++ b/br/pkg/backup/prepare_snap/prepare_test.go @@ -428,9 +428,8 @@ func TestRetryEnv(t *testing.T) { return nil } ms := RetryAndSplitRequestEnv{Env: tms} - ms.GetBackoffer = func() utils.Backoffer { - o := utils.InitialRetryState(2, 0, 0) - return &o + ms.GetBackoffStrategy = func() utils.BackoffStrategy { + return utils.NewBackoffRetryAllErrorStrategy(2, 0, 0) } prep := New(ms) ctx := context.Background() diff --git a/br/pkg/backup/schema.go b/br/pkg/backup/schema.go index ac7bc98258a19..4857b498b405c 100644 --- a/br/pkg/backup/schema.go +++ b/br/pkg/backup/schema.go @@ -21,7 +21,7 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/statistics/handle" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" tidbutil "github.com/pingcap/tidb/pkg/util" kvutil "github.com/tikv/client-go/v2/util" "go.uber.org/zap" @@ -106,7 +106,7 @@ func (ss *Schemas) BackupSchemas( } var checksum *checkpoint.ChecksumItem - var exists bool = false + var exists = false if ss.checkpointChecksum != nil && schema.tableInfo != nil { checksum, exists = ss.checkpointChecksum[schema.tableInfo.ID] } @@ -145,7 +145,7 @@ func (ss *Schemas) BackupSchemas( zap.Uint64("Crc64Xor", schema.crc64xor), zap.Uint64("TotalKvs", schema.totalKvs), zap.Uint64("TotalBytes", schema.totalBytes), - zap.Duration("calculate-take", calculateCost)) + zap.Duration("TimeTaken", calculateCost)) } } if statsHandle != nil { diff --git a/br/pkg/backup/store.go b/br/pkg/backup/store.go index 03e68c54ce220..fce5e3f8e46e4 100644 --- a/br/pkg/backup/store.go +++ b/br/pkg/backup/store.go @@ -60,6 +60,7 @@ func (r ResponseAndStore) GetStoreID() uint64 { // timeoutRecv cancel the context if `Refresh()` is not called within the specified time `timeout`. type timeoutRecv struct { + storeID uint64 wg sync.WaitGroup parentCtx context.Context cancel context.CancelCauseFunc @@ -98,15 +99,17 @@ func (trecv *timeoutRecv) loop(timeout time.Duration) { return } case <-ticker.C: - log.Warn("receive a backup response timeout") + log.Warn("wait backup response timeout, cancel the backup", + zap.Duration("timeout", timeout), zap.Uint64("storeID", trecv.storeID)) trecv.cancel(errors.Errorf("receive a backup response timeout")) } } } -func StartTimeoutRecv(ctx context.Context, timeout time.Duration) (context.Context, *timeoutRecv) { +func StartTimeoutRecv(ctx context.Context, timeout time.Duration, storeID uint64) (context.Context, *timeoutRecv) { cctx, cancel := context.WithCancelCause(ctx) trecv := &timeoutRecv{ + storeID: storeID, parentCtx: ctx, cancel: cancel, refresh: make(chan struct{}), @@ -117,15 +120,11 @@ func StartTimeoutRecv(ctx context.Context, timeout time.Duration) (context.Conte } func doSendBackup( - pctx context.Context, + ctx context.Context, client backuppb.BackupClient, req backuppb.BackupRequest, respFn func(*backuppb.BackupResponse) error, ) error { - // Backup might be stuck on GRPC `waitonHeader`, so start a timeout ticker to - // terminate the backup if it does not receive any new response for a long time. - ctx, timerecv := StartTimeoutRecv(pctx, TimeoutOneResponse) - defer timerecv.Stop() failpoint.Inject("hint-backup-start", func(v failpoint.Value) { logutil.CL(ctx).Info("failpoint hint-backup-start injected, " + "process will notify the shell.") @@ -170,7 +169,6 @@ func doSendBackup( for { resp, err := bCli.Recv() - timerecv.Refresh() if err != nil { if errors.Cause(err) == io.EOF { // nolint:errorlint logutil.CL(ctx).Debug("backup streaming finish", @@ -193,7 +191,7 @@ func doSendBackup( } func startBackup( - ctx context.Context, + pctx context.Context, storeID uint64, backupReq backuppb.BackupRequest, backupCli backuppb.BackupClient, @@ -202,14 +200,21 @@ func startBackup( ) error { // this goroutine handle the response from a single store select { - case <-ctx.Done(): - return ctx.Err() + case <-pctx.Done(): + return pctx.Err() default: - logutil.CL(ctx).Info("try backup", zap.Uint64("storeID", storeID)) // Send backup request to the store. // handle the backup response or internal error here. // handle the store error(reboot or network partition) outside. reqs := SplitBackupReqRanges(backupReq, concurrency) + logutil.CL(pctx).Info("starting backup to the corresponding store", zap.Uint64("storeID", storeID), + zap.Int("requestCount", len(reqs)), zap.Uint("concurrency", concurrency)) + + // Backup might be stuck on GRPC `waitonHeader`, so start a timeout ticker to + // terminate the backup if it does not receive any new response for a long time. + ctx, timerecv := StartTimeoutRecv(pctx, TimeoutOneResponse, storeID) + defer timerecv.Stop() + pool := tidbutil.NewWorkerPool(concurrency, "store_backup") eg, ectx := errgroup.WithContext(ctx) for i, req := range reqs { @@ -219,8 +224,10 @@ func startBackup( retry := -1 return utils.WithRetry(ectx, func() error { retry += 1 - logutil.CL(ectx).Info("backup to store", zap.Uint64("storeID", storeID), - zap.Int("retry", retry), zap.Int("reqIndex", reqIndex)) + if retry > 1 { + logutil.CL(ectx).Info("retry backup to store", zap.Uint64("storeID", storeID), + zap.Int("retry", retry), zap.Int("reqIndex", reqIndex)) + } return doSendBackup(ectx, backupCli, bkReq, func(resp *backuppb.BackupResponse) error { // Forward all responses (including error). failpoint.Inject("backup-timeout-error", func(val failpoint.Value) { @@ -263,10 +270,12 @@ func startBackup( Resp: resp, StoreID: storeID, }: + // reset timeout when receive a response + timerecv.Refresh() } return nil }) - }, utils.NewBackupSSTBackoffer()) + }, utils.NewBackupSSTBackoffStrategy()) }) } return eg.Wait() @@ -326,7 +335,7 @@ func ObserveStoreChangesAsync(ctx context.Context, stateNotifier chan BackupRetr // reset the state sendAll = false clear(newJoinStoresMap) - logutil.CL(ctx).Info("check store changes every tick") + logutil.CL(ctx).Info("check store changes every 30s") err := watcher.Step(ctx) if err != nil { logutil.CL(ctx).Warn("failed to watch store changes, ignore it", zap.Error(err)) diff --git a/br/pkg/backup/store_test.go b/br/pkg/backup/store_test.go index d4e1011e1a386..eb650c02338a6 100644 --- a/br/pkg/backup/store_test.go +++ b/br/pkg/backup/store_test.go @@ -16,7 +16,6 @@ package backup import ( "context" - "io" "testing" "time" @@ -58,33 +57,34 @@ func TestTimeoutRecv(t *testing.T) { TimeoutOneResponse = time.Millisecond * 800 // Just Timeout Once { - err := doSendBackup(ctx, &MockBackupClient{ + err := startBackup(ctx, 0, backuppb.BackupRequest{}, &MockBackupClient{ recvFunc: func(ctx context.Context) (*backuppb.BackupResponse, error) { time.Sleep(time.Second) require.Error(t, ctx.Err()) - return nil, io.EOF + return nil, ctx.Err() }, - }, backuppb.BackupRequest{}, func(br *backuppb.BackupResponse) error { return nil }) - require.NoError(t, err) + }, 1, nil) + require.Error(t, err) } // Timeout Not At First { count := 0 - err := doSendBackup(ctx, &MockBackupClient{ + err := startBackup(ctx, 0, backuppb.BackupRequest{}, &MockBackupClient{ recvFunc: func(ctx context.Context) (*backuppb.BackupResponse, error) { require.NoError(t, ctx.Err()) if count == 15 { time.Sleep(time.Second) require.Error(t, ctx.Err()) - return nil, io.EOF + return nil, ctx.Err() } count += 1 time.Sleep(time.Millisecond * 80) return &backuppb.BackupResponse{}, nil }, - }, backuppb.BackupRequest{}, func(br *backuppb.BackupResponse) error { return nil }) - require.NoError(t, err) + }, 1, make(chan *ResponseAndStore, 15)) + require.Error(t, err) + require.Equal(t, count, 15) } } @@ -92,7 +92,7 @@ func TestTimeoutRecvCancel(t *testing.T) { ctx := context.Background() cctx, cancel := context.WithCancel(ctx) - _, trecv := StartTimeoutRecv(cctx, time.Hour) + _, trecv := StartTimeoutRecv(cctx, time.Hour, 0) cancel() trecv.wg.Wait() } @@ -102,7 +102,7 @@ func TestTimeoutRecvCanceled(t *testing.T) { cctx, cancel := context.WithCancel(ctx) defer cancel() - tctx, trecv := StartTimeoutRecv(cctx, time.Hour) + tctx, trecv := StartTimeoutRecv(cctx, time.Hour, 0) trecv.Stop() require.Equal(t, "context canceled", tctx.Err().Error()) } diff --git a/br/pkg/checkpoint/BUILD.bazel b/br/pkg/checkpoint/BUILD.bazel index c8679787db4a8..dc3471726625b 100644 --- a/br/pkg/checkpoint/BUILD.bazel +++ b/br/pkg/checkpoint/BUILD.bazel @@ -45,7 +45,7 @@ go_test( srcs = ["checkpoint_test.go"], flaky = True, race = "on", - shard_count = 8, + shard_count = 9, deps = [ ":checkpoint", "//br/pkg/gluetidb", diff --git a/br/pkg/checkpoint/checkpoint.go b/br/pkg/checkpoint/checkpoint.go index 765ede725fb98..78f9a7587d255 100644 --- a/br/pkg/checkpoint/checkpoint.go +++ b/br/pkg/checkpoint/checkpoint.go @@ -67,13 +67,7 @@ type RangeType struct { *rtree.Range } -func (r RangeType) IdentKey() []byte { - return r.StartKey -} - -type ValueType interface { - IdentKey() []byte -} +type ValueType any type CheckpointMessage[K KeyType, V ValueType] struct { // start-key of the origin range @@ -261,7 +255,6 @@ func (r *CheckpointRunner[K, V]) WaitForFinish(ctx context.Context, flush bool) // wait the range flusher exit r.wg.Wait() // remove the checkpoint lock - r.checkpointStorage.deleteLock(ctx) r.checkpointStorage.close() } diff --git a/br/pkg/checkpoint/checkpoint_test.go b/br/pkg/checkpoint/checkpoint_test.go index c6756f8058c5c..b70348aaa5fd9 100644 --- a/br/pkg/checkpoint/checkpoint_test.go +++ b/br/pkg/checkpoint/checkpoint_test.go @@ -75,7 +75,7 @@ func TestCheckpointMetaForRestore(t *testing.T) { }, }, } - err = checkpoint.SaveCheckpointMetadataForSnapshotRestore(ctx, se, checkpointMetaForSnapshotRestore) + err = checkpoint.SaveCheckpointMetadataForSstRestore(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName, checkpointMetaForSnapshotRestore) require.NoError(t, err) checkpointMetaForSnapshotRestore2, err := checkpoint.LoadCheckpointMetadataForSnapshotRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor()) require.NoError(t, err) @@ -278,9 +278,9 @@ func TestCheckpointRestoreRunner(t *testing.T) { se, err := g.CreateSession(s.Mock.Storage) require.NoError(t, err) - err = checkpoint.SaveCheckpointMetadataForSnapshotRestore(ctx, se, &checkpoint.CheckpointMetadataForSnapshotRestore{}) + err = checkpoint.SaveCheckpointMetadataForSstRestore(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName, &checkpoint.CheckpointMetadataForSnapshotRestore{}) require.NoError(t, err) - checkpointRunner, err := checkpoint.StartCheckpointRestoreRunnerForTest(ctx, se, 5*time.Second, 3*time.Second) + checkpointRunner, err := checkpoint.StartCheckpointRestoreRunnerForTest(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName, 5*time.Second, 3*time.Second) require.NoError(t, err) data := map[string]struct { @@ -310,7 +310,7 @@ func TestCheckpointRestoreRunner(t *testing.T) { } for _, d := range data { - err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, 1, d.RangeKey) + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointRangeKeyItem(1, d.RangeKey)) require.NoError(t, err) } @@ -320,7 +320,7 @@ func TestCheckpointRestoreRunner(t *testing.T) { checkpointRunner.FlushChecksum(ctx, 4, 4, 4, 4) for _, d := range data2 { - err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, 2, d.RangeKey) + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointRangeKeyItem(2, d.RangeKey)) require.NoError(t, err) } @@ -343,7 +343,7 @@ func TestCheckpointRestoreRunner(t *testing.T) { respCount += 1 } - _, err = checkpoint.LoadCheckpointDataForSnapshotRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor(), checker) + _, err = checkpoint.LoadCheckpointDataForSstRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor(), checkpoint.SnapshotRestoreCheckpointDatabaseName, checker) require.NoError(t, err) require.Equal(t, 4, respCount) @@ -355,10 +355,10 @@ func TestCheckpointRestoreRunner(t *testing.T) { require.Equal(t, checksum[i].Crc64xor, uint64(i)) } - err = checkpoint.RemoveCheckpointDataForSnapshotRestore(ctx, s.Mock.Domain, se) + err = checkpoint.RemoveCheckpointDataForSstRestore(ctx, s.Mock.Domain, se, checkpoint.SnapshotRestoreCheckpointDatabaseName) require.NoError(t, err) - exists := checkpoint.ExistsSnapshotRestoreCheckpoint(ctx, s.Mock.Domain) + exists := checkpoint.ExistsSstRestoreCheckpoint(ctx, s.Mock.Domain, checkpoint.SnapshotRestoreCheckpointDatabaseName) require.False(t, exists) exists = s.Mock.Domain.InfoSchema().SchemaExists(pmodel.NewCIStr(checkpoint.SnapshotRestoreCheckpointDatabaseName)) require.False(t, exists) @@ -371,9 +371,9 @@ func TestCheckpointRunnerRetry(t *testing.T) { se, err := g.CreateSession(s.Mock.Storage) require.NoError(t, err) - err = checkpoint.SaveCheckpointMetadataForSnapshotRestore(ctx, se, &checkpoint.CheckpointMetadataForSnapshotRestore{}) + err = checkpoint.SaveCheckpointMetadataForSstRestore(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName, &checkpoint.CheckpointMetadataForSnapshotRestore{}) require.NoError(t, err) - checkpointRunner, err := checkpoint.StartCheckpointRestoreRunnerForTest(ctx, se, 100*time.Millisecond, 300*time.Millisecond) + checkpointRunner, err := checkpoint.StartCheckpointRestoreRunnerForTest(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName, 100*time.Millisecond, 300*time.Millisecond) require.NoError(t, err) err = failpoint.Enable("github.com/pingcap/tidb/br/pkg/checkpoint/failed-after-checkpoint-flushes", "return(true)") @@ -382,9 +382,9 @@ func TestCheckpointRunnerRetry(t *testing.T) { err = failpoint.Disable("github.com/pingcap/tidb/br/pkg/checkpoint/failed-after-checkpoint-flushes") require.NoError(t, err) }() - err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, 1, "123") + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointRangeKeyItem(1, "123")) require.NoError(t, err) - err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, 2, "456") + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointRangeKeyItem(2, "456")) require.NoError(t, err) err = checkpointRunner.FlushChecksum(ctx, 1, 1, 1, 1) require.NoError(t, err) @@ -392,7 +392,7 @@ func TestCheckpointRunnerRetry(t *testing.T) { time.Sleep(time.Second) err = failpoint.Disable("github.com/pingcap/tidb/br/pkg/checkpoint/failed-after-checkpoint-flushes") require.NoError(t, err) - err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, 3, "789") + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointRangeKeyItem(3, "789")) require.NoError(t, err) err = checkpointRunner.FlushChecksum(ctx, 3, 3, 3, 3) require.NoError(t, err) @@ -400,14 +400,15 @@ func TestCheckpointRunnerRetry(t *testing.T) { se, err = g.CreateSession(s.Mock.Storage) require.NoError(t, err) recordSet := make(map[string]int) - _, err = checkpoint.LoadCheckpointDataForSnapshotRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor(), - func(tableID int64, rangeKey checkpoint.RestoreValueType) { - recordSet[fmt.Sprintf("%d_%s", tableID, rangeKey)] += 1 + _, err = checkpoint.LoadCheckpointDataForSstRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor(), + checkpoint.SnapshotRestoreCheckpointDatabaseName, + func(tableID int64, v checkpoint.RestoreValueType) { + recordSet[fmt.Sprintf("%d_%s", tableID, v.RangeKey)] += 1 }) require.NoError(t, err) - require.LessOrEqual(t, 1, recordSet["1_{123}"]) - require.LessOrEqual(t, 1, recordSet["2_{456}"]) - require.LessOrEqual(t, 1, recordSet["3_{789}"]) + require.LessOrEqual(t, 1, recordSet["1_123"]) + require.LessOrEqual(t, 1, recordSet["2_456"]) + require.LessOrEqual(t, 1, recordSet["3_789"]) items, _, err := checkpoint.LoadCheckpointChecksumForRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor()) require.NoError(t, err) require.Equal(t, fmt.Sprintf("%d_%d_%d", items[1].Crc64xor, items[1].TotalBytes, items[1].TotalKvs), "1_1_1") @@ -422,14 +423,14 @@ func TestCheckpointRunnerNoRetry(t *testing.T) { se, err := g.CreateSession(s.Mock.Storage) require.NoError(t, err) - err = checkpoint.SaveCheckpointMetadataForSnapshotRestore(ctx, se, &checkpoint.CheckpointMetadataForSnapshotRestore{}) + err = checkpoint.SaveCheckpointMetadataForSstRestore(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName, &checkpoint.CheckpointMetadataForSnapshotRestore{}) require.NoError(t, err) - checkpointRunner, err := checkpoint.StartCheckpointRestoreRunnerForTest(ctx, se, 100*time.Millisecond, 300*time.Millisecond) + checkpointRunner, err := checkpoint.StartCheckpointRestoreRunnerForTest(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName, 100*time.Millisecond, 300*time.Millisecond) require.NoError(t, err) - err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, 1, "123") + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointRangeKeyItem(1, "123")) require.NoError(t, err) - err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, 2, "456") + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointRangeKeyItem(2, "456")) require.NoError(t, err) err = checkpointRunner.FlushChecksum(ctx, 1, 1, 1, 1) require.NoError(t, err) @@ -440,13 +441,14 @@ func TestCheckpointRunnerNoRetry(t *testing.T) { se, err = g.CreateSession(s.Mock.Storage) require.NoError(t, err) recordSet := make(map[string]int) - _, err = checkpoint.LoadCheckpointDataForSnapshotRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor(), - func(tableID int64, rangeKey checkpoint.RestoreValueType) { - recordSet[fmt.Sprintf("%d_%s", tableID, rangeKey)] += 1 + _, err = checkpoint.LoadCheckpointDataForSstRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor(), + checkpoint.SnapshotRestoreCheckpointDatabaseName, + func(tableID int64, v checkpoint.RestoreValueType) { + recordSet[fmt.Sprintf("%d_%s", tableID, v.RangeKey)] += 1 }) require.NoError(t, err) - require.Equal(t, 1, recordSet["1_{123}"]) - require.Equal(t, 1, recordSet["2_{456}"]) + require.Equal(t, 1, recordSet["1_123"]) + require.Equal(t, 1, recordSet["2_456"]) items, _, err := checkpoint.LoadCheckpointChecksumForRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor()) require.NoError(t, err) require.Equal(t, fmt.Sprintf("%d_%d_%d", items[1].Crc64xor, items[1].TotalBytes, items[1].TotalKvs), "1_1_1") @@ -584,3 +586,60 @@ func TestCheckpointRunnerLock(t *testing.T) { runner.WaitForFinish(ctx, true) } + +func TestCheckpointCompactedRestoreRunner(t *testing.T) { + ctx := context.Background() + s := utiltest.CreateRestoreSchemaSuite(t) + g := gluetidb.New() + se, err := g.CreateSession(s.Mock.Storage) + require.NoError(t, err) + + err = checkpoint.SaveCheckpointMetadataForSstRestore(ctx, se, checkpoint.CustomSSTRestoreCheckpointDatabaseName, nil) + require.NoError(t, err) + checkpointRunner, err := checkpoint.StartCheckpointRestoreRunnerForTest(ctx, se, checkpoint.CustomSSTRestoreCheckpointDatabaseName, 500*time.Millisecond, time.Second) + require.NoError(t, err) + + data := map[string]struct { + Name string + }{ + "a": {Name: "a"}, + "A": {Name: "A"}, + "1": {Name: "1"}, + } + + for _, d := range data { + err = checkpoint.AppendRangesForRestore(ctx, checkpointRunner, checkpoint.NewCheckpointFileItem(1, d.Name)) + require.NoError(t, err) + } + + checkpointRunner.FlushChecksum(ctx, 1, 1, 1, 1) + checkpointRunner.FlushChecksum(ctx, 2, 2, 2, 2) + + checkpointRunner.WaitForFinish(ctx, true) + + se, err = g.CreateSession(s.Mock.Storage) + require.NoError(t, err) + respCount := 0 + checker := func(tableID int64, resp checkpoint.RestoreValueType) { + require.NotNil(t, resp) + d, ok := data[resp.Name] + require.True(t, ok) + require.Equal(t, d.Name, resp.Name) + respCount++ + } + + exists := checkpoint.ExistsSstRestoreCheckpoint(ctx, s.Mock.Domain, checkpoint.CustomSSTRestoreCheckpointDatabaseName) + require.True(t, exists) + + _, err = checkpoint.LoadCheckpointDataForSstRestore(ctx, se.GetSessionCtx().GetRestrictedSQLExecutor(), checkpoint.CustomSSTRestoreCheckpointDatabaseName, checker) + require.NoError(t, err) + require.Equal(t, 3, respCount) + + err = checkpoint.RemoveCheckpointDataForSstRestore(ctx, s.Mock.Domain, se, checkpoint.CustomSSTRestoreCheckpointDatabaseName) + require.NoError(t, err) + + exists = checkpoint.ExistsSstRestoreCheckpoint(ctx, s.Mock.Domain, checkpoint.CustomSSTRestoreCheckpointDatabaseName) + require.False(t, exists) + exists = s.Mock.Domain.InfoSchema().SchemaExists(pmodel.NewCIStr(checkpoint.CustomSSTRestoreCheckpointDatabaseName)) + require.False(t, exists) +} diff --git a/br/pkg/checkpoint/external_storage.go b/br/pkg/checkpoint/external_storage.go index 078f2f1294e91..f7d365068e6cf 100644 --- a/br/pkg/checkpoint/external_storage.go +++ b/br/pkg/checkpoint/external_storage.go @@ -85,7 +85,7 @@ func (s *externalCheckpointStorage) getTS(ctx context.Context) (int64, int64, er } return nil - }, utils.NewPDReqBackoffer()) + }, utils.NewAggressivePDBackoffStrategy()) return p, l, errors.Trace(errRetry) } @@ -187,12 +187,3 @@ func (s *externalCheckpointStorage) updateLock(ctx context.Context) error { return nil } - -func (s *externalCheckpointStorage) deleteLock(ctx context.Context) { - if s.lockId > 0 { - err := s.storage.DeleteFile(ctx, s.CheckpointLockPath) - if err != nil { - log.Warn("failed to remove the checkpoint lock", zap.Error(err)) - } - } -} diff --git a/br/pkg/checkpoint/log_restore.go b/br/pkg/checkpoint/log_restore.go index b2ae3c398a3c8..0fd046b67ad7c 100644 --- a/br/pkg/checkpoint/log_restore.go +++ b/br/pkg/checkpoint/log_restore.go @@ -17,11 +17,9 @@ package checkpoint import ( "context" "encoding/json" - "fmt" "time" "github.com/pingcap/errors" - "github.com/pingcap/log" "github.com/pingcap/tidb/br/pkg/glue" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/meta/model" @@ -39,10 +37,6 @@ type LogRestoreValueType struct { Foff int } -func (l LogRestoreValueType) IdentKey() []byte { - return []byte(fmt.Sprint(l.Goff, '.', l.Foff, '.', l.TableID)) -} - type LogRestoreValueMarshaled struct { // group index in the metadata Goff int `json:"goff"` @@ -50,11 +44,6 @@ type LogRestoreValueMarshaled struct { Foffs map[int64][]int `json:"foffs"` } -func (l LogRestoreValueMarshaled) IdentKey() []byte { - log.Fatal("unimplement!") - return nil -} - // valueMarshalerForLogRestore convert the checkpoint data‘s format to an smaller space-used format // input format : // @@ -299,7 +288,7 @@ func TryToGetCheckpointTaskInfo( return nil, errors.Trace(err) } } - hasSnapshotMetadata := ExistsSnapshotRestoreCheckpoint(ctx, dom) + hasSnapshotMetadata := ExistsSstRestoreCheckpoint(ctx, dom, SnapshotRestoreCheckpointDatabaseName) return &CheckpointTaskInfoForLogRestore{ Metadata: metadata, diff --git a/br/pkg/checkpoint/restore.go b/br/pkg/checkpoint/restore.go index 88ff6f8f204de..2e55cc3eb81c2 100644 --- a/br/pkg/checkpoint/restore.go +++ b/br/pkg/checkpoint/restore.go @@ -30,11 +30,31 @@ import ( type RestoreKeyType = int64 type RestoreValueType struct { // the file key of a range - RangeKey string + RangeKey string `json:"range-key,omitempty"` + // the file name, used for compacted restore + Name string `json:"name,omitempty"` } -func (rv RestoreValueType) IdentKey() []byte { - return []byte(rv.RangeKey) +type CheckpointItem struct { + tableID RestoreKeyType + // used for table full backup restore + rangeKey string + // used for table raw/txn/compacted SST restore + name string +} + +func NewCheckpointRangeKeyItem(tableID RestoreKeyType, rangeKey string) *CheckpointItem { + return &CheckpointItem{ + tableID: tableID, + rangeKey: rangeKey, + } +} + +func NewCheckpointFileItem(tableID RestoreKeyType, fileName string) *CheckpointItem { + return &CheckpointItem{ + tableID: tableID, + name: fileName, + } } func valueMarshalerForRestore(group *RangeGroup[RestoreKeyType, RestoreValueType]) ([]byte, error) { @@ -45,11 +65,12 @@ func valueMarshalerForRestore(group *RangeGroup[RestoreKeyType, RestoreValueType func StartCheckpointRestoreRunnerForTest( ctx context.Context, se glue.Session, + dbName string, tick time.Duration, retryDuration time.Duration, ) (*CheckpointRunner[RestoreKeyType, RestoreValueType], error) { runner := newCheckpointRunner[RestoreKeyType, RestoreValueType]( - newTableCheckpointStorage(se, SnapshotRestoreCheckpointDatabaseName), + newTableCheckpointStorage(se, dbName), nil, valueMarshalerForRestore) runner.startCheckpointMainLoop(ctx, tick, tick, 0, retryDuration) @@ -60,9 +81,10 @@ func StartCheckpointRestoreRunnerForTest( func StartCheckpointRunnerForRestore( ctx context.Context, se glue.Session, + dbName string, ) (*CheckpointRunner[RestoreKeyType, RestoreValueType], error) { runner := newCheckpointRunner[RestoreKeyType, RestoreValueType]( - newTableCheckpointStorage(se, SnapshotRestoreCheckpointDatabaseName), + newTableCheckpointStorage(se, dbName), nil, valueMarshalerForRestore) // for restore, no need to set lock @@ -75,25 +97,33 @@ func StartCheckpointRunnerForRestore( func AppendRangesForRestore( ctx context.Context, r *CheckpointRunner[RestoreKeyType, RestoreValueType], - tableID RestoreKeyType, - rangeKey string, + c *CheckpointItem, ) error { + var group RestoreValueType + if len(c.rangeKey) != 0 { + group.RangeKey = c.rangeKey + } else if len(c.name) != 0 { + group.Name = c.name + } else { + return errors.New("either rangekey or name should be used in checkpoint append") + } return r.Append(ctx, &CheckpointMessage[RestoreKeyType, RestoreValueType]{ - GroupKey: tableID, + GroupKey: c.tableID, Group: []RestoreValueType{ - {RangeKey: rangeKey}, + group, }, }) } // load the whole checkpoint range data and retrieve the metadata of restored ranges // and return the total time cost in the past executions -func LoadCheckpointDataForSnapshotRestore[K KeyType, V ValueType]( +func LoadCheckpointDataForSstRestore[K KeyType, V ValueType]( ctx context.Context, execCtx sqlexec.RestrictedSQLExecutor, + dbName string, fn func(K, V), ) (time.Duration, error) { - return selectCheckpointData(ctx, execCtx, SnapshotRestoreCheckpointDatabaseName, fn) + return selectCheckpointData(ctx, execCtx, dbName, fn) } func LoadCheckpointChecksumForRestore( @@ -118,28 +148,35 @@ func LoadCheckpointMetadataForSnapshotRestore( return m, err } -func SaveCheckpointMetadataForSnapshotRestore( +func SaveCheckpointMetadataForSstRestore( ctx context.Context, se glue.Session, + dbName string, meta *CheckpointMetadataForSnapshotRestore, ) error { - err := initCheckpointTable(ctx, se, SnapshotRestoreCheckpointDatabaseName, + err := initCheckpointTable(ctx, se, dbName, []string{checkpointDataTableName, checkpointChecksumTableName}) if err != nil { return errors.Trace(err) } - return insertCheckpointMeta(ctx, se, SnapshotRestoreCheckpointDatabaseName, checkpointMetaTableName, meta) + if meta != nil { + return insertCheckpointMeta(ctx, se, dbName, checkpointMetaTableName, meta) + } + return nil } -func ExistsSnapshotRestoreCheckpoint( +func ExistsSstRestoreCheckpoint( ctx context.Context, dom *domain.Domain, + dbName string, ) bool { + // we only check the existence of the checkpoint data table + // because the checkpoint metadata is not used for restore return dom.InfoSchema(). - TableExists(pmodel.NewCIStr(SnapshotRestoreCheckpointDatabaseName), pmodel.NewCIStr(checkpointMetaTableName)) + TableExists(pmodel.NewCIStr(dbName), pmodel.NewCIStr(checkpointDataTableName)) } -func RemoveCheckpointDataForSnapshotRestore(ctx context.Context, dom *domain.Domain, se glue.Session) error { - return dropCheckpointTables(ctx, dom, se, SnapshotRestoreCheckpointDatabaseName, +func RemoveCheckpointDataForSstRestore(ctx context.Context, dom *domain.Domain, se glue.Session, dbName string) error { + return dropCheckpointTables(ctx, dom, se, dbName, []string{checkpointDataTableName, checkpointChecksumTableName, checkpointMetaTableName}) } diff --git a/br/pkg/checkpoint/storage.go b/br/pkg/checkpoint/storage.go index 465924f8300f4..4a37a14b0da12 100644 --- a/br/pkg/checkpoint/storage.go +++ b/br/pkg/checkpoint/storage.go @@ -38,7 +38,6 @@ type checkpointStorage interface { initialLock(ctx context.Context) error updateLock(ctx context.Context) error - deleteLock(ctx context.Context) close() } @@ -48,8 +47,9 @@ type checkpointStorage interface { // 2. BR regards the metadata table as a file so that it is not empty if the table exists. // 3. BR regards the checkpoint table as a directory which is managed by metadata table. const ( - LogRestoreCheckpointDatabaseName string = "__TiDB_BR_Temporary_Log_Restore_Checkpoint" - SnapshotRestoreCheckpointDatabaseName string = "__TiDB_BR_Temporary_Snapshot_Restore_Checkpoint" + LogRestoreCheckpointDatabaseName string = "__TiDB_BR_Temporary_Log_Restore_Checkpoint" + SnapshotRestoreCheckpointDatabaseName string = "__TiDB_BR_Temporary_Snapshot_Restore_Checkpoint" + CustomSSTRestoreCheckpointDatabaseName string = "__TiDB_BR_Temporary_Custom_SST_Restore_Checkpoint" // directory level table checkpointDataTableName string = "cpt_data" @@ -90,7 +90,9 @@ const ( // IsCheckpointDB checks whether the dbname is checkpoint database. func IsCheckpointDB(dbname pmodel.CIStr) bool { - return dbname.O == LogRestoreCheckpointDatabaseName || dbname.O == SnapshotRestoreCheckpointDatabaseName + return dbname.O == LogRestoreCheckpointDatabaseName || + dbname.O == SnapshotRestoreCheckpointDatabaseName || + dbname.O == CustomSSTRestoreCheckpointDatabaseName } const CheckpointIdMapBlockSize int = 524288 @@ -142,8 +144,6 @@ func (s *tableCheckpointStorage) updateLock(ctx context.Context) error { return nil } -func (s *tableCheckpointStorage) deleteLock(ctx context.Context) {} - func (s *tableCheckpointStorage) flushCheckpointData(ctx context.Context, data []byte) error { sqls, argss := chunkInsertCheckpointSQLs(s.checkpointDBName, checkpointDataTableName, data) for i, sql := range sqls { diff --git a/br/pkg/checksum/executor.go b/br/pkg/checksum/executor.go index c61488aaeeeac..3cd0405470562 100644 --- a/br/pkg/checksum/executor.go +++ b/br/pkg/checksum/executor.go @@ -369,8 +369,6 @@ func (exec *Executor) Execute( updateFn func(), ) (*tipb.ChecksumResponse, error) { checksumResp := &tipb.ChecksumResponse{} - checksumBackoffer := utils.InitialRetryState(utils.ChecksumRetryTime, - utils.ChecksumWaitInterval, utils.ChecksumMaxWaitInterval) for _, req := range exec.reqs { // Pointer to SessionVars.Killed // Killed is a flag to indicate that this query is killed. @@ -397,7 +395,7 @@ func (exec *Executor) Execute( return errors.Trace(err) } return nil - }, &checksumBackoffer) + }, utils.NewChecksumBackoffStrategy()) if err != nil { return nil, errors.Trace(err) } diff --git a/br/pkg/conn/BUILD.bazel b/br/pkg/conn/BUILD.bazel index b784d5c080afa..c6f7b693d6e3d 100644 --- a/br/pkg/conn/BUILD.bazel +++ b/br/pkg/conn/BUILD.bazel @@ -15,6 +15,7 @@ go_library( "//br/pkg/utils", "//br/pkg/version", "//pkg/config", + "//pkg/ddl", "//pkg/domain", "//pkg/kv", "@com_github_docker_go_units//:go-units", @@ -51,7 +52,7 @@ go_test( "//br/pkg/config", "//br/pkg/conn/util", "//br/pkg/pdutil", - "//br/pkg/utiltest", + "//br/pkg/restore/split", "//pkg/testkit/testsetup", "@com_github_docker_go_units//:go-units", "@com_github_pingcap_errors//:errors", diff --git a/br/pkg/conn/conn.go b/br/pkg/conn/conn.go index 4d92c447e2bc8..7ab362e43ffe1 100644 --- a/br/pkg/conn/conn.go +++ b/br/pkg/conn/conn.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/tidb/br/pkg/utils" "github.com/pingcap/tidb/br/pkg/version" "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" "github.com/tikv/client-go/v2/oracle" @@ -115,7 +116,7 @@ func GetAllTiKVStoresWithRetry(ctx context.Context, return errors.Trace(err) }, - utils.NewPDReqBackoffer(), + utils.NewAggressivePDBackoffStrategy(), ) return stores, errors.Trace(errRetry) @@ -194,6 +195,9 @@ func NewMgr( return nil, errors.Trace(err) } + if config.GetGlobalConfig().Store != config.StoreTypeTiKV { + config.GetGlobalConfig().Store = config.StoreTypeTiKV + } // Disable GC because TiDB enables GC already. path := fmt.Sprintf( "tikv://%s?disableGC=true&keyspaceName=%s", @@ -292,6 +296,7 @@ func (mgr *Mgr) Close() { if mgr.dom != nil { mgr.dom.Close() } + ddl.CloseOwnerManager() tikv.StoreShuttingDown(1) _ = mgr.storage.Close() } @@ -415,7 +420,7 @@ func (mgr *Mgr) GetConfigFromTiKV(ctx context.Context, cli *http.Client, fn func return err } return nil - }, utils.NewPDReqBackoffer()) + }, utils.NewAggressivePDBackoffStrategy()) if err != nil { // if one store failed, break and return error return err diff --git a/br/pkg/conn/conn_test.go b/br/pkg/conn/conn_test.go index e15fc747eb837..43b0e7f9f0eb3 100644 --- a/br/pkg/conn/conn_test.go +++ b/br/pkg/conn/conn_test.go @@ -18,7 +18,7 @@ import ( "github.com/pingcap/tidb/br/pkg/conn" "github.com/pingcap/tidb/br/pkg/conn/util" "github.com/pingcap/tidb/br/pkg/pdutil" - "github.com/pingcap/tidb/br/pkg/utiltest" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/stretchr/testify/require" "go.uber.org/multierr" "google.golang.org/grpc/codes" @@ -62,7 +62,7 @@ func TestGetAllTiKVStoresWithRetryCancel(t *testing.T) { }, } - fpdc := utiltest.NewFakePDClient(stores, false, nil) + fpdc := split.NewFakePDClient(stores, false, nil) _, err = conn.GetAllTiKVStoresWithRetry(ctx, fpdc, util.SkipTiFlash) require.Error(t, err) @@ -108,7 +108,7 @@ func TestGetAllTiKVStoresWithUnknown(t *testing.T) { }, } - fpdc := utiltest.NewFakePDClient(stores, false, nil) + fpdc := split.NewFakePDClient(stores, false, nil) _, err = conn.GetAllTiKVStoresWithRetry(ctx, fpdc, util.SkipTiFlash) require.Error(t, err) @@ -164,7 +164,7 @@ func TestCheckStoresAlive(t *testing.T) { }, } - fpdc := utiltest.NewFakePDClient(stores, false, nil) + fpdc := split.NewFakePDClient(stores, false, nil) kvStores, err := conn.GetAllTiKVStoresWithRetry(ctx, fpdc, util.SkipTiFlash) require.NoError(t, err) @@ -251,7 +251,7 @@ func TestGetAllTiKVStores(t *testing.T) { } for _, testCase := range testCases { - pdClient := utiltest.NewFakePDClient(testCase.stores, false, nil) + pdClient := split.NewFakePDClient(testCase.stores, false, nil) stores, err := util.GetAllTiKVStores(context.Background(), pdClient, testCase.storeBehavior) if len(testCase.expectedError) != 0 { require.Error(t, err) @@ -421,7 +421,7 @@ func TestGetMergeRegionSizeAndCount(t *testing.T) { pctx := context.Background() for _, ca := range cases { ctx, cancel := context.WithCancel(pctx) - pdCli := utiltest.NewFakePDClient(ca.stores, false, nil) + pdCli := split.NewFakePDClient(ca.stores, false, nil) require.Equal(t, len(ca.content), len(ca.stores)) count := 0 mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -586,7 +586,7 @@ func TestIsLogBackupEnabled(t *testing.T) { pctx := context.Background() for _, ca := range cases { ctx, cancel := context.WithCancel(pctx) - pdCli := utiltest.NewFakePDClient(ca.stores, false, nil) + pdCli := split.NewFakePDClient(ca.stores, false, nil) require.Equal(t, len(ca.content), len(ca.stores)) count := 0 mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/br/pkg/encryption/master_key/kms_backend.go b/br/pkg/encryption/master_key/kms_backend.go index 1538a379d93bd..23a7b4e189693 100644 --- a/br/pkg/encryption/master_key/kms_backend.go +++ b/br/pkg/encryption/master_key/kms_backend.go @@ -5,6 +5,7 @@ package encryption import ( "context" "sync" + "time" "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/encryptionpb" @@ -55,12 +56,11 @@ func (k *KmsBackend) Decrypt(ctx context.Context, content *encryptionpb.Encrypte return k.state.cached.encryptionBackend.DecryptContent(ctx, content) } - // piggyback on NewDownloadSSTBackoffer, a refactor is ongoing to remove all the backoffers - // so user don't need to write a backoffer for every type decryptedKey, err := - utils.WithRetryV2(ctx, utils.NewDownloadSSTBackoffer(), func(ctx context.Context) ([]byte, error) { - return k.kmsProvider.DecryptDataKey(ctx, ciphertextKey) - }) + utils.WithRetryV2(ctx, utils.NewBackoffRetryAllErrorStrategy(10, 500*time.Millisecond, 5*time.Second), + func(ctx context.Context) ([]byte, error) { + return k.kmsProvider.DecryptDataKey(ctx, ciphertextKey) + }) if err != nil { return nil, errors.Annotate(err, "decrypt encrypted key failed") } diff --git a/br/pkg/errors/errors.go b/br/pkg/errors/errors.go index 3bd2ab776ccb3..6a9449eff95d1 100644 --- a/br/pkg/errors/errors.go +++ b/br/pkg/errors/errors.go @@ -31,15 +31,16 @@ func IsContextCanceled(err error) bool { // BR errors. var ( - ErrUnknown = errors.Normalize("internal error", errors.RFCCodeText("BR:Common:ErrUnknown")) - ErrInvalidArgument = errors.Normalize("invalid argument", errors.RFCCodeText("BR:Common:ErrInvalidArgument")) - ErrUndefinedRestoreDbOrTable = errors.Normalize("undefined restore databases or tables", errors.RFCCodeText("BR:Common:ErrUndefinedDbOrTable")) - ErrVersionMismatch = errors.Normalize("version mismatch", errors.RFCCodeText("BR:Common:ErrVersionMismatch")) - ErrFailedToConnect = errors.Normalize("failed to make gRPC channels", errors.RFCCodeText("BR:Common:ErrFailedToConnect")) - ErrInvalidMetaFile = errors.Normalize("invalid metafile: %s", errors.RFCCodeText("BR:Common:ErrInvalidMetaFile")) - ErrEnvNotSpecified = errors.Normalize("environment variable not found", errors.RFCCodeText("BR:Common:ErrEnvNotSpecified")) - ErrUnsupportedOperation = errors.Normalize("the operation is not supported", errors.RFCCodeText("BR:Common:ErrUnsupportedOperation")) - ErrInvalidRange = errors.Normalize("invalid restore range", errors.RFCCodeText("BR:Common:ErrInvalidRange")) + ErrUnknown = errors.Normalize("internal error", errors.RFCCodeText("BR:Common:ErrUnknown")) + ErrInvalidArgument = errors.Normalize("invalid argument", errors.RFCCodeText("BR:Common:ErrInvalidArgument")) + ErrUndefinedRestoreDbOrTable = errors.Normalize("undefined restore databases or tables", errors.RFCCodeText("BR:Common:ErrUndefinedDbOrTable")) + ErrVersionMismatch = errors.Normalize("version mismatch", errors.RFCCodeText("BR:Common:ErrVersionMismatch")) + ErrFailedToConnect = errors.Normalize("failed to make gRPC channels", errors.RFCCodeText("BR:Common:ErrFailedToConnect")) + ErrInvalidMetaFile = errors.Normalize("invalid metafile: %s", errors.RFCCodeText("BR:Common:ErrInvalidMetaFile")) + ErrEnvNotSpecified = errors.Normalize("environment variable not found", errors.RFCCodeText("BR:Common:ErrEnvNotSpecified")) + ErrUnsupportedOperation = errors.Normalize("the operation is not supported", errors.RFCCodeText("BR:Common:ErrUnsupportedOperation")) + ErrInvalidRange = errors.Normalize("invalid restore range", errors.RFCCodeText("BR:Common:ErrInvalidRange")) + ErrMigrationVersionNotSupported = errors.Normalize("the migration version isn't supported", errors.RFCCodeText("BR:Common:ErrMigrationVersionNotSupported")) ErrPDUpdateFailed = errors.Normalize("failed to update PD", errors.RFCCodeText("BR:PD:ErrPDUpdateFailed")) ErrPDLeaderNotFound = errors.Normalize("PD leader not found", errors.RFCCodeText("BR:PD:ErrPDLeaderNotFound")) diff --git a/br/pkg/glue/BUILD.bazel b/br/pkg/glue/BUILD.bazel index 1ab377fc602dd..819414ff70eac 100644 --- a/br/pkg/glue/BUILD.bazel +++ b/br/pkg/glue/BUILD.bazel @@ -18,10 +18,12 @@ go_library( "//pkg/parser/model", "//pkg/sessionctx", "@com_github_fatih_color//:color", + "@com_github_pingcap_log//:log", "@com_github_tikv_pd_client//:client", "@com_github_vbauerster_mpb_v7//:mpb", "@com_github_vbauerster_mpb_v7//decor", "@org_golang_x_term//:term", + "@org_uber_go_zap//:zap", ], ) diff --git a/br/pkg/glue/console_glue.go b/br/pkg/glue/console_glue.go index a780d67dd267e..fcd1abd9445b1 100644 --- a/br/pkg/glue/console_glue.go +++ b/br/pkg/glue/console_glue.go @@ -11,6 +11,8 @@ import ( "time" "github.com/fatih/color" + "github.com/pingcap/log" + "go.uber.org/zap" "golang.org/x/term" ) @@ -32,8 +34,13 @@ type ExtraField func() [2]string // WithTimeCost adds the task information of time costing for `ShowTask`. func WithTimeCost() ExtraField { start := time.Now() + var cached time.Duration + return func() [2]string { - return [2]string{"take", time.Since(start).Round(time.Millisecond).String()} + if cached == 0 { + cached = time.Since(start).Round(time.Millisecond) + } + return [2]string{"take", cached.String()} } } @@ -65,14 +72,10 @@ func printFinalMessage(extraFields []ExtraField) func() string { // ShowTask prints a task start information, and mark as finished when the returned function called. // This is for TUI presenting. func (ops ConsoleOperations) ShowTask(message string, extraFields ...ExtraField) func() { - ops.Print(message) + bar := ops.StartProgressBar(message, OnlyOneTask, extraFields...) return func() { - fields := make([]string, 0, len(extraFields)) - for _, fieldFunc := range extraFields { - field := fieldFunc() - fields = append(fields, fmt.Sprintf("%s = %s", field[0], color.New(color.Bold).Sprint(field[1]))) - } - ops.Printf("%s { %s }\n", color.HiGreenString("DONE"), strings.Join(fields, ", ")) + bar.Inc() + bar.Close() } } @@ -84,6 +87,21 @@ func (ops ConsoleOperations) RootFrame() Frame { } } +func PrintList[T any](ops ConsoleOperations, title string, items []T, maxItemsDisplay int) { + log.Info("Print list: all items.", zap.String("title", title), zap.Any("items", items)) + ops.Println(title) + toPrint := items + if maxItemsDisplay > 0 { + toPrint = items[:min(len(items), maxItemsDisplay)] + } + for _, item := range toPrint { + ops.Printf("- %v\n", item) + } + if len(items) > len(toPrint) { + ops.Printf("... and %d more ...", len(items)-len(toPrint)) + } +} + // PromptBool prompts a boolean from the user. func (ops ConsoleOperations) PromptBool(p string) bool { if !ops.IsInteractive() { diff --git a/br/pkg/glue/progressing.go b/br/pkg/glue/progressing.go index 3182e46ba53df..fd1616f035e4c 100644 --- a/br/pkg/glue/progressing.go +++ b/br/pkg/glue/progressing.go @@ -18,7 +18,15 @@ import ( const OnlyOneTask int = -1 -var spinnerText []string = []string{".", "..", "..."} +func coloredSpinner(s []string) []string { + c := color.New(color.Bold, color.FgGreen) + for i := range s { + s[i] = c.Sprint(s[i]) + } + return s +} + +var spinnerText []string = coloredSpinner([]string{"/", "-", "\\", "|"}) type pbProgress struct { bar *mpb.Bar @@ -44,6 +52,13 @@ func (p pbProgress) GetCurrent() int64 { // Close marks the progress as 100% complete and that Inc() can no longer be // called. func (p pbProgress) Close() { + // This wait shouldn't block. + // We are just waiting the progress bar refresh to the finished state. + defer func() { + p.bar.Wait() + p.progress.Wait() + }() + if p.bar.Completed() || p.bar.Aborted() { return } @@ -162,7 +177,7 @@ func buildProgressBar(pb *mpb.Progress, title string, total int, extraFields ... } var ( - spinnerDoneText = fmt.Sprintf("... %s", color.GreenString("DONE")) + spinnerDoneText = fmt.Sprintf(":: %s", color.GreenString("DONE")) ) func buildOneTaskBar(pb *mpb.Progress, title string, total int) *mpb.Bar { diff --git a/br/pkg/gluetidb/glue.go b/br/pkg/gluetidb/glue.go index a86ef312d1804..9514ae4f5f7a1 100644 --- a/br/pkg/gluetidb/glue.go +++ b/br/pkg/gluetidb/glue.go @@ -107,6 +107,9 @@ func (g Glue) startDomainAsNeeded(store kv.Storage) error { if existDom != nil { return nil } + if err := ddl.StartOwnerManager(context.Background(), store); err != nil { + return errors.Trace(err) + } dom, err := session.GetDomain(store) if err != nil { return err diff --git a/br/pkg/metautil/BUILD.bazel b/br/pkg/metautil/BUILD.bazel index a7008e6283859..9aecac3fc6b75 100644 --- a/br/pkg/metautil/BUILD.bazel +++ b/br/pkg/metautil/BUILD.bazel @@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "metautil", srcs = [ + "debug.go", "load.go", "metafile.go", "statsfile.go", @@ -18,7 +19,7 @@ go_library( "//pkg/meta/model", "//pkg/statistics/handle", "//pkg/statistics/handle/types", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/tablecodec", "//pkg/util", "//pkg/util/encrypt", @@ -38,6 +39,7 @@ go_test( name = "metautil_test", timeout = "short", srcs = [ + "debug_test.go", "load_test.go", "main_test.go", "metafile_test.go", @@ -45,17 +47,18 @@ go_test( ], embed = [":metautil"], flaky = True, - shard_count = 9, + shard_count = 10, deps = [ "//br/pkg/storage", "//br/pkg/utils", "//pkg/meta/model", "//pkg/parser/model", "//pkg/statistics/handle/types", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/tablecodec", "//pkg/testkit/testsetup", "//pkg/util", + "@com_github_gogo_protobuf//proto", "@com_github_golang_protobuf//proto", "@com_github_pingcap_kvproto//pkg/brpb", "@com_github_pingcap_kvproto//pkg/encryptionpb", diff --git a/br/pkg/metautil/debug.go b/br/pkg/metautil/debug.go new file mode 100644 index 0000000000000..1b1fc35bdd2c4 --- /dev/null +++ b/br/pkg/metautil/debug.go @@ -0,0 +1,134 @@ +// Copyright 2024 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 metautil + +import ( + "bytes" + "context" + "crypto/sha256" + "fmt" + + "github.com/gogo/protobuf/proto" + "github.com/pingcap/errors" + backuppb "github.com/pingcap/kvproto/pkg/brpb" + berrors "github.com/pingcap/tidb/br/pkg/errors" + "github.com/pingcap/tidb/br/pkg/storage" + "github.com/pingcap/tidb/br/pkg/utils" + tidbutil "github.com/pingcap/tidb/pkg/util" + "golang.org/x/sync/errgroup" +) + +const ( + // JSONFileFormat represents json file name format + JSONFileFormat = "jsons/%s.json" +) + +// DecodeStatsFile decodes the stats file to json format, it is called by br debug +func DecodeStatsFile( + ctx context.Context, + s storage.ExternalStorage, + cipher *backuppb.CipherInfo, + schemas []*backuppb.Schema, +) error { + for _, schema := range schemas { + for _, statsIndex := range schema.StatsIndex { + if len(statsIndex.Name) == 0 { + continue + } + content, err := s.ReadFile(ctx, statsIndex.Name) + if err != nil { + return errors.Trace(err) + } + decryptContent, err := utils.Decrypt(content, cipher, statsIndex.CipherIv) + if err != nil { + return errors.Trace(err) + } + checksum := sha256.Sum256(decryptContent) + if !bytes.Equal(statsIndex.Sha256, checksum[:]) { + return berrors.ErrInvalidMetaFile.GenWithStackByArgs(fmt.Sprintf( + "checksum mismatch expect %x, got %x", statsIndex.Sha256, checksum[:])) + } + statsFileBlocks := &backuppb.StatsFile{} + if err := proto.Unmarshal(decryptContent, statsFileBlocks); err != nil { + return errors.Trace(err) + } + jsonContent, err := utils.MarshalStatsFile(statsFileBlocks) + if err != nil { + return errors.Trace(err) + } + if err := s.WriteFile(ctx, fmt.Sprintf(JSONFileFormat, statsIndex.Name), jsonContent); err != nil { + return errors.Trace(err) + } + } + } + return nil +} + +// DecodeMetaFile decodes the meta file to json format, it is called by br debug +func DecodeMetaFile( + ctx context.Context, + s storage.ExternalStorage, + cipher *backuppb.CipherInfo, + metaIndex *backuppb.MetaFile, +) error { + if metaIndex == nil { + return nil + } + eg, ectx := errgroup.WithContext(ctx) + workers := tidbutil.NewWorkerPool(8, "download files workers") + for _, node := range metaIndex.MetaFiles { + workers.ApplyOnErrorGroup(eg, func() error { + content, err := s.ReadFile(ectx, node.Name) + if err != nil { + return errors.Trace(err) + } + + decryptContent, err := utils.Decrypt(content, cipher, node.CipherIv) + if err != nil { + return errors.Trace(err) + } + + checksum := sha256.Sum256(decryptContent) + if !bytes.Equal(node.Sha256, checksum[:]) { + return berrors.ErrInvalidMetaFile.GenWithStackByArgs(fmt.Sprintf( + "checksum mismatch expect %x, got %x", node.Sha256, checksum[:])) + } + + child := &backuppb.MetaFile{} + if err = proto.Unmarshal(decryptContent, child); err != nil { + return errors.Trace(err) + } + + // the max depth of the root metafile is only 1. + // ASSERT: len(child.MetaFiles) == 0 + if len(child.MetaFiles) > 0 { + return errors.Errorf("the metafile has unexpected level: %v", child) + } + + jsonContent, err := utils.MarshalMetaFile(child) + if err != nil { + return errors.Trace(err) + } + + if err := s.WriteFile(ctx, fmt.Sprintf(JSONFileFormat, node.Name), jsonContent); err != nil { + return errors.Trace(err) + } + + err = DecodeStatsFile(ctx, s, cipher, child.Schemas) + return errors.Trace(err) + }) + } + return eg.Wait() +} diff --git a/br/pkg/metautil/debug_test.go b/br/pkg/metautil/debug_test.go new file mode 100644 index 0000000000000..3a51449eb4c18 --- /dev/null +++ b/br/pkg/metautil/debug_test.go @@ -0,0 +1,194 @@ +// Copyright 2024 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 metautil_test + +import ( + "context" + "crypto/sha256" + "fmt" + "math/rand" + "testing" + + "github.com/gogo/protobuf/proto" + backuppb "github.com/pingcap/kvproto/pkg/brpb" + "github.com/pingcap/tidb/br/pkg/metautil" + "github.com/pingcap/tidb/br/pkg/storage" + "github.com/pingcap/tidb/br/pkg/utils" + "github.com/stretchr/testify/require" +) + +func flushMetaFile( + ctx context.Context, + t *testing.T, + fname string, + metaFile *backuppb.MetaFile, + storage storage.ExternalStorage, + cipher *backuppb.CipherInfo, +) *backuppb.File { + content, err := metaFile.Marshal() + require.NoError(t, err) + + encyptedContent, iv, err := metautil.Encrypt(content, cipher) + require.NoError(t, err) + + err = storage.WriteFile(ctx, fname, encyptedContent) + require.NoError(t, err) + + checksum := sha256.Sum256(content) + file := &backuppb.File{ + Name: fname, + Sha256: checksum[:], + Size_: uint64(len(content)), + CipherIv: iv, + } + + return file +} + +func flushStatsFile( + ctx context.Context, + t *testing.T, + fname string, + statsFile *backuppb.StatsFile, + storage storage.ExternalStorage, + cipher *backuppb.CipherInfo, +) *backuppb.StatsFileIndex { + content, err := proto.Marshal(statsFile) + require.NoError(t, err) + + checksum := sha256.Sum256(content) + sizeOri := uint64(len(content)) + encryptedContent, iv, err := metautil.Encrypt(content, cipher) + require.NoError(t, err) + + err = storage.WriteFile(ctx, fname, encryptedContent) + require.NoError(t, err) + + return &backuppb.StatsFileIndex{ + Name: fname, + Sha256: checksum[:], + SizeEnc: uint64(len(encryptedContent)), + SizeOri: sizeOri, + CipherIv: iv, + InlineData: []byte(fmt.Sprintf("%d", rand.Int())), + } +} + +func TestDecodeMetaFile(t *testing.T) { + ctx := context.Background() + base := t.TempDir() + s, err := storage.NewLocalStorage(base) + require.NoError(t, err) + cipher := &backuppb.CipherInfo{CipherType: 1} + file1 := flushMetaFile(ctx, t, "data", &backuppb.MetaFile{ + DataFiles: []*backuppb.File{ + { + Name: "1.sst", + Sha256: []byte("1.sst"), + StartKey: []byte("start"), + EndKey: []byte("end"), + EndVersion: 1, + Crc64Xor: 1, + TotalKvs: 2, + TotalBytes: 3, + Cf: "write", + CipherIv: []byte("1.sst"), + }, + }, + }, s, cipher) + stats := flushStatsFile(ctx, t, "stats", &backuppb.StatsFile{Blocks: []*backuppb.StatsBlock{ + { + PhysicalId: 1, + JsonTable: []byte("1"), + }, + { + PhysicalId: 2, + JsonTable: []byte("2"), + }, + }}, s, cipher) + metaFile2 := &backuppb.MetaFile{ + Schemas: []*backuppb.Schema{ + { + Db: []byte(`{"db_name":{"L":"test","O":"test"},"id":1,"state":5}`), + Table: []byte(`{"id":2,"state":5}`), + Crc64Xor: 1, + TotalKvs: 2, + TotalBytes: 3, + TiflashReplicas: 4, + Stats: []byte(`{"a":1}`), + StatsIndex: []*backuppb.StatsFileIndex{stats}, + }, + }, + } + file2 := flushMetaFile(ctx, t, "schema", metaFile2, s, cipher) + + { + err = metautil.DecodeMetaFile(ctx, s, cipher, &backuppb.MetaFile{MetaFiles: []*backuppb.File{file1}}) + require.NoError(t, err) + content, err := s.ReadFile(ctx, "jsons/data.json") + require.NoError(t, err) + metaFile, err := utils.UnmarshalMetaFile(content) + require.NoError(t, err) + require.Equal(t, 1, len(metaFile.DataFiles)) + require.Equal(t, "1.sst", metaFile.DataFiles[0].Name) + require.Equal(t, []byte("1.sst"), metaFile.DataFiles[0].Sha256) + require.Equal(t, []byte("start"), metaFile.DataFiles[0].StartKey) + require.Equal(t, []byte("end"), metaFile.DataFiles[0].EndKey) + require.Equal(t, uint64(1), metaFile.DataFiles[0].EndVersion) + require.Equal(t, uint64(1), metaFile.DataFiles[0].Crc64Xor) + require.Equal(t, uint64(2), metaFile.DataFiles[0].TotalKvs) + require.Equal(t, uint64(3), metaFile.DataFiles[0].TotalBytes) + require.Equal(t, "write", metaFile.DataFiles[0].Cf) + require.Equal(t, []byte("1.sst"), metaFile.DataFiles[0].CipherIv) + } + + { + err = metautil.DecodeMetaFile(ctx, s, cipher, &backuppb.MetaFile{MetaFiles: []*backuppb.File{file2}}) + require.NoError(t, err) + { + content, err := s.ReadFile(ctx, "jsons/schema.json") + require.NoError(t, err) + metaFile, err := utils.UnmarshalMetaFile(content) + require.NoError(t, err) + require.Equal(t, 1, len(metaFile.Schemas)) + require.Equal(t, metaFile2.Schemas[0].Db, metaFile.Schemas[0].Db) + require.Equal(t, metaFile2.Schemas[0].Table, metaFile.Schemas[0].Table) + require.Equal(t, uint64(1), metaFile.Schemas[0].Crc64Xor) + require.Equal(t, uint64(2), metaFile.Schemas[0].TotalKvs) + require.Equal(t, uint64(3), metaFile.Schemas[0].TotalBytes) + require.Equal(t, uint32(4), metaFile.Schemas[0].TiflashReplicas) + require.Equal(t, metaFile2.Schemas[0].Stats, metaFile.Schemas[0].Stats) + statsIndex := metaFile.Schemas[0].StatsIndex + require.Equal(t, 1, len(statsIndex)) + require.Equal(t, stats.Name, statsIndex[0].Name) + require.Equal(t, stats.Sha256, statsIndex[0].Sha256) + require.Equal(t, stats.SizeEnc, statsIndex[0].SizeEnc) + require.Equal(t, stats.SizeOri, statsIndex[0].SizeOri) + require.Equal(t, stats.CipherIv, statsIndex[0].CipherIv) + require.Equal(t, stats.InlineData, statsIndex[0].InlineData) + } + { + content, err := s.ReadFile(ctx, "jsons/stats.json") + require.NoError(t, err) + statsFileBlocks, err := utils.UnmarshalStatsFile(content) + require.NoError(t, err) + require.Equal(t, 2, len(statsFileBlocks.Blocks)) + require.Equal(t, int64(1), statsFileBlocks.Blocks[0].PhysicalId) + require.Equal(t, []byte("1"), statsFileBlocks.Blocks[0].JsonTable) + require.Equal(t, int64(2), statsFileBlocks.Blocks[1].PhysicalId) + require.Equal(t, []byte("2"), statsFileBlocks.Blocks[1].JsonTable) + } + } +} diff --git a/br/pkg/metautil/load_test.go b/br/pkg/metautil/load_test.go index b0d0eb81e09d2..d78ad6c3b4cc3 100644 --- a/br/pkg/metautil/load_test.go +++ b/br/pkg/metautil/load_test.go @@ -25,7 +25,7 @@ import ( "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/stretchr/testify/require" ) diff --git a/br/pkg/metautil/metafile.go b/br/pkg/metautil/metafile.go index 7b146f380243b..018954683edf6 100644 --- a/br/pkg/metautil/metafile.go +++ b/br/pkg/metautil/metafile.go @@ -25,7 +25,7 @@ import ( "github.com/pingcap/tidb/br/pkg/summary" "github.com/pingcap/tidb/br/pkg/utils" "github.com/pingcap/tidb/pkg/meta/model" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/tablecodec" tidbutil "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/encrypt" @@ -39,7 +39,7 @@ const ( // MetaFile represents file name MetaFile = "backupmeta" // MetaJSONFile represents backup meta json file name - MetaJSONFile = "backupmeta.json" + MetaJSONFile = "jsons/backupmeta.json" // MaxBatchSize represents the internal channel buffer size of MetaWriter and MetaReader. MaxBatchSize = 1024 @@ -166,11 +166,6 @@ type Table struct { StatsFileIndexes []*backuppb.StatsFileIndex } -// NoChecksum checks whether the table has a calculated checksum. -func (tbl *Table) NoChecksum() bool { - return tbl.Crc64Xor == 0 && tbl.TotalKvs == 0 && tbl.TotalBytes == 0 -} - // MetaReader wraps a reader to read both old and new version of backupmeta. type MetaReader struct { storage storage.ExternalStorage @@ -235,7 +230,7 @@ func (reader *MetaReader) readDataFiles(ctx context.Context, output func(*backup } // ArchiveSize return the size of Archive data -func (*MetaReader) ArchiveSize(_ context.Context, files []*backuppb.File) uint64 { +func ArchiveSize(files []*backuppb.File) uint64 { total := uint64(0) for _, file := range files { total += file.Size_ @@ -243,6 +238,30 @@ func (*MetaReader) ArchiveSize(_ context.Context, files []*backuppb.File) uint64 return total } +type ChecksumStats struct { + Crc64Xor uint64 + TotalKvs uint64 + TotalBytes uint64 +} + +func (stats ChecksumStats) ChecksumExists() bool { + if stats.Crc64Xor == 0 && stats.TotalKvs == 0 && stats.TotalBytes == 0 { + return false + } + return true +} + +// CalculateChecksumStatsOnFiles returns the ChecksumStats for the given files +func CalculateChecksumStatsOnFiles(files []*backuppb.File) ChecksumStats { + var stats ChecksumStats + for _, file := range files { + stats.Crc64Xor ^= file.Crc64Xor + stats.TotalKvs += file.TotalKvs + stats.TotalBytes += file.TotalBytes + } + return stats +} + // ReadDDLs reads the ddls from the backupmeta. // This function is compatible with the old backupmeta. func (reader *MetaReader) ReadDDLs(ctx context.Context) ([]byte, error) { diff --git a/br/pkg/metautil/statsfile.go b/br/pkg/metautil/statsfile.go index ddccdfe839caf..b0d12fe02b97b 100644 --- a/br/pkg/metautil/statsfile.go +++ b/br/pkg/metautil/statsfile.go @@ -30,7 +30,7 @@ import ( "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/statistics/handle" statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" - statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" + statsutil "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/util" "golang.org/x/sync/errgroup" ) diff --git a/br/pkg/metautil/statsfile_test.go b/br/pkg/metautil/statsfile_test.go index c00b430e90cd4..134d017dcf2dd 100644 --- a/br/pkg/metautil/statsfile_test.go +++ b/br/pkg/metautil/statsfile_test.go @@ -23,7 +23,7 @@ import ( "github.com/pingcap/kvproto/pkg/encryptionpb" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/statistics/handle/types" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" tidbutil "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" diff --git a/br/pkg/mock/mock_cluster.go b/br/pkg/mock/mock_cluster.go index d749b5db58fa0..afa852f6c6a0b 100644 --- a/br/pkg/mock/mock_cluster.go +++ b/br/pkg/mock/mock_cluster.go @@ -92,7 +92,7 @@ func (mock *Cluster) Start() error { cfg := config.NewConfig() // let tidb random select a port cfg.Port = 0 - cfg.Store = "tikv" + cfg.Store = config.StoreTypeTiKV cfg.Status.StatusPort = 0 cfg.Status.ReportStatus = true cfg.Socket = fmt.Sprintf("/tmp/tidb-mock-%d.sock", time.Now().UnixNano()) diff --git a/br/pkg/restore/BUILD.bazel b/br/pkg/restore/BUILD.bazel index 0b571e4889f13..584f73869b956 100644 --- a/br/pkg/restore/BUILD.bazel +++ b/br/pkg/restore/BUILD.bazel @@ -5,16 +5,22 @@ go_library( srcs = [ "import_mode_switcher.go", "misc.go", + "restorer.go", ], importpath = "github.com/pingcap/tidb/br/pkg/restore", visibility = ["//visibility:public"], deps = [ + "//br/pkg/checkpoint", "//br/pkg/conn", "//br/pkg/conn/util", "//br/pkg/errors", "//br/pkg/logutil", "//br/pkg/pdutil", + "//br/pkg/restore/split", + "//br/pkg/restore/utils", + "//br/pkg/summary", "//br/pkg/utils", + "//br/pkg/utils/iter", "//pkg/domain", "//pkg/kv", "//pkg/meta", @@ -22,8 +28,10 @@ go_library( "//pkg/parser/model", "//pkg/util", "@com_github_go_sql_driver_mysql//:mysql", + "@com_github_opentracing_opentracing_go//:opentracing-go", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", "@com_github_pingcap_kvproto//pkg/import_sstpb", "@com_github_pingcap_log//:log", "@com_github_tikv_client_go_v2//oracle", @@ -34,6 +42,7 @@ go_library( "@org_golang_google_grpc//credentials/insecure", "@org_golang_x_sync//errgroup", "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", ], ) @@ -43,21 +52,28 @@ go_test( srcs = [ "import_mode_switcher_test.go", "misc_test.go", + "restorer_test.go", ], flaky = True, - race = "off", - shard_count = 6, + shard_count = 13, deps = [ ":restore", "//br/pkg/conn", "//br/pkg/mock", "//br/pkg/pdutil", - "//br/pkg/utiltest", + "//br/pkg/restore/split", + "//br/pkg/restore/utils", + "//br/pkg/utils/iter", "//pkg/kv", "//pkg/parser/model", "//pkg/session", + "//pkg/tablecodec", + "//pkg/util", + "//pkg/util/codec", "@com_github_coreos_go_semver//semver", + "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/brpb", "@com_github_pingcap_kvproto//pkg/import_sstpb", "@com_github_pingcap_kvproto//pkg/metapb", "@com_github_stretchr_testify//require", diff --git a/br/pkg/restore/data/data.go b/br/pkg/restore/data/data.go index d11115a863d8d..bcab0caa433da 100644 --- a/br/pkg/restore/data/data.go +++ b/br/pkg/restore/data/data.go @@ -3,6 +3,7 @@ package data import ( "context" + stdErr "errors" "io" "time" @@ -62,40 +63,27 @@ type recoveryError struct { atStage RecoveryStage } -func FailedAt(err error) RecoveryStage { - if rerr, ok := err.(recoveryError); ok { - return rerr.atStage +func atStage(err error) RecoveryStage { + var recoveryErr recoveryError + if stdErr.As(err, &recoveryErr) { + return recoveryErr.atStage } return StageUnknown } -type recoveryBackoffer struct { - state utils.RetryState -} - -func newRecoveryBackoffer() *recoveryBackoffer { - return &recoveryBackoffer{ - state: utils.InitialRetryState(16, 30*time.Second, 4*time.Minute), - } -} - -func (bo *recoveryBackoffer) NextBackoff(err error) time.Duration { - s := FailedAt(err) - switch s { +func isRetryErr(err error) bool { + stage := atStage(err) + switch stage { case StageCollectingMeta, StageMakingRecoveryPlan, StageResetPDAllocateID, StageRecovering: - log.Info("Recovery data retrying.", zap.Error(err), zap.Stringer("stage", s)) - return bo.state.ExponentialBackoff() + log.Info("Recovery data retrying.", zap.Error(err), zap.Stringer("stage", stage)) + return true case StageFlashback: - log.Info("Giving up retry for flashback stage.", zap.Error(err), zap.Stringer("stage", s)) - bo.state.GiveUp() - return 0 + log.Info("Giving up retry for flashback stage.", zap.Error(err), zap.Stringer("stage", stage)) + return false + default: + log.Warn("unknown stage of recovery for backoff.", zap.Int("val", int(stage))) + return false } - log.Warn("unknown stage of backing off.", zap.Int("val", int(s))) - return bo.state.ExponentialBackoff() -} - -func (bo *recoveryBackoffer) Attempt() int { - return bo.state.Attempt() } // RecoverData recover the tikv cluster @@ -109,7 +97,7 @@ func RecoverData(ctx context.Context, resolveTS uint64, allStores []*metapb.Stor // Roughly handle the case that some TiKVs are rebooted during making plan. // Generally, retry the whole procedure will be fine for most cases. But perhaps we can do finer-grained retry, // say, we may reuse the recovery plan, and probably no need to rebase PD allocation ID once we have done it. - return utils.WithRetryV2(ctx, newRecoveryBackoffer(), func(ctx context.Context) (int, error) { + return utils.WithRetryV2(ctx, utils.NewRecoveryBackoffStrategy(isRetryErr), func(ctx context.Context) (int, error) { return doRecoveryData(ctx, resolveTS, allStores, mgr, progress, restoreTS, concurrency) }) } @@ -395,7 +383,6 @@ func (recovery *Recovery) SpawnTiKVShutDownWatchers(ctx context.Context) { // prepare the region for flashback the data, the purpose is to stop region service, put region in flashback state func (recovery *Recovery) PrepareFlashbackToVersion(ctx context.Context, resolveTS uint64, startTS uint64) (err error) { - retryState := utils.InitialRetryState(utils.FlashbackRetryTime, utils.FlashbackWaitInterval, utils.FlashbackMaxWaitInterval) retryErr := utils.WithRetry( ctx, func() error { @@ -416,7 +403,7 @@ func (recovery *Recovery) PrepareFlashbackToVersion(ctx context.Context, resolve } log.Info("region flashback prepare complete", zap.Int("regions", runner.CompletedRegions())) return nil - }, &retryState) + }, utils.NewFlashBackBackoffStrategy()) recovery.progress.Inc() return retryErr diff --git a/br/pkg/restore/import_mode_switcher.go b/br/pkg/restore/import_mode_switcher.go index 0ae69f4a6a0af..0bec6a4d1e384 100644 --- a/br/pkg/restore/import_mode_switcher.go +++ b/br/pkg/restore/import_mode_switcher.go @@ -5,6 +5,7 @@ package restore import ( "context" "crypto/tls" + "sync" "time" _ "github.com/go-sql-driver/mysql" // mysql driver @@ -30,7 +31,9 @@ type ImportModeSwitcher struct { switchModeInterval time.Duration tlsConf *tls.Config - switchCh chan struct{} + mu sync.Mutex + cancel context.CancelFunc // Manages goroutine lifecycle + wg sync.WaitGroup } func NewImportModeSwitcher( @@ -42,13 +45,23 @@ func NewImportModeSwitcher( pdClient: pdClient, switchModeInterval: switchModeInterval, tlsConf: tlsConf, - switchCh: make(chan struct{}), } } // switchToNormalMode switch tikv cluster to normal mode. -func (switcher *ImportModeSwitcher) switchToNormalMode(ctx context.Context) error { - close(switcher.switchCh) +func (switcher *ImportModeSwitcher) SwitchToNormalMode(ctx context.Context) error { + switcher.mu.Lock() + defer switcher.mu.Unlock() + + if switcher.cancel == nil { + log.Info("TiKV is already in normal mode") + return nil + } + log.Info("Stopping the import mode goroutine") + switcher.cancel() + switcher.cancel = nil + // wait for switch goroutine exits + switcher.wg.Wait() return switcher.switchTiKVMode(ctx, import_sstpb.SwitchMode_Normal) } @@ -113,26 +126,43 @@ func (switcher *ImportModeSwitcher) switchTiKVMode( return nil } -// switchToImportMode switch tikv cluster to import mode. -func (switcher *ImportModeSwitcher) switchToImportMode( +// GoSwitchToImportMode switch tikv cluster to import mode. +func (switcher *ImportModeSwitcher) GoSwitchToImportMode( ctx context.Context, -) { +) error { + switcher.mu.Lock() + defer switcher.mu.Unlock() + + if switcher.cancel != nil { + log.Info("TiKV is already in import mode") + return nil + } + + // Create a new context for the goroutine + ctx, cancel := context.WithCancel(context.Background()) + switcher.cancel = cancel + + // [important!] switch tikv mode into import at the beginning + log.Info("switch to import mode at beginning") + err := switcher.switchTiKVMode(ctx, import_sstpb.SwitchMode_Import) + if err != nil { + log.Warn("switch to import mode failed", zap.Error(err)) + return errors.Trace(err) + } + switcher.wg.Add(1) // tikv automatically switch to normal mode in every 10 minutes // so we need ping tikv in less than 10 minute go func() { tick := time.NewTicker(switcher.switchModeInterval) - defer tick.Stop() - - // [important!] switch tikv mode into import at the beginning - log.Info("switch to import mode at beginning") - err := switcher.switchTiKVMode(ctx, import_sstpb.SwitchMode_Import) - if err != nil { - log.Warn("switch to import mode failed", zap.Error(err)) - } + defer func() { + switcher.wg.Done() + tick.Stop() + }() for { select { case <-ctx.Done(): + log.Info("stop automatic switch to import mode when context done") return case <-tick.C: log.Info("switch to import mode") @@ -140,12 +170,10 @@ func (switcher *ImportModeSwitcher) switchToImportMode( if err != nil { log.Warn("switch to import mode failed", zap.Error(err)) } - case <-switcher.switchCh: - log.Info("stop automatic switch to import mode") - return } } }() + return nil } // RestorePreWork executes some prepare work before restore. @@ -163,7 +191,10 @@ func RestorePreWork( if switchToImport { // Switch TiKV cluster to import mode (adjust rocksdb configuration). - switcher.switchToImportMode(ctx) + err := switcher.GoSwitchToImportMode(ctx) + if err != nil { + return pdutil.Nop, nil, err + } } return mgr.RemoveSchedulersWithConfig(ctx) @@ -186,7 +217,7 @@ func RestorePostWork( ctx = context.Background() } - if err := switcher.switchToNormalMode(ctx); err != nil { + if err := switcher.SwitchToNormalMode(ctx); err != nil { log.Warn("fail to switch to normal mode", zap.Error(err)) } if err := restoreSchedulers(ctx); err != nil { diff --git a/br/pkg/restore/import_mode_switcher_test.go b/br/pkg/restore/import_mode_switcher_test.go index 75d08c11a9033..41a2cc78f08e9 100644 --- a/br/pkg/restore/import_mode_switcher_test.go +++ b/br/pkg/restore/import_mode_switcher_test.go @@ -28,7 +28,7 @@ import ( "github.com/pingcap/tidb/br/pkg/conn" "github.com/pingcap/tidb/br/pkg/pdutil" "github.com/pingcap/tidb/br/pkg/restore" - "github.com/pingcap/tidb/br/pkg/utiltest" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -74,13 +74,13 @@ func TestRestorePreWork(t *testing.T) { require.NoError(t, err) }() - pdClient := utiltest.NewFakePDClient([]*metapb.Store{ + pdClient := split.NewFakePDClient([]*metapb.Store{ { Id: 1, Address: fmt.Sprintf(":%d", 51111+port), }, }, false, nil) - pdHTTPCli := utiltest.NewFakePDHTTPClient() + pdHTTPCli := split.NewFakePDHTTPClient() mgr := &conn.Mgr{ PdController: pdutil.NewPdControllerWithPDClient( pdClient, pdHTTPCli, &semver.Version{Major: 4, Minor: 0, Patch: 9}), @@ -96,17 +96,17 @@ func TestRestorePreWork(t *testing.T) { _, ok := pdutil.Schedulers[key] require.True(t, ok) } - require.Equal(t, len(utiltest.ExistPDCfgGeneratorBefore), len(cfg.ScheduleCfg)) + require.Equal(t, len(split.ExistPDCfgGeneratorBefore), len(cfg.ScheduleCfg)) for key, value := range cfg.ScheduleCfg { - expectValue, ok := utiltest.ExistPDCfgGeneratorBefore[key] + expectValue, ok := split.ExistPDCfgGeneratorBefore[key] require.True(t, ok) require.Equal(t, expectValue, value) } cfgs, err := pdHTTPCli.GetConfig(context.TODO()) require.NoError(t, err) - require.Equal(t, len(utiltest.ExpectPDCfgGeneratorsResult), len(cfg.ScheduleCfg)) + require.Equal(t, len(split.ExpectPDCfgGeneratorsResult), len(cfg.ScheduleCfg)) for key, value := range cfgs { - expectValue, ok := utiltest.ExpectPDCfgGeneratorsResult[key[len("schedule."):]] + expectValue, ok := split.ExpectPDCfgGeneratorsResult[key[len("schedule."):]] require.True(t, ok) require.Equal(t, expectValue, value) } @@ -123,9 +123,9 @@ func TestRestorePreWork(t *testing.T) { { cfgs, err := pdHTTPCli.GetConfig(context.TODO()) require.NoError(t, err) - require.Equal(t, len(utiltest.ExistPDCfgGeneratorBefore), len(cfg.ScheduleCfg)) + require.Equal(t, len(split.ExistPDCfgGeneratorBefore), len(cfg.ScheduleCfg)) for key, value := range cfgs { - expectValue, ok := utiltest.ExistPDCfgGeneratorBefore[key[len("schedule."):]] + expectValue, ok := split.ExistPDCfgGeneratorBefore[key[len("schedule."):]] require.True(t, ok) require.Equal(t, expectValue, value) } diff --git a/br/pkg/restore/internal/log_split/BUILD.bazel b/br/pkg/restore/internal/log_split/BUILD.bazel deleted file mode 100644 index d929b04c003ad..0000000000000 --- a/br/pkg/restore/internal/log_split/BUILD.bazel +++ /dev/null @@ -1,54 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "log_split", - srcs = [ - "split.go", - "sum_sorted.go", - ], - importpath = "github.com/pingcap/tidb/br/pkg/restore/internal/log_split", - visibility = ["//br/pkg/restore:__subpackages__"], - deps = [ - "//br/pkg/logutil", - "//br/pkg/restore/internal/snap_split", - "//br/pkg/restore/split", - "//br/pkg/restore/utils", - "//br/pkg/utils", - "//pkg/kv", - "//pkg/tablecodec", - "//pkg/util", - "//pkg/util/codec", - "@com_github_google_btree//:btree", - "@com_github_pingcap_errors//:errors", - "@com_github_pingcap_kvproto//pkg/brpb", - "@com_github_pingcap_log//:log", - "@org_golang_x_sync//errgroup", - "@org_uber_go_zap//:zap", - ], -) - -go_test( - name = "log_split_test", - timeout = "short", - srcs = [ - "export_test.go", - "split_test.go", - "sum_sorted_test.go", - ], - embed = [":log_split"], - flaky = True, - shard_count = 4, - deps = [ - "//br/pkg/restore/internal/snap_split", - "//br/pkg/restore/split", - "//br/pkg/restore/utils", - "//br/pkg/utiltest", - "//pkg/kv", - "//pkg/tablecodec", - "//pkg/util/codec", - "@com_github_docker_go_units//:go-units", - "@com_github_pingcap_kvproto//pkg/brpb", - "@com_github_pingcap_kvproto//pkg/import_sstpb", - "@com_github_stretchr_testify//require", - ], -) diff --git a/br/pkg/restore/internal/log_split/split_test.go b/br/pkg/restore/internal/log_split/split_test.go deleted file mode 100644 index acbf61ae12f29..0000000000000 --- a/br/pkg/restore/internal/log_split/split_test.go +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright 2024 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 logsplit_test - -import ( - "context" - "fmt" - "testing" - - "github.com/docker/go-units" - backuppb "github.com/pingcap/kvproto/pkg/brpb" - "github.com/pingcap/kvproto/pkg/import_sstpb" - logsplit "github.com/pingcap/tidb/br/pkg/restore/internal/log_split" - snapsplit "github.com/pingcap/tidb/br/pkg/restore/internal/snap_split" - "github.com/pingcap/tidb/br/pkg/restore/split" - restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" - "github.com/pingcap/tidb/br/pkg/utiltest" - "github.com/pingcap/tidb/pkg/kv" - "github.com/pingcap/tidb/pkg/tablecodec" - "github.com/pingcap/tidb/pkg/util/codec" - "github.com/stretchr/testify/require" -) - -func keyWithTablePrefix(tableID int64, key string) []byte { - rawKey := append(tablecodec.GenTableRecordPrefix(tableID), []byte(key)...) - return codec.EncodeBytes([]byte{}, rawKey) -} - -func TestSplitPoint(t *testing.T) { - ctx := context.Background() - var oldTableID int64 = 50 - var tableID int64 = 100 - rewriteRules := &restoreutils.RewriteRules{ - Data: []*import_sstpb.RewriteRule{ - { - OldKeyPrefix: tablecodec.EncodeTablePrefix(oldTableID), - NewKeyPrefix: tablecodec.EncodeTablePrefix(tableID), - }, - }, - } - - // range: b c d e g i - // +---+ +---+ +---------+ - // +-------------+----------+---------+ - // region: a f h j - splitHelper := logsplit.NewSplitHelper() - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "b"), EndKey: keyWithTablePrefix(oldTableID, "c")}, Value: logsplit.Value{Size: 100, Number: 100}}) - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "d"), EndKey: keyWithTablePrefix(oldTableID, "e")}, Value: logsplit.Value{Size: 200, Number: 200}}) - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "g"), EndKey: keyWithTablePrefix(oldTableID, "i")}, Value: logsplit.Value{Size: 300, Number: 300}}) - client := utiltest.NewFakeSplitClient() - client.AppendRegion(keyWithTablePrefix(tableID, "a"), keyWithTablePrefix(tableID, "f")) - client.AppendRegion(keyWithTablePrefix(tableID, "f"), keyWithTablePrefix(tableID, "h")) - client.AppendRegion(keyWithTablePrefix(tableID, "h"), keyWithTablePrefix(tableID, "j")) - client.AppendRegion(keyWithTablePrefix(tableID, "j"), keyWithTablePrefix(tableID+1, "a")) - - iter := logsplit.NewSplitHelperIteratorForTest(splitHelper, tableID, rewriteRules) - err := logsplit.SplitPoint(ctx, iter, client, func(ctx context.Context, rs *snapsplit.RegionSplitter, u uint64, o int64, ri *split.RegionInfo, v []logsplit.Valued) error { - require.Equal(t, u, uint64(0)) - require.Equal(t, o, int64(0)) - require.Equal(t, ri.Region.StartKey, keyWithTablePrefix(tableID, "a")) - require.Equal(t, ri.Region.EndKey, keyWithTablePrefix(tableID, "f")) - require.EqualValues(t, v[0].Key.StartKey, keyWithTablePrefix(tableID, "b")) - require.EqualValues(t, v[0].Key.EndKey, keyWithTablePrefix(tableID, "c")) - require.EqualValues(t, v[1].Key.StartKey, keyWithTablePrefix(tableID, "d")) - require.EqualValues(t, v[1].Key.EndKey, keyWithTablePrefix(tableID, "e")) - require.Equal(t, len(v), 2) - return nil - }) - require.NoError(t, err) -} - -func getCharFromNumber(prefix string, i int) string { - c := '1' + (i % 10) - b := '1' + (i%100)/10 - a := '1' + i/100 - return fmt.Sprintf("%s%c%c%c", prefix, a, b, c) -} - -func TestSplitPoint2(t *testing.T) { - ctx := context.Background() - var oldTableID int64 = 50 - var tableID int64 = 100 - rewriteRules := &restoreutils.RewriteRules{ - Data: []*import_sstpb.RewriteRule{ - { - OldKeyPrefix: tablecodec.EncodeTablePrefix(oldTableID), - NewKeyPrefix: tablecodec.EncodeTablePrefix(tableID), - }, - }, - } - - // range: b c d e f i j k l n - // +---+ +---+ +-----------------+ +----+ +--------+ - // +---------------+--+.....+----+------------+---------+ - // region: a g >128 h m o - splitHelper := logsplit.NewSplitHelper() - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "b"), EndKey: keyWithTablePrefix(oldTableID, "c")}, Value: logsplit.Value{Size: 100, Number: 100}}) - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "d"), EndKey: keyWithTablePrefix(oldTableID, "e")}, Value: logsplit.Value{Size: 200, Number: 200}}) - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "f"), EndKey: keyWithTablePrefix(oldTableID, "i")}, Value: logsplit.Value{Size: 300, Number: 300}}) - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "j"), EndKey: keyWithTablePrefix(oldTableID, "k")}, Value: logsplit.Value{Size: 200, Number: 200}}) - splitHelper.Merge(logsplit.Valued{Key: logsplit.Span{StartKey: keyWithTablePrefix(oldTableID, "l"), EndKey: keyWithTablePrefix(oldTableID, "n")}, Value: logsplit.Value{Size: 200, Number: 200}}) - client := utiltest.NewFakeSplitClient() - client.AppendRegion(keyWithTablePrefix(tableID, "a"), keyWithTablePrefix(tableID, "g")) - client.AppendRegion(keyWithTablePrefix(tableID, "g"), keyWithTablePrefix(tableID, getCharFromNumber("g", 0))) - for i := 0; i < 256; i++ { - client.AppendRegion(keyWithTablePrefix(tableID, getCharFromNumber("g", i)), keyWithTablePrefix(tableID, getCharFromNumber("g", i+1))) - } - client.AppendRegion(keyWithTablePrefix(tableID, getCharFromNumber("g", 256)), keyWithTablePrefix(tableID, "h")) - client.AppendRegion(keyWithTablePrefix(tableID, "h"), keyWithTablePrefix(tableID, "m")) - client.AppendRegion(keyWithTablePrefix(tableID, "m"), keyWithTablePrefix(tableID, "o")) - client.AppendRegion(keyWithTablePrefix(tableID, "o"), keyWithTablePrefix(tableID+1, "a")) - - firstSplit := true - iter := logsplit.NewSplitHelperIteratorForTest(splitHelper, tableID, rewriteRules) - err := logsplit.SplitPoint(ctx, iter, client, func(ctx context.Context, rs *snapsplit.RegionSplitter, u uint64, o int64, ri *split.RegionInfo, v []logsplit.Valued) error { - if firstSplit { - require.Equal(t, u, uint64(0)) - require.Equal(t, o, int64(0)) - require.Equal(t, ri.Region.StartKey, keyWithTablePrefix(tableID, "a")) - require.Equal(t, ri.Region.EndKey, keyWithTablePrefix(tableID, "g")) - require.EqualValues(t, v[0].Key.StartKey, keyWithTablePrefix(tableID, "b")) - require.EqualValues(t, v[0].Key.EndKey, keyWithTablePrefix(tableID, "c")) - require.EqualValues(t, v[1].Key.StartKey, keyWithTablePrefix(tableID, "d")) - require.EqualValues(t, v[1].Key.EndKey, keyWithTablePrefix(tableID, "e")) - require.EqualValues(t, v[2].Key.StartKey, keyWithTablePrefix(tableID, "f")) - require.EqualValues(t, v[2].Key.EndKey, keyWithTablePrefix(tableID, "g")) - require.Equal(t, v[2].Value.Size, uint64(1)) - require.Equal(t, v[2].Value.Number, int64(1)) - require.Equal(t, len(v), 3) - firstSplit = false - } else { - require.Equal(t, u, uint64(1)) - require.Equal(t, o, int64(1)) - require.Equal(t, ri.Region.StartKey, keyWithTablePrefix(tableID, "h")) - require.Equal(t, ri.Region.EndKey, keyWithTablePrefix(tableID, "m")) - require.EqualValues(t, v[0].Key.StartKey, keyWithTablePrefix(tableID, "j")) - require.EqualValues(t, v[0].Key.EndKey, keyWithTablePrefix(tableID, "k")) - require.EqualValues(t, v[1].Key.StartKey, keyWithTablePrefix(tableID, "l")) - require.EqualValues(t, v[1].Key.EndKey, keyWithTablePrefix(tableID, "m")) - require.Equal(t, v[1].Value.Size, uint64(100)) - require.Equal(t, v[1].Value.Number, int64(100)) - require.Equal(t, len(v), 2) - } - return nil - }) - require.NoError(t, err) -} - -func fakeFile(tableID, rowID int64, length uint64, num int64) *backuppb.DataFileInfo { - return &backuppb.DataFileInfo{ - StartKey: fakeRowKey(tableID, rowID), - EndKey: fakeRowKey(tableID, rowID+1), - TableId: tableID, - Length: length, - NumberOfEntries: num, - } -} - -func fakeRowKey(tableID, rowID int64) kv.Key { - return codec.EncodeBytes(nil, tablecodec.EncodeRecordKey(tablecodec.GenTableRecordPrefix(tableID), kv.IntHandle(rowID))) -} - -func TestLogSplitHelper(t *testing.T) { - ctx := context.Background() - rules := map[int64]*restoreutils.RewriteRules{ - 1: { - Data: []*import_sstpb.RewriteRule{ - { - OldKeyPrefix: tablecodec.GenTableRecordPrefix(1), - NewKeyPrefix: tablecodec.GenTableRecordPrefix(100), - }, - }, - }, - 2: { - Data: []*import_sstpb.RewriteRule{ - { - OldKeyPrefix: tablecodec.GenTableRecordPrefix(2), - NewKeyPrefix: tablecodec.GenTableRecordPrefix(200), - }, - }, - }, - } - oriRegions := [][]byte{ - {}, - codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), - codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), - codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), - } - mockPDCli := split.NewMockPDClientForSplit() - mockPDCli.SetRegions(oriRegions) - client := split.NewClient(mockPDCli, nil, nil, 100, 4) - helper := logsplit.NewLogSplitHelper(rules, client, 4*units.MiB, 400) - - helper.Merge(fakeFile(1, 100, 100, 100)) - helper.Merge(fakeFile(1, 200, 2*units.MiB, 200)) - helper.Merge(fakeFile(2, 100, 3*units.MiB, 300)) - helper.Merge(fakeFile(3, 100, 10*units.MiB, 100000)) - // different regions, no split happens - err := helper.Split(ctx) - require.NoError(t, err) - regions, err := mockPDCli.ScanRegions(ctx, []byte{}, []byte{}, 0) - require.NoError(t, err) - require.Len(t, regions, 3) - require.Equal(t, []byte{}, regions[0].Meta.StartKey) - require.Equal(t, codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), regions[1].Meta.StartKey) - require.Equal(t, codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), regions[2].Meta.StartKey) - require.Equal(t, codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), regions[2].Meta.EndKey) - - helper.Merge(fakeFile(1, 300, 3*units.MiB, 10)) - helper.Merge(fakeFile(1, 400, 4*units.MiB, 10)) - // trigger to split regions for table 1 - err = helper.Split(ctx) - require.NoError(t, err) - regions, err = mockPDCli.ScanRegions(ctx, []byte{}, []byte{}, 0) - require.NoError(t, err) - require.Len(t, regions, 4) - require.Equal(t, fakeRowKey(100, 400), kv.Key(regions[1].Meta.EndKey)) -} diff --git a/br/pkg/restore/internal/snap_split/BUILD.bazel b/br/pkg/restore/internal/snap_split/BUILD.bazel deleted file mode 100644 index ab6df360220d6..0000000000000 --- a/br/pkg/restore/internal/snap_split/BUILD.bazel +++ /dev/null @@ -1,31 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "snap_split", - srcs = ["split.go"], - importpath = "github.com/pingcap/tidb/br/pkg/restore/internal/snap_split", - visibility = ["//br/pkg/restore:__subpackages__"], - deps = [ - "//br/pkg/restore/split", - "@com_github_pingcap_errors//:errors", - "@com_github_pingcap_log//:log", - "@org_uber_go_zap//:zap", - ], -) - -go_test( - name = "snap_split_test", - timeout = "short", - srcs = ["split_test.go"], - flaky = True, - shard_count = 4, - deps = [ - ":snap_split", - "//br/pkg/restore/split", - "//br/pkg/restore/utils", - "//br/pkg/rtree", - "//pkg/util/codec", - "@com_github_pingcap_kvproto//pkg/import_sstpb", - "@com_github_stretchr_testify//require", - ], -) diff --git a/br/pkg/restore/internal/snap_split/split.go b/br/pkg/restore/internal/snap_split/split.go deleted file mode 100644 index fca4a69cb5e6b..0000000000000 --- a/br/pkg/restore/internal/snap_split/split.go +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2020 PingCAP, Inc. Licensed under Apache-2.0. - -package snapsplit - -import ( - "context" - "time" - - "github.com/pingcap/errors" - "github.com/pingcap/log" - "github.com/pingcap/tidb/br/pkg/restore/split" - "go.uber.org/zap" -) - -// RegionSplitter is a executor of region split by rules. -type RegionSplitter struct { - client split.SplitClient -} - -// NewRegionSplitter returns a new RegionSplitter. -func NewRegionSplitter(client split.SplitClient) *RegionSplitter { - return &RegionSplitter{ - client: client, - } -} - -// SplitWaitAndScatter expose the function `SplitWaitAndScatter` of split client. -func (rs *RegionSplitter) SplitWaitAndScatter(ctx context.Context, region *split.RegionInfo, keys [][]byte) ([]*split.RegionInfo, error) { - return rs.client.SplitWaitAndScatter(ctx, region, keys) -} - -// ExecuteSplit executes regions split and make sure new splitted regions are balance. -// It will split regions by the rewrite rules, -// then it will split regions by the end key of each range. -// tableRules includes the prefix of a table, since some ranges may have -// a prefix with record sequence or index sequence. -// note: all ranges and rewrite rules must have raw key. -func (rs *RegionSplitter) ExecuteSplit( - ctx context.Context, - sortedSplitKeys [][]byte, -) error { - if len(sortedSplitKeys) == 0 { - log.Info("skip split regions, no split keys") - return nil - } - - log.Info("execute split sorted keys", zap.Int("keys count", len(sortedSplitKeys))) - return rs.executeSplitByRanges(ctx, sortedSplitKeys) -} - -func (rs *RegionSplitter) executeSplitByRanges( - ctx context.Context, - sortedKeys [][]byte, -) error { - startTime := time.Now() - // Choose the rough region split keys, - // each splited region contains 128 regions to be splitted. - const regionIndexStep = 128 - - roughSortedSplitKeys := make([][]byte, 0, len(sortedKeys)/regionIndexStep+1) - for curRegionIndex := regionIndexStep; curRegionIndex < len(sortedKeys); curRegionIndex += regionIndexStep { - roughSortedSplitKeys = append(roughSortedSplitKeys, sortedKeys[curRegionIndex]) - } - if len(roughSortedSplitKeys) > 0 { - if err := rs.executeSplitByKeys(ctx, roughSortedSplitKeys); err != nil { - return errors.Trace(err) - } - } - log.Info("finish spliting regions roughly", zap.Duration("take", time.Since(startTime))) - - // Then send split requests to each TiKV. - if err := rs.executeSplitByKeys(ctx, sortedKeys); err != nil { - return errors.Trace(err) - } - - log.Info("finish spliting and scattering regions", zap.Duration("take", time.Since(startTime))) - return nil -} - -// executeSplitByKeys will split regions by **sorted** keys with following steps. -// 1. locate regions with correspond keys. -// 2. split these regions with correspond keys. -// 3. make sure new split regions are balanced. -func (rs *RegionSplitter) executeSplitByKeys( - ctx context.Context, - sortedKeys [][]byte, -) error { - startTime := time.Now() - scatterRegions, err := rs.client.SplitKeysAndScatter(ctx, sortedKeys) - if err != nil { - return errors.Trace(err) - } - if len(scatterRegions) > 0 { - log.Info("finish splitting and scattering regions. and starts to wait", zap.Int("regions", len(scatterRegions)), - zap.Duration("take", time.Since(startTime))) - rs.waitRegionsScattered(ctx, scatterRegions, split.ScatterWaitUpperInterval) - } else { - log.Info("finish splitting regions.", zap.Duration("take", time.Since(startTime))) - } - return nil -} - -// waitRegionsScattered try to wait mutilple regions scatterd in 3 minutes. -// this could timeout, but if many regions scatterd the restore could continue -// so we don't wait long time here. -func (rs *RegionSplitter) waitRegionsScattered(ctx context.Context, scatterRegions []*split.RegionInfo, timeout time.Duration) { - log.Info("start to wait for scattering regions", zap.Int("regions", len(scatterRegions))) - startTime := time.Now() - leftCnt := rs.WaitForScatterRegionsTimeout(ctx, scatterRegions, timeout) - if leftCnt == 0 { - log.Info("waiting for scattering regions done", - zap.Int("regions", len(scatterRegions)), - zap.Duration("take", time.Since(startTime))) - } else { - log.Warn("waiting for scattering regions timeout", - zap.Int("not scattered Count", leftCnt), - zap.Int("regions", len(scatterRegions)), - zap.Duration("take", time.Since(startTime))) - } -} - -func (rs *RegionSplitter) WaitForScatterRegionsTimeout(ctx context.Context, regionInfos []*split.RegionInfo, timeout time.Duration) int { - ctx2, cancel := context.WithTimeout(ctx, timeout) - defer cancel() - leftRegions, _ := rs.client.WaitRegionsScattered(ctx2, regionInfos) - return leftRegions -} diff --git a/br/pkg/restore/internal/snap_split/split_test.go b/br/pkg/restore/internal/snap_split/split_test.go deleted file mode 100644 index 0507950d589c5..0000000000000 --- a/br/pkg/restore/internal/snap_split/split_test.go +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2020 PingCAP, Inc. Licensed under Apache-2.0. - -package snapsplit_test - -import ( - "bytes" - "context" - "sort" - "testing" - - "github.com/pingcap/kvproto/pkg/import_sstpb" - snapsplit "github.com/pingcap/tidb/br/pkg/restore/internal/snap_split" - "github.com/pingcap/tidb/br/pkg/restore/split" - restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" - "github.com/pingcap/tidb/br/pkg/rtree" - "github.com/pingcap/tidb/pkg/util/codec" - "github.com/stretchr/testify/require" -) - -func TestScanEmptyRegion(t *testing.T) { - mockPDCli := split.NewMockPDClientForSplit() - mockPDCli.SetRegions([][]byte{{}, {12}, {34}, {}}) - client := split.NewClient(mockPDCli, nil, nil, 100, 4) - keys := initKeys() - // make keys has only one - keys = keys[0:1] - regionSplitter := snapsplit.NewRegionSplitter(client) - - ctx := context.Background() - err := regionSplitter.ExecuteSplit(ctx, keys) - // should not return error with only one range entry - require.NoError(t, err) -} - -func TestSplitEmptyRegion(t *testing.T) { - mockPDCli := split.NewMockPDClientForSplit() - mockPDCli.SetRegions([][]byte{{}, {12}, {34}, {}}) - client := split.NewClient(mockPDCli, nil, nil, 100, 4) - regionSplitter := snapsplit.NewRegionSplitter(client) - err := regionSplitter.ExecuteSplit(context.Background(), nil) - require.NoError(t, err) -} - -// region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) -// range: [aaa, aae), [aae, aaz), [ccd, ccf), [ccf, ccj) -// rewrite rules: aa -> xx, cc -> bb -// expected regions after split: -// -// [, aay), [aay, bba), [bba, bbf), [bbf, bbh), [bbh, bbj), -// [bbj, cca), [cca, xxe), [xxe, xxz), [xxz, ) -func TestSplitAndScatter(t *testing.T) { - rangeBoundaries := [][]byte{[]byte(""), []byte("aay"), []byte("bba"), []byte("bbh"), []byte("cca"), []byte("")} - encodeBytes(rangeBoundaries) - mockPDCli := split.NewMockPDClientForSplit() - mockPDCli.SetRegions(rangeBoundaries) - client := split.NewClient(mockPDCli, nil, nil, 100, 4) - regionSplitter := snapsplit.NewRegionSplitter(client) - ctx := context.Background() - - ranges := initRanges() - rules := initRewriteRules() - splitKeys := make([][]byte, 0, len(ranges)) - for _, rg := range ranges { - tmp, err := restoreutils.RewriteRange(&rg, rules) - require.NoError(t, err) - splitKeys = append(splitKeys, tmp.EndKey) - } - sort.Slice(splitKeys, func(i, j int) bool { - return bytes.Compare(splitKeys[i], splitKeys[j]) < 0 - }) - err := regionSplitter.ExecuteSplit(ctx, splitKeys) - require.NoError(t, err) - regions := mockPDCli.Regions.ScanRange(nil, nil, 100) - expected := [][]byte{[]byte(""), []byte("aay"), []byte("bba"), []byte("bbf"), []byte("bbh"), []byte("bbj"), []byte("cca"), []byte("xxe"), []byte("xxz"), []byte("")} - encodeBytes(expected) - require.Len(t, regions, len(expected)-1) - for i, region := range regions { - require.Equal(t, expected[i], region.Meta.StartKey) - require.Equal(t, expected[i+1], region.Meta.EndKey) - } -} - -func encodeBytes(keys [][]byte) { - for i := range keys { - if len(keys[i]) == 0 { - continue - } - keys[i] = codec.EncodeBytes(nil, keys[i]) - } -} - -func TestRawSplit(t *testing.T) { - // Fix issue #36490. - splitKeys := [][]byte{{}} - ctx := context.Background() - rangeBoundaries := [][]byte{[]byte(""), []byte("aay"), []byte("bba"), []byte("bbh"), []byte("cca"), []byte("")} - mockPDCli := split.NewMockPDClientForSplit() - mockPDCli.SetRegions(rangeBoundaries) - client := split.NewClient(mockPDCli, nil, nil, 100, 4, split.WithRawKV()) - - regionSplitter := snapsplit.NewRegionSplitter(client) - err := regionSplitter.ExecuteSplit(ctx, splitKeys) - require.NoError(t, err) - - regions := mockPDCli.Regions.ScanRange(nil, nil, 100) - require.Len(t, regions, len(rangeBoundaries)-1) - for i, region := range regions { - require.Equal(t, rangeBoundaries[i], region.Meta.StartKey) - require.Equal(t, rangeBoundaries[i+1], region.Meta.EndKey) - } -} - -// keys: aae, aaz, ccf, ccj -func initKeys() [][]byte { - return [][]byte{ - []byte("aae"), - []byte("aaz"), - []byte("ccf"), - []byte("ccj"), - } -} - -// range: [aaa, aae), [aae, aaz), [ccd, ccf), [ccf, ccj) -func initRanges() []rtree.Range { - var ranges [4]rtree.Range - ranges[0] = rtree.Range{ - StartKey: []byte("aaa"), - EndKey: []byte("aae"), - } - ranges[1] = rtree.Range{ - StartKey: []byte("aae"), - EndKey: []byte("aaz"), - } - ranges[2] = rtree.Range{ - StartKey: []byte("ccd"), - EndKey: []byte("ccf"), - } - ranges[3] = rtree.Range{ - StartKey: []byte("ccf"), - EndKey: []byte("ccj"), - } - return ranges[:] -} - -func initRewriteRules() *restoreutils.RewriteRules { - var rules [2]*import_sstpb.RewriteRule - rules[0] = &import_sstpb.RewriteRule{ - OldKeyPrefix: []byte("aa"), - NewKeyPrefix: []byte("xx"), - } - rules[1] = &import_sstpb.RewriteRule{ - OldKeyPrefix: []byte("cc"), - NewKeyPrefix: []byte("bb"), - } - return &restoreutils.RewriteRules{ - Data: rules[:], - } -} diff --git a/br/pkg/restore/log_client/BUILD.bazel b/br/pkg/restore/log_client/BUILD.bazel index 5975b0726aa1d..7fb781e7ad0ef 100644 --- a/br/pkg/restore/log_client/BUILD.bazel +++ b/br/pkg/restore/log_client/BUILD.bazel @@ -4,10 +4,13 @@ go_library( name = "log_client", srcs = [ "client.go", + "compacted_file_strategy.go", "import.go", "import_retry.go", "log_file_manager.go", "log_file_map.go", + "log_split_strategy.go", + "migration.go", ], importpath = "github.com/pingcap/tidb/br/pkg/restore/log_client", visibility = ["//visibility:public"], @@ -24,8 +27,8 @@ go_library( "//br/pkg/restore", "//br/pkg/restore/ingestrec", "//br/pkg/restore/internal/import_client", - "//br/pkg/restore/internal/log_split", "//br/pkg/restore/internal/rawkv", + "//br/pkg/restore/snap_client", "//br/pkg/restore/split", "//br/pkg/restore/tiflashrec", "//br/pkg/restore/utils", @@ -43,6 +46,7 @@ go_library( "//pkg/util", "//pkg/util/codec", "//pkg/util/redact", + "//pkg/util/sqlexec", "//pkg/util/table-filter", "@com_github_fatih_color//:color", "@com_github_gogo_protobuf//proto", @@ -82,15 +86,17 @@ go_test( "log_file_manager_test.go", "log_file_map_test.go", "main_test.go", + "migration_test.go", ], embed = [":log_client"], flaky = True, - shard_count = 41, + shard_count = 45, deps = [ "//br/pkg/errors", "//br/pkg/glue", "//br/pkg/gluetidb", "//br/pkg/mock", + "//br/pkg/restore", "//br/pkg/restore/internal/import_client", "//br/pkg/restore/split", "//br/pkg/restore/utils", @@ -112,6 +118,7 @@ go_test( "//pkg/util/codec", "//pkg/util/sqlexec", "//pkg/util/table-filter", + "@com_github_docker_go_units//:go-units", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_kvproto//pkg/brpb", @@ -119,10 +126,8 @@ go_test( "@com_github_pingcap_kvproto//pkg/errorpb", "@com_github_pingcap_kvproto//pkg/import_sstpb", "@com_github_pingcap_kvproto//pkg/metapb", - "@com_github_pingcap_kvproto//pkg/pdpb", "@com_github_pingcap_log//:log", "@com_github_stretchr_testify//require", - "@com_github_tikv_pd_client//:client", "@org_golang_google_grpc//codes", "@org_golang_google_grpc//keepalive", "@org_golang_google_grpc//status", diff --git a/br/pkg/restore/log_client/client.go b/br/pkg/restore/log_client/client.go index d208b58bb15d2..bfd977afe1fa6 100644 --- a/br/pkg/restore/log_client/client.go +++ b/br/pkg/restore/log_client/client.go @@ -46,8 +46,8 @@ import ( "github.com/pingcap/tidb/br/pkg/restore" "github.com/pingcap/tidb/br/pkg/restore/ingestrec" importclient "github.com/pingcap/tidb/br/pkg/restore/internal/import_client" - logsplit "github.com/pingcap/tidb/br/pkg/restore/internal/log_split" "github.com/pingcap/tidb/br/pkg/restore/internal/rawkv" + snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/br/pkg/restore/tiflashrec" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" @@ -63,6 +63,7 @@ import ( "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/meta/model" tidbutil "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/sqlexec" filter "github.com/pingcap/tidb/pkg/util/table-filter" "github.com/tikv/client-go/v2/config" kvutil "github.com/tikv/client-go/v2/util" @@ -80,7 +81,106 @@ const maxSplitKeysOnce = 10240 // rawKVBatchCount specifies the count of entries that the rawkv client puts into TiKV. const rawKVBatchCount = 64 +// LogRestoreManager is a comprehensive wrapper that encapsulates all logic related to log restoration, +// including concurrency management, checkpoint handling, and file importing for efficient log processing. +type LogRestoreManager struct { + fileImporter *LogFileImporter + workerPool *tidbutil.WorkerPool + checkpointRunner *checkpoint.CheckpointRunner[checkpoint.LogRestoreKeyType, checkpoint.LogRestoreValueType] +} + +func NewLogRestoreManager( + ctx context.Context, + fileImporter *LogFileImporter, + poolSize uint, + createCheckpointSessionFn func() (glue.Session, error), +) (*LogRestoreManager, error) { + // for compacted reason, user only set --concurrency for log file restore speed. + log.Info("log restore worker pool", zap.Uint("size", poolSize)) + l := &LogRestoreManager{ + fileImporter: fileImporter, + workerPool: tidbutil.NewWorkerPool(poolSize, "log manager worker pool"), + } + se, err := createCheckpointSessionFn() + if err != nil { + return nil, errors.Trace(err) + } + + if se != nil { + l.checkpointRunner, err = checkpoint.StartCheckpointRunnerForLogRestore(ctx, se) + if err != nil { + return nil, errors.Trace(err) + } + } + return l, nil +} + +func (l *LogRestoreManager) Close(ctx context.Context) { + if l.fileImporter != nil { + if err := l.fileImporter.Close(); err != nil { + log.Warn("failed to close file importer") + } + } + if l.checkpointRunner != nil { + l.checkpointRunner.WaitForFinish(ctx, true) + } +} + +// SstRestoreManager is a comprehensive wrapper that encapsulates all logic related to sst restoration, +// including concurrency management, checkpoint handling, and file importing(splitting) for efficient log processing. +type SstRestoreManager struct { + restorer restore.SstRestorer + workerPool *tidbutil.WorkerPool + checkpointRunner *checkpoint.CheckpointRunner[checkpoint.RestoreKeyType, checkpoint.RestoreValueType] +} + +func (s *SstRestoreManager) Close(ctx context.Context) { + if s.restorer != nil { + if err := s.restorer.Close(); err != nil { + log.Warn("failed to close file restorer") + } + } + if s.checkpointRunner != nil { + s.checkpointRunner.WaitForFinish(ctx, true) + } +} + +func NewSstRestoreManager( + ctx context.Context, + snapFileImporter *snapclient.SnapFileImporter, + concurrencyPerStore uint, + storeCount uint, + createCheckpointSessionFn func() (glue.Session, error), +) (*SstRestoreManager, error) { + var checkpointRunner *checkpoint.CheckpointRunner[checkpoint.RestoreKeyType, checkpoint.RestoreValueType] + // This poolSize is similar to full restore, as both workflows are comparable. + // The poolSize should be greater than concurrencyPerStore multiplied by the number of stores. + poolSize := concurrencyPerStore * 32 * storeCount + log.Info("sst restore worker pool", zap.Uint("size", poolSize)) + sstWorkerPool := tidbutil.NewWorkerPool(poolSize, "sst file") + + s := &SstRestoreManager{ + workerPool: tidbutil.NewWorkerPool(poolSize, "log manager worker pool"), + } + se, err := createCheckpointSessionFn() + if err != nil { + return nil, errors.Trace(err) + } + if se != nil { + checkpointRunner, err = checkpoint.StartCheckpointRunnerForRestore(ctx, se, checkpoint.CustomSSTRestoreCheckpointDatabaseName) + if err != nil { + return nil, errors.Trace(err) + } + } + s.restorer = restore.NewSimpleSstRestorer(ctx, snapFileImporter, sstWorkerPool, checkpointRunner) + return s, nil +} + type LogClient struct { + *LogFileManager + logRestoreManager *LogRestoreManager + sstRestoreManager *SstRestoreManager + cipher *backuppb.CipherInfo pdClient pd.Client pdHTTPClient pdhttp.Client @@ -92,7 +192,9 @@ type LogClient struct { rawKVClient *rawkv.RawKVBatchClient storage storage.ExternalStorage - se glue.Session + // unsafeSession is not thread-safe. + // Currently, it is only utilized in some initialization and post-handle functions. + unsafeSession glue.Session // currentTS is used for rewrite meta kv when restore stream. // Can not use `restoreTS` directly, because schema created in `full backup` maybe is new than `restoreTS`. @@ -100,11 +202,6 @@ type LogClient struct { upstreamClusterID uint64 - *LogFileManager - - workerPool *tidbutil.WorkerPool - fileImporter *LogFileImporter - // the query to insert rows into table `gc_delete_range`, lack of ts. deleteRangeQuery []*stream.PreDelRangeQuery deleteRangeQueryCh chan *stream.PreDelRangeQuery @@ -132,21 +229,89 @@ func NewRestoreClient( } // Close a client. -func (rc *LogClient) Close() { +func (rc *LogClient) Close(ctx context.Context) { + defer func() { + if rc.logRestoreManager != nil { + rc.logRestoreManager.Close(ctx) + } + if rc.sstRestoreManager != nil { + rc.sstRestoreManager.Close(ctx) + } + }() + // close the connection, and it must be succeed when in SQL mode. - if rc.se != nil { - rc.se.Close() + if rc.unsafeSession != nil { + rc.unsafeSession.Close() } if rc.rawKVClient != nil { rc.rawKVClient.Close() } + log.Info("Restore client closed") +} - if err := rc.fileImporter.Close(); err != nil { - log.Warn("failed to close file improter") +func (rc *LogClient) RestoreCompactedSstFiles( + ctx context.Context, + compactionsIter iter.TryNextor[*backuppb.LogFileSubcompaction], + rules map[int64]*restoreutils.RewriteRules, + importModeSwitcher *restore.ImportModeSwitcher, + onProgress func(int64), +) error { + backupFileSets := make([]restore.BackupFileSet, 0, 8) + // Collect all items from the iterator in advance to avoid blocking during restoration. + // This approach ensures that we have all necessary data ready for processing, + // preventing any potential delays caused by waiting for the iterator to yield more items. + start := time.Now() + for r := compactionsIter.TryNext(ctx); !r.Finished; r = compactionsIter.TryNext(ctx) { + if r.Err != nil { + return r.Err + } + i := r.Item + rewriteRules, ok := rules[i.Meta.TableId] + if !ok { + log.Warn("[Compacted SST Restore] Skipping excluded table during restore.", zap.Int64("table_id", i.Meta.TableId)) + continue + } + set := restore.BackupFileSet{ + TableID: i.Meta.TableId, + SSTFiles: i.SstOutputs, + RewriteRules: rewriteRules, + } + backupFileSets = append(backupFileSets, set) + } + if len(backupFileSets) == 0 { + log.Info("[Compacted SST Restore] No SST files found for restoration.") + return nil } + err := importModeSwitcher.GoSwitchToImportMode(ctx) + if err != nil { + return errors.Trace(err) + } + defer func() { + switchErr := importModeSwitcher.SwitchToNormalMode(ctx) + if switchErr != nil { + log.Warn("[Compacted SST Restore] Failed to switch back to normal mode after restoration.", zap.Error(switchErr)) + } + }() - log.Info("Restore client closed") + log.Info("[Compacted SST Restore] Start to restore SST files", + zap.Int("sst-file-count", len(backupFileSets)), zap.Duration("iterate-take", time.Since(start))) + start = time.Now() + defer func() { + log.Info("[Compacted SST Restore] Restore SST files finished", zap.Duration("restore-take", time.Since(start))) + }() + + // To optimize performance and minimize cross-region downloads, + // we are currently opting for a single restore approach instead of batch restoration. + // This decision is similar to the handling of raw and txn restores, + // where batch processing may lead to increased complexity and potential inefficiencies. + // TODO: Future enhancements may explore the feasibility of reintroducing batch restoration + // while maintaining optimal performance and resource utilization. + err = rc.sstRestoreManager.restorer.GoRestore(onProgress, backupFileSets) + if err != nil { + return errors.Trace(err) + } + return rc.sstRestoreManager.restorer.WaitUntilFinish() } func (rc *LogClient) SetRawKVBatchClient( @@ -167,11 +332,6 @@ func (rc *LogClient) SetCrypter(crypter *backuppb.CipherInfo) { rc.cipher = crypter } -func (rc *LogClient) SetConcurrency(c uint) { - log.Info("download worker pool", zap.Uint("size", c)) - rc.workerPool = tidbutil.NewWorkerPool(c, "file") -} - func (rc *LogClient) SetUpstreamClusterID(upstreamClusterID uint64) { log.Info("upstream cluster id", zap.Uint64("cluster id", upstreamClusterID)) rc.upstreamClusterID = upstreamClusterID @@ -211,28 +371,19 @@ func (rc *LogClient) CleanUpKVFiles( ) error { // Current we only have v1 prefix. // In the future, we can add more operation for this interface. - return rc.fileImporter.ClearFiles(ctx, rc.pdClient, "v1") -} - -func (rc *LogClient) StartCheckpointRunnerForLogRestore(ctx context.Context, g glue.Glue, store kv.Storage) (*checkpoint.CheckpointRunner[checkpoint.LogRestoreKeyType, checkpoint.LogRestoreValueType], error) { - se, err := g.CreateSession(store) - if err != nil { - return nil, errors.Trace(err) - } - runner, err := checkpoint.StartCheckpointRunnerForLogRestore(ctx, se) - return runner, errors.Trace(err) + return rc.logRestoreManager.fileImporter.ClearFiles(ctx, rc.pdClient, "v1") } // Init create db connection and domain for storage. -func (rc *LogClient) Init(g glue.Glue, store kv.Storage) error { +func (rc *LogClient) Init(ctx context.Context, g glue.Glue, store kv.Storage) error { var err error - rc.se, err = g.CreateSession(store) + rc.unsafeSession, err = g.CreateSession(store) if err != nil { return errors.Trace(err) } // Set SQL mode to None for avoiding SQL compatibility problem - err = rc.se.Execute(context.Background(), "set @@sql_mode=''") + err = rc.unsafeSession.Execute(ctx, "set @@sql_mode=''") if err != nil { return errors.Trace(err) } @@ -245,7 +396,13 @@ func (rc *LogClient) Init(g glue.Glue, store kv.Storage) error { return nil } -func (rc *LogClient) InitClients(ctx context.Context, backend *backuppb.StorageBackend) { +func (rc *LogClient) InitClients( + ctx context.Context, + backend *backuppb.StorageBackend, + createSessionFn func() (glue.Session, error), + concurrency uint, + concurrencyPerStore uint, +) error { stores, err := conn.GetAllTiKVStoresWithRetry(ctx, rc.pdClient, util.SkipTiFlash) if err != nil { log.Fatal("failed to get stores", zap.Error(err)) @@ -253,7 +410,63 @@ func (rc *LogClient) InitClients(ctx context.Context, backend *backuppb.StorageB metaClient := split.NewClient(rc.pdClient, rc.pdHTTPClient, rc.tlsConf, maxSplitKeysOnce, len(stores)+1) importCli := importclient.NewImportClient(metaClient, rc.tlsConf, rc.keepaliveConf) - rc.fileImporter = NewLogFileImporter(metaClient, importCli, backend) + + rc.logRestoreManager, err = NewLogRestoreManager( + ctx, + NewLogFileImporter(metaClient, importCli, backend), + concurrency, + createSessionFn, + ) + if err != nil { + return errors.Trace(err) + } + var createCallBacks []func(*snapclient.SnapFileImporter) error + var closeCallBacks []func(*snapclient.SnapFileImporter) error + createCallBacks = append(createCallBacks, func(importer *snapclient.SnapFileImporter) error { + return importer.CheckMultiIngestSupport(ctx, stores) + }) + + opt := snapclient.NewSnapFileImporterOptions( + rc.cipher, metaClient, importCli, backend, + snapclient.RewriteModeKeyspace, stores, concurrencyPerStore, createCallBacks, closeCallBacks, + ) + snapFileImporter, err := snapclient.NewSnapFileImporter( + ctx, rc.dom.Store().GetCodec().GetAPIVersion(), snapclient.TiDBCompcated, opt) + if err != nil { + return errors.Trace(err) + } + rc.sstRestoreManager, err = NewSstRestoreManager( + ctx, + snapFileImporter, + concurrencyPerStore, + uint(len(stores)), + createSessionFn, + ) + return errors.Trace(err) +} + +func (rc *LogClient) InitCheckpointMetadataForCompactedSstRestore( + ctx context.Context, +) (map[string]struct{}, error) { + sstCheckpointSets := make(map[string]struct{}) + + if checkpoint.ExistsSstRestoreCheckpoint(ctx, rc.dom, checkpoint.CustomSSTRestoreCheckpointDatabaseName) { + // we need to load the checkpoint data for the following restore + execCtx := rc.unsafeSession.GetSessionCtx().GetRestrictedSQLExecutor() + _, err := checkpoint.LoadCheckpointDataForSstRestore(ctx, execCtx, checkpoint.CustomSSTRestoreCheckpointDatabaseName, func(tableID int64, v checkpoint.RestoreValueType) { + sstCheckpointSets[v.Name] = struct{}{} + }) + if err != nil { + return nil, errors.Trace(err) + } + } else { + // initialize the checkpoint metadata since it is the first time to restore. + err := checkpoint.SaveCheckpointMetadataForSstRestore(ctx, rc.unsafeSession, checkpoint.CustomSSTRestoreCheckpointDatabaseName, nil) + if err != nil { + return nil, errors.Trace(err) + } + } + return sstCheckpointSets, nil } func (rc *LogClient) InitCheckpointMetadataForLogRestore( @@ -268,7 +481,7 @@ func (rc *LogClient) InitCheckpointMetadataForLogRestore( // for the first time. if checkpoint.ExistsLogRestoreCheckpointMetadata(ctx, rc.dom) { // load the checkpoint since this is not the first time to restore - meta, err := checkpoint.LoadCheckpointMetadataForLogRestore(ctx, rc.se.GetSessionCtx().GetRestrictedSQLExecutor()) + meta, err := checkpoint.LoadCheckpointMetadataForLogRestore(ctx, rc.unsafeSession.GetSessionCtx().GetRestrictedSQLExecutor()) if err != nil { return "", errors.Trace(err) } @@ -285,7 +498,7 @@ func (rc *LogClient) InitCheckpointMetadataForLogRestore( log.Info("save gc ratio into checkpoint metadata", zap.Uint64("start-ts", startTS), zap.Uint64("restored-ts", restoredTS), zap.Uint64("rewrite-ts", rc.currentTS), zap.String("gc-ratio", gcRatio), zap.Int("tiflash-item-count", len(items))) - if err := checkpoint.SaveCheckpointMetadataForLogRestore(ctx, rc.se, &checkpoint.CheckpointMetadataForLogRestore{ + if err := checkpoint.SaveCheckpointMetadataForLogRestore(ctx, rc.unsafeSession, &checkpoint.CheckpointMetadataForLogRestore{ UpstreamClusterID: rc.upstreamClusterID, RestoredTS: restoredTS, StartTS: startTS, @@ -299,6 +512,15 @@ func (rc *LogClient) InitCheckpointMetadataForLogRestore( return gcRatio, nil } +func (rc *LogClient) GetMigrations(ctx context.Context) ([]*backuppb.Migration, error) { + ext := stream.MigerationExtension(rc.storage) + migs, err := ext.Load(ctx) + if err != nil { + return nil, errors.Trace(err) + } + return migs.ListAll(), nil +} + func (rc *LogClient) InstallLogFileManager(ctx context.Context, startTS, restoreTS uint64, metadataDownloadBatchSize uint, encryptionManager *encryption.Manager) error { init := LogFileManagerInit{ @@ -306,6 +528,10 @@ func (rc *LogClient) InstallLogFileManager(ctx context.Context, startTS, restore RestoreTS: restoreTS, Storage: rc.storage, + MigrationsBuilder: &WithMigrationsBuilder{ + startTS: startTS, + restoredTS: restoreTS, + }, MetadataDownloadBatchSize: metadataDownloadBatchSize, EncryptionManager: encryptionManager, } @@ -478,9 +704,7 @@ func ApplyKVFilesWithSingleMethod( func (rc *LogClient) RestoreKVFiles( ctx context.Context, rules map[int64]*restoreutils.RewriteRules, - idrules map[int64]int64, logIter LogIter, - runner *checkpoint.CheckpointRunner[checkpoint.LogRestoreKeyType, checkpoint.LogRestoreValueType], pitrBatchCount uint32, pitrBatchSize uint32, updateStats func(kvCount uint64, size uint64), @@ -523,31 +747,26 @@ func (rc *LogClient) RestoreKVFiles( // For this version we do not handle new created table after full backup. // in next version we will perform rewrite and restore meta key to restore new created tables. // so we can simply skip the file that doesn't have the rule here. - onProgress(int64(len(files))) + onProgress(kvCount) summary.CollectInt("FileSkip", len(files)) log.Debug("skip file due to table id not matched", zap.Int64("table-id", files[0].TableId)) skipFile += len(files) } else { applyWg.Add(1) - downstreamId := idrules[files[0].TableId] - rc.workerPool.ApplyOnErrorGroup(eg, func() (err error) { + rc.logRestoreManager.workerPool.ApplyOnErrorGroup(eg, func() (err error) { fileStart := time.Now() defer applyWg.Done() defer func() { - onProgress(int64(len(files))) + onProgress(kvCount) updateStats(uint64(kvCount), size) summary.CollectInt("File", len(files)) if err == nil { filenames := make([]string, 0, len(files)) - if runner == nil { - for _, f := range files { - filenames = append(filenames, f.Path+", ") - } - } else { - for _, f := range files { - filenames = append(filenames, f.Path+", ") - if e := checkpoint.AppendRangeForLogRestore(ectx, runner, f.MetaDataGroupName, downstreamId, f.OffsetInMetaGroup, f.OffsetInMergedGroup); e != nil { + for _, f := range files { + filenames = append(filenames, f.Path+", ") + if rc.logRestoreManager.checkpointRunner != nil { + if e := checkpoint.AppendRangeForLogRestore(ectx, rc.logRestoreManager.checkpointRunner, f.MetaDataGroupName, rule.NewTableID, f.OffsetInMetaGroup, f.OffsetInMergedGroup); e != nil { err = errors.Annotate(e, "failed to append checkpoint data") break } @@ -558,13 +777,13 @@ func (rc *LogClient) RestoreKVFiles( } }() - return rc.fileImporter.ImportKVFiles(ectx, files, rule, rc.shiftStartTS, rc.startTS, rc.restoreTS, + return rc.logRestoreManager.fileImporter.ImportKVFiles(ectx, files, rule, rc.shiftStartTS, rc.startTS, rc.restoreTS, supportBatch, cipherInfo, masterKeys) }) } } - rc.workerPool.ApplyOnErrorGroup(eg, func() error { + rc.logRestoreManager.workerPool.ApplyOnErrorGroup(eg, func() error { if supportBatch { err = ApplyKVFilesWithBatchMethod(ectx, logIter, int(pitrBatchCount), uint64(pitrBatchSize), applyFunc, &applyWg) } else { @@ -591,7 +810,7 @@ func (rc *LogClient) initSchemasMap( restoreTS uint64, ) ([]*backuppb.PitrDBMap, error) { getPitrIDMapSQL := "SELECT segment_id, id_map FROM mysql.tidb_pitr_id_map WHERE restored_ts = %? and upstream_cluster_id = %? ORDER BY segment_id;" - execCtx := rc.se.GetSessionCtx().GetRestrictedSQLExecutor() + execCtx := rc.unsafeSession.GetSessionCtx().GetRestrictedSQLExecutor() rows, _, errSQL := execCtx.ExecRestrictedSQL( kv.WithInternalSourceType(ctx, kv.InternalTxnBR), nil, @@ -1247,36 +1466,45 @@ func (rc *LogClient) UpdateSchemaVersion(ctx context.Context) error { return nil } -func (rc *LogClient) WrapLogFilesIterWithSplitHelper(logIter LogIter, rules map[int64]*restoreutils.RewriteRules, g glue.Glue, store kv.Storage) (LogIter, error) { - se, err := g.CreateSession(store) - if err != nil { - return nil, errors.Trace(err) - } - execCtx := se.GetSessionCtx().GetRestrictedSQLExecutor() - splitSize, splitKeys := utils.GetRegionSplitInfo(execCtx) - log.Info("get split threshold from tikv config", zap.Uint64("split-size", splitSize), zap.Int64("split-keys", splitKeys)) +// WrapCompactedFilesIteratorWithSplit applies a splitting strategy to the compacted files iterator. +// It uses a region splitter to handle the splitting logic based on the provided rules and checkpoint sets. +func (rc *LogClient) WrapCompactedFilesIterWithSplitHelper( + ctx context.Context, + compactedIter iter.TryNextor[*backuppb.LogFileSubcompaction], + rules map[int64]*restoreutils.RewriteRules, + checkpointSets map[string]struct{}, + updateStatsFn func(uint64, uint64), + splitSize uint64, + splitKeys int64, +) (iter.TryNextor[*backuppb.LogFileSubcompaction], error) { client := split.NewClient(rc.pdClient, rc.pdHTTPClient, rc.tlsConf, maxSplitKeysOnce, 3) - return NewLogFilesIterWithSplitHelper(logIter, rules, client, splitSize, splitKeys), nil + wrapper := restore.PipelineRestorerWrapper[*backuppb.LogFileSubcompaction]{ + PipelineRegionsSplitter: split.NewPipelineRegionsSplitter(client, splitSize, splitKeys), + } + strategy := NewCompactedFileSplitStrategy(rules, checkpointSets, updateStatsFn) + return wrapper.WithSplit(ctx, compactedIter, strategy), nil } -func (rc *LogClient) generateKvFilesSkipMap(ctx context.Context, downstreamIdset map[int64]struct{}) (*LogFilesSkipMap, error) { - skipMap := NewLogFilesSkipMap() - t, err := checkpoint.LoadCheckpointDataForLogRestore( - ctx, rc.se.GetSessionCtx().GetRestrictedSQLExecutor(), func(groupKey checkpoint.LogRestoreKeyType, off checkpoint.LogRestoreValueMarshaled) { - for tableID, foffs := range off.Foffs { - // filter out the checkpoint data of dropped table - if _, exists := downstreamIdset[tableID]; exists { - for _, foff := range foffs { - skipMap.Insert(groupKey, off.Goff, foff) - } - } - } - }) +// WrapLogFilesIteratorWithSplit applies a splitting strategy to the log files iterator. +// It uses a region splitter to handle the splitting logic based on the provided rules. +func (rc *LogClient) WrapLogFilesIterWithSplitHelper( + ctx context.Context, + logIter LogIter, + execCtx sqlexec.RestrictedSQLExecutor, + rules map[int64]*restoreutils.RewriteRules, + updateStatsFn func(uint64, uint64), + splitSize uint64, + splitKeys int64, +) (LogIter, error) { + client := split.NewClient(rc.pdClient, rc.pdHTTPClient, rc.tlsConf, maxSplitKeysOnce, 3) + wrapper := restore.PipelineRestorerWrapper[*LogDataFileInfo]{ + PipelineRegionsSplitter: split.NewPipelineRegionsSplitter(client, splitSize, splitKeys), + } + strategy, err := NewLogSplitStrategy(ctx, rc.useCheckpoint, execCtx, rules, updateStatsFn) if err != nil { return nil, errors.Trace(err) } - summary.AdjustStartTimeToEarlierTime(t) - return skipMap, nil + return wrapper.WithSplit(ctx, logIter, strategy), nil } func WrapLogFilesIterWithCheckpointFailpoint( @@ -1305,27 +1533,6 @@ func WrapLogFilesIterWithCheckpointFailpoint( return logIter, nil } -func (rc *LogClient) WrapLogFilesIterWithCheckpoint( - ctx context.Context, - logIter LogIter, - downstreamIdset map[int64]struct{}, - updateStats func(kvCount, size uint64), - onProgress func(), -) (LogIter, error) { - skipMap, err := rc.generateKvFilesSkipMap(ctx, downstreamIdset) - if err != nil { - return nil, errors.Trace(err) - } - return iter.FilterOut(logIter, func(d *LogDataFileInfo) bool { - if skipMap.NeedSkip(d.MetaDataGroupName, d.OffsetInMetaGroup, d.OffsetInMergedGroup) { - onProgress() - updateStats(uint64(d.NumberOfEntries), d.Length) - return true - } - return false - }), nil -} - const ( alterTableDropIndexSQL = "ALTER TABLE %n.%n DROP INDEX %n" alterTableAddIndexFormat = "ALTER TABLE %%n.%%n ADD INDEX %%n(%s)" @@ -1340,7 +1547,7 @@ func (rc *LogClient) generateRepairIngestIndexSQLs( var sqls []checkpoint.CheckpointIngestIndexRepairSQL if rc.useCheckpoint { if checkpoint.ExistsCheckpointIngestIndexRepairSQLs(ctx, rc.dom) { - checkpointSQLs, err := checkpoint.LoadCheckpointIngestIndexRepairSQLs(ctx, rc.se.GetSessionCtx().GetRestrictedSQLExecutor()) + checkpointSQLs, err := checkpoint.LoadCheckpointIngestIndexRepairSQLs(ctx, rc.unsafeSession.GetSessionCtx().GetRestrictedSQLExecutor()) if err != nil { return sqls, false, errors.Trace(err) } @@ -1405,7 +1612,7 @@ func (rc *LogClient) generateRepairIngestIndexSQLs( } if rc.useCheckpoint && len(sqls) > 0 { - if err := checkpoint.SaveCheckpointIngestIndexRepairSQLs(ctx, rc.se, &checkpoint.CheckpointIngestIndexRepairSQLs{ + if err := checkpoint.SaveCheckpointIngestIndexRepairSQLs(ctx, rc.unsafeSession, &checkpoint.CheckpointIngestIndexRepairSQLs{ SQLs: sqls, }); err != nil { return sqls, false, errors.Trace(err) @@ -1467,7 +1674,7 @@ NEXTSQL: // only when first execution or old index id is not dropped if !fromCheckpoint || oldIndexIDFound { - if err := rc.se.ExecuteInternal(ctx, alterTableDropIndexSQL, sql.SchemaName.O, sql.TableName.O, sql.IndexName); err != nil { + if err := rc.unsafeSession.ExecuteInternal(ctx, alterTableDropIndexSQL, sql.SchemaName.O, sql.TableName.O, sql.IndexName); err != nil { return errors.Trace(err) } } @@ -1477,7 +1684,7 @@ NEXTSQL: } }) // create the repaired index when first execution or not found it - if err := rc.se.ExecuteInternal(ctx, sql.AddSQL, sql.AddArgs...); err != nil { + if err := rc.unsafeSession.ExecuteInternal(ctx, sql.AddSQL, sql.AddArgs...); err != nil { return errors.Trace(err) } w.Inc() @@ -1550,7 +1757,7 @@ func (rc *LogClient) InsertGCRows(ctx context.Context) error { // trim the ',' behind the query.Sql if exists // that's when the rewrite rule of the last table id is not exist sql := strings.TrimSuffix(query.Sql, ",") - if err := rc.se.ExecuteInternal(ctx, sql, paramsList...); err != nil { + if err := rc.unsafeSession.ExecuteInternal(ctx, sql, paramsList...); err != nil { return errors.Trace(err) } } @@ -1578,7 +1785,7 @@ func (rc *LogClient) saveIDMap( return errors.Trace(err) } // clean the dirty id map at first - err = rc.se.ExecuteInternal(ctx, "DELETE FROM mysql.tidb_pitr_id_map WHERE restored_ts = %? and upstream_cluster_id = %?;", rc.restoreTS, rc.upstreamClusterID) + err = rc.unsafeSession.ExecuteInternal(ctx, "DELETE FROM mysql.tidb_pitr_id_map WHERE restored_ts = %? and upstream_cluster_id = %?;", rc.restoreTS, rc.upstreamClusterID) if err != nil { return errors.Trace(err) } @@ -1588,7 +1795,7 @@ func (rc *LogClient) saveIDMap( if endIdx > len(data) { endIdx = len(data) } - err := rc.se.ExecuteInternal(ctx, replacePitrIDMapSQL, rc.restoreTS, rc.upstreamClusterID, segmentId, data[startIdx:endIdx]) + err := rc.unsafeSession.ExecuteInternal(ctx, replacePitrIDMapSQL, rc.restoreTS, rc.upstreamClusterID, segmentId, data[startIdx:endIdx]) if err != nil { return errors.Trace(err) } @@ -1597,7 +1804,7 @@ func (rc *LogClient) saveIDMap( if rc.useCheckpoint { log.Info("save checkpoint task info with InLogRestoreAndIdMapPersist status") - if err := checkpoint.SaveCheckpointProgress(ctx, rc.se, &checkpoint.CheckpointProgress{ + if err := checkpoint.SaveCheckpointProgress(ctx, rc.unsafeSession, &checkpoint.CheckpointProgress{ Progress: checkpoint.InLogRestoreAndIdMapPersist, }); err != nil { return errors.Trace(err) @@ -1614,7 +1821,6 @@ func (rc *LogClient) FailpointDoChecksumForLogRestore( ctx context.Context, kvClient kv.Client, pdClient pd.Client, - idrules map[int64]int64, rewriteRules map[int64]*restoreutils.RewriteRules, ) (finalErr error) { startTS, err := restore.GetTSWithRetry(ctx, rc.pdClient) @@ -1651,11 +1857,11 @@ func (rc *LogClient) FailpointDoChecksumForLogRestore( infoSchema := rc.GetDomain().InfoSchema() // downstream id -> upstream id reidRules := make(map[int64]int64) - for upstreamID, downstreamID := range idrules { - reidRules[downstreamID] = upstreamID + for upstreamID, r := range rewriteRules { + reidRules[r.NewTableID] = upstreamID } - for upstreamID, downstreamID := range idrules { - newTable, ok := infoSchema.TableByID(ctx, downstreamID) + for upstreamID, r := range rewriteRules { + newTable, ok := infoSchema.TableByID(ctx, r.NewTableID) if !ok { // a dropped table continue @@ -1716,52 +1922,3 @@ func (rc *LogClient) FailpointDoChecksumForLogRestore( return eg.Wait() } - -type LogFilesIterWithSplitHelper struct { - iter LogIter - helper *logsplit.LogSplitHelper - buffer []*LogDataFileInfo - next int -} - -const SplitFilesBufferSize = 4096 - -func NewLogFilesIterWithSplitHelper(iter LogIter, rules map[int64]*restoreutils.RewriteRules, client split.SplitClient, splitSize uint64, splitKeys int64) LogIter { - return &LogFilesIterWithSplitHelper{ - iter: iter, - helper: logsplit.NewLogSplitHelper(rules, client, splitSize, splitKeys), - buffer: nil, - next: 0, - } -} - -func (splitIter *LogFilesIterWithSplitHelper) TryNext(ctx context.Context) iter.IterResult[*LogDataFileInfo] { - if splitIter.next >= len(splitIter.buffer) { - splitIter.buffer = make([]*LogDataFileInfo, 0, SplitFilesBufferSize) - for r := splitIter.iter.TryNext(ctx); !r.Finished; r = splitIter.iter.TryNext(ctx) { - if r.Err != nil { - return r - } - f := r.Item - splitIter.helper.Merge(f.DataFileInfo) - splitIter.buffer = append(splitIter.buffer, f) - if len(splitIter.buffer) >= SplitFilesBufferSize { - break - } - } - splitIter.next = 0 - if len(splitIter.buffer) == 0 { - return iter.Done[*LogDataFileInfo]() - } - log.Info("start to split the regions") - startTime := time.Now() - if err := splitIter.helper.Split(ctx); err != nil { - return iter.Throw[*LogDataFileInfo](errors.Trace(err)) - } - log.Info("end to split the regions", zap.Duration("takes", time.Since(startTime))) - } - - res := iter.Emit(splitIter.buffer[splitIter.next]) - splitIter.next += 1 - return res -} diff --git a/br/pkg/restore/log_client/client_test.go b/br/pkg/restore/log_client/client_test.go index 0b1baf7af5675..504d7bb798d72 100644 --- a/br/pkg/restore/log_client/client_test.go +++ b/br/pkg/restore/log_client/client_test.go @@ -22,24 +22,30 @@ import ( "testing" "time" + "github.com/docker/go-units" "github.com/pingcap/errors" backuppb "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/kvproto/pkg/import_sstpb" + "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/br/pkg/glue" "github.com/pingcap/tidb/br/pkg/gluetidb" "github.com/pingcap/tidb/br/pkg/mock" + "github.com/pingcap/tidb/br/pkg/restore" logclient "github.com/pingcap/tidb/br/pkg/restore/log_client" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/br/pkg/stream" "github.com/pingcap/tidb/br/pkg/utils/iter" "github.com/pingcap/tidb/br/pkg/utiltest" "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/planner/core/resolve" "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/sqlexec" filter "github.com/pingcap/tidb/pkg/util/table-filter" "github.com/stretchr/testify/require" @@ -90,8 +96,8 @@ func TestDeleteRangeQueryExec(t *testing.T) { m := mc g := gluetidb.New() client := logclient.NewRestoreClient( - utiltest.NewFakePDClient(nil, false, nil), nil, nil, keepalive.ClientParameters{}) - err := client.Init(g, m.Storage) + split.NewFakePDClient(nil, false, nil), nil, nil, keepalive.ClientParameters{}) + err := client.Init(ctx, g, m.Storage) require.NoError(t, err) client.RunGCRowsLoader(ctx) @@ -109,8 +115,8 @@ func TestDeleteRangeQuery(t *testing.T) { g := gluetidb.New() client := logclient.NewRestoreClient( - utiltest.NewFakePDClient(nil, false, nil), nil, nil, keepalive.ClientParameters{}) - err := client.Init(g, m.Storage) + split.NewFakePDClient(nil, false, nil), nil, nil, keepalive.ClientParameters{}) + err := client.Init(ctx, g, m.Storage) require.NoError(t, err) client.RunGCRowsLoader(ctx) @@ -1338,7 +1344,12 @@ func TestLogFilesIterWithSplitHelper(t *testing.T) { } mockIter := &mockLogIter{} ctx := context.Background() - logIter := logclient.NewLogFilesIterWithSplitHelper(mockIter, rewriteRulesMap, utiltest.NewFakeSplitClient(), 144*1024*1024, 1440000) + w := restore.PipelineRestorerWrapper[*logclient.LogDataFileInfo]{ + PipelineRegionsSplitter: split.NewPipelineRegionsSplitter(split.NewFakeSplitClient(), 144*1024*1024, 1440000), + } + s, err := logclient.NewLogSplitStrategy(ctx, false, nil, rewriteRulesMap, func(uint64, uint64) {}) + require.NoError(t, err) + logIter := w.WithSplit(context.Background(), mockIter, s) next := 0 for r := logIter.TryNext(ctx); !r.Finished; r = logIter.TryNext(ctx) { require.NoError(t, r.Err) @@ -1505,3 +1516,476 @@ func TestPITRIDMap(t *testing.T) { } } } + +type mockLogStrategy struct { + *logclient.LogSplitStrategy + expectSplitCount int +} + +func (m *mockLogStrategy) ShouldSplit() bool { + return m.AccumulateCount == m.expectSplitCount +} + +func TestLogSplitStrategy(t *testing.T) { + ctx := context.Background() + + // Define rewrite rules for table ID transformations. + rules := map[int64]*utils.RewriteRules{ + 1: { + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.GenTableRecordPrefix(1), + NewKeyPrefix: tablecodec.GenTableRecordPrefix(100), + }, + }, + }, + 2: { + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.GenTableRecordPrefix(2), + NewKeyPrefix: tablecodec.GenTableRecordPrefix(200), + }, + }, + }, + } + + // Define initial regions for the mock PD client. + oriRegions := [][]byte{ + {}, + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + } + + // Set up a mock PD client with predefined regions. + storesMap := make(map[uint64]*metapb.Store) + storesMap[1] = &metapb.Store{Id: 1} + mockPDCli := split.NewMockPDClientForSplit() + mockPDCli.SetStores(storesMap) + mockPDCli.SetRegions(oriRegions) + + // Create a split client with the mock PD client. + client := split.NewClient(mockPDCli, nil, nil, 100, 4) + + // Define a mock iterator with sample data files. + mockIter := iter.FromSlice([]*backuppb.DataFileInfo{ + fakeFile(1, 100, 100, 100), + fakeFile(1, 200, 2*units.MiB, 200), + fakeFile(2, 100, 3*units.MiB, 300), + fakeFile(3, 100, 10*units.MiB, 100000), + fakeFile(1, 300, 3*units.MiB, 10), + fakeFile(1, 400, 4*units.MiB, 10), + }) + logIter := toLogDataFileInfoIter(mockIter) + + // Initialize a wrapper for the file restorer with a region splitter. + wrapper := restore.PipelineRestorerWrapper[*logclient.LogDataFileInfo]{ + PipelineRegionsSplitter: split.NewPipelineRegionsSplitter(client, 4*units.MB, 400), + } + + // Create a log split strategy with the given rewrite rules. + strategy, err := logclient.NewLogSplitStrategy(ctx, false, nil, rules, func(u1, u2 uint64) {}) + require.NoError(t, err) + + // Set up a mock strategy to control split behavior. + expectSplitCount := 2 + mockStrategy := &mockLogStrategy{ + LogSplitStrategy: strategy, + // fakeFile(3, 100, 10*units.MiB, 100000) will skipped due to no rewrite rule found. + expectSplitCount: expectSplitCount, + } + + // Use the wrapper to apply the split strategy to the log iterator. + helper := wrapper.WithSplit(ctx, logIter, mockStrategy) + + // Iterate over the log items and verify the split behavior. + count := 0 + for i := helper.TryNext(ctx); !i.Finished; i = helper.TryNext(ctx) { + require.NoError(t, i.Err) + if count == expectSplitCount { + // Verify that no split occurs initially due to insufficient data. + regions, err := mockPDCli.ScanRegions(ctx, []byte{}, []byte{}, 0) + require.NoError(t, err) + require.Len(t, regions, 3) + require.Equal(t, []byte{}, regions[0].Meta.StartKey) + require.Equal(t, codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), regions[1].Meta.StartKey) + require.Equal(t, codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), regions[2].Meta.StartKey) + require.Equal(t, codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), regions[2].Meta.EndKey) + } + // iter.Filterout execute first + count += 1 + } + + // Verify that a split occurs on the second region due to excess data. + regions, err := mockPDCli.ScanRegions(ctx, []byte{}, []byte{}, 0) + require.NoError(t, err) + require.Len(t, regions, 4) + require.Equal(t, fakeRowKey(100, 400), kv.Key(regions[1].Meta.EndKey)) +} + +type mockCompactedStrategy struct { + *logclient.CompactedFileSplitStrategy + expectSplitCount int +} + +func (m *mockCompactedStrategy) ShouldSplit() bool { + return m.AccumulateCount%m.expectSplitCount == 0 +} + +func TestCompactedSplitStrategy(t *testing.T) { + ctx := context.Background() + + rules := map[int64]*utils.RewriteRules{ + 1: { + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.GenTableRecordPrefix(1), + NewKeyPrefix: tablecodec.GenTableRecordPrefix(100), + }, + }, + }, + 2: { + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.GenTableRecordPrefix(2), + NewKeyPrefix: tablecodec.GenTableRecordPrefix(200), + }, + }, + }, + } + + oriRegions := [][]byte{ + {}, + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + } + + cases := []struct { + MockSubcompationIter iter.TryNextor[*backuppb.LogFileSubcompaction] + ExpectRegionEndKeys [][]byte + }{ + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithOneSst(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(2, 100, 48*units.MiB, 300), + fakeSubCompactionWithOneSst(3, 100, 100*units.MiB, 100000), + }), + // no split + // table 1 has not accumlate enough 400 keys or 4MB + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithOneSst(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(1, 100, 32*units.MiB, 10), + fakeSubCompactionWithOneSst(2, 100, 48*units.MiB, 300), + }), + // split on table 1 + // table 1 has accumlate enough keys + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + []byte(fakeRowKey(100, 200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithOneSst(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(2, 100, 32*units.MiB, 300), + fakeSubCompactionWithOneSst(3, 100, 10*units.MiB, 100000), + fakeSubCompactionWithOneSst(1, 300, 48*units.MiB, 13), + fakeSubCompactionWithOneSst(1, 400, 64*units.MiB, 14), + fakeSubCompactionWithOneSst(1, 100, 1*units.MiB, 15), + }), + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + []byte(fakeRowKey(100, 400)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + } + for _, ca := range cases { + storesMap := make(map[uint64]*metapb.Store) + storesMap[1] = &metapb.Store{Id: 1} + mockPDCli := split.NewMockPDClientForSplit() + mockPDCli.SetStores(storesMap) + mockPDCli.SetRegions(oriRegions) + + client := split.NewClient(mockPDCli, nil, nil, 100, 4) + wrapper := restore.PipelineRestorerWrapper[*backuppb.LogFileSubcompaction]{ + PipelineRegionsSplitter: split.NewPipelineRegionsSplitter(client, 4*units.MB, 400), + } + + strategy := logclient.NewCompactedFileSplitStrategy(rules, nil, nil) + mockStrategy := &mockCompactedStrategy{ + CompactedFileSplitStrategy: strategy, + expectSplitCount: 3, + } + + helper := wrapper.WithSplit(ctx, ca.MockSubcompationIter, mockStrategy) + + for i := helper.TryNext(ctx); !i.Finished; i = helper.TryNext(ctx) { + require.NoError(t, i.Err) + } + + regions, err := mockPDCli.ScanRegions(ctx, []byte{}, []byte{}, 0) + require.NoError(t, err) + require.Len(t, regions, len(ca.ExpectRegionEndKeys)) + for i, endKey := range ca.ExpectRegionEndKeys { + require.Equal(t, endKey, regions[i].Meta.EndKey) + } + } +} + +func TestCompactedSplitStrategyWithCheckpoint(t *testing.T) { + ctx := context.Background() + + rules := map[int64]*utils.RewriteRules{ + 1: { + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.GenTableRecordPrefix(1), + NewKeyPrefix: tablecodec.GenTableRecordPrefix(100), + }, + }, + }, + 2: { + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.GenTableRecordPrefix(2), + NewKeyPrefix: tablecodec.GenTableRecordPrefix(200), + }, + }, + }, + } + + oriRegions := [][]byte{ + {}, + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + } + + cases := []struct { + MockSubcompationIter iter.TryNextor[*backuppb.LogFileSubcompaction] + CheckpointSet map[string]struct{} + ProcessedKVCount int + ProcessedSize int + ExpectRegionEndKeys [][]byte + }{ + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithOneSst(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(2, 100, 48*units.MiB, 300), + fakeSubCompactionWithOneSst(3, 100, 100*units.MiB, 100000), + }), + map[string]struct{}{ + "1:100": {}, + "1:200": {}, + }, + 300, + 48 * units.MiB, + // no split, checkpoint files came in order + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithOneSst(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(1, 100, 32*units.MiB, 10), + fakeSubCompactionWithOneSst(2, 100, 48*units.MiB, 300), + }), + map[string]struct{}{ + "1:100": {}, + }, + 110, + 48 * units.MiB, + // no split, checkpoint files came in different order + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithOneSst(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(2, 100, 32*units.MiB, 300), + fakeSubCompactionWithOneSst(3, 100, 10*units.MiB, 100000), + fakeSubCompactionWithOneSst(1, 300, 48*units.MiB, 13), + fakeSubCompactionWithOneSst(1, 400, 64*units.MiB, 14), + fakeSubCompactionWithOneSst(1, 100, 1*units.MiB, 15), + }), + map[string]struct{}{ + "1:300": {}, + "1:400": {}, + }, + 27, + 112 * units.MiB, + // no split, the main file has skipped due to checkpoint. + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithOneSst(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(2, 100, 32*units.MiB, 300), + fakeSubCompactionWithOneSst(3, 100, 10*units.MiB, 100000), + fakeSubCompactionWithOneSst(1, 300, 48*units.MiB, 13), + fakeSubCompactionWithOneSst(1, 400, 64*units.MiB, 14), + fakeSubCompactionWithOneSst(1, 100, 1*units.MiB, 15), + }), + map[string]struct{}{ + "1:100": {}, + "1:200": {}, + }, + 315, + 49 * units.MiB, + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + []byte(fakeRowKey(100, 400)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + { + iter.FromSlice([]*backuppb.LogFileSubcompaction{ + fakeSubCompactionWithOneSst(1, 100, 16*units.MiB, 100), + fakeSubCompactionWithMultiSsts(1, 200, 32*units.MiB, 200), + fakeSubCompactionWithOneSst(2, 100, 32*units.MiB, 300), + fakeSubCompactionWithOneSst(3, 100, 10*units.MiB, 100000), + fakeSubCompactionWithOneSst(1, 300, 48*units.MiB, 13), + fakeSubCompactionWithOneSst(1, 400, 64*units.MiB, 14), + fakeSubCompactionWithOneSst(1, 100, 1*units.MiB, 15), + }), + map[string]struct{}{ + "1:100": {}, + "1:200": {}, + }, + 315, + 49 * units.MiB, + [][]byte{ + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(100)), + []byte(fakeRowKey(100, 300)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(200)), + codec.EncodeBytes(nil, tablecodec.EncodeTablePrefix(402)), + }, + }, + } + for _, ca := range cases { + storesMap := make(map[uint64]*metapb.Store) + storesMap[1] = &metapb.Store{Id: 1} + mockPDCli := split.NewMockPDClientForSplit() + mockPDCli.SetStores(storesMap) + mockPDCli.SetRegions(oriRegions) + + client := split.NewClient(mockPDCli, nil, nil, 100, 4) + wrapper := restore.PipelineRestorerWrapper[*backuppb.LogFileSubcompaction]{ + PipelineRegionsSplitter: split.NewPipelineRegionsSplitter(client, 4*units.MB, 400), + } + totalSize := 0 + totalKvCount := 0 + + strategy := logclient.NewCompactedFileSplitStrategy(rules, ca.CheckpointSet, func(u1, u2 uint64) { + totalKvCount += int(u1) + totalSize += int(u2) + }) + mockStrategy := &mockCompactedStrategy{ + CompactedFileSplitStrategy: strategy, + expectSplitCount: 3, + } + + helper := wrapper.WithSplit(ctx, ca.MockSubcompationIter, mockStrategy) + + for i := helper.TryNext(ctx); !i.Finished; i = helper.TryNext(ctx) { + require.NoError(t, i.Err) + } + + regions, err := mockPDCli.ScanRegions(ctx, []byte{}, []byte{}, 0) + require.NoError(t, err) + require.Len(t, regions, len(ca.ExpectRegionEndKeys)) + for i, endKey := range ca.ExpectRegionEndKeys { + require.Equal(t, endKey, regions[i].Meta.EndKey) + } + require.Equal(t, totalKvCount, ca.ProcessedKVCount) + require.Equal(t, totalSize, ca.ProcessedSize) + } +} + +func fakeSubCompactionWithMultiSsts(tableID, rowID int64, length uint64, num uint64) *backuppb.LogFileSubcompaction { + return &backuppb.LogFileSubcompaction{ + Meta: &backuppb.LogFileSubcompactionMeta{ + TableId: tableID, + }, + SstOutputs: []*backuppb.File{ + { + Name: fmt.Sprintf("%d:%d", tableID, rowID), + StartKey: fakeRowRawKey(tableID, rowID), + EndKey: fakeRowRawKey(tableID, rowID+1), + Size_: length, + TotalKvs: num, + }, + { + Name: fmt.Sprintf("%d:%d", tableID, rowID+1), + StartKey: fakeRowRawKey(tableID, rowID+1), + EndKey: fakeRowRawKey(tableID, rowID+2), + Size_: length, + TotalKvs: num, + }, + }, + } +} +func fakeSubCompactionWithOneSst(tableID, rowID int64, length uint64, num uint64) *backuppb.LogFileSubcompaction { + return &backuppb.LogFileSubcompaction{ + Meta: &backuppb.LogFileSubcompactionMeta{ + TableId: tableID, + }, + SstOutputs: []*backuppb.File{ + { + Name: fmt.Sprintf("%d:%d", tableID, rowID), + StartKey: fakeRowRawKey(tableID, rowID), + EndKey: fakeRowRawKey(tableID, rowID+1), + Size_: length, + TotalKvs: num, + }, + }, + } +} + +func fakeFile(tableID, rowID int64, length uint64, num int64) *backuppb.DataFileInfo { + return &backuppb.DataFileInfo{ + StartKey: fakeRowKey(tableID, rowID), + EndKey: fakeRowKey(tableID, rowID+1), + TableId: tableID, + Length: length, + NumberOfEntries: num, + } +} + +func fakeRowKey(tableID, rowID int64) kv.Key { + return codec.EncodeBytes(nil, fakeRowRawKey(tableID, rowID)) +} + +func fakeRowRawKey(tableID, rowID int64) kv.Key { + return tablecodec.EncodeRecordKey(tablecodec.GenTableRecordPrefix(tableID), kv.IntHandle(rowID)) +} diff --git a/br/pkg/restore/log_client/compacted_file_strategy.go b/br/pkg/restore/log_client/compacted_file_strategy.go new file mode 100644 index 0000000000000..9637cf2e529b6 --- /dev/null +++ b/br/pkg/restore/log_client/compacted_file_strategy.go @@ -0,0 +1,112 @@ +// Copyright 2024 PingCAP, Inc. Licensed under Apache-2.0. + +package logclient + +import ( + "fmt" + + backuppb "github.com/pingcap/kvproto/pkg/brpb" + "github.com/pingcap/log" + "github.com/pingcap/tidb/br/pkg/restore/split" + restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" + "github.com/pingcap/tidb/pkg/util/codec" + "go.uber.org/zap" +) + +// The impact factor is used to reduce the size and number of MVCC entries +// in SST files, helping to optimize performance and resource usage. +const impactFactor = 16 + +type CompactedFileSplitStrategy struct { + *split.BaseSplitStrategy + checkpointSets map[string]struct{} + checkpointFileProgressFn func(uint64, uint64) +} + +var _ split.SplitStrategy[*backuppb.LogFileSubcompaction] = &CompactedFileSplitStrategy{} + +func NewCompactedFileSplitStrategy( + rules map[int64]*restoreutils.RewriteRules, + checkpointsSet map[string]struct{}, + updateStatsFn func(uint64, uint64), +) *CompactedFileSplitStrategy { + return &CompactedFileSplitStrategy{ + BaseSplitStrategy: split.NewBaseSplitStrategy(rules), + checkpointSets: checkpointsSet, + checkpointFileProgressFn: updateStatsFn, + } +} + +func (cs *CompactedFileSplitStrategy) Accumulate(subCompaction *backuppb.LogFileSubcompaction) { + splitHelper, exist := cs.TableSplitter[subCompaction.Meta.TableId] + if !exist { + splitHelper = split.NewSplitHelper() + cs.TableSplitter[subCompaction.Meta.TableId] = splitHelper + } + + for _, f := range subCompaction.SstOutputs { + startKey := codec.EncodeBytes(nil, f.StartKey) + endKey := codec.EncodeBytes(nil, f.EndKey) + cs.AccumulateCount += 1 + if f.TotalKvs == 0 || f.Size_ == 0 { + log.Error("No key-value pairs in subcompaction", zap.String("name", f.Name)) + continue + } + // The number of MVCC entries in the compacted SST files can be excessive. + // This calculation takes the MVCC impact into account to optimize performance. + calculateCount := int64(f.TotalKvs) / impactFactor + if calculateCount == 0 { + // at least consider as 1 key impact + log.Warn(fmt.Sprintf("less than %d key-value pairs in subcompaction", impactFactor), zap.String("name", f.Name)) + calculateCount = 1 + } + calculateSize := f.Size_ / impactFactor + if calculateSize == 0 { + log.Warn(fmt.Sprintf("less than %d key-value size in subcompaction", impactFactor), zap.String("name", f.Name)) + calculateSize = 1 + } + splitHelper.Merge(split.Valued{ + Key: split.Span{ + StartKey: startKey, + EndKey: endKey, + }, + Value: split.Value{ + Size: calculateSize, + Number: calculateCount, + }, + }) + } +} + +func (cs *CompactedFileSplitStrategy) ShouldSplit() bool { + return cs.AccumulateCount > (4096 / impactFactor) +} + +func (cs *CompactedFileSplitStrategy) ShouldSkip(subCompaction *backuppb.LogFileSubcompaction) bool { + _, exist := cs.Rules[subCompaction.Meta.TableId] + if !exist { + log.Info("skip for no rule files", zap.Int64("tableID", subCompaction.Meta.TableId)) + return true + } + sstOutputs := make([]*backuppb.File, 0, len(subCompaction.SstOutputs)) + for _, sst := range subCompaction.SstOutputs { + if _, ok := cs.checkpointSets[sst.Name]; !ok { + sstOutputs = append(sstOutputs, sst) + } else { + // This file is recorded in the checkpoint, indicating that it has + // already been restored to the cluster. Therefore, we will skip + // processing this file and only update the statistics. + cs.checkpointFileProgressFn(sst.TotalKvs, sst.Size_) + } + } + if len(sstOutputs) == 0 { + log.Info("all files in sub compaction skipped") + return true + } + if len(sstOutputs) != len(subCompaction.SstOutputs) { + log.Info("partial files in sub compaction skipped due to checkpoint") + subCompaction.SstOutputs = sstOutputs + return false + } + return false +} diff --git a/br/pkg/restore/log_client/export_test.go b/br/pkg/restore/log_client/export_test.go index 9a35b35e8eb57..9c95409c9d754 100644 --- a/br/pkg/restore/log_client/export_test.go +++ b/br/pkg/restore/log_client/export_test.go @@ -29,6 +29,38 @@ import ( var FilterFilesByRegion = filterFilesByRegion +func (metaname *MetaName) Meta() Meta { + return metaname.meta +} + +func NewMetaName(meta Meta, name string) *MetaName { + return &MetaName{meta: meta, name: name} +} + +func NewMigrationBuilder(shiftStartTS, startTS, restoredTS uint64) *WithMigrationsBuilder { + return &WithMigrationsBuilder{ + shiftStartTS: shiftStartTS, + startTS: startTS, + restoredTS: restoredTS, + } +} + +func (m *MetaWithMigrations) StoreId() int64 { + return m.meta.StoreId +} + +func (m *MetaWithMigrations) Meta() *backuppb.Metadata { + return m.meta +} + +func (m *PhysicalWithMigrations) PhysicalLength() uint64 { + return m.physical.Item.Length +} + +func (m *PhysicalWithMigrations) Physical() *backuppb.DataFileGroup { + return m.physical.Item +} + func (rc *LogClient) TEST_saveIDMap( ctx context.Context, sr *stream.SchemasReplace, @@ -44,7 +76,7 @@ func (rc *LogClient) TEST_initSchemasMap( } // readStreamMetaByTS is used for streaming task. collect all meta file by TS, it is for test usage. -func (rc *LogFileManager) ReadStreamMeta(ctx context.Context) ([]Meta, error) { +func (rc *LogFileManager) ReadStreamMeta(ctx context.Context) ([]*MetaName, error) { metas, err := rc.streamingMeta(ctx) if err != nil { return nil, err @@ -59,7 +91,7 @@ func (rc *LogFileManager) ReadStreamMeta(ctx context.Context) ([]Meta, error) { func TEST_NewLogClient(clusterID, startTS, restoreTS, upstreamClusterID uint64, dom *domain.Domain, se glue.Session) *LogClient { return &LogClient{ dom: dom, - se: se, + unsafeSession: se, upstreamClusterID: upstreamClusterID, LogFileManager: &LogFileManager{ startTS: startTS, diff --git a/br/pkg/restore/log_client/import.go b/br/pkg/restore/log_client/import.go index 138b89d2430a9..a4dbf4ca73839 100644 --- a/br/pkg/restore/log_client/import.go +++ b/br/pkg/restore/log_client/import.go @@ -137,8 +137,8 @@ func (importer *LogFileImporter) ImportKVFiles( // This RetryState will retry 45 time, about 10 min. rs := utils.InitialRetryState(45, 100*time.Millisecond, 15*time.Second) - ctl := OverRegionsInRange(startKey, endKey, importer.metaClient, &rs) - err = ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) RPCResult { + ctl := CreateRangeController(startKey, endKey, importer.metaClient, &rs) + err = ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) RPCResult { subfiles, errFilter := filterFilesByRegion(files, ranges, r) if errFilter != nil { return RPCResultFromError(errFilter) diff --git a/br/pkg/restore/log_client/import_retry.go b/br/pkg/restore/log_client/import_retry.go index 93f454d6252e5..dfb5428be3da0 100644 --- a/br/pkg/restore/log_client/import_retry.go +++ b/br/pkg/restore/log_client/import_retry.go @@ -25,7 +25,10 @@ import ( type RegionFunc func(ctx context.Context, r *split.RegionInfo) RPCResult -type OverRegionsInRangeController struct { +// RangeController manages the execution of operations over a range of regions. +// It provides functionality to scan regions within a specified key range and +// apply a given function to each region, handling errors and retries automatically. +type RangeController struct { start []byte end []byte metaClient split.SplitClient @@ -34,10 +37,10 @@ type OverRegionsInRangeController struct { rs *utils.RetryState } -// OverRegionsInRange creates a controller that cloud be used to scan regions in a range and +// CreateRangeController creates a controller that cloud be used to scan regions in a range and // apply a function over these regions. // You can then call the `Run` method for applying some functions. -func OverRegionsInRange(start, end []byte, metaClient split.SplitClient, retryStatus *utils.RetryState) OverRegionsInRangeController { +func CreateRangeController(start, end []byte, metaClient split.SplitClient, retryStatus *utils.RetryState) RangeController { // IMPORTANT: we record the start/end key with TimeStamp. // but scanRegion will drop the TimeStamp and the end key is exclusive. // if we do not use PrefixNextKey. we might scan fewer regions than we expected. @@ -45,7 +48,7 @@ func OverRegionsInRange(start, end []byte, metaClient split.SplitClient, retrySt end = restoreutils.TruncateTS(end) end = kv.PrefixNextKey(end) - return OverRegionsInRangeController{ + return RangeController{ start: start, end: end, metaClient: metaClient, @@ -53,41 +56,30 @@ func OverRegionsInRange(start, end []byte, metaClient split.SplitClient, retrySt } } -func (o *OverRegionsInRangeController) onError(_ context.Context, result RPCResult, region *split.RegionInfo) { +func (o *RangeController) onError(_ context.Context, result RPCResult, region *split.RegionInfo) { o.errors = multierr.Append(o.errors, errors.Annotatef(&result, "execute over region %v failed", region.Region)) // TODO: Maybe handle some of region errors like `epoch not match`? } -func (o *OverRegionsInRangeController) tryFindLeader(ctx context.Context, region *split.RegionInfo) (*metapb.Peer, error) { - var leader *metapb.Peer - failed := false - leaderRs := utils.InitialRetryState(4, 5*time.Second, 10*time.Second) - err := utils.WithRetry(ctx, func() error { +func (o *RangeController) tryFindLeader(ctx context.Context, region *split.RegionInfo) (*metapb.Peer, error) { + backoffStrategy := utils.NewBackoffRetryAllErrorStrategy(4, 2*time.Second, 10*time.Second) + return utils.WithRetryV2(ctx, backoffStrategy, func(ctx context.Context) (*metapb.Peer, error) { r, err := o.metaClient.GetRegionByID(ctx, region.Region.Id) if err != nil { - return err + return nil, err } if !split.CheckRegionEpoch(r, region) { - failed = true - return nil + return nil, errors.Annotatef(berrors.ErrKVEpochNotMatch, "the current epoch of %s has changed", region) } if r.Leader != nil { - leader = r.Leader - return nil + return r.Leader, nil } - return errors.Annotatef(berrors.ErrPDLeaderNotFound, "there is no leader for region %d", region.Region.Id) - }, &leaderRs) - if failed { - return nil, errors.Annotatef(berrors.ErrKVEpochNotMatch, "the current epoch of %s is changed", region) - } - if err != nil { - return nil, err - } - return leader, nil + return nil, errors.Annotatef(berrors.ErrPDLeaderNotFound, "there is no leader for region %d", region.Region.Id) + }) } -// handleInRegionError handles the error happens internal in the region. Update the region info, and perform a suitable backoff. -func (o *OverRegionsInRangeController) handleInRegionError(ctx context.Context, result RPCResult, region *split.RegionInfo) (cont bool) { +// handleRegionError handles the error happens internal in the region. Update the region info, and perform a suitable backoff. +func (o *RangeController) handleRegionError(ctx context.Context, result RPCResult, region *split.RegionInfo) (cont bool) { if result.StoreError.GetServerIsBusy() != nil { if strings.Contains(result.StoreError.GetMessage(), "memory is limited") { sleepDuration := 15 * time.Second @@ -126,35 +118,32 @@ func (o *OverRegionsInRangeController) handleInRegionError(ctx context.Context, return true } -func (o *OverRegionsInRangeController) prepareLogCtx(ctx context.Context) context.Context { - lctx := logutil.ContextWithField( +func (o *RangeController) prepareLogCtx(ctx context.Context) context.Context { + return logutil.ContextWithField( ctx, logutil.Key("startKey", o.start), logutil.Key("endKey", o.end), ) - return lctx } -// Run executes the `regionFunc` over the regions in `o.start` and `o.end`. -// It would retry the errors according to the `rpcResponse`. -func (o *OverRegionsInRangeController) Run(ctx context.Context, f RegionFunc) error { - return o.runOverRegions(o.prepareLogCtx(ctx), f) -} +// ApplyFuncToRange apples the `regionFunc` for all regions in `o.start` and `o.end`. +// It would retry errors according to the `rpcResponse`. +func (o *RangeController) ApplyFuncToRange(ctx context.Context, f RegionFunc) error { + adjustedCtx := o.prepareLogCtx(ctx) -func (o *OverRegionsInRangeController) runOverRegions(ctx context.Context, f RegionFunc) error { if !o.rs.ShouldRetry() { return o.errors } // Scan regions covered by the file range regionInfos, errScanRegion := split.PaginateScanRegion( - ctx, o.metaClient, o.start, o.end, split.ScanRegionPaginationLimit) + adjustedCtx, o.metaClient, o.start, o.end, split.ScanRegionPaginationLimit) if errScanRegion != nil { return errors.Trace(errScanRegion) } for _, region := range regionInfos { - cont, err := o.runInRegion(ctx, f, region) + cont, err := o.applyFuncToRegion(adjustedCtx, f, region) if err != nil { return err } @@ -165,8 +154,8 @@ func (o *OverRegionsInRangeController) runOverRegions(ctx context.Context, f Reg return nil } -// runInRegion executes the function in the region, and returns `cont = false` if no need for trying for next region. -func (o *OverRegionsInRangeController) runInRegion(ctx context.Context, f RegionFunc, region *split.RegionInfo) (cont bool, err error) { +// applyFuncToRegion executes the function in the region, and returns `cont = false` if no need for trying for next region. +func (o *RangeController) applyFuncToRegion(ctx context.Context, f RegionFunc, region *split.RegionInfo) (cont bool, err error) { if !o.rs.ShouldRetry() { return false, o.errors } @@ -180,16 +169,16 @@ func (o *OverRegionsInRangeController) runInRegion(ctx context.Context, f Region return false, o.errors case StrategyFromThisRegion: logutil.CL(ctx).Warn("retry for region", logutil.Region(region.Region), logutil.ShortError(&result)) - if !o.handleInRegionError(ctx, result, region) { - return false, o.runOverRegions(ctx, f) + if !o.handleRegionError(ctx, result, region) { + return false, o.ApplyFuncToRange(ctx, f) } - return o.runInRegion(ctx, f, region) + return o.applyFuncToRegion(ctx, f, region) case StrategyFromStart: logutil.CL(ctx).Warn("retry for execution over regions", logutil.ShortError(&result)) // TODO: make a backoffer considering more about the error info, // instead of ingore the result and retry. time.Sleep(o.rs.ExponentialBackoff()) - return false, o.runOverRegions(ctx, f) + return false, o.ApplyFuncToRange(ctx, f) } } return true, nil @@ -251,10 +240,6 @@ func (r *RPCResult) StrategyForRetryStoreError() RetryStrategy { } func (r *RPCResult) StrategyForRetryGoError() RetryStrategy { - if r.Err == nil { - return StrategyGiveUp - } - // we should unwrap the error or we cannot get the write gRPC status. if gRPCErr, ok := status.FromError(errors.Cause(r.Err)); ok { switch gRPCErr.Code() { diff --git a/br/pkg/restore/log_client/import_retry_test.go b/br/pkg/restore/log_client/import_retry_test.go index 5c47f1f3acb27..a6538831528b5 100644 --- a/br/pkg/restore/log_client/import_retry_test.go +++ b/br/pkg/restore/log_client/import_retry_test.go @@ -3,13 +3,11 @@ package logclient_test import ( - "bytes" "context" "encoding/hex" "fmt" "os" "strconv" - "sync" "testing" "time" @@ -18,15 +16,12 @@ import ( "github.com/pingcap/kvproto/pkg/errorpb" "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/kvproto/pkg/metapb" - "github.com/pingcap/kvproto/pkg/pdpb" logclient "github.com/pingcap/tidb/br/pkg/restore/log_client" "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/br/pkg/utils" - "github.com/pingcap/tidb/br/pkg/utiltest" "github.com/pingcap/tidb/pkg/store/pdtypes" "github.com/pingcap/tidb/pkg/util/codec" "github.com/stretchr/testify/require" - pd "github.com/tikv/pd/client" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -53,157 +48,20 @@ func assertRegions(t *testing.T, regions []*split.RegionInfo, keys ...string) { } } -type TestClient struct { - split.SplitClient - pd.Client - - mu sync.RWMutex - stores map[uint64]*metapb.Store - regions map[uint64]*split.RegionInfo - regionsInfo *pdtypes.RegionTree // For now it's only used in ScanRegions - nextRegionID uint64 - - scattered map[uint64]bool - InjectErr bool - InjectTimes int32 -} - -func NewTestClient( - stores map[uint64]*metapb.Store, - regions map[uint64]*split.RegionInfo, - nextRegionID uint64, -) *TestClient { - regionsInfo := &pdtypes.RegionTree{} - for _, regionInfo := range regions { - regionsInfo.SetRegion(pdtypes.NewRegionInfo(regionInfo.Region, regionInfo.Leader)) - } - return &TestClient{ - stores: stores, - regions: regions, - regionsInfo: regionsInfo, - nextRegionID: nextRegionID, - scattered: map[uint64]bool{}, - } -} - -func (c *TestClient) GetAllRegions() map[uint64]*split.RegionInfo { - c.mu.RLock() - defer c.mu.RUnlock() - return c.regions -} - -func (c *TestClient) GetPDClient() *utiltest.FakePDClient { - stores := make([]*metapb.Store, 0, len(c.stores)) - for _, store := range c.stores { - stores = append(stores, store) - } - return utiltest.NewFakePDClient(stores, false, nil) -} - -func (c *TestClient) GetStore(ctx context.Context, storeID uint64) (*metapb.Store, error) { - c.mu.RLock() - defer c.mu.RUnlock() - store, ok := c.stores[storeID] - if !ok { - return nil, errors.Errorf("store not found") - } - return store, nil -} - -func (c *TestClient) GetRegion(ctx context.Context, key []byte) (*split.RegionInfo, error) { - c.mu.RLock() - defer c.mu.RUnlock() - for _, region := range c.regions { - if bytes.Compare(key, region.Region.StartKey) >= 0 && - (len(region.Region.EndKey) == 0 || bytes.Compare(key, region.Region.EndKey) < 0) { - return region, nil - } - } - return nil, errors.Errorf("region not found: key=%s", string(key)) -} - -func (c *TestClient) GetRegionByID(ctx context.Context, regionID uint64) (*split.RegionInfo, error) { - c.mu.RLock() - defer c.mu.RUnlock() - region, ok := c.regions[regionID] - if !ok { - return nil, errors.Errorf("region not found: id=%d", regionID) - } - return region, nil -} - -func (c *TestClient) SplitWaitAndScatter(_ context.Context, _ *split.RegionInfo, keys [][]byte) ([]*split.RegionInfo, error) { - c.mu.Lock() - defer c.mu.Unlock() - newRegions := make([]*split.RegionInfo, 0) - for _, key := range keys { - var target *split.RegionInfo - splitKey := codec.EncodeBytes([]byte{}, key) - for _, region := range c.regions { - if region.ContainsInterior(splitKey) { - target = region - } - } - if target == nil { - continue - } - newRegion := &split.RegionInfo{ - Region: &metapb.Region{ - Peers: target.Region.Peers, - Id: c.nextRegionID, - StartKey: target.Region.StartKey, - EndKey: splitKey, - }, - } - c.regions[c.nextRegionID] = newRegion - c.nextRegionID++ - target.Region.StartKey = splitKey - c.regions[target.Region.Id] = target - newRegions = append(newRegions, newRegion) - } - return newRegions, nil -} - -func (c *TestClient) GetOperator(context.Context, uint64) (*pdpb.GetOperatorResponse, error) { - return &pdpb.GetOperatorResponse{ - Header: new(pdpb.ResponseHeader), - }, nil -} - -func (c *TestClient) ScanRegions(ctx context.Context, key, endKey []byte, limit int) ([]*split.RegionInfo, error) { - if c.InjectErr && c.InjectTimes > 0 { - c.InjectTimes -= 1 - return nil, status.Error(codes.Unavailable, "not leader") - } - if len(key) != 0 && bytes.Equal(key, endKey) { - return nil, status.Error(codes.Internal, "key and endKey are the same") - } - - infos := c.regionsInfo.ScanRange(key, endKey, limit) - regions := make([]*split.RegionInfo, 0, len(infos)) - for _, info := range infos { - regions = append(regions, &split.RegionInfo{ - Region: info.Meta, - Leader: info.Leader, - }) - } - return regions, nil -} - -func (c *TestClient) WaitRegionsScattered(context.Context, []*split.RegionInfo) (int, error) { - return 0, nil -} - // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) -func initTestClient(isRawKv bool) *TestClient { +func initTestClient(isRawKv bool) *split.TestClient { + keys := []string{"", "aay", "bba", "bbh", "cca", ""} + stores := make(map[uint64]*metapb.Store) + stores[1] = &metapb.Store{ + Id: 1, + } peers := make([]*metapb.Peer, 1) peers[0] = &metapb.Peer{ Id: 1, StoreId: 1, } - keys := [6]string{"", "aay", "bba", "bbh", "cca", ""} regions := make(map[uint64]*split.RegionInfo) - for i := uint64(1); i < 6; i++ { + for i := 1; i < len(keys); i++ { startKey := []byte(keys[i-1]) if len(startKey) != 0 { startKey = codec.EncodeBytesExt([]byte{}, startKey, isRawKv) @@ -212,24 +70,20 @@ func initTestClient(isRawKv bool) *TestClient { if len(endKey) != 0 { endKey = codec.EncodeBytesExt([]byte{}, endKey, isRawKv) } - regions[i] = &split.RegionInfo{ + regions[uint64(i)] = &split.RegionInfo{ Leader: &metapb.Peer{ - Id: i, + Id: uint64(i), StoreId: 1, }, Region: &metapb.Region{ - Id: i, + Id: uint64(i), Peers: peers, StartKey: startKey, EndKey: endKey, }, } } - stores := make(map[uint64]*metapb.Store) - stores[1] = &metapb.Store{ - Id: 1, - } - return NewTestClient(stores, regions, 6) + return split.NewTestClient(stores, regions, 6) } func TestScanSuccess(t *testing.T) { @@ -239,33 +93,33 @@ func TestScanSuccess(t *testing.T) { ctx := context.Background() // make exclusive to inclusive. - ctl := logclient.OverRegionsInRange([]byte("aa"), []byte("aay"), cli, &rs) + ctl := logclient.CreateRangeController([]byte("aa"), []byte("aay"), cli, &rs) collectedRegions := []*split.RegionInfo{} - ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { collectedRegions = append(collectedRegions, r) return logclient.RPCResultOK() }) assertRegions(t, collectedRegions, "", "aay", "bba") - ctl = logclient.OverRegionsInRange([]byte("aaz"), []byte("bb"), cli, &rs) + ctl = logclient.CreateRangeController([]byte("aaz"), []byte("bb"), cli, &rs) collectedRegions = []*split.RegionInfo{} - ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { collectedRegions = append(collectedRegions, r) return logclient.RPCResultOK() }) assertRegions(t, collectedRegions, "aay", "bba", "bbh", "cca") - ctl = logclient.OverRegionsInRange([]byte("aa"), []byte("cc"), cli, &rs) + ctl = logclient.CreateRangeController([]byte("aa"), []byte("cc"), cli, &rs) collectedRegions = []*split.RegionInfo{} - ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { collectedRegions = append(collectedRegions, r) return logclient.RPCResultOK() }) assertRegions(t, collectedRegions, "", "aay", "bba", "bbh", "cca", "") - ctl = logclient.OverRegionsInRange([]byte("aa"), []byte(""), cli, &rs) + ctl = logclient.CreateRangeController([]byte("aa"), []byte(""), cli, &rs) collectedRegions = []*split.RegionInfo{} - ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { collectedRegions = append(collectedRegions, r) return logclient.RPCResultOK() }) @@ -276,7 +130,7 @@ func TestNotLeader(t *testing.T) { // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) cli := initTestClient(false) rs := utils.InitialRetryState(1, 0, 0) - ctl := logclient.OverRegionsInRange([]byte(""), []byte(""), cli, &rs) + ctl := logclient.CreateRangeController([]byte(""), []byte(""), cli, &rs) ctx := context.Background() notLeader := errorpb.Error{ @@ -290,7 +144,7 @@ func TestNotLeader(t *testing.T) { meetRegions := []*split.RegionInfo{} // record all regions we meet with id == 2. idEqualsTo2Regions := []*split.RegionInfo{} - err := ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + err := ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { if r.Region.Id == 2 { idEqualsTo2Regions = append(idEqualsTo2Regions, r) } @@ -316,7 +170,7 @@ func TestServerIsBusy(t *testing.T) { // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) cli := initTestClient(false) rs := utils.InitialRetryState(2, 0, 0) - ctl := logclient.OverRegionsInRange([]byte(""), []byte(""), cli, &rs) + ctl := logclient.CreateRangeController([]byte(""), []byte(""), cli, &rs) ctx := context.Background() serverIsBusy := errorpb.Error{ @@ -330,7 +184,7 @@ func TestServerIsBusy(t *testing.T) { // record all regions we meet with id == 2. idEqualsTo2Regions := []*split.RegionInfo{} theFirstRun := true - err := ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + err := ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { if theFirstRun && r.Region.Id == 2 { idEqualsTo2Regions = append(idEqualsTo2Regions, r) theFirstRun = false @@ -345,7 +199,7 @@ func TestServerIsBusy(t *testing.T) { require.NoError(t, err) assertRegions(t, idEqualsTo2Regions, "aay", "bba") assertRegions(t, meetRegions, "", "aay", "bba", "bbh", "cca", "") - require.Equal(t, rs.Attempt(), 1) + require.Equal(t, rs.RemainingAttempts(), 1) } func TestServerIsBusyWithMemoryIsLimited(t *testing.T) { @@ -357,7 +211,7 @@ func TestServerIsBusyWithMemoryIsLimited(t *testing.T) { // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) cli := initTestClient(false) rs := utils.InitialRetryState(2, 0, 0) - ctl := logclient.OverRegionsInRange([]byte(""), []byte(""), cli, &rs) + ctl := logclient.CreateRangeController([]byte(""), []byte(""), cli, &rs) ctx := context.Background() serverIsBusy := errorpb.Error{ @@ -371,7 +225,7 @@ func TestServerIsBusyWithMemoryIsLimited(t *testing.T) { // record all regions we meet with id == 2. idEqualsTo2Regions := []*split.RegionInfo{} theFirstRun := true - err := ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + err := ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { if theFirstRun && r.Region.Id == 2 { idEqualsTo2Regions = append(idEqualsTo2Regions, r) theFirstRun = false @@ -386,7 +240,7 @@ func TestServerIsBusyWithMemoryIsLimited(t *testing.T) { require.NoError(t, err) assertRegions(t, idEqualsTo2Regions, "aay", "bba") assertRegions(t, meetRegions, "", "aay", "bba", "bbh", "cca", "") - require.Equal(t, rs.Attempt(), 2) + require.Equal(t, rs.RemainingAttempts(), 2) } func printRegion(name string, infos []*split.RegionInfo) { @@ -409,10 +263,10 @@ func TestEpochNotMatch(t *testing.T) { // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) cli := initTestClient(false) rs := utils.InitialRetryState(2, 0, 0) - ctl := logclient.OverRegionsInRange([]byte(""), []byte(""), cli, &rs) + ctl := logclient.CreateRangeController([]byte(""), []byte(""), cli, &rs) ctx := context.Background() - printPDRegion("cli", cli.regionsInfo.Regions) + printPDRegion("cli", cli.RegionsInfo.Regions) regions, err := split.PaginateScanRegion(ctx, cli, []byte("aaz"), []byte("bbb"), 2) require.NoError(t, err) require.Len(t, regions, 2) @@ -430,8 +284,8 @@ func TestEpochNotMatch(t *testing.T) { } newRegion := pdtypes.NewRegionInfo(info.Region, info.Leader) mergeRegion := func() { - cli.regionsInfo.SetRegion(newRegion) - cli.regions[42] = &info + cli.RegionsInfo.SetRegion(newRegion) + cli.Regions[42] = &info } epochNotMatch := &import_sstpb.Error{ Message: "Epoch not match", @@ -443,7 +297,7 @@ func TestEpochNotMatch(t *testing.T) { firstRunRegions := []*split.RegionInfo{} secondRunRegions := []*split.RegionInfo{} isSecondRun := false - err = ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + err = ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { if !isSecondRun && r.Region.Id == left.Region.Id { mergeRegion() isSecondRun = true @@ -458,7 +312,7 @@ func TestEpochNotMatch(t *testing.T) { }) printRegion("first", firstRunRegions) printRegion("second", secondRunRegions) - printPDRegion("cli", cli.regionsInfo.Regions) + printPDRegion("cli", cli.RegionsInfo.Regions) assertRegions(t, firstRunRegions, "", "aay") assertRegions(t, secondRunRegions, "", "aay", "bbh", "cca", "") require.NoError(t, err) @@ -468,10 +322,10 @@ func TestRegionSplit(t *testing.T) { // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) cli := initTestClient(false) rs := utils.InitialRetryState(2, 0, 0) - ctl := logclient.OverRegionsInRange([]byte(""), []byte(""), cli, &rs) + ctl := logclient.CreateRangeController([]byte(""), []byte(""), cli, &rs) ctx := context.Background() - printPDRegion("cli", cli.regionsInfo.Regions) + printPDRegion("cli", cli.RegionsInfo.Regions) regions, err := split.PaginateScanRegion(ctx, cli, []byte("aaz"), []byte("aazz"), 1) require.NoError(t, err) require.Len(t, regions, 1) @@ -504,8 +358,8 @@ func TestRegionSplit(t *testing.T) { splitRegion := func() { for _, r := range newRegions { newRegion := pdtypes.NewRegionInfo(r.Region, r.Leader) - cli.regionsInfo.SetRegion(newRegion) - cli.regions[r.Region.Id] = r + cli.RegionsInfo.SetRegion(newRegion) + cli.Regions[r.Region.Id] = r } } epochNotMatch := &import_sstpb.Error{ @@ -521,7 +375,7 @@ func TestRegionSplit(t *testing.T) { firstRunRegions := []*split.RegionInfo{} secondRunRegions := []*split.RegionInfo{} isSecondRun := false - err = ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + err = ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { if !isSecondRun && r.Region.Id == target.Region.Id { splitRegion() isSecondRun = true @@ -536,7 +390,7 @@ func TestRegionSplit(t *testing.T) { }) printRegion("first", firstRunRegions) printRegion("second", secondRunRegions) - printPDRegion("cli", cli.regionsInfo.Regions) + printPDRegion("cli", cli.RegionsInfo.Regions) assertRegions(t, firstRunRegions, "", "aay") assertRegions(t, secondRunRegions, "", "aay", "aayy", "bba", "bbh", "cca", "") require.NoError(t, err) @@ -546,10 +400,10 @@ func TestRetryBackoff(t *testing.T) { // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) cli := initTestClient(false) rs := utils.InitialRetryState(2, time.Millisecond, 10*time.Millisecond) - ctl := logclient.OverRegionsInRange([]byte(""), []byte(""), cli, &rs) + ctl := logclient.CreateRangeController([]byte(""), []byte(""), cli, &rs) ctx := context.Background() - printPDRegion("cli", cli.regionsInfo.Regions) + printPDRegion("cli", cli.RegionsInfo.Regions) regions, err := split.PaginateScanRegion(ctx, cli, []byte("aaz"), []byte("bbb"), 2) require.NoError(t, err) require.Len(t, regions, 2) @@ -563,15 +417,15 @@ func TestRetryBackoff(t *testing.T) { }, }} isSecondRun := false - err = ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + err = ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { if !isSecondRun && r.Region.Id == left.Region.Id { isSecondRun = true return logclient.RPCResultFromPBError(epochNotLeader) } return logclient.RPCResultOK() }) - printPDRegion("cli", cli.regionsInfo.Regions) - require.Equal(t, 1, rs.Attempt()) + printPDRegion("cli", cli.RegionsInfo.Regions) + require.Equal(t, 1, rs.RemainingAttempts()) // we retried leader not found error. so the next backoff should be 2 * initical backoff. require.Equal(t, 2*time.Millisecond, rs.ExponentialBackoff()) require.NoError(t, err) @@ -597,13 +451,13 @@ func TestPaginateScanLeader(t *testing.T) { // region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) cli := initTestClient(false) rs := utils.InitialRetryState(2, time.Millisecond, 10*time.Millisecond) - ctl := logclient.OverRegionsInRange([]byte("aa"), []byte("aaz"), cli, &rs) + ctl := logclient.CreateRangeController([]byte("aa"), []byte("aaz"), cli, &rs) ctx := context.Background() cli.InjectErr = true cli.InjectTimes = int32(envInt("PAGINATE_SCAN_LEADER_FAILURE_COUNT", 2)) collectedRegions := []*split.RegionInfo{} - ctl.Run(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { + ctl.ApplyFuncToRange(ctx, func(ctx context.Context, r *split.RegionInfo) logclient.RPCResult { collectedRegions = append(collectedRegions, r) return logclient.RPCResultOK() }) @@ -616,7 +470,7 @@ func TestRetryRecognizeErrCode(t *testing.T) { ctx := context.Background() inner := 0 outer := 0 - utils.WithRetry(ctx, func() error { + _ = utils.WithRetry(ctx, func() error { e := utils.WithRetry(ctx, func() error { inner++ e := status.Error(codes.Unavailable, "the connection to TiKV has been cut by a neko, meow :3") @@ -624,10 +478,10 @@ func TestRetryRecognizeErrCode(t *testing.T) { return errors.Trace(e) } return nil - }, utils.NewBackoffer(10, waitTime, maxWaitTime, utils.NewErrorContext("download sst", 3))) + }, utils.NewBackoffRetryAllErrorStrategy(10, waitTime, maxWaitTime)) outer++ return errors.Trace(e) - }, utils.NewBackoffer(10, waitTime, maxWaitTime, utils.NewErrorContext("import sst", 3))) + }, utils.NewBackoffRetryAllErrorStrategy(10, waitTime, maxWaitTime)) require.Equal(t, 10, outer) require.Equal(t, 100, inner) } diff --git a/br/pkg/restore/log_client/log_file_manager.go b/br/pkg/restore/log_client/log_file_manager.go index 81af10cf542b0..4c2992467a2ab 100644 --- a/br/pkg/restore/log_client/log_file_manager.go +++ b/br/pkg/restore/log_client/log_file_manager.go @@ -9,6 +9,7 @@ import ( "fmt" "strings" "sync" + "time" "github.com/pingcap/errors" backuppb "github.com/pingcap/kvproto/pkg/brpb" @@ -25,9 +26,21 @@ import ( "go.uber.org/zap" ) +var TotalEntryCount int64 + // MetaIter is the type of iterator of metadata files' content. type MetaIter = iter.TryNextor[*backuppb.Metadata] +type SubCompactionIter iter.TryNextor[*backuppb.LogFileSubcompaction] + +type MetaName struct { + meta Meta + name string +} + +// MetaNameIter is the type of iterator of metadata files' content with name. +type MetaNameIter = iter.TryNextor[*MetaName] + type LogDataFileInfo struct { *backuppb.DataFileInfo MetaDataGroupName string @@ -35,6 +48,18 @@ type LogDataFileInfo struct { OffsetInMergedGroup int } +// GroupIndex is the type of physical data file with index from metadata. +type GroupIndex = iter.Indexed[*backuppb.DataFileGroup] + +// GroupIndexIter is the type of iterator of physical data file with index from metadata. +type GroupIndexIter = iter.TryNextor[GroupIndex] + +// FileIndex is the type of logical data file with index from physical data file. +type FileIndex = iter.Indexed[*backuppb.DataFileInfo] + +// FileIndexIter is the type of iterator of logical data file with index from physical data file. +type FileIndexIter = iter.TryNextor[FileIndex] + // LogIter is the type of iterator of each log files' meta information. type LogIter = iter.TryNextor[*LogDataFileInfo] @@ -78,6 +103,9 @@ type LogFileManager struct { storage storage.ExternalStorage helper streamMetadataHelper + withMigraionBuilder *WithMigrationsBuilder + withMigrations *WithMigrations + metadataDownloadBatchSize uint } @@ -87,6 +115,8 @@ type LogFileManagerInit struct { RestoreTS uint64 Storage storage.ExternalStorage + MigrationsBuilder *WithMigrationsBuilder + Migrations *WithMigrations MetadataDownloadBatchSize uint EncryptionManager *encryption.Manager } @@ -100,10 +130,12 @@ type DDLMetaGroup struct { // Generally the config cannot be changed during its lifetime. func CreateLogFileManager(ctx context.Context, init LogFileManagerInit) (*LogFileManager, error) { fm := &LogFileManager{ - startTS: init.StartTS, - restoreTS: init.RestoreTS, - storage: init.Storage, - helper: stream.NewMetadataHelper(stream.WithEncryptionManager(init.EncryptionManager)), + startTS: init.StartTS, + restoreTS: init.RestoreTS, + storage: init.Storage, + helper: stream.NewMetadataHelper(stream.WithEncryptionManager(init.EncryptionManager)), + withMigraionBuilder: init.MigrationsBuilder, + withMigrations: init.Migrations, metadataDownloadBatchSize: init.MetadataDownloadBatchSize, } @@ -114,6 +146,11 @@ func CreateLogFileManager(ctx context.Context, init LogFileManagerInit) (*LogFil return fm, nil } +func (rc *LogFileManager) BuildMigrations(migs []*backuppb.Migration) { + w := rc.withMigraionBuilder.Build(migs) + rc.withMigrations = &w +} + func (rc *LogFileManager) ShiftTS() uint64 { return rc.shiftStartTS } @@ -147,28 +184,30 @@ func (rc *LogFileManager) loadShiftTS(ctx context.Context) error { } if !shiftTS.exists { rc.shiftStartTS = rc.startTS + rc.withMigraionBuilder.SetShiftStartTS(rc.shiftStartTS) return nil } rc.shiftStartTS = shiftTS.value + rc.withMigraionBuilder.SetShiftStartTS(rc.shiftStartTS) return nil } -func (rc *LogFileManager) streamingMeta(ctx context.Context) (MetaIter, error) { +func (rc *LogFileManager) streamingMeta(ctx context.Context) (MetaNameIter, error) { return rc.streamingMetaByTS(ctx, rc.restoreTS) } -func (rc *LogFileManager) streamingMetaByTS(ctx context.Context, restoreTS uint64) (MetaIter, error) { +func (rc *LogFileManager) streamingMetaByTS(ctx context.Context, restoreTS uint64) (MetaNameIter, error) { it, err := rc.createMetaIterOver(ctx, rc.storage) if err != nil { return nil, err } - filtered := iter.FilterOut(it, func(metadata *backuppb.Metadata) bool { - return restoreTS < metadata.MinTs || metadata.MaxTs < rc.shiftStartTS + filtered := iter.FilterOut(it, func(metaname *MetaName) bool { + return restoreTS < metaname.meta.MinTs || metaname.meta.MaxTs < rc.shiftStartTS }) return filtered, nil } -func (rc *LogFileManager) createMetaIterOver(ctx context.Context, s storage.ExternalStorage) (MetaIter, error) { +func (rc *LogFileManager) createMetaIterOver(ctx context.Context, s storage.ExternalStorage) (MetaNameIter, error) { opt := &storage.WalkOption{SubDir: stream.GetStreamBackupMetaPrefix()} names := []string{} err := s.WalkDir(ctx, opt, func(path string, size int64) error { @@ -182,7 +221,7 @@ func (rc *LogFileManager) createMetaIterOver(ctx context.Context, s storage.Exte return nil, err } namesIter := iter.FromSlice(names) - readMeta := func(ctx context.Context, name string) (*backuppb.Metadata, error) { + readMeta := func(ctx context.Context, name string) (*MetaName, error) { f, err := s.ReadFile(ctx, name) if err != nil { return nil, errors.Annotatef(err, "failed during reading file %s", name) @@ -191,7 +230,7 @@ func (rc *LogFileManager) createMetaIterOver(ctx context.Context, s storage.Exte if err != nil { return nil, errors.Annotatef(err, "failed to parse metadata of file %s", name) } - return meta, nil + return &MetaName{meta: meta, name: name}, nil } // TODO: maybe we need to be able to adjust the concurrency to download files, // which currently is the same as the chunk size @@ -200,29 +239,32 @@ func (rc *LogFileManager) createMetaIterOver(ctx context.Context, s storage.Exte return reader, nil } -func (rc *LogFileManager) FilterDataFiles(ms MetaIter) LogIter { - return iter.FlatMap(ms, func(m *backuppb.Metadata) LogIter { - return iter.FlatMap(iter.Enumerate(iter.FromSlice(m.FileGroups)), func(gi iter.Indexed[*backuppb.DataFileGroup]) LogIter { - return iter.Map( - iter.FilterOut(iter.Enumerate(iter.FromSlice(gi.Item.DataFilesInfo)), func(di iter.Indexed[*backuppb.DataFileInfo]) bool { +func (rc *LogFileManager) FilterDataFiles(m MetaNameIter) LogIter { + ms := rc.withMigrations.Metas(m) + return iter.FlatMap(ms, func(m *MetaWithMigrations) LogIter { + gs := m.Physicals(iter.Enumerate(iter.FromSlice(m.meta.FileGroups))) + return iter.FlatMap(gs, func(gim *PhysicalWithMigrations) LogIter { + fs := iter.FilterOut( + gim.Logicals(iter.Enumerate(iter.FromSlice(gim.physical.Item.DataFilesInfo))), + func(di FileIndex) bool { // Modify the data internally, a little hacky. - if m.MetaVersion > backuppb.MetaVersion_V1 { - di.Item.Path = gi.Item.Path + if m.meta.MetaVersion > backuppb.MetaVersion_V1 { + di.Item.Path = gim.physical.Item.Path } return di.Item.IsMeta || rc.ShouldFilterOut(di.Item) - }), - func(di iter.Indexed[*backuppb.DataFileInfo]) *LogDataFileInfo { - return &LogDataFileInfo{ - DataFileInfo: di.Item, - - // Since there is a `datafileinfo`, the length of `m.FileGroups` - // must be larger than 0. So we use the first group's name as - // metadata's unique key. - MetaDataGroupName: m.FileGroups[0].Path, - OffsetInMetaGroup: gi.Index, - OffsetInMergedGroup: di.Index, - } - }, + }) + return iter.Map(fs, func(di FileIndex) *LogDataFileInfo { + return &LogDataFileInfo{ + DataFileInfo: di.Item, + + // Since there is a `datafileinfo`, the length of `m.FileGroups` + // must be larger than 0. So we use the first group's name as + // metadata's unique key. + MetaDataGroupName: m.meta.FileGroups[0].Path, + OffsetInMetaGroup: gim.physical.Index, + OffsetInMergedGroup: di.Index, + } + }, ) }) }) @@ -239,10 +281,13 @@ func (rc *LogFileManager) collectDDLFilesAndPrepareCache( ctx context.Context, files MetaGroupIter, ) ([]Log, error) { + start := time.Now() + log.Info("start to collect all ddl files") fs := iter.CollectAll(ctx, files) if fs.Err != nil { return nil, errors.Annotatef(fs.Err, "failed to collect from files") } + log.Info("finish to collect all ddl files", zap.Duration("take", time.Since(start))) dataFileInfos := make([]*backuppb.DataFileInfo, 0) for _, g := range fs.Item { @@ -254,24 +299,12 @@ func (rc *LogFileManager) collectDDLFilesAndPrepareCache( } // LoadDDLFilesAndCountDMLFiles loads all DDL files needs to be restored in the restoration. -// At the same time, if the `counter` isn't nil, counting the DML file needs to be restored into `counter`. // This function returns all DDL files needing directly because we need sort all of them. -func (rc *LogFileManager) LoadDDLFilesAndCountDMLFiles(ctx context.Context, counter *int) ([]Log, error) { +func (rc *LogFileManager) LoadDDLFilesAndCountDMLFiles(ctx context.Context) ([]Log, error) { m, err := rc.streamingMeta(ctx) if err != nil { return nil, err } - if counter != nil { - m = iter.Tap(m, func(m Meta) { - for _, fg := range m.FileGroups { - for _, f := range fg.DataFilesInfo { - if !f.IsMeta && !rc.ShouldFilterOut(f) { - *counter += 1 - } - } - } - }) - } mg := rc.FilterMetaFiles(m) return rc.collectDDLFilesAndPrepareCache(ctx, mg) @@ -285,19 +318,24 @@ func (rc *LogFileManager) LoadDMLFiles(ctx context.Context) (LogIter, error) { return nil, err } - mg := rc.FilterDataFiles(m) - return mg, nil + l := rc.FilterDataFiles(m) + return l, nil } -func (rc *LogFileManager) FilterMetaFiles(ms MetaIter) MetaGroupIter { - return iter.FlatMap(ms, func(m Meta) MetaGroupIter { - return iter.Map(iter.FromSlice(m.FileGroups), func(g *backuppb.DataFileGroup) DDLMetaGroup { +func (rc *LogFileManager) FilterMetaFiles(ms MetaNameIter) MetaGroupIter { + return iter.FlatMap(ms, func(m *MetaName) MetaGroupIter { + return iter.Map(iter.FromSlice(m.meta.FileGroups), func(g *backuppb.DataFileGroup) DDLMetaGroup { metas := iter.FilterOut(iter.FromSlice(g.DataFilesInfo), func(d Log) bool { // Modify the data internally, a little hacky. - if m.MetaVersion > backuppb.MetaVersion_V1 { + if m.meta.MetaVersion > backuppb.MetaVersion_V1 { d.Path = g.Path } - return !d.IsMeta || rc.ShouldFilterOut(d) + if rc.ShouldFilterOut(d) { + return true + } + // count the progress + TotalEntryCount += d.NumberOfEntries + return !d.IsMeta }) return DDLMetaGroup{ Path: g.Path, @@ -308,6 +346,11 @@ func (rc *LogFileManager) FilterMetaFiles(ms MetaIter) MetaGroupIter { }) } +// Fetch compactions that may contain file less than the TS. +func (rc *LogFileManager) GetCompactionIter(ctx context.Context) iter.TryNextor[*backuppb.LogFileSubcompaction] { + return rc.withMigrations.Compactions(ctx, rc.storage) +} + // the kv entry with ts, the ts is decoded from entry. type KvEntryWithTS struct { E kv.Entry @@ -391,3 +434,18 @@ func (rc *LogFileManager) ReadAllEntries( return kvEntries, nextKvEntries, nil } + +func Subcompactions(ctx context.Context, prefix string, s storage.ExternalStorage) SubCompactionIter { + return iter.FlatMap(storage.UnmarshalDir( + ctx, + &storage.WalkOption{SubDir: prefix}, + s, + func(t *backuppb.LogFileSubcompactions, name string, b []byte) error { return t.Unmarshal(b) }, + ), func(subcs *backuppb.LogFileSubcompactions) iter.TryNextor[*backuppb.LogFileSubcompaction] { + return iter.FromSlice(subcs.Subcompactions) + }) +} + +func LoadMigrations(ctx context.Context, s storage.ExternalStorage) iter.TryNextor[*backuppb.Migration] { + return storage.UnmarshalDir(ctx, &storage.WalkOption{SubDir: "v1/migrations/"}, s, func(t *backuppb.Migration, name string, b []byte) error { return t.Unmarshal(b) }) +} diff --git a/br/pkg/restore/log_client/log_file_manager_test.go b/br/pkg/restore/log_client/log_file_manager_test.go index 82fcf628d0139..79813d6ef78f2 100644 --- a/br/pkg/restore/log_client/log_file_manager_test.go +++ b/br/pkg/restore/log_client/log_file_manager_test.go @@ -235,6 +235,8 @@ func testReadMetaBetweenTSWithVersion(t *testing.T, m metaMaker) { RestoreTS: c.endTS, Storage: loc, + MigrationsBuilder: logclient.NewMigrationBuilder(0, c.startTS, c.endTS), + Migrations: emptyMigrations(), MetadataDownloadBatchSize: 32, } cli, err := logclient.CreateLogFileManager(ctx, init) @@ -244,7 +246,7 @@ func testReadMetaBetweenTSWithVersion(t *testing.T, m metaMaker) { req.NoError(err) actualStoreIDs := make([]int64, 0, len(metas)) for _, meta := range metas { - actualStoreIDs = append(actualStoreIDs, meta.StoreId) + actualStoreIDs = append(actualStoreIDs, meta.Meta().StoreId) } expectedStoreIDs := make([]int64, 0, len(c.expected)) for _, meta := range c.expected { @@ -469,6 +471,8 @@ func testFileManagerWithMeta(t *testing.T, m metaMaker) { RestoreTS: end, Storage: loc, + MigrationsBuilder: logclient.NewMigrationBuilder(0, start, end), + Migrations: emptyMigrations(), MetadataDownloadBatchSize: 32, }) req.NoError(err) @@ -487,15 +491,8 @@ func testFileManagerWithMeta(t *testing.T, m metaMaker) { ), ).Item } else { - var counter *int - if c.DMLFileCount != nil { - counter = new(int) - } - data, err := fm.LoadDDLFilesAndCountDMLFiles(ctx, counter) + data, err := fm.LoadDDLFilesAndCountDMLFiles(ctx) req.NoError(err) - if counter != nil { - req.Equal(*c.DMLFileCount, *counter) - } r = data } dataFileInfoMatches(t, r, c.Requires...) @@ -528,6 +525,8 @@ func TestFilterDataFiles(t *testing.T) { RestoreTS: 10, Storage: loc, + MigrationsBuilder: logclient.NewMigrationBuilder(0, 0, 10), + Migrations: emptyMigrations(), MetadataDownloadBatchSize: 32, }) req.NoError(err) @@ -536,7 +535,9 @@ func TestFilterDataFiles(t *testing.T) { m2(wr(1, 1, 1), wr(2, 2, 2), wr(3, 3, 3), wr(4, 4, 4), wr(5, 5, 5)), m2(wr(1, 1, 1), wr(2, 2, 2)), } - metaIter := iter.FromSlice(metas) + metaIter := iter.Map(iter.FromSlice(metas), func(meta logclient.Meta) *logclient.MetaName { + return logclient.NewMetaName(meta, "") + }) files := iter.CollectAll(ctx, fm.FilterDataFiles(metaIter)).Item check := func(file *logclient.LogDataFileInfo, metaKey string, goff, foff int) { req.Equal(file.MetaDataGroupName, metaKey) diff --git a/br/pkg/restore/log_client/log_file_map.go b/br/pkg/restore/log_client/log_file_map.go index db50c8391418b..c7c05e1be4e7e 100644 --- a/br/pkg/restore/log_client/log_file_map.go +++ b/br/pkg/restore/log_client/log_file_map.go @@ -35,6 +35,18 @@ func (m bitMap) Hit(off int) bool { return (m[blockIndex] & bitOffset) > 0 } +type bitMapExt struct { + bitMap + skip bool +} + +func newBitMapExt(skip bool) bitMapExt { + return bitMapExt{ + bitMap: newBitMap(), + skip: skip, + } +} + type fileMap struct { // group index -> bitmap of kv files pos map[int]bitMap @@ -46,6 +58,19 @@ func newFileMap() fileMap { } } +type fileMapExt struct { + // group index -> bitmap of kv files + pos map[int]bitMapExt + skip bool +} + +func newFileMapExt(skip bool) fileMapExt { + return fileMapExt{ + pos: make(map[int]bitMapExt), + skip: skip, + } +} + type LogFilesSkipMap struct { // metadata group key -> group map skipMap map[string]fileMap @@ -82,3 +107,68 @@ func (m *LogFilesSkipMap) NeedSkip(metaKey string, groupOff, fileOff int) bool { } return gp.Hit(fileOff) } + +type LogFilesSkipMapExt struct { + // metadata group key -> group map + skipMap map[string]fileMapExt +} + +func NewLogFilesSkipMapExt() *LogFilesSkipMapExt { + return &LogFilesSkipMapExt{ + skipMap: make(map[string]fileMapExt), + } +} + +func (m *LogFilesSkipMapExt) Insert(metaKey string, groupOff, fileOff int) { + mp, exists := m.skipMap[metaKey] + if !exists { + mp = newFileMapExt(false) + m.skipMap[metaKey] = mp + } + if mp.skip { + return + } + gp, exists := mp.pos[groupOff] + if !exists { + gp = newBitMapExt(false) + mp.pos[groupOff] = gp + } + if gp.skip { + return + } + gp.Set(fileOff) +} + +func (m *LogFilesSkipMapExt) SkipMeta(metaKey string) { + m.skipMap[metaKey] = newFileMapExt(true) +} + +func (m *LogFilesSkipMapExt) SkipGroup(metaKey string, groupOff int) { + mp, exists := m.skipMap[metaKey] + if !exists { + mp = newFileMapExt(false) + m.skipMap[metaKey] = mp + } + if mp.skip { + return + } + mp.pos[groupOff] = newBitMapExt(true) +} + +func (m *LogFilesSkipMapExt) NeedSkip(metaKey string, groupOff, fileOff int) bool { + mp, exists := m.skipMap[metaKey] + if !exists { + return false + } + if mp.skip { + return true + } + gp, exists := mp.pos[groupOff] + if !exists { + return false + } + if gp.skip { + return true + } + return gp.Hit(fileOff) +} diff --git a/br/pkg/restore/log_client/log_split_strategy.go b/br/pkg/restore/log_client/log_split_strategy.go new file mode 100644 index 0000000000000..3327991db02fa --- /dev/null +++ b/br/pkg/restore/log_client/log_split_strategy.go @@ -0,0 +1,107 @@ +// Copyright 2024 PingCAP, Inc. Licensed under Apache-2.0. + +package logclient + +import ( + "context" + + "github.com/pingcap/errors" + "github.com/pingcap/log" + "github.com/pingcap/tidb/br/pkg/checkpoint" + "github.com/pingcap/tidb/br/pkg/restore/split" + restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" + "github.com/pingcap/tidb/br/pkg/summary" + "github.com/pingcap/tidb/pkg/util/sqlexec" + "go.uber.org/zap" +) + +type LogSplitStrategy struct { + *split.BaseSplitStrategy + checkpointSkipMap *LogFilesSkipMap + checkpointFileProgressFn func(uint64, uint64) +} + +var _ split.SplitStrategy[*LogDataFileInfo] = &LogSplitStrategy{} + +func NewLogSplitStrategy( + ctx context.Context, + useCheckpoint bool, + execCtx sqlexec.RestrictedSQLExecutor, + rules map[int64]*restoreutils.RewriteRules, + updateStatsFn func(uint64, uint64), +) (*LogSplitStrategy, error) { + downstreamIdset := make(map[int64]struct{}) + for _, rule := range rules { + downstreamIdset[rule.NewTableID] = struct{}{} + } + skipMap := NewLogFilesSkipMap() + if useCheckpoint { + t, err := checkpoint.LoadCheckpointDataForLogRestore( + ctx, execCtx, func(groupKey checkpoint.LogRestoreKeyType, off checkpoint.LogRestoreValueMarshaled) { + for tableID, foffs := range off.Foffs { + // filter out the checkpoint data of dropped table + if _, exists := downstreamIdset[tableID]; exists { + for _, foff := range foffs { + skipMap.Insert(groupKey, off.Goff, foff) + } + } + } + }) + + if err != nil { + return nil, errors.Trace(err) + } + summary.AdjustStartTimeToEarlierTime(t) + } + return &LogSplitStrategy{ + BaseSplitStrategy: split.NewBaseSplitStrategy(rules), + checkpointSkipMap: skipMap, + checkpointFileProgressFn: updateStatsFn, + }, nil +} + +const splitFileThreshold = 1024 * 1024 // 1 MB + +func (ls *LogSplitStrategy) Accumulate(file *LogDataFileInfo) { + if file.Length > splitFileThreshold { + ls.AccumulateCount += 1 + } + splitHelper, exist := ls.TableSplitter[file.TableId] + if !exist { + splitHelper = split.NewSplitHelper() + ls.TableSplitter[file.TableId] = splitHelper + } + + splitHelper.Merge(split.Valued{ + Key: split.Span{ + StartKey: file.StartKey, + EndKey: file.EndKey, + }, + Value: split.Value{ + Size: file.Length, + Number: file.NumberOfEntries, + }, + }) +} + +func (ls *LogSplitStrategy) ShouldSplit() bool { + return ls.AccumulateCount > 4096 +} + +func (ls *LogSplitStrategy) ShouldSkip(file *LogDataFileInfo) bool { + if file.IsMeta { + return true + } + _, exist := ls.Rules[file.TableId] + if !exist { + log.Info("skip for no rule files", zap.Int64("tableID", file.TableId)) + return true + } + + if ls.checkpointSkipMap.NeedSkip(file.MetaDataGroupName, file.OffsetInMetaGroup, file.OffsetInMergedGroup) { + //onPcheckpointSkipMaprogress() + ls.checkpointFileProgressFn(uint64(file.NumberOfEntries), file.Length) + return true + } + return false +} diff --git a/br/pkg/restore/log_client/migration.go b/br/pkg/restore/log_client/migration.go new file mode 100644 index 0000000000000..a7b4307e0f568 --- /dev/null +++ b/br/pkg/restore/log_client/migration.go @@ -0,0 +1,240 @@ +// Copyright 2024 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 logclient + +import ( + "context" + + backuppb "github.com/pingcap/kvproto/pkg/brpb" + "github.com/pingcap/tidb/br/pkg/storage" + "github.com/pingcap/tidb/br/pkg/utils/iter" +) + +type logicalSkipMap map[uint64]struct{} +type logicalFileSkipMap struct { + skipmap logicalSkipMap + skip bool +} +type physicalSkipMap map[string]*logicalFileSkipMap +type physicalFileSkipMap struct { + skipmap physicalSkipMap + skip bool +} +type metaSkipMap map[string]*physicalFileSkipMap + +func (skipmap metaSkipMap) skipMeta(metaPath string) { + skipmap[metaPath] = &physicalFileSkipMap{ + skip: true, + } +} + +func (skipmap metaSkipMap) skipPhysical(metaPath, physicalPath string) { + metaMap, exists := skipmap[metaPath] + if !exists { + metaMap = &physicalFileSkipMap{ + skipmap: make(map[string]*logicalFileSkipMap), + } + skipmap[metaPath] = metaMap + } else if metaMap.skip { + return + } + metaMap.skipmap[physicalPath] = &logicalFileSkipMap{ + skip: true, + } +} + +func (skipmap metaSkipMap) skipLogical(metaPath, physicalPath string, offset uint64) { + metaMap, exists := skipmap[metaPath] + if !exists { + metaMap = &physicalFileSkipMap{ + skipmap: make(map[string]*logicalFileSkipMap), + } + skipmap[metaPath] = metaMap + } else if metaMap.skip { + return + } + fileMap, exists := metaMap.skipmap[physicalPath] + if !exists { + fileMap = &logicalFileSkipMap{ + skipmap: make(map[uint64]struct{}), + } + metaMap.skipmap[physicalPath] = fileMap + } else if fileMap.skip { + return + } + fileMap.skipmap[offset] = struct{}{} +} + +func (skipmap metaSkipMap) NeedSkip(metaPath, physicalPath string, offset uint64) bool { + metaMap, exists := skipmap[metaPath] + if exists { + return false + } + if metaMap.skip { + return true + } + fileMap, exists := metaMap.skipmap[physicalPath] + if exists { + return false + } + if fileMap.skip { + return true + } + _, exists = fileMap.skipmap[offset] + return exists +} + +type WithMigrationsBuilder struct { + shiftStartTS uint64 + startTS uint64 + restoredTS uint64 +} + +func (builder *WithMigrationsBuilder) SetShiftStartTS(ts uint64) { + builder.shiftStartTS = ts +} + +func (builder *WithMigrationsBuilder) updateSkipMap(skipmap metaSkipMap, metas []*backuppb.MetaEdit) { + for _, meta := range metas { + if meta.DestructSelf { + skipmap.skipMeta(meta.Path) + continue + } + for _, path := range meta.DeletePhysicalFiles { + skipmap.skipPhysical(meta.Path, path) + } + for _, filesInPhysical := range meta.DeleteLogicalFiles { + for _, span := range filesInPhysical.Spans { + skipmap.skipLogical(meta.Path, filesInPhysical.Path, span.Offset) + } + } + } +} + +func (builder *WithMigrationsBuilder) coarseGrainedFilter(mig *backuppb.Migration) bool { + // Maybe the sst creation by compaction contains the kvs whose ts is larger than shift start ts. + // But currently log restore still restores the kvs. + // Besides, it indicates that the truncate task and the log restore task cannot be performed simultaneously. + // + // compaction until ts --+ +-- shift start ts + // v v + // log file [ .. .. .. .. ] + // + for _, compaction := range mig.Compactions { + if compaction.CompactionUntilTs < builder.shiftStartTS || compaction.CompactionFromTs > builder.restoredTS { + return true + } + } + return false +} + +// Create the wrapper by migrations. +func (builder *WithMigrationsBuilder) Build(migs []*backuppb.Migration) WithMigrations { + skipmap := make(metaSkipMap) + compactionDirs := make([]string, 0, 8) + + for _, mig := range migs { + // TODO: deal with TruncatedTo and DestructPrefix + if builder.coarseGrainedFilter(mig) { + continue + } + builder.updateSkipMap(skipmap, mig.EditMeta) + + for _, c := range mig.Compactions { + compactionDirs = append(compactionDirs, c.Artifacts) + } + } + withMigrations := WithMigrations{ + skipmap: skipmap, + compactionDirs: compactionDirs, + } + return withMigrations +} + +type PhysicalMigrationsIter = iter.TryNextor[*PhysicalWithMigrations] + +type PhysicalWithMigrations struct { + skipmap logicalSkipMap + physical GroupIndex +} + +func (pwm *PhysicalWithMigrations) Logicals(fileIndexIter FileIndexIter) FileIndexIter { + return iter.FilterOut(fileIndexIter, func(fileIndex FileIndex) bool { + if pwm.skipmap != nil { + if _, ok := pwm.skipmap[fileIndex.Item.RangeOffset]; ok { + return true + } + } + return false + }) +} + +type MetaMigrationsIter = iter.TryNextor[*MetaWithMigrations] + +type MetaWithMigrations struct { + skipmap physicalSkipMap + meta Meta +} + +func (mwm *MetaWithMigrations) Physicals(groupIndexIter GroupIndexIter) PhysicalMigrationsIter { + return iter.MapFilter(groupIndexIter, func(groupIndex GroupIndex) (*PhysicalWithMigrations, bool) { + var logiSkipmap logicalSkipMap = nil + if mwm.skipmap != nil { + skipmap := mwm.skipmap[groupIndex.Item.Path] + if skipmap != nil { + if skipmap.skip { + return nil, true + } + logiSkipmap = skipmap.skipmap + } + } + return &PhysicalWithMigrations{ + skipmap: logiSkipmap, + physical: groupIndex, + }, false + }) +} + +type WithMigrations struct { + skipmap metaSkipMap + compactionDirs []string +} + +func (wm *WithMigrations) Metas(metaNameIter MetaNameIter) MetaMigrationsIter { + return iter.MapFilter(metaNameIter, func(mname *MetaName) (*MetaWithMigrations, bool) { + var phySkipmap physicalSkipMap = nil + if wm.skipmap != nil { + skipmap := wm.skipmap[mname.name] + if skipmap != nil { + if skipmap.skip { + return nil, true + } + phySkipmap = skipmap.skipmap + } + } + return &MetaWithMigrations{ + skipmap: phySkipmap, + meta: mname.meta, + }, false + }) +} + +func (wm *WithMigrations) Compactions(ctx context.Context, s storage.ExternalStorage) iter.TryNextor[*backuppb.LogFileSubcompaction] { + compactionDirIter := iter.FromSlice(wm.compactionDirs) + return iter.FlatMap(compactionDirIter, func(name string) iter.TryNextor[*backuppb.LogFileSubcompaction] { + // name is the absolute path in external storage. + return Subcompactions(ctx, name, s) + }) +} diff --git a/br/pkg/restore/log_client/migration_test.go b/br/pkg/restore/log_client/migration_test.go new file mode 100644 index 0000000000000..5368d7416dadf --- /dev/null +++ b/br/pkg/restore/log_client/migration_test.go @@ -0,0 +1,352 @@ +// Copyright 2024 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 logclient_test + +import ( + "context" + "fmt" + "testing" + + backuppb "github.com/pingcap/kvproto/pkg/brpb" + logclient "github.com/pingcap/tidb/br/pkg/restore/log_client" + "github.com/pingcap/tidb/br/pkg/utils/iter" + "github.com/stretchr/testify/require" +) + +func emptyMigrations() *logclient.WithMigrations { + return &logclient.WithMigrations{} +} + +func nameFromID(prefix string, id uint64) string { + return fmt.Sprintf("%s_%d", prefix, id) +} + +func phyNameFromID(metaid, phyLen uint64) string { + return fmt.Sprintf("meta_%d_phy_%d", metaid, phyLen) +} + +func generateSpans(metaid, physicalLength, spanLength uint64) []*backuppb.Span { + spans := make([]*backuppb.Span, 0, spanLength) + for i := uint64(0); i < spanLength; i += 1 { + spans = append(spans, &backuppb.Span{ + Offset: lfl(metaid, physicalLength, i), + Length: 1, + }) + } + return spans +} + +func generateDeleteLogicalFiles(metaid, physicalLength, logicalLength uint64) []*backuppb.DeleteSpansOfFile { + spans := make([]*backuppb.DeleteSpansOfFile, 0, logicalLength) + spans = append(spans, &backuppb.DeleteSpansOfFile{ + Path: phyNameFromID(metaid, physicalLength), + Spans: generateSpans(metaid, physicalLength, logicalLength), + }) + return spans +} + +func generateDeletePhysicalFiles(metaid, physicalLength uint64) []string { + names := make([]string, 0, physicalLength) + for i := uint64(0); i < physicalLength; i += 1 { + names = append(names, phyNameFromID(metaid, i)) + } + return names +} + +func generateMigrationMeta(metaid uint64) *backuppb.MetaEdit { + return &backuppb.MetaEdit{ + Path: nameFromID("meta", metaid), + DestructSelf: true, + } +} + +func generateMigrationFile(metaid, physicalLength, physicalOffset, logicalLength uint64) *backuppb.MetaEdit { + return &backuppb.MetaEdit{ + Path: nameFromID("meta", metaid), + DeletePhysicalFiles: generateDeletePhysicalFiles(metaid, physicalLength), + DeleteLogicalFiles: generateDeleteLogicalFiles(metaid, physicalOffset, logicalLength), + DestructSelf: false, + } +} + +// mark the store id of metadata as test id identity +func generateMetaNameIter() logclient.MetaNameIter { + return iter.FromSlice([]*logclient.MetaName{ + logclient.NewMetaName(&backuppb.Metadata{StoreId: 0, FileGroups: generateGroupFiles(0, 3)}, nameFromID("meta", 0)), + logclient.NewMetaName(&backuppb.Metadata{StoreId: 1, FileGroups: generateGroupFiles(1, 3)}, nameFromID("meta", 1)), + logclient.NewMetaName(&backuppb.Metadata{StoreId: 2, FileGroups: generateGroupFiles(2, 3)}, nameFromID("meta", 2)), + }) +} + +// group file length +func gfl(storeId, length uint64) uint64 { + return storeId*100000 + length*100 +} + +func gfls(m [][]uint64) [][]uint64 { + glenss := make([][]uint64, 0, len(m)) + for storeId, gs := range m { + if len(gs) == 0 { + continue + } + glens := make([]uint64, 0, len(gs)) + for _, glen := range gs { + glens = append(glens, gfl(uint64(storeId), glen)) + } + glenss = append(glenss, glens) + } + return glenss +} + +// mark the length of group file as test id identity +func generateGroupFiles(metaId, length uint64) []*backuppb.DataFileGroup { + groupFiles := make([]*backuppb.DataFileGroup, 0, length) + for i := uint64(0); i < length; i += 1 { + groupFiles = append(groupFiles, &backuppb.DataFileGroup{ + Path: phyNameFromID(metaId, i), + Length: gfl(metaId, i), + DataFilesInfo: generateDataFiles(metaId, i, 3), + }) + } + return groupFiles +} + +// logical file length +func lfl(storeId, glen, plen uint64) uint64 { + return storeId*100000 + glen*100 + plen +} + +func lfls(m [][][]uint64) [][][]uint64 { + flensss := make([][][]uint64, 0, len(m)) + for storeId, glens := range m { + if len(glens) == 0 { + continue + } + flenss := make([][]uint64, 0, len(glens)) + for glen, fs := range glens { + if len(fs) == 0 { + continue + } + flens := make([]uint64, 0, len(fs)) + for _, flen := range fs { + flens = append(flens, lfl(uint64(storeId), uint64(glen), flen)) + } + flenss = append(flenss, flens) + } + flensss = append(flensss, flenss) + } + return flensss +} + +func generateDataFiles(metaId, glen, plen uint64) []*backuppb.DataFileInfo { + files := make([]*backuppb.DataFileInfo, 0, plen) + for i := uint64(0); i < plen; i += 1 { + files = append(files, &backuppb.DataFileInfo{ + Path: phyNameFromID(metaId, glen), + RangeOffset: lfl(metaId, glen, i), + Length: lfl(metaId, glen, i), + }) + } + return files +} + +func checkMetaNameIter(t *testing.T, expectStoreIds []int64, actualIter logclient.MetaMigrationsIter) { + res := iter.CollectAll(context.TODO(), iter.Map(actualIter, func(m *logclient.MetaWithMigrations) int64 { + return m.StoreId() + })) + require.NoError(t, res.Err) + require.Equal(t, expectStoreIds, res.Item) +} + +func checkPhysicalIter(t *testing.T, expectLengths []uint64, actualIter logclient.PhysicalMigrationsIter) { + res := iter.CollectAll(context.TODO(), iter.Map(actualIter, func(p *logclient.PhysicalWithMigrations) uint64 { + return p.PhysicalLength() + })) + require.NoError(t, res.Err) + require.Equal(t, expectLengths, res.Item) +} + +func checkLogicalIter(t *testing.T, expectLengths []uint64, actualIter logclient.FileIndexIter) { + res := iter.CollectAll(context.TODO(), iter.Map(actualIter, func(l logclient.FileIndex) uint64 { + return l.Item.Length + })) + require.NoError(t, res.Err) + require.Equal(t, expectLengths, res.Item) +} + +func generatePhysicalIter(meta *logclient.MetaWithMigrations) logclient.PhysicalMigrationsIter { + groupIter := iter.FromSlice(meta.Meta().FileGroups) + groupIndexIter := iter.Enumerate(groupIter) + return meta.Physicals(groupIndexIter) +} + +func generateLogicalIter(phy *logclient.PhysicalWithMigrations) logclient.FileIndexIter { + fileIter := iter.FromSlice(phy.Physical().DataFilesInfo) + fileIndexIter := iter.Enumerate(fileIter) + return phy.Logicals(fileIndexIter) +} + +func TestMigrations(t *testing.T) { + cases := []struct { + migrations []*backuppb.Migration + // test meta name iter + expectStoreIds []int64 + expectPhyLengths [][]uint64 + expectLogLengths [][][]uint64 + }{ + { + migrations: []*backuppb.Migration{ + { + EditMeta: []*backuppb.MetaEdit{ + generateMigrationMeta(0), + generateMigrationFile(2, 1, 2, 2), + }, + Compactions: []*backuppb.LogFileCompaction{ + { + CompactionFromTs: 0, + CompactionUntilTs: 9, + }, + }, + }, + }, + expectStoreIds: []int64{0, 1, 2}, + expectPhyLengths: gfls([][]uint64{ + {0, 1, 2}, {0, 1, 2}, {0, 1, 2}, + }), + expectLogLengths: lfls([][][]uint64{ + {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}, + {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}, + {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}, + }), + }, + { + migrations: []*backuppb.Migration{ + { + EditMeta: []*backuppb.MetaEdit{ + generateMigrationMeta(0), + generateMigrationFile(2, 1, 2, 2), + }, + Compactions: []*backuppb.LogFileCompaction{ + { + CompactionFromTs: 50, + CompactionUntilTs: 52, + }, + }, + }, + }, + expectStoreIds: []int64{1, 2}, + expectPhyLengths: gfls([][]uint64{ + { /*0, 1, 2*/ }, {0, 1, 2}, { /*0 */ 1, 2}, + }), + expectLogLengths: lfls([][][]uint64{ + { /*{0, 1, 2}, {0, 1, 2}, {0, 1, 2}*/ }, + {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}, + {{ /*0, 1, 2*/ }, {0, 1, 2}, { /*0, 1 */ 2}}, + }), + }, + { + migrations: []*backuppb.Migration{ + { + EditMeta: []*backuppb.MetaEdit{ + generateMigrationMeta(0), + }, + Compactions: []*backuppb.LogFileCompaction{ + { + CompactionFromTs: 50, + CompactionUntilTs: 52, + }, + }, + }, + { + EditMeta: []*backuppb.MetaEdit{ + generateMigrationFile(2, 1, 2, 2), + }, + Compactions: []*backuppb.LogFileCompaction{ + { + CompactionFromTs: 120, + CompactionUntilTs: 140, + }, + }, + }, + }, + expectStoreIds: []int64{1, 2}, + expectPhyLengths: gfls([][]uint64{ + { /*0, 1, 2*/ }, {0, 1, 2}, { /*0 */ 1, 2}, + }), + expectLogLengths: lfls([][][]uint64{ + { /*{0, 1, 2}, {0, 1, 2}, {0, 1, 2}*/ }, + {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}, + {{ /*0, 1, 2*/ }, {0, 1, 2}, { /*0, 1 */ 2}}, + }), + }, + { + migrations: []*backuppb.Migration{ + { + EditMeta: []*backuppb.MetaEdit{ + generateMigrationMeta(0), + }, + Compactions: []*backuppb.LogFileCompaction{ + { + CompactionFromTs: 50, + CompactionUntilTs: 52, + }, + }, + }, + { + EditMeta: []*backuppb.MetaEdit{ + generateMigrationFile(2, 1, 2, 2), + }, + Compactions: []*backuppb.LogFileCompaction{ + { + CompactionFromTs: 1200, + CompactionUntilTs: 1400, + }, + }, + }, + }, + expectStoreIds: []int64{1, 2}, + expectPhyLengths: gfls([][]uint64{ + { /*0, 1, 2*/ }, {0, 1, 2}, {0, 1, 2}, + }), + expectLogLengths: lfls([][][]uint64{ + { /*{0, 1, 2}, {0, 1, 2}, {0, 1, 2}*/ }, + {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}, + {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}}, + }), + }, + } + + ctx := context.Background() + for _, cs := range cases { + builder := logclient.NewMigrationBuilder(10, 100, 200) + withMigrations := builder.Build(cs.migrations) + it := withMigrations.Metas(generateMetaNameIter()) + checkMetaNameIter(t, cs.expectStoreIds, it) + it = withMigrations.Metas(generateMetaNameIter()) + collect := iter.CollectAll(ctx, it) + require.NoError(t, collect.Err) + for j, meta := range collect.Item { + physicalIter := generatePhysicalIter(meta) + checkPhysicalIter(t, cs.expectPhyLengths[j], physicalIter) + physicalIter = generatePhysicalIter(meta) + collect := iter.CollectAll(ctx, physicalIter) + require.NoError(t, collect.Err) + for k, phy := range collect.Item { + logicalIter := generateLogicalIter(phy) + checkLogicalIter(t, cs.expectLogLengths[j][k], logicalIter) + } + } + } +} diff --git a/br/pkg/restore/misc.go b/br/pkg/restore/misc.go index 8280e2171b78c..7bf0564e787eb 100644 --- a/br/pkg/restore/misc.go +++ b/br/pkg/restore/misc.go @@ -149,7 +149,7 @@ func GetTSWithRetry(ctx context.Context, pdClient pd.Client) (uint64, error) { log.Warn("failed to get TS, retry it", zap.Uint("retry time", retry), logutil.ShortError(getTSErr)) } return getTSErr - }, utils.NewPDReqBackoffer()) + }, utils.NewAggressivePDBackoffStrategy()) if err != nil { log.Error("failed to get TS", zap.Error(err)) diff --git a/br/pkg/restore/misc_test.go b/br/pkg/restore/misc_test.go index b461b3e395ebd..37fe2c4544859 100644 --- a/br/pkg/restore/misc_test.go +++ b/br/pkg/restore/misc_test.go @@ -23,7 +23,7 @@ import ( "github.com/pingcap/failpoint" "github.com/pingcap/tidb/br/pkg/mock" "github.com/pingcap/tidb/br/pkg/restore" - "github.com/pingcap/tidb/br/pkg/utiltest" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/session" @@ -107,7 +107,7 @@ func TestAssertUserDBsEmpty(t *testing.T) { func TestGetTSWithRetry(t *testing.T) { t.Run("PD leader is healthy:", func(t *testing.T) { retryTimes := -1000 - pDClient := utiltest.NewFakePDClient(nil, false, &retryTimes) + pDClient := split.NewFakePDClient(nil, false, &retryTimes) _, err := restore.GetTSWithRetry(context.Background(), pDClient) require.NoError(t, err) }) @@ -118,14 +118,14 @@ func TestGetTSWithRetry(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/br/pkg/utils/set-attempt-to-one")) }() retryTimes := -1000 - pDClient := utiltest.NewFakePDClient(nil, true, &retryTimes) + pDClient := split.NewFakePDClient(nil, true, &retryTimes) _, err := restore.GetTSWithRetry(context.Background(), pDClient) require.Error(t, err) }) t.Run("PD leader switch successfully", func(t *testing.T) { retryTimes := 0 - pDClient := utiltest.NewFakePDClient(nil, true, &retryTimes) + pDClient := split.NewFakePDClient(nil, true, &retryTimes) _, err := restore.GetTSWithRetry(context.Background(), pDClient) require.NoError(t, err) }) diff --git a/br/pkg/restore/restorer.go b/br/pkg/restore/restorer.go new file mode 100644 index 0000000000000..9d999af9c09fc --- /dev/null +++ b/br/pkg/restore/restorer.go @@ -0,0 +1,378 @@ +// Copyright 2024 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 restore + +import ( + "context" + "fmt" + "strings" + "time" + + "github.com/opentracing/opentracing-go" + "github.com/pingcap/errors" + backuppb "github.com/pingcap/kvproto/pkg/brpb" + "github.com/pingcap/log" + "github.com/pingcap/tidb/br/pkg/checkpoint" + "github.com/pingcap/tidb/br/pkg/logutil" + "github.com/pingcap/tidb/br/pkg/restore/split" + "github.com/pingcap/tidb/br/pkg/restore/utils" + "github.com/pingcap/tidb/br/pkg/summary" + "github.com/pingcap/tidb/br/pkg/utils/iter" + "github.com/pingcap/tidb/pkg/util" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "golang.org/x/sync/errgroup" +) + +// BackupFileSet represents the batch files to be restored for a table. Current, we have 5 type files +// 1. Raw KV(sst files) +// 2. Txn KV(sst files) +// 3. Database KV backup(sst files) +// 4. Compacted Log backups(sst files) +type BackupFileSet struct { + // TableID only valid in 3.4.5. + // For Raw/Txn KV, table id is always 0 + TableID int64 + + // For log Backup Changes, this field is null. + SSTFiles []*backuppb.File + + // RewriteRules is the rewrite rules for the specify table. + // because these rules belongs to the *one table*. + // we can hold them here. + RewriteRules *utils.RewriteRules +} + +type BatchBackupFileSet []BackupFileSet + +type zapBatchBackupFileSetMarshaler BatchBackupFileSet + +// MarshalLogObjectForFiles is an internal util function to zap something having `Files` field. +func MarshalLogObjectForFiles(batchFileSet BatchBackupFileSet, encoder zapcore.ObjectEncoder) error { + return zapBatchBackupFileSetMarshaler(batchFileSet).MarshalLogObject(encoder) +} + +func (fgs zapBatchBackupFileSetMarshaler) MarshalLogObject(encoder zapcore.ObjectEncoder) error { + elements := make([]string, 0) + total := 0 + totalKVs := uint64(0) + totalBytes := uint64(0) + totalSize := uint64(0) + for _, fg := range fgs { + for _, f := range fg.SSTFiles { + total += 1 + elements = append(elements, f.GetName()) + totalKVs += f.GetTotalKvs() + totalBytes += f.GetTotalBytes() + totalSize += f.GetSize_() + } + } + encoder.AddInt("total", total) + _ = encoder.AddArray("files", logutil.AbbreviatedArrayMarshaler(elements)) + encoder.AddUint64("totalKVs", totalKVs) + encoder.AddUint64("totalBytes", totalBytes) + encoder.AddUint64("totalSize", totalSize) + return nil +} + +func ZapBatchBackupFileSet(batchFileSet BatchBackupFileSet) zap.Field { + return zap.Object("fileset", zapBatchBackupFileSetMarshaler(batchFileSet)) +} + +// CreateUniqueFileSets used for Raw/Txn non-tableID files +// converts a slice of files into a slice of unique BackupFileSets, +// where each BackupFileSet contains a single file. +func CreateUniqueFileSets(files []*backuppb.File) []BackupFileSet { + newSet := make([]BackupFileSet, len(files)) + for i, f := range files { + newSet[i].SSTFiles = []*backuppb.File{f} + } + return newSet +} + +func NewFileSet(files []*backuppb.File, rules *utils.RewriteRules) BackupFileSet { + return BackupFileSet{ + SSTFiles: files, + RewriteRules: rules, + } +} + +// SstRestorer defines the essential methods required for restoring SST files in various backup formats: +// 1. Raw backup SST files +// 2. Transactional (Txn) backup SST files +// 3. TiDB backup SST files +// 4. Log-compacted SST files +// +// It serves as a high-level interface for restoration, supporting implementations such as simpleRestorer +// and MultiTablesRestorer. SstRestorer includes FileImporter for handling raw, transactional, and compacted SSTs, +// and MultiTablesRestorer for TiDB-specific backups. +type SstRestorer interface { + // GoRestore imports the specified backup file sets into TiKV asynchronously. + // The onProgress function is called with progress updates as files are processed. + GoRestore(onProgress func(int64), batchFileSets ...BatchBackupFileSet) error + + // WaitUntilFinish blocks until all pending restore files have completed processing. + WaitUntilFinish() error + + // Close releases any resources associated with the restoration process. + Close() error +} + +// FileImporter is a low-level interface for handling the import of backup files into storage (e.g., TiKV). +// It is primarily used by the importer client to manage raw and transactional SST file imports. +type FileImporter interface { + // Import uploads and imports the provided backup file sets into storage. + // The ctx parameter provides context for managing request scope. + Import(ctx context.Context, fileSets ...BackupFileSet) error + + // Close releases any resources used by the importer client. + Close() error +} + +// BalancedFileImporter is a wrapper around FileImporter that adds concurrency controls. +// It ensures that file imports are balanced across storage nodes, which is particularly useful +// in MultiTablesRestorer scenarios where concurrency management is critical for efficiency. +type BalancedFileImporter interface { + FileImporter + + // PauseForBackpressure manages concurrency by controlling when imports can proceed, + // ensuring load is distributed evenly across storage nodes. + PauseForBackpressure() +} + +type SimpleRestorer struct { + eg *errgroup.Group + ectx context.Context + workerPool *util.WorkerPool + fileImporter FileImporter + checkpointRunner *checkpoint.CheckpointRunner[checkpoint.RestoreKeyType, checkpoint.RestoreValueType] +} + +func NewSimpleSstRestorer( + ctx context.Context, + fileImporter FileImporter, + workerPool *util.WorkerPool, + checkpointRunner *checkpoint.CheckpointRunner[checkpoint.RestoreKeyType, checkpoint.RestoreValueType], +) SstRestorer { + eg, ectx := errgroup.WithContext(ctx) + return &SimpleRestorer{ + eg: eg, + ectx: ectx, + workerPool: workerPool, + fileImporter: fileImporter, + checkpointRunner: checkpointRunner, + } +} + +func (s *SimpleRestorer) Close() error { + return s.fileImporter.Close() +} + +func (s *SimpleRestorer) WaitUntilFinish() error { + return s.eg.Wait() +} + +func (s *SimpleRestorer) GoRestore(onProgress func(int64), batchFileSets ...BatchBackupFileSet) error { + for _, sets := range batchFileSets { + for _, set := range sets { + s.workerPool.ApplyOnErrorGroup(s.eg, + func() (restoreErr error) { + fileStart := time.Now() + defer func() { + if restoreErr == nil { + log.Info("import sst files done", logutil.Files(set.SSTFiles), + zap.Duration("take", time.Since(fileStart))) + for _, f := range set.SSTFiles { + onProgress(int64(f.TotalKvs)) + } + } + }() + err := s.fileImporter.Import(s.ectx, set) + if err != nil { + return errors.Trace(err) + } + if s.checkpointRunner != nil { + // The checkpoint shows this ranges of files has been restored into + // the table corresponding to the table-id. + for _, f := range set.SSTFiles { + if err := checkpoint.AppendRangesForRestore(s.ectx, s.checkpointRunner, + checkpoint.NewCheckpointFileItem(set.TableID, f.GetName())); err != nil { + return errors.Trace(err) + } + } + } + return nil + }) + } + } + return nil +} + +type MultiTablesRestorer struct { + eg *errgroup.Group + ectx context.Context + workerPool *util.WorkerPool + fileImporter BalancedFileImporter + checkpointRunner *checkpoint.CheckpointRunner[checkpoint.RestoreKeyType, checkpoint.RestoreValueType] +} + +func NewMultiTablesRestorer( + ctx context.Context, + fileImporter BalancedFileImporter, + workerPool *util.WorkerPool, + checkpointRunner *checkpoint.CheckpointRunner[checkpoint.RestoreKeyType, checkpoint.RestoreValueType], +) SstRestorer { + eg, ectx := errgroup.WithContext(ctx) + return &MultiTablesRestorer{ + eg: eg, + ectx: ectx, + workerPool: workerPool, + fileImporter: fileImporter, + checkpointRunner: checkpointRunner, + } +} + +func (m *MultiTablesRestorer) Close() error { + return m.fileImporter.Close() +} + +func (m *MultiTablesRestorer) WaitUntilFinish() error { + if err := m.eg.Wait(); err != nil { + summary.CollectFailureUnit("file", err) + log.Error("restore files failed", zap.Error(err)) + return errors.Trace(err) + } + return nil +} + +func (m *MultiTablesRestorer) GoRestore(onProgress func(int64), batchFileSets ...BatchBackupFileSet) (err error) { + start := time.Now() + fileCount := 0 + defer func() { + elapsed := time.Since(start) + if err == nil { + log.Info("Restore files", zap.Duration("take", elapsed)) + summary.CollectSuccessUnit("files", fileCount, elapsed) + } + }() + + log.Debug("start to restore files", zap.Int("files", fileCount)) + + if span := opentracing.SpanFromContext(m.ectx); span != nil && span.Tracer() != nil { + span1 := span.Tracer().StartSpan("Client.RestoreSSTFiles", opentracing.ChildOf(span.Context())) + defer span1.Finish() + m.ectx = opentracing.ContextWithSpan(m.ectx, span1) + } + + for _, batchFileSet := range batchFileSets { + if m.ectx.Err() != nil { + log.Warn("Restoring encountered error and already stopped, give up remained files.", + logutil.ShortError(m.ectx.Err())) + // We will fetch the error from the errgroup then (If there were). + // Also note if the parent context has been canceled or something, + // breaking here directly is also a reasonable behavior. + break + } + filesReplica := batchFileSet + m.fileImporter.PauseForBackpressure() + m.workerPool.ApplyOnErrorGroup(m.eg, func() (restoreErr error) { + fileStart := time.Now() + defer func() { + if restoreErr == nil { + log.Info("import files done", zap.Duration("take", time.Since(fileStart))) + onProgress(int64(len(filesReplica))) + } + }() + if importErr := m.fileImporter.Import(m.ectx, filesReplica...); importErr != nil { + return errors.Trace(importErr) + } + + // the data of this range has been import done + if m.checkpointRunner != nil && len(filesReplica) > 0 { + for _, filesGroup := range filesReplica { + rangeKeySet := make(map[string]struct{}) + for _, file := range filesGroup.SSTFiles { + rangeKey := GetFileRangeKey(file.Name) + // Assert that the files having the same rangeKey are all in the current filesGroup.Files + rangeKeySet[rangeKey] = struct{}{} + } + for rangeKey := range rangeKeySet { + // The checkpoint range shows this ranges of kvs has been restored into + // the table corresponding to the table-id. + if err := checkpoint.AppendRangesForRestore(m.ectx, m.checkpointRunner, + checkpoint.NewCheckpointRangeKeyItem(filesGroup.TableID, rangeKey)); err != nil { + return errors.Trace(err) + } + } + } + } + return nil + }) + } + // Once the parent context canceled and there is no task running in the errgroup, + // we may break the for loop without error in the errgroup. (Will this happen?) + // At that time, return the error in the context here. + return m.ectx.Err() +} + +// GetFileRangeKey is used to reduce the checkpoint number, because we combine the write cf/default cf into one restore file group. +// during full restore, so we can reduce the checkpoint number with the common prefix of the file. +func GetFileRangeKey(f string) string { + // the backup date file pattern is `{store_id}_{region_id}_{epoch_version}_{key}_{ts}_{cf}.sst` + // so we need to compare without the `_{cf}.sst` suffix + idx := strings.LastIndex(f, "_") + if idx < 0 { + panic(fmt.Sprintf("invalid backup data file name: '%s'", f)) + } + + return f[:idx] +} + +type PipelineRestorerWrapper[T any] struct { + split.PipelineRegionsSplitter +} + +// WithSplit processes items using a split strategy within a pipeline. +// It iterates over items, accumulating them until a split condition is met. +// When a split is required, it executes the split operation on the accumulated items. +func (p *PipelineRestorerWrapper[T]) WithSplit(ctx context.Context, i iter.TryNextor[T], strategy split.SplitStrategy[T]) iter.TryNextor[T] { + return iter.TryMap( + iter.FilterOut(i, func(item T) bool { + // Skip items based on the strategy's criteria. + // Non-skip iterms should be filter out. + return strategy.ShouldSkip(item) + }), func(item T) (T, error) { + // Accumulate the item for potential splitting. + strategy.Accumulate(item) + + // Check if the accumulated items meet the criteria for splitting. + if strategy.ShouldSplit() { + startTime := time.Now() + + // Execute the split operation on the accumulated items. + accumulations := strategy.GetAccumulations() + err := p.ExecuteRegions(ctx, accumulations) + if err != nil { + log.Error("Failed to split regions in pipeline; exit restore", zap.Error(err), zap.Duration("duration", time.Since(startTime))) + return item, errors.Annotate(err, "Execute region split on accmulated files failed") + } + // Reset accumulations after the split operation. + strategy.ResetAccumulations() + log.Info("Completed region split in pipeline", zap.Duration("duration", time.Since(startTime))) + } + // Return the item without filtering it out. + return item, nil + }) +} diff --git a/br/pkg/restore/restorer_test.go b/br/pkg/restore/restorer_test.go new file mode 100644 index 0000000000000..c662db6bcb803 --- /dev/null +++ b/br/pkg/restore/restorer_test.go @@ -0,0 +1,289 @@ +// Copyright 2024 PingCAP, Inc. +package restore_test + +import ( + "context" + "sync" + "testing" + + "github.com/pingcap/errors" + backuppb "github.com/pingcap/kvproto/pkg/brpb" + "github.com/pingcap/tidb/br/pkg/restore" + "github.com/pingcap/tidb/br/pkg/restore/split" + restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" + "github.com/pingcap/tidb/br/pkg/utils/iter" + "github.com/pingcap/tidb/pkg/tablecodec" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/codec" + "github.com/stretchr/testify/require" +) + +// Helper function to create test files +func createTestFiles() []*backuppb.File { + return []*backuppb.File{ + {Name: "file1.sst", TotalKvs: 10}, + {Name: "file2.sst", TotalKvs: 20}, + } +} + +type fakeImporter struct { + restore.FileImporter + hasError bool +} + +func (f *fakeImporter) Import(ctx context.Context, fileSets ...restore.BackupFileSet) error { + if f.hasError { + return errors.New("import error") + } + return nil +} + +func (f *fakeImporter) Close() error { + return nil +} + +func TestSimpleRestorerImportAndProgress(t *testing.T) { + ctx := context.Background() + files := createTestFiles() + progressCount := int64(0) + + workerPool := util.NewWorkerPool(2, "simple-restorer") + restorer := restore.NewSimpleSstRestorer(ctx, &fakeImporter{}, workerPool, nil) + + fileSet := restore.BatchBackupFileSet{ + {SSTFiles: files}, + } + err := restorer.GoRestore(func(progress int64) { + progressCount += progress + }, fileSet) + require.NoError(t, err) + err = restorer.WaitUntilFinish() + require.Equal(t, int64(30), progressCount) + require.NoError(t, err) + + batchFileSet := restore.BatchBackupFileSet{ + {SSTFiles: files}, + {SSTFiles: files}, + } + progressCount = int64(0) + var mu sync.Mutex + err = restorer.GoRestore(func(progress int64) { + mu.Lock() + progressCount += progress + mu.Unlock() + }, batchFileSet) + require.NoError(t, err) + err = restorer.WaitUntilFinish() + require.NoError(t, err) + require.Equal(t, int64(60), progressCount) +} + +func TestSimpleRestorerWithErrorInImport(t *testing.T) { + ctx := context.Background() + + workerPool := util.NewWorkerPool(2, "simple-restorer") + restorer := restore.NewSimpleSstRestorer(ctx, &fakeImporter{hasError: true}, workerPool, nil) + + files := []*backuppb.File{ + {Name: "file_with_error.sst", TotalKvs: 15}, + } + fileSet := restore.BatchBackupFileSet{ + {SSTFiles: files}, + } + + // Run restore and expect an error + progressCount := int64(0) + restorer.GoRestore(func(progress int64) {}, fileSet) + err := restorer.WaitUntilFinish() + require.Error(t, err) + require.Contains(t, err.Error(), "import error") + require.Equal(t, int64(0), progressCount) +} + +func createSampleBatchFileSets() restore.BatchBackupFileSet { + return restore.BatchBackupFileSet{ + { + TableID: 1001, + SSTFiles: []*backuppb.File{ + {Name: "file1.sst", TotalKvs: 10}, + {Name: "file2.sst", TotalKvs: 20}, + }, + }, + { + TableID: 1002, + SSTFiles: []*backuppb.File{ + {Name: "file3.sst", TotalKvs: 15}, + }, + }, + } +} + +// FakeBalancedFileImporteris a minimal implementation for testing +type FakeBalancedFileImporter struct { + hasError bool + unblockCount int +} + +func (f *FakeBalancedFileImporter) Import(ctx context.Context, fileSets ...restore.BackupFileSet) error { + if f.hasError { + return errors.New("import error") + } + return nil +} + +func (f *FakeBalancedFileImporter) PauseForBackpressure() { + f.unblockCount++ +} + +func (f *FakeBalancedFileImporter) Close() error { + return nil +} + +func TestMultiTablesRestorerRestoreSuccess(t *testing.T) { + ctx := context.Background() + importer := &FakeBalancedFileImporter{} + workerPool := util.NewWorkerPool(2, "multi-tables-restorer") + + restorer := restore.NewMultiTablesRestorer(ctx, importer, workerPool, nil) + + var progress int64 + fileSets := createSampleBatchFileSets() + + var mu sync.Mutex + restorer.GoRestore(func(p int64) { + mu.Lock() + progress += p + mu.Unlock() + }, fileSets) + err := restorer.WaitUntilFinish() + require.NoError(t, err) + + // Ensure progress was tracked correctly + require.Equal(t, int64(2), progress) // Total files group: 2 + require.Equal(t, 1, importer.unblockCount) +} + +func TestMultiTablesRestorerRestoreWithImportError(t *testing.T) { + ctx := context.Background() + importer := &FakeBalancedFileImporter{hasError: true} + workerPool := util.NewWorkerPool(2, "multi-tables-restorer") + + restorer := restore.NewMultiTablesRestorer(ctx, importer, workerPool, nil) + fileSets := createSampleBatchFileSets() + + restorer.GoRestore(func(int64) {}, fileSets) + err := restorer.WaitUntilFinish() + require.Error(t, err) + require.Contains(t, err.Error(), "import error") +} + +func TestMultiTablesRestorerRestoreWithContextCancel(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + importer := &FakeBalancedFileImporter{} + workerPool := util.NewWorkerPool(2, "multi-tables-restorer") + + restorer := restore.NewMultiTablesRestorer(ctx, importer, workerPool, nil) + + fileSets := createSampleBatchFileSets() + + // Cancel context before restore completes + cancel() + err := restorer.GoRestore(func(int64) {}, fileSets) + require.ErrorIs(t, err, context.Canceled) +} + +// FakeSplitStrategy implements split.SplitStrategy for testing purposes +type FakeSplitStrategy[T any] struct { + shouldSplit bool + accumulated []T +} + +// ShouldSkip determines if a given item should be skipped. For testing, this is hardcoded to `false`. +func (f *FakeSplitStrategy[T]) ShouldSkip(item T) bool { + return false +} + +// Accumulate adds a new item to the accumulated list. +func (f *FakeSplitStrategy[T]) Accumulate(item T) { + f.accumulated = append(f.accumulated, item) +} + +// ShouldSplit returns whether the accumulated items meet the condition for splitting. +func (f *FakeSplitStrategy[T]) ShouldSplit() bool { + return f.shouldSplit +} + +// ResetAccumulations clears the accumulated items. +func (f *FakeSplitStrategy[T]) ResetAccumulations() { + f.accumulated = []T{} +} + +// GetAccumulations returns an iterator for the accumulated items. +func (f *FakeSplitStrategy[T]) GetAccumulations() *split.SplitHelperIterator { + rewrites, ok := any(f.accumulated).([]*split.RewriteSplitter) + if !ok { + panic("GetAccumulations called with non-*split.RewriteSplitter type") + } + return split.NewSplitHelperIterator(rewrites) +} + +// FakeRegionsSplitter is a mock of the RegionsSplitter that records calls to ExecuteRegions +type FakeRegionsSplitter struct { + split.Splitter + executedSplitsCount int + expectedEndKeys [][]byte +} + +func (f *FakeRegionsSplitter) ExecuteRegions(ctx context.Context, items *split.SplitHelperIterator) error { + items.Traverse(func(v split.Valued, endKey []byte, rule *restoreutils.RewriteRules) bool { + f.expectedEndKeys = append(f.expectedEndKeys, endKey) + return true + }) + f.executedSplitsCount += 1 + return nil +} + +func TestWithSplitWithoutTriggersSplit(t *testing.T) { + ctx := context.Background() + fakeSplitter := &FakeRegionsSplitter{ + executedSplitsCount: 0, + } + strategy := &FakeSplitStrategy[string]{shouldSplit: false} + wrapper := &restore.PipelineRestorerWrapper[string]{PipelineRegionsSplitter: fakeSplitter} + + items := iter.FromSlice([]string{"item1", "item2", "item3"}) + splitIter := wrapper.WithSplit(ctx, items, strategy) + + for i := splitIter.TryNext(ctx); !i.Finished; i = splitIter.TryNext(ctx) { + } + + require.Equal(t, fakeSplitter.executedSplitsCount, 0) +} +func TestWithSplitAccumulateAndReset(t *testing.T) { + ctx := context.Background() + fakeSplitter := &FakeRegionsSplitter{} + strategy := &FakeSplitStrategy[*split.RewriteSplitter]{shouldSplit: true} + wrapper := &restore.PipelineRestorerWrapper[*split.RewriteSplitter]{PipelineRegionsSplitter: fakeSplitter} + + // Create RewriteSplitter items + items := iter.FromSlice([]*split.RewriteSplitter{ + split.NewRewriteSpliter([]byte("t_1"), 1, nil, split.NewSplitHelper()), + split.NewRewriteSpliter([]byte("t_2"), 2, nil, split.NewSplitHelper()), + }) + splitIter := wrapper.WithSplit(ctx, items, strategy) + + // Traverse through the split iterator + for i := splitIter.TryNext(ctx); !i.Finished; i = splitIter.TryNext(ctx) { + } + + endKeys := [][]byte{ + codec.EncodeBytes([]byte{}, tablecodec.EncodeTablePrefix(2)), + codec.EncodeBytes([]byte{}, tablecodec.EncodeTablePrefix(3)), + } + + // Verify that the split happened and the accumulation was reset + require.ElementsMatch(t, endKeys, fakeSplitter.expectedEndKeys) + require.Equal(t, 2, fakeSplitter.executedSplitsCount) + require.Empty(t, strategy.accumulated) +} diff --git a/br/pkg/restore/snap_client/BUILD.bazel b/br/pkg/restore/snap_client/BUILD.bazel index e10541b3b4d00..5df612e4750e6 100644 --- a/br/pkg/restore/snap_client/BUILD.bazel +++ b/br/pkg/restore/snap_client/BUILD.bazel @@ -26,7 +26,6 @@ go_library( "//br/pkg/restore/internal/import_client", "//br/pkg/restore/internal/prealloc_db", "//br/pkg/restore/internal/prealloc_table_id", - "//br/pkg/restore/internal/snap_split", "//br/pkg/restore/split", "//br/pkg/restore/utils", "//br/pkg/storage", @@ -66,7 +65,6 @@ go_library( "@org_golang_x_sync//errgroup", "@org_uber_go_multierr//:multierr", "@org_uber_go_zap//:zap", - "@org_uber_go_zap//zapcore", ], ) @@ -84,7 +82,7 @@ go_test( ], embed = [":snap_client"], flaky = True, - shard_count = 18, + shard_count = 19, deps = [ "//br/pkg/errors", "//br/pkg/glue", @@ -93,9 +91,9 @@ go_test( "//br/pkg/mock", "//br/pkg/restore", "//br/pkg/restore/internal/import_client", + "//br/pkg/restore/split", "//br/pkg/restore/utils", "//br/pkg/utils", - "//br/pkg/utiltest", "//pkg/domain", "//pkg/kv", "//pkg/meta/model", diff --git a/br/pkg/restore/snap_client/client.go b/br/pkg/restore/snap_client/client.go index 8e255c98743db..3b5e29c5a1927 100644 --- a/br/pkg/restore/snap_client/client.go +++ b/br/pkg/restore/snap_client/client.go @@ -29,6 +29,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" backuppb "github.com/pingcap/kvproto/pkg/brpb" + "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/log" "github.com/pingcap/tidb/br/pkg/checkpoint" "github.com/pingcap/tidb/br/pkg/checksum" @@ -66,15 +67,16 @@ const ( strictPlacementPolicyMode = "STRICT" ignorePlacementPolicyMode = "IGNORE" - defaultDDLConcurrency = 100 - maxSplitKeysOnce = 10240 + resetSpeedLimitRetryTimes = 3 + defaultDDLConcurrency = 100 + maxSplitKeysOnce = 10240 ) const minBatchDdlSize = 1 type SnapClient struct { + restorer restore.SstRestorer // Tool clients used by SnapClient - fileImporter *SnapFileImporter pdClient pd.Client pdHTTPClient pdhttp.Client @@ -91,8 +93,7 @@ type SnapClient struct { supportPolicy bool workerPool *tidbutil.WorkerPool - noSchema bool - hasSpeedLimited bool + noSchema bool databases map[string]*metautil.Database ddlJobs []*model.Job @@ -167,6 +168,10 @@ func NewRestoreClient( } } +func (rc *SnapClient) GetRestorer() restore.SstRestorer { + return rc.restorer +} + func (rc *SnapClient) closeConn() { // rc.db can be nil in raw kv mode. if rc.db != nil { @@ -182,8 +187,10 @@ func (rc *SnapClient) Close() { // close the connection, and it must be succeed when in SQL mode. rc.closeConn() - if err := rc.fileImporter.Close(); err != nil { - log.Warn("failed to close file improter") + if rc.restorer != nil { + if err := rc.restorer.Close(); err != nil { + log.Warn("failed to close file restorer") + } } log.Info("Restore client closed") @@ -339,18 +346,18 @@ func (rc *SnapClient) InitCheckpoint( } // t1 is the latest time the checkpoint ranges persisted to the external storage. - t1, err := checkpoint.LoadCheckpointDataForSnapshotRestore(ctx, execCtx, func(tableID int64, rangeKey checkpoint.RestoreValueType) { + t1, err := checkpoint.LoadCheckpointDataForSstRestore(ctx, execCtx, checkpoint.SnapshotRestoreCheckpointDatabaseName, func(tableID int64, v checkpoint.RestoreValueType) { checkpointSet, exists := checkpointSetWithTableID[tableID] if !exists { checkpointSet = make(map[string]struct{}) checkpointSetWithTableID[tableID] = checkpointSet } - checkpointSet[rangeKey.RangeKey] = struct{}{} + checkpointSet[v.RangeKey] = struct{}{} }) if err != nil { return checkpointSetWithTableID, nil, errors.Trace(err) } - // t2 is the latest time the checkpoint checksum persisted to the external storage. + checkpointChecksum, t2, err := checkpoint.LoadCheckpointChecksumForRestore(ctx, execCtx) if err != nil { return checkpointSetWithTableID, nil, errors.Trace(err) @@ -372,7 +379,7 @@ func (rc *SnapClient) InitCheckpoint( if config != nil { meta.SchedulersConfig = &pdutil.ClusterConfig{Schedulers: config.Schedulers, ScheduleCfg: config.ScheduleCfg} } - if err := checkpoint.SaveCheckpointMetadataForSnapshotRestore(ctx, rc.db.Session(), meta); err != nil { + if err := checkpoint.SaveCheckpointMetadataForSstRestore(ctx, rc.db.Session(), checkpoint.SnapshotRestoreCheckpointDatabaseName, meta); err != nil { return checkpointSetWithTableID, nil, errors.Trace(err) } } @@ -381,7 +388,7 @@ func (rc *SnapClient) InitCheckpoint( if err != nil { return checkpointSetWithTableID, nil, errors.Trace(err) } - rc.checkpointRunner, err = checkpoint.StartCheckpointRunnerForRestore(ctx, se) + rc.checkpointRunner, err = checkpoint.StartCheckpointRunnerForRestore(ctx, se, checkpoint.SnapshotRestoreCheckpointDatabaseName) return checkpointSetWithTableID, checkpointClusterConfig, errors.Trace(err) } @@ -445,7 +452,30 @@ func (rc *SnapClient) Init(g glue.Glue, store kv.Storage) error { return errors.Trace(err) } -func (rc *SnapClient) initClients(ctx context.Context, backend *backuppb.StorageBackend, isRawKvMode bool, isTxnKvMode bool) error { +func SetSpeedLimitFn(ctx context.Context, stores []*metapb.Store, pool *tidbutil.WorkerPool) func(*SnapFileImporter, uint64) error { + return func(importer *SnapFileImporter, limit uint64) error { + eg, ectx := errgroup.WithContext(ctx) + for _, store := range stores { + if err := ectx.Err(); err != nil { + return errors.Trace(err) + } + + finalStore := store + pool.ApplyOnErrorGroup(eg, + func() error { + err := importer.SetDownloadSpeedLimit(ectx, finalStore.GetId(), limit) + if err != nil { + return errors.Trace(err) + } + return nil + }) + } + return eg.Wait() + } +} + +func (rc *SnapClient) initClients(ctx context.Context, backend *backuppb.StorageBackend, isRawKvMode bool, isTxnKvMode bool, + RawStartKey, RawEndKey []byte) error { stores, err := conn.GetAllTiKVStoresWithRetry(ctx, rc.pdClient, util.SkipTiFlash) if err != nil { return errors.Annotate(err, "failed to get stores") @@ -453,27 +483,89 @@ func (rc *SnapClient) initClients(ctx context.Context, backend *backuppb.Storage rc.storeCount = len(stores) rc.updateConcurrency() + var createCallBacks []func(*SnapFileImporter) error + var closeCallBacks []func(*SnapFileImporter) error var splitClientOpts []split.ClientOptionalParameter if isRawKvMode { splitClientOpts = append(splitClientOpts, split.WithRawKV()) + createCallBacks = append(createCallBacks, func(importer *SnapFileImporter) error { + return importer.SetRawRange(RawStartKey, RawEndKey) + }) } + createCallBacks = append(createCallBacks, func(importer *SnapFileImporter) error { + return importer.CheckMultiIngestSupport(ctx, stores) + }) + if rc.rateLimit != 0 { + setFn := SetSpeedLimitFn(ctx, stores, rc.workerPool) + createCallBacks = append(createCallBacks, func(importer *SnapFileImporter) error { + return setFn(importer, rc.rateLimit) + }) + closeCallBacks = append(closeCallBacks, func(importer *SnapFileImporter) error { + // In future we may need a mechanism to set speed limit in ttl. like what we do in switchmode. TODO + var resetErr error + for retry := 0; retry < resetSpeedLimitRetryTimes; retry++ { + resetErr = setFn(importer, 0) + if resetErr != nil { + log.Warn("failed to reset speed limit, retry it", + zap.Int("retry time", retry), logutil.ShortError(resetErr)) + time.Sleep(time.Duration(retry+3) * time.Second) + continue + } + break + } + if resetErr != nil { + log.Error("failed to reset speed limit, please reset it manually", zap.Error(resetErr)) + } + return resetErr + }) + } + metaClient := split.NewClient(rc.pdClient, rc.pdHTTPClient, rc.tlsConf, maxSplitKeysOnce, rc.storeCount+1, splitClientOpts...) importCli := importclient.NewImportClient(metaClient, rc.tlsConf, rc.keepaliveConf) - rc.fileImporter, err = NewSnapFileImporter(ctx, metaClient, importCli, backend, isRawKvMode, isTxnKvMode, stores, rc.rewriteMode, rc.concurrencyPerStore) - return errors.Trace(err) + + var fileImporter *SnapFileImporter + opt := NewSnapFileImporterOptions( + rc.cipher, metaClient, importCli, backend, + rc.rewriteMode, stores, rc.concurrencyPerStore, createCallBacks, closeCallBacks, + ) + if isRawKvMode || isTxnKvMode { + mode := Raw + if isTxnKvMode { + mode = Txn + } + // for raw/txn mode. use backupMeta.ApiVersion to create fileImporter + fileImporter, err = NewSnapFileImporter(ctx, rc.backupMeta.ApiVersion, mode, opt) + if err != nil { + return errors.Trace(err) + } + // Raw/Txn restore are not support checkpoint for now + rc.restorer = restore.NewSimpleSstRestorer(ctx, fileImporter, rc.workerPool, nil) + } else { + // or create a fileImporter with the cluster API version + fileImporter, err = NewSnapFileImporter( + ctx, rc.dom.Store().GetCodec().GetAPIVersion(), TiDBFull, opt) + if err != nil { + return errors.Trace(err) + } + rc.restorer = restore.NewMultiTablesRestorer(ctx, fileImporter, rc.workerPool, rc.checkpointRunner) + } + return nil } func (rc *SnapClient) needLoadSchemas(backupMeta *backuppb.BackupMeta) bool { return !(backupMeta.IsRawKv || backupMeta.IsTxnKv) } -// InitBackupMeta loads schemas from BackupMeta to initialize RestoreClient. -func (rc *SnapClient) InitBackupMeta( +// LoadSchemaIfNeededAndInitClient loads schemas from BackupMeta to initialize RestoreClient. +func (rc *SnapClient) LoadSchemaIfNeededAndInitClient( c context.Context, backupMeta *backuppb.BackupMeta, backend *backuppb.StorageBackend, reader *metautil.MetaReader, - loadStats bool) error { + loadStats bool, + RawStartKey []byte, + RawEndKey []byte, +) error { if rc.needLoadSchemas(backupMeta) { databases, err := metautil.LoadBackupTables(c, reader, loadStats) if err != nil { @@ -498,7 +590,7 @@ func (rc *SnapClient) InitBackupMeta( rc.backupMeta = backupMeta log.Info("load backupmeta", zap.Int("databases", len(rc.databases)), zap.Int("jobs", len(rc.ddlJobs))) - return rc.initClients(c, backend, backupMeta.IsRawKv, backupMeta.IsTxnKv) + return rc.initClients(c, backend, backupMeta.IsRawKv, backupMeta.IsTxnKv, RawStartKey, RawEndKey) } // IsRawKvMode checks whether the backup data is in raw kv format, in which case transactional recover is forbidden. @@ -568,7 +660,7 @@ func (rc *SnapClient) ResetTS(ctx context.Context, pdCtrl *pdutil.PdController) log.Info("reset pd timestamp", zap.Uint64("ts", restoreTS)) return utils.WithRetry(ctx, func() error { return pdCtrl.ResetTS(ctx, restoreTS) - }, utils.NewPDReqBackoffer()) + }, utils.NewAggressivePDBackoffStrategy()) } // GetDatabases returns all databases. @@ -948,48 +1040,7 @@ func (rc *SnapClient) ExecDDLs(ctx context.Context, ddlJobs []*model.Job) error return nil } -func (rc *SnapClient) ResetSpeedLimit(ctx context.Context) error { - rc.hasSpeedLimited = false - err := rc.setSpeedLimit(ctx, 0) - if err != nil { - return errors.Trace(err) - } - return nil -} - -func (rc *SnapClient) setSpeedLimit(ctx context.Context, rateLimit uint64) error { - if !rc.hasSpeedLimited { - stores, err := util.GetAllTiKVStores(ctx, rc.pdClient, util.SkipTiFlash) - if err != nil { - return errors.Trace(err) - } - - eg, ectx := errgroup.WithContext(ctx) - for _, store := range stores { - if err := ectx.Err(); err != nil { - return errors.Trace(err) - } - - finalStore := store - rc.workerPool.ApplyOnErrorGroup(eg, - func() error { - err := rc.fileImporter.SetDownloadSpeedLimit(ectx, finalStore.GetId(), rateLimit) - if err != nil { - return errors.Trace(err) - } - return nil - }) - } - - if err := eg.Wait(); err != nil { - return errors.Trace(err) - } - rc.hasSpeedLimited = true - } - return nil -} - -func (rc *SnapClient) execChecksum( +func (rc *SnapClient) execAndValidateChecksum( ctx context.Context, tbl *CreatedTable, kvClient kv.Client, @@ -1000,13 +1051,14 @@ func (rc *SnapClient) execChecksum( zap.String("table", tbl.OldTable.Info.Name.O), ) - if tbl.OldTable.NoChecksum() { + expectedChecksumStats := metautil.CalculateChecksumStatsOnFiles(tbl.OldTable.Files) + if !expectedChecksumStats.ChecksumExists() { logger.Warn("table has no checksum, skipping checksum") return nil } if span := opentracing.SpanFromContext(ctx); span != nil && span.Tracer() != nil { - span1 := span.Tracer().StartSpan("Client.execChecksum", opentracing.ChildOf(span.Context())) + span1 := span.Tracer().StartSpan("Client.execAndValidateChecksum", opentracing.ChildOf(span.Context())) defer span1.Finish() ctx = opentracing.ContextWithSpan(ctx, span1) } @@ -1046,71 +1098,23 @@ func (rc *SnapClient) execChecksum( } } } - table := tbl.OldTable - if item.Crc64xor != table.Crc64Xor || - item.TotalKvs != table.TotalKvs || - item.TotalBytes != table.TotalBytes { + checksumMatch := item.Crc64xor == expectedChecksumStats.Crc64Xor && + item.TotalKvs == expectedChecksumStats.TotalKvs && + item.TotalBytes == expectedChecksumStats.TotalBytes + failpoint.Inject("full-restore-validate-checksum", func(_ failpoint.Value) { + checksumMatch = false + }) + if !checksumMatch { logger.Error("failed in validate checksum", - zap.Uint64("origin tidb crc64", table.Crc64Xor), + zap.Uint64("expected tidb crc64", expectedChecksumStats.Crc64Xor), zap.Uint64("calculated crc64", item.Crc64xor), - zap.Uint64("origin tidb total kvs", table.TotalKvs), + zap.Uint64("expected tidb total kvs", expectedChecksumStats.TotalKvs), zap.Uint64("calculated total kvs", item.TotalKvs), - zap.Uint64("origin tidb total bytes", table.TotalBytes), + zap.Uint64("expected tidb total bytes", expectedChecksumStats.TotalBytes), zap.Uint64("calculated total bytes", item.TotalBytes), ) return errors.Annotate(berrors.ErrRestoreChecksumMismatch, "failed to validate checksum") } - logger.Info("success in validate checksum") - return nil -} - -func (rc *SnapClient) WaitForFilesRestored(ctx context.Context, files []*backuppb.File, updateCh glue.Progress) error { - errCh := make(chan error, len(files)) - eg, ectx := errgroup.WithContext(ctx) - defer close(errCh) - - for _, file := range files { - fileReplica := file - rc.workerPool.ApplyOnErrorGroup(eg, - func() error { - defer func() { - log.Info("import sst files done", logutil.Files(files)) - updateCh.Inc() - }() - return rc.fileImporter.ImportSSTFiles(ectx, []TableIDWithFiles{{Files: []*backuppb.File{fileReplica}, RewriteRules: restoreutils.EmptyRewriteRule()}}, rc.cipher, rc.backupMeta.ApiVersion) - }) - } - if err := eg.Wait(); err != nil { - return errors.Trace(err) - } - return nil -} - -// RestoreRaw tries to restore raw keys in the specified range. -func (rc *SnapClient) RestoreRaw( - ctx context.Context, startKey []byte, endKey []byte, files []*backuppb.File, updateCh glue.Progress, -) error { - start := time.Now() - defer func() { - elapsed := time.Since(start) - log.Info("Restore Raw", - logutil.Key("startKey", startKey), - logutil.Key("endKey", endKey), - zap.Duration("take", elapsed)) - }() - err := rc.fileImporter.SetRawRange(startKey, endKey) - if err != nil { - return errors.Trace(err) - } - - err = rc.WaitForFilesRestored(ctx, files, updateCh) - if err != nil { - return errors.Trace(err) - } - log.Info( - "finish to restore raw range", - logutil.Key("startKey", startKey), - logutil.Key("endKey", endKey), - ) + logger.Info("success in validating checksum") return nil } diff --git a/br/pkg/restore/snap_client/client_test.go b/br/pkg/restore/snap_client/client_test.go index 380e4421b68fd..4b96877949e23 100644 --- a/br/pkg/restore/snap_client/client_test.go +++ b/br/pkg/restore/snap_client/client_test.go @@ -34,7 +34,7 @@ import ( "github.com/pingcap/tidb/br/pkg/mock" importclient "github.com/pingcap/tidb/br/pkg/restore/internal/import_client" snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" - "github.com/pingcap/tidb/br/pkg/utiltest" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -48,7 +48,7 @@ var mc *mock.Cluster func TestCreateTables(t *testing.T) { m := mc g := gluetidb.New() - client := snapclient.NewRestoreClient(m.PDClient, m.PDHTTPCli, nil, utiltest.DefaultTestKeepaliveCfg) + client := snapclient.NewRestoreClient(m.PDClient, m.PDHTTPCli, nil, split.DefaultTestKeepaliveCfg) err := client.Init(g, m.Storage) require.NoError(t, err) @@ -119,7 +119,7 @@ func TestNeedCheckTargetClusterFresh(t *testing.T) { defer cluster.Stop() g := gluetidb.New() - client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, utiltest.DefaultTestKeepaliveCfg) + client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, split.DefaultTestKeepaliveCfg) err := client.Init(g, cluster.Storage) require.NoError(t, err) @@ -149,7 +149,7 @@ func TestCheckTargetClusterFresh(t *testing.T) { defer cluster.Stop() g := gluetidb.New() - client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, utiltest.DefaultTestKeepaliveCfg) + client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, split.DefaultTestKeepaliveCfg) err := client.Init(g, cluster.Storage) require.NoError(t, err) @@ -166,7 +166,7 @@ func TestCheckTargetClusterFreshWithTable(t *testing.T) { defer cluster.Stop() g := gluetidb.New() - client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, utiltest.DefaultTestKeepaliveCfg) + client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, split.DefaultTestKeepaliveCfg) err := client.Init(g, cluster.Storage) require.NoError(t, err) @@ -201,7 +201,7 @@ func TestCheckTargetClusterFreshWithTable(t *testing.T) { func TestInitFullClusterRestore(t *testing.T) { cluster := mc g := gluetidb.New() - client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, utiltest.DefaultTestKeepaliveCfg) + client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, split.DefaultTestKeepaliveCfg) err := client.Init(g, cluster.Storage) require.NoError(t, err) @@ -309,12 +309,12 @@ func TestSetSpeedLimit(t *testing.T) { // 1. The cost of concurrent communication is expected to be less than the cost of serial communication. client := snapclient.NewRestoreClient( - utiltest.NewFakePDClient(mockStores, false, nil), nil, nil, utiltest.DefaultTestKeepaliveCfg) + split.NewFakePDClient(mockStores, false, nil), nil, nil, split.DefaultTestKeepaliveCfg) ctx := context.Background() recordStores = NewRecordStores() start := time.Now() - err := snapclient.MockCallSetSpeedLimit(ctx, FakeImporterClient{}, client, 10) + err := snapclient.MockCallSetSpeedLimit(ctx, mockStores, FakeImporterClient{}, client, 10) cost := time.Since(start) require.NoError(t, err) @@ -334,10 +334,10 @@ func TestSetSpeedLimit(t *testing.T) { recordStores = NewRecordStores() mockStores[5].Id = SET_SPEED_LIMIT_ERROR // setting a fault store client = snapclient.NewRestoreClient( - utiltest.NewFakePDClient(mockStores, false, nil), nil, nil, utiltest.DefaultTestKeepaliveCfg) + split.NewFakePDClient(mockStores, false, nil), nil, nil, split.DefaultTestKeepaliveCfg) // Concurrency needs to be less than the number of stores - err = snapclient.MockCallSetSpeedLimit(ctx, FakeImporterClient{}, client, 2) + err = snapclient.MockCallSetSpeedLimit(ctx, mockStores, FakeImporterClient{}, client, 2) require.Error(t, err) t.Log(err) diff --git a/br/pkg/restore/snap_client/export_test.go b/br/pkg/restore/snap_client/export_test.go index 22b8868217933..09a47b843e279 100644 --- a/br/pkg/restore/snap_client/export_test.go +++ b/br/pkg/restore/snap_client/export_test.go @@ -20,7 +20,10 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/import_sstpb" + "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/br/pkg/metautil" + "github.com/pingcap/tidb/br/pkg/restore" importclient "github.com/pingcap/tidb/br/pkg/restore/internal/import_client" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/pkg/domain" @@ -46,15 +49,26 @@ func MockClient(dbs map[string]*metautil.Database) *SnapClient { } // Mock the call of setSpeedLimit function -func MockCallSetSpeedLimit(ctx context.Context, fakeImportClient importclient.ImporterClient, rc *SnapClient, concurrency uint) (err error) { +func MockCallSetSpeedLimit(ctx context.Context, stores []*metapb.Store, fakeImportClient importclient.ImporterClient, rc *SnapClient, concurrency uint) (err error) { rc.SetRateLimit(42) rc.workerPool = tidbutil.NewWorkerPool(128, "set-speed-limit") - rc.hasSpeedLimited = false - rc.fileImporter, err = NewSnapFileImporter(ctx, nil, fakeImportClient, nil, false, false, nil, rc.rewriteMode, 128) + setFn := SetSpeedLimitFn(ctx, stores, rc.workerPool) + var createCallBacks []func(*SnapFileImporter) error + var closeCallBacks []func(*SnapFileImporter) error + + createCallBacks = append(createCallBacks, func(importer *SnapFileImporter) error { + return setFn(importer, rc.rateLimit) + }) + closeCallBacks = append(createCallBacks, func(importer *SnapFileImporter) error { + return setFn(importer, 0) + }) + opt := NewSnapFileImporterOptions(nil, nil, fakeImportClient, nil, rc.rewriteMode, nil, 128, createCallBacks, closeCallBacks) + fileImporter, err := NewSnapFileImporter(ctx, kvrpcpb.APIVersion(0), TiDBFull, opt) + rc.restorer = restore.NewSimpleSstRestorer(ctx, fileImporter, rc.workerPool, nil) if err != nil { return errors.Trace(err) } - return rc.setSpeedLimit(ctx, rc.rateLimit) + return nil } // CreateTables creates multiple tables, and returns their rewrite rules. diff --git a/br/pkg/restore/snap_client/import.go b/br/pkg/restore/snap_client/import.go index a335f651977d7..3db134fddf1e0 100644 --- a/br/pkg/restore/snap_client/import.go +++ b/br/pkg/restore/snap_client/import.go @@ -34,6 +34,7 @@ import ( "github.com/pingcap/log" berrors "github.com/pingcap/tidb/br/pkg/errors" "github.com/pingcap/tidb/br/pkg/logutil" + "github.com/pingcap/tidb/br/pkg/restore" importclient "github.com/pingcap/tidb/br/pkg/restore/internal/import_client" "github.com/pingcap/tidb/br/pkg/restore/split" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" @@ -52,9 +53,10 @@ import ( type KvMode int const ( - TiDB KvMode = iota + TiDBFull KvMode = iota Raw Txn + TiDBCompcated ) const ( @@ -129,6 +131,9 @@ func newStoreTokenChannelMap(stores []*metapb.Store, bufferSize uint) *storeToke } type SnapFileImporter struct { + cipher *backuppb.CipherInfo + apiVersion kvrpcpb.APIVersion + metaClient split.SplitClient importClient importclient.ImporterClient backend *backuppb.StorageBackend @@ -136,6 +141,8 @@ type SnapFileImporter struct { downloadTokensMap *storeTokenChannelMap ingestTokensMap *storeTokenChannelMap + closeCallbacks []func(*SnapFileImporter) error + concurrencyPerStore uint kvMode KvMode @@ -147,43 +154,95 @@ type SnapFileImporter struct { cond *sync.Cond } -func NewSnapFileImporter( - ctx context.Context, +type SnapFileImporterOptions struct { + cipher *backuppb.CipherInfo + metaClient split.SplitClient + importClient importclient.ImporterClient + backend *backuppb.StorageBackend + rewriteMode RewriteMode + tikvStores []*metapb.Store + + concurrencyPerStore uint + createCallBacks []func(*SnapFileImporter) error + closeCallbacks []func(*SnapFileImporter) error +} + +func NewSnapFileImporterOptions( + cipher *backuppb.CipherInfo, metaClient split.SplitClient, importClient importclient.ImporterClient, backend *backuppb.StorageBackend, - isRawKvMode bool, - isTxnKvMode bool, - tikvStores []*metapb.Store, rewriteMode RewriteMode, + tikvStores []*metapb.Store, concurrencyPerStore uint, -) (*SnapFileImporter, error) { - kvMode := TiDB - if isRawKvMode { - kvMode = Raw - } - if isTxnKvMode { - kvMode = Txn - } - - fileImporter := &SnapFileImporter{ + createCallbacks []func(*SnapFileImporter) error, + closeCallbacks []func(*SnapFileImporter) error, +) *SnapFileImporterOptions { + return &SnapFileImporterOptions{ + cipher: cipher, metaClient: metaClient, + importClient: importClient, backend: backend, + rewriteMode: rewriteMode, + tikvStores: tikvStores, + concurrencyPerStore: concurrencyPerStore, + createCallBacks: createCallbacks, + closeCallbacks: closeCallbacks, + } +} + +func NewSnapFileImporterOptionsForTest( + splitClient split.SplitClient, + importClient importclient.ImporterClient, + tikvStores []*metapb.Store, + rewriteMode RewriteMode, + concurrencyPerStore uint, +) *SnapFileImporterOptions { + return &SnapFileImporterOptions{ + metaClient: splitClient, importClient: importClient, - downloadTokensMap: newStoreTokenChannelMap(tikvStores, concurrencyPerStore), - ingestTokensMap: newStoreTokenChannelMap(tikvStores, concurrencyPerStore), - kvMode: kvMode, + tikvStores: tikvStores, rewriteMode: rewriteMode, - cacheKey: fmt.Sprintf("BR-%s-%d", time.Now().Format("20060102150405"), rand.Int63()), concurrencyPerStore: concurrencyPerStore, + } +} + +func NewSnapFileImporter( + ctx context.Context, + apiVersion kvrpcpb.APIVersion, + kvMode KvMode, + options *SnapFileImporterOptions, +) (*SnapFileImporter, error) { + if options.concurrencyPerStore == 0 { + return nil, errors.New("concurrencyPerStore must be greater than 0") + } + fileImporter := &SnapFileImporter{ + apiVersion: apiVersion, + kvMode: kvMode, + + cipher: options.cipher, + metaClient: options.metaClient, + backend: options.backend, + importClient: options.importClient, + downloadTokensMap: newStoreTokenChannelMap(options.tikvStores, options.concurrencyPerStore), + ingestTokensMap: newStoreTokenChannelMap(options.tikvStores, options.concurrencyPerStore), + rewriteMode: options.rewriteMode, + cacheKey: fmt.Sprintf("BR-%s-%d", time.Now().Format("20060102150405"), rand.Int63()), + concurrencyPerStore: options.concurrencyPerStore, cond: sync.NewCond(new(sync.Mutex)), + closeCallbacks: options.closeCallbacks, } - err := fileImporter.checkMultiIngestSupport(ctx, tikvStores) - return fileImporter, errors.Trace(err) + for _, f := range options.createCallBacks { + err := f(fileImporter) + if err != nil { + return nil, errors.Trace(err) + } + } + return fileImporter, nil } -func (importer *SnapFileImporter) WaitUntilUnblock() { +func (importer *SnapFileImporter) PauseForBackpressure() { importer.cond.L.Lock() for importer.ShouldBlock() { // wait for download worker notified @@ -209,6 +268,12 @@ func (importer *SnapFileImporter) releaseToken(tokenCh chan struct{}) { func (importer *SnapFileImporter) Close() error { if importer != nil && importer.importClient != nil { + for _, f := range importer.closeCallbacks { + err := f(importer) + if err != nil { + log.Warn("failed on close snap importer", zap.Error(err)) + } + } return importer.importClient.CloseGrpcClient() } return nil @@ -222,8 +287,8 @@ func (importer *SnapFileImporter) SetDownloadSpeedLimit(ctx context.Context, sto return errors.Trace(err) } -// checkMultiIngestSupport checks whether all stores support multi-ingest -func (importer *SnapFileImporter) checkMultiIngestSupport(ctx context.Context, tikvStores []*metapb.Store) error { +// CheckMultiIngestSupport checks whether all stores support multi-ingest +func (importer *SnapFileImporter) CheckMultiIngestSupport(ctx context.Context, tikvStores []*metapb.Store) error { storeIDs := make([]uint64, 0, len(tikvStores)) for _, s := range tikvStores { if s.State != metapb.StoreState_Up { @@ -274,7 +339,7 @@ func getKeyRangeByMode(mode KvMode) func(f *backuppb.File, rules *restoreutils.R // getKeyRangeForFiles gets the maximum range on files. func (importer *SnapFileImporter) getKeyRangeForFiles( - filesGroup []TableIDWithFiles, + filesGroup []restore.BackupFileSet, ) ([]byte, []byte, error) { var ( startKey, endKey []byte @@ -283,7 +348,7 @@ func (importer *SnapFileImporter) getKeyRangeForFiles( ) getRangeFn := getKeyRangeByMode(importer.kvMode) for _, files := range filesGroup { - for _, f := range files.Files { + for _, f := range files.SSTFiles { start, end, err = getRangeFn(f, files.RewriteRules) if err != nil { return nil, nil, errors.Trace(err) @@ -300,17 +365,15 @@ func (importer *SnapFileImporter) getKeyRangeForFiles( return startKey, endKey, nil } -// ImportSSTFiles tries to import a file. +// Import tries to import a file. // Assert 1: All rewrite rules must contain raw key prefix. // Assert 2: len(filesGroup[any].Files) > 0. -func (importer *SnapFileImporter) ImportSSTFiles( +func (importer *SnapFileImporter) Import( ctx context.Context, - filesGroup []TableIDWithFiles, - cipher *backuppb.CipherInfo, - apiVersion kvrpcpb.APIVersion, + backupFileSets ...restore.BackupFileSet, ) error { // Rewrite the start key and end key of file to scan regions - startKey, endKey, err := importer.getKeyRangeForFiles(filesGroup) + startKey, endKey, err := importer.getKeyRangeForFiles(backupFileSets) if err != nil { return errors.Trace(err) } @@ -329,7 +392,7 @@ func (importer *SnapFileImporter) ImportSSTFiles( for _, regionInfo := range regionInfos { info := regionInfo // Try to download file. - downloadMetas, errDownload := importer.download(ctx, info, filesGroup, cipher, apiVersion) + downloadMetas, errDownload := importer.download(ctx, info, backupFileSets, importer.cipher, importer.apiVersion) if errDownload != nil { log.Warn("download file failed, retry later", logutil.Region(info.Region), @@ -353,13 +416,13 @@ func (importer *SnapFileImporter) ImportSSTFiles( log.Debug("ingest file done", logutil.Key("start", startKey), logutil.Key("end", endKey), zap.Stringer("take", time.Since(start))) } return nil - }, utils.NewImportSSTBackoffer()) + }, utils.NewImportSSTBackoffStrategy()) if err != nil { - log.Error("import sst file failed after retry, stop the whole progress", zapFilesGroup(filesGroup), zap.Error(err)) + log.Error("import sst file failed after retry, stop the whole progress", restore.ZapBatchBackupFileSet(backupFileSets), zap.Error(err)) return errors.Trace(err) } - for _, files := range filesGroup { - for _, f := range files.Files { + for _, files := range backupFileSets { + for _, f := range files.SSTFiles { summary.CollectSuccessUnit(summary.TotalKV, 1, f.TotalKvs) summary.CollectSuccessUnit(summary.TotalBytes, 1, f.TotalBytes) } @@ -452,7 +515,7 @@ func getSSTMetaFromFile( func (importer *SnapFileImporter) download( ctx context.Context, regionInfo *split.RegionInfo, - filesGroup []TableIDWithFiles, + filesGroup []restore.BackupFileSet, cipher *backuppb.CipherInfo, apiVersion kvrpcpb.APIVersion, ) ([]*import_sstpb.SSTMeta, error) { @@ -476,7 +539,7 @@ func (importer *SnapFileImporter) download( e = status.Error(codes.Unavailable, "the connection to TiKV has been cut by a neko, meow :3") }) if isDecryptSstErr(e) { - log.Info("fail to decrypt when download sst, try again with no-crypt", zapFilesGroup(filesGroup)) + log.Info("fail to decrypt when download sst, try again with no-crypt") if importer.kvMode == Raw || importer.kvMode == Txn { downloadMetas, e = importer.downloadRawKVSST(ctx, regionInfo, filesGroup, nil, apiVersion) } else { @@ -488,7 +551,7 @@ func (importer *SnapFileImporter) download( } return nil - }, utils.NewDownloadSSTBackoffer()) + }, utils.NewDownloadSSTBackoffStrategy()) return downloadMetas, errDownload } @@ -558,7 +621,7 @@ func (importer *SnapFileImporter) buildDownloadRequest( func (importer *SnapFileImporter) downloadSST( ctx context.Context, regionInfo *split.RegionInfo, - filesGroup []TableIDWithFiles, + filesGroup []restore.BackupFileSet, cipher *backuppb.CipherInfo, apiVersion kvrpcpb.APIVersion, ) ([]*import_sstpb.SSTMeta, error) { @@ -567,7 +630,7 @@ func (importer *SnapFileImporter) downloadSST( resultMetasMap := make(map[string]*import_sstpb.SSTMeta) downloadReqsMap := make(map[string]*import_sstpb.DownloadRequest) for _, files := range filesGroup { - for _, file := range files.Files { + for _, file := range files.SSTFiles { req, sstMeta, err := importer.buildDownloadRequest(file, files.RewriteRules, regionInfo, cipher) if err != nil { return nil, errors.Trace(err) @@ -598,7 +661,7 @@ func (importer *SnapFileImporter) downloadSST( for fileName, req := range downloadReqsMap { var err error var resp *import_sstpb.DownloadResponse - resp, err = utils.WithRetryV2(ectx, utils.NewDownloadSSTBackoffer(), func(ctx context.Context) (*import_sstpb.DownloadResponse, error) { + resp, err = utils.WithRetryV2(ectx, utils.NewDownloadSSTBackoffStrategy(), func(ctx context.Context) (*import_sstpb.DownloadResponse, error) { dctx, cancel := context.WithTimeout(ctx, gRPCTimeOut) defer cancel() return importer.importClient.DownloadSST(dctx, peer.GetStoreId(), req) @@ -650,13 +713,13 @@ func (importer *SnapFileImporter) downloadSST( func (importer *SnapFileImporter) downloadRawKVSST( ctx context.Context, regionInfo *split.RegionInfo, - filesGroup []TableIDWithFiles, + filesGroup []restore.BackupFileSet, cipher *backuppb.CipherInfo, apiVersion kvrpcpb.APIVersion, ) ([]*import_sstpb.SSTMeta, error) { downloadMetas := make([]*import_sstpb.SSTMeta, 0, len(filesGroup)*2+1) for _, files := range filesGroup { - for _, file := range files.Files { + for _, file := range files.SSTFiles { // Empty rule var rule import_sstpb.RewriteRule sstMeta, err := getSSTMetaFromFile(file, regionInfo.Region, &rule, RewriteModeLegacy) diff --git a/br/pkg/restore/snap_client/import_test.go b/br/pkg/restore/snap_client/import_test.go index 762beb3784d22..23b7fd8fc81a0 100644 --- a/br/pkg/restore/snap_client/import_test.go +++ b/br/pkg/restore/snap_client/import_test.go @@ -22,10 +22,11 @@ import ( "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/kvproto/pkg/metapb" + "github.com/pingcap/tidb/br/pkg/restore" importclient "github.com/pingcap/tidb/br/pkg/restore/internal/import_client" snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" + "github.com/pingcap/tidb/br/pkg/restore/split" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" - "github.com/pingcap/tidb/br/pkg/utiltest" "github.com/pingcap/tidb/pkg/util/codec" "github.com/stretchr/testify/require" ) @@ -74,7 +75,7 @@ func TestGetKeyRangeByMode(t *testing.T) { require.Equal(t, []byte(""), end) // normal kv: the keys must be encoded. - testFn := snapclient.GetKeyRangeByMode(snapclient.TiDB) + testFn := snapclient.GetKeyRangeByMode(snapclient.TiDBFull) start, end, err = testFn(file, rule) require.NoError(t, err) require.Equal(t, codec.EncodeBytes(nil, []byte("t2a")), start) @@ -154,14 +155,22 @@ func (client *fakeImporterClient) MultiIngest( return &import_sstpb.IngestResponse{}, nil } +func TestUnproperConfigSnapImporter(t *testing.T) { + ctx := context.Background() + opt := snapclient.NewSnapFileImporterOptionsForTest(nil, nil, nil, snapclient.RewriteModeKeyspace, 0) + _, err := snapclient.NewSnapFileImporter(ctx, kvrpcpb.APIVersion_V1, snapclient.TiDBFull, opt) + require.Error(t, err) +} + func TestSnapImporter(t *testing.T) { ctx := context.Background() - splitClient := utiltest.NewFakeSplitClient() + splitClient := split.NewFakeSplitClient() for _, region := range generateRegions() { splitClient.AppendPdRegion(region) } importClient := newFakeImporterClient() - importer, err := snapclient.NewSnapFileImporter(ctx, splitClient, importClient, nil, false, false, generateStores(), snapclient.RewriteModeKeyspace, 10) + opt := snapclient.NewSnapFileImporterOptionsForTest(splitClient, importClient, generateStores(), snapclient.RewriteModeKeyspace, 10) + importer, err := snapclient.NewSnapFileImporter(ctx, kvrpcpb.APIVersion_V1, snapclient.TiDBFull, opt) require.NoError(t, err) err = importer.SetDownloadSpeedLimit(ctx, 1, 5) require.NoError(t, err) @@ -170,8 +179,8 @@ func TestSnapImporter(t *testing.T) { require.Error(t, err) files, rules := generateFiles() for _, file := range files { - importer.WaitUntilUnblock() - err = importer.ImportSSTFiles(ctx, []snapclient.TableIDWithFiles{{Files: []*backuppb.File{file}, RewriteRules: rules}}, nil, kvrpcpb.APIVersion_V1) + importer.PauseForBackpressure() + err = importer.Import(ctx, restore.BackupFileSet{SSTFiles: []*backuppb.File{file}, RewriteRules: rules}) require.NoError(t, err) } err = importer.Close() @@ -180,19 +189,20 @@ func TestSnapImporter(t *testing.T) { func TestSnapImporterRaw(t *testing.T) { ctx := context.Background() - splitClient := utiltest.NewFakeSplitClient() + splitClient := split.NewFakeSplitClient() for _, region := range generateRegions() { splitClient.AppendPdRegion(region) } importClient := newFakeImporterClient() - importer, err := snapclient.NewSnapFileImporter(ctx, splitClient, importClient, nil, true, false, generateStores(), snapclient.RewriteModeKeyspace, 10) + opt := snapclient.NewSnapFileImporterOptionsForTest(splitClient, importClient, generateStores(), snapclient.RewriteModeKeyspace, 10) + importer, err := snapclient.NewSnapFileImporter(ctx, kvrpcpb.APIVersion_V1, snapclient.Raw, opt) require.NoError(t, err) err = importer.SetRawRange([]byte(""), []byte("")) require.NoError(t, err) files, rules := generateFiles() for _, file := range files { - importer.WaitUntilUnblock() - err = importer.ImportSSTFiles(ctx, []snapclient.TableIDWithFiles{{Files: []*backuppb.File{file}, RewriteRules: rules}}, nil, kvrpcpb.APIVersion_V1) + importer.PauseForBackpressure() + err = importer.Import(ctx, restore.BackupFileSet{SSTFiles: []*backuppb.File{file}, RewriteRules: rules}) require.NoError(t, err) } err = importer.Close() diff --git a/br/pkg/restore/snap_client/pipeline_items.go b/br/pkg/restore/snap_client/pipeline_items.go index f76417a636c4a..8f1b7c129202f 100644 --- a/br/pkg/restore/snap_client/pipeline_items.go +++ b/br/pkg/restore/snap_client/pipeline_items.go @@ -19,10 +19,8 @@ import ( "time" "github.com/pingcap/errors" - backuppb "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/log" "github.com/pingcap/tidb/br/pkg/glue" - "github.com/pingcap/tidb/br/pkg/logutil" "github.com/pingcap/tidb/br/pkg/metautil" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/br/pkg/storage" @@ -34,7 +32,6 @@ import ( "github.com/pingcap/tidb/pkg/util/engine" pdhttp "github.com/tikv/pd/client/http" "go.uber.org/zap" - "go.uber.org/zap/zapcore" "golang.org/x/sync/errgroup" ) @@ -58,50 +55,6 @@ type PhysicalTable struct { RewriteRules *restoreutils.RewriteRules } -type TableIDWithFiles struct { - TableID int64 - - Files []*backuppb.File - // RewriteRules is the rewrite rules for the specify table. - // because these rules belongs to the *one table*. - // we can hold them here. - RewriteRules *restoreutils.RewriteRules -} - -type zapFilesGroupMarshaler []TableIDWithFiles - -// MarshalLogObjectForFiles is an internal util function to zap something having `Files` field. -func MarshalLogObjectForFiles(files []TableIDWithFiles, encoder zapcore.ObjectEncoder) error { - return zapFilesGroupMarshaler(files).MarshalLogObject(encoder) -} - -func (fgs zapFilesGroupMarshaler) MarshalLogObject(encoder zapcore.ObjectEncoder) error { - elements := make([]string, 0) - total := 0 - totalKVs := uint64(0) - totalBytes := uint64(0) - totalSize := uint64(0) - for _, fg := range fgs { - for _, f := range fg.Files { - total += 1 - elements = append(elements, f.GetName()) - totalKVs += f.GetTotalKvs() - totalBytes += f.GetTotalBytes() - totalSize += f.GetSize_() - } - } - encoder.AddInt("total", total) - _ = encoder.AddArray("files", logutil.AbbreviatedArrayMarshaler(elements)) - encoder.AddUint64("totalKVs", totalKVs) - encoder.AddUint64("totalBytes", totalBytes) - encoder.AddUint64("totalSize", totalSize) - return nil -} - -func zapFilesGroup(filesGroup []TableIDWithFiles) zap.Field { - return zap.Object("files", zapFilesGroupMarshaler(filesGroup)) -} - func defaultOutputTableChan() chan *CreatedTable { return make(chan *CreatedTable, defaultChannelSize) } @@ -166,7 +119,7 @@ func (rc *SnapClient) GoValidateChecksum( elapsed := time.Since(start) summary.CollectSuccessUnit("table checksum", 1, elapsed) }() - err := rc.execChecksum(c, tbl, kvClient, concurrency) + err := rc.execAndValidateChecksum(c, tbl, kvClient, concurrency) if err != nil { return errors.Trace(err) } diff --git a/br/pkg/restore/snap_client/placement_rule_manager_test.go b/br/pkg/restore/snap_client/placement_rule_manager_test.go index c078ebd6e48c4..1e60aaa5b93d1 100644 --- a/br/pkg/restore/snap_client/placement_rule_manager_test.go +++ b/br/pkg/restore/snap_client/placement_rule_manager_test.go @@ -24,8 +24,8 @@ import ( "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/br/pkg/metautil" snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" + "github.com/pingcap/tidb/br/pkg/restore/split" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" - "github.com/pingcap/tidb/br/pkg/utiltest" "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/tablecodec" @@ -93,8 +93,8 @@ func TestContextManagerOnlineNoStores(t *testing.T) { }, } - pdClient := utiltest.NewFakePDClient(stores, false, nil) - pdHTTPCli := utiltest.NewFakePDHTTPClient() + pdClient := split.NewFakePDClient(stores, false, nil) + pdHTTPCli := split.NewFakePDHTTPClient() placementRuleManager, err := snapclient.NewPlacementRuleManager(ctx, pdClient, pdHTTPCli, nil, true) require.NoError(t, err) tables := generateTables() @@ -234,9 +234,9 @@ func TestContextManagerOnlineLeave(t *testing.T) { stores := generateStores() regions := generateRegions() - pdClient := utiltest.NewFakePDClient(stores, false, nil) + pdClient := split.NewFakePDClient(stores, false, nil) pdClient.SetRegions(regions) - pdHTTPCli := utiltest.NewFakePDHTTPClient() + pdHTTPCli := split.NewFakePDHTTPClient() placementRuleManager, err := snapclient.NewPlacementRuleManager(ctx, pdClient, pdHTTPCli, nil, true) require.NoError(t, err) tables := generateTables() diff --git a/br/pkg/restore/snap_client/systable_restore.go b/br/pkg/restore/snap_client/systable_restore.go index 0d916e52fcfe4..47c963d5f38d2 100644 --- a/br/pkg/restore/snap_client/systable_restore.go +++ b/br/pkg/restore/snap_client/systable_restore.go @@ -200,7 +200,7 @@ func (rc *SnapClient) afterSystemTablesReplaced(ctx context.Context, db string, var err error for _, table := range tables { if table == "user" { - if serr := rc.dom.NotifyUpdatePrivilege(); serr != nil { + if serr := rc.dom.NotifyUpdateAllUsersPrivilege(); serr != nil { log.Warn("failed to flush privileges, please manually execute `FLUSH PRIVILEGES`") err = multierr.Append(err, berrors.ErrUnknown.Wrap(serr).GenWithStack("failed to flush privileges")) } else { diff --git a/br/pkg/restore/snap_client/systable_restore_test.go b/br/pkg/restore/snap_client/systable_restore_test.go index 358f457c55007..9e1812aabaebb 100644 --- a/br/pkg/restore/snap_client/systable_restore_test.go +++ b/br/pkg/restore/snap_client/systable_restore_test.go @@ -23,8 +23,8 @@ import ( "github.com/pingcap/tidb/br/pkg/metautil" "github.com/pingcap/tidb/br/pkg/restore" snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/br/pkg/utils" - "github.com/pingcap/tidb/br/pkg/utiltest" "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" @@ -35,7 +35,7 @@ import ( func TestCheckSysTableCompatibility(t *testing.T) { cluster := mc g := gluetidb.New() - client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, utiltest.DefaultTestKeepaliveCfg) + client := snapclient.NewRestoreClient(cluster.PDClient, cluster.PDHTTPCli, nil, split.DefaultTestKeepaliveCfg) err := client.Init(g, cluster.Storage) require.NoError(t, err) @@ -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(217), session.CurrentBootstrapVersion) + require.Equal(t, int64(239), session.CurrentBootstrapVersion) } diff --git a/br/pkg/restore/snap_client/tikv_sender.go b/br/pkg/restore/snap_client/tikv_sender.go index a5f27a87c4050..57f73835beda7 100644 --- a/br/pkg/restore/snap_client/tikv_sender.go +++ b/br/pkg/restore/snap_client/tikv_sender.go @@ -25,16 +25,13 @@ import ( "github.com/pingcap/failpoint" backuppb "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/log" - "github.com/pingcap/tidb/br/pkg/checkpoint" - "github.com/pingcap/tidb/br/pkg/glue" "github.com/pingcap/tidb/br/pkg/logutil" - snapsplit "github.com/pingcap/tidb/br/pkg/restore/internal/snap_split" + "github.com/pingcap/tidb/br/pkg/restore" "github.com/pingcap/tidb/br/pkg/restore/split" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/br/pkg/summary" "github.com/pingcap/tidb/pkg/tablecodec" "go.uber.org/zap" - "golang.org/x/sync/errgroup" ) func getSortedPhysicalTables(createdTables []*CreatedTable) []*PhysicalTable { @@ -92,7 +89,7 @@ func mapTableToFiles(files []*backuppb.File) (map[int64][]*backuppb.File, int) { } // filterOutFiles filters out files that exist in the checkpoint set. -func filterOutFiles(checkpointSet map[string]struct{}, files []*backuppb.File, updateCh glue.Progress) []*backuppb.File { +func filterOutFiles(checkpointSet map[string]struct{}, files []*backuppb.File, onProgress func(int64)) []*backuppb.File { progress := int(0) totalKVs := uint64(0) totalBytes := uint64(0) @@ -111,7 +108,7 @@ func filterOutFiles(checkpointSet map[string]struct{}, files []*backuppb.File, u } if progress > 0 { // (split/scatter + download/ingest) / (default cf + write cf) - updateCh.IncBy(int64(progress) * 2 / 2) + onProgress(int64(progress) * 2 / 2) summary.CollectSuccessUnit(summary.TotalKV, progress, totalKVs) summary.CollectSuccessUnit(summary.SkippedKVCountByCheckpoint, progress, totalKVs) summary.CollectSuccessUnit(summary.TotalBytes, progress, totalBytes) @@ -131,8 +128,8 @@ func SortAndValidateFileRanges( checkpointSetWithTableID map[int64]map[string]struct{}, splitSizeBytes, splitKeyCount uint64, splitOnTable bool, - updateCh glue.Progress, -) ([][]byte, [][]TableIDWithFiles, error) { + onProgress func(int64), +) ([][]byte, []restore.BatchBackupFileSet, error) { sortedPhysicalTables := getSortedPhysicalTables(createdTables) // mapping table ID to its backup files fileOfTable, hintSplitKeyCount := mapTableToFiles(allFiles) @@ -145,8 +142,8 @@ func SortAndValidateFileRanges( lastKey []byte = nil // group the files by the generated split keys - tableIDWithFilesGroup = make([][]TableIDWithFiles, 0, hintSplitKeyCount) - lastFilesGroup []TableIDWithFiles = nil + tableIDWithFilesGroup = make([]restore.BatchBackupFileSet, 0, hintSplitKeyCount) + lastFilesGroup restore.BatchBackupFileSet = nil // statistic mergedRangeCount = 0 @@ -233,17 +230,17 @@ func SortAndValidateFileRanges( // checkpoint filter out the import done files in the previous restore executions. // Notice that skip ranges after select split keys in order to make the split keys // always the same. - newFiles := filterOutFiles(checkpointSet, rg.Files, updateCh) + newFiles := filterOutFiles(checkpointSet, rg.Files, onProgress) // append the new files into the group if len(newFiles) > 0 { if len(lastFilesGroup) == 0 || lastFilesGroup[len(lastFilesGroup)-1].TableID != table.NewPhysicalID { - lastFilesGroup = append(lastFilesGroup, TableIDWithFiles{ + lastFilesGroup = append(lastFilesGroup, restore.BackupFileSet{ TableID: table.NewPhysicalID, - Files: nil, + SSTFiles: nil, RewriteRules: table.RewriteRules, }) } - lastFilesGroup[len(lastFilesGroup)-1].Files = append(lastFilesGroup[len(lastFilesGroup)-1].Files, newFiles...) + lastFilesGroup[len(lastFilesGroup)-1].SSTFiles = append(lastFilesGroup[len(lastFilesGroup)-1].SSTFiles, newFiles...) } } @@ -287,7 +284,7 @@ func (rc *SnapClient) RestoreTables( checkpointSetWithTableID map[int64]map[string]struct{}, splitSizeBytes, splitKeyCount uint64, splitOnTable bool, - updateCh glue.Progress, + onProgress func(int64), ) error { if err := placementRuleManager.SetPlacementRule(ctx, createdTables); err != nil { return errors.Trace(err) @@ -300,20 +297,21 @@ func (rc *SnapClient) RestoreTables( }() start := time.Now() - sortedSplitKeys, tableIDWithFilesGroup, err := SortAndValidateFileRanges(createdTables, allFiles, checkpointSetWithTableID, splitSizeBytes, splitKeyCount, splitOnTable, updateCh) + sortedSplitKeys, tableIDWithFilesGroup, err := SortAndValidateFileRanges(createdTables, allFiles, checkpointSetWithTableID, splitSizeBytes, splitKeyCount, splitOnTable, onProgress) if err != nil { return errors.Trace(err) } log.Info("Restore Stage Duration", zap.String("stage", "merge ranges"), zap.Duration("take", time.Since(start))) + newProgress := func(i int64) { onProgress(i) } start = time.Now() - if err = rc.SplitPoints(ctx, sortedSplitKeys, updateCh, false); err != nil { + if err = rc.SplitPoints(ctx, sortedSplitKeys, newProgress, false); err != nil { return errors.Trace(err) } log.Info("Restore Stage Duration", zap.String("stage", "split regions"), zap.Duration("take", time.Since(start))) start = time.Now() - if err = rc.RestoreSSTFiles(ctx, tableIDWithFilesGroup, updateCh); err != nil { + if err = rc.RestoreSSTFiles(ctx, tableIDWithFilesGroup, newProgress); err != nil { return errors.Trace(err) } elapsed := time.Since(start) @@ -328,20 +326,19 @@ func (rc *SnapClient) RestoreTables( func (rc *SnapClient) SplitPoints( ctx context.Context, sortedSplitKeys [][]byte, - updateCh glue.Progress, + onProgress func(int64), isRawKv bool, ) error { splitClientOpts := make([]split.ClientOptionalParameter, 0, 2) splitClientOpts = append(splitClientOpts, split.WithOnSplit(func(keys [][]byte) { - for range keys { - updateCh.Inc() - } + onProgress(int64(len(keys))) })) + // TODO seems duplicate with metaClient. if isRawKv { splitClientOpts = append(splitClientOpts, split.WithRawKV()) } - splitter := snapsplit.NewRegionSplitter(split.NewClient( + splitter := split.NewRegionSplitter(split.NewClient( rc.pdClient, rc.pdHTTPClient, rc.tlsConf, @@ -350,7 +347,7 @@ func (rc *SnapClient) SplitPoints( splitClientOpts..., )) - return splitter.ExecuteSplit(ctx, sortedSplitKeys) + return splitter.ExecuteSortedKeys(ctx, sortedSplitKeys) } func getFileRangeKey(f string) string { @@ -367,13 +364,9 @@ func getFileRangeKey(f string) string { // RestoreSSTFiles tries to do something prepare work, such as set speed limit, and restore the files. func (rc *SnapClient) RestoreSSTFiles( ctx context.Context, - tableIDWithFilesGroup [][]TableIDWithFiles, - updateCh glue.Progress, + tableIDWithFilesGroup []restore.BatchBackupFileSet, + onProgress func(int64), ) (retErr error) { - if err := rc.setSpeedLimit(ctx, rc.rateLimit); err != nil { - return errors.Trace(err) - } - failpoint.Inject("corrupt-files", func(v failpoint.Value) { if cmd, ok := v.(string); ok { switch cmd { @@ -383,7 +376,7 @@ func (rc *SnapClient) RestoreSSTFiles( case "only-last-table-files": // check whether all the files, except last table files, are skipped by checkpoint for _, tableIDWithFiless := range tableIDWithFilesGroup[:len(tableIDWithFilesGroup)-1] { for _, tableIDWithFiles := range tableIDWithFiless { - if len(tableIDWithFiles.Files) > 0 { + if len(tableIDWithFiles.SSTFiles) > 0 { log.Panic("has files but not the last table files") } } @@ -392,69 +385,9 @@ func (rc *SnapClient) RestoreSSTFiles( } }) - return rc.restoreSSTFilesInternal(ctx, tableIDWithFilesGroup, updateCh) -} - -func (rc *SnapClient) restoreSSTFilesInternal( - ctx context.Context, - tableIDWithFilesGroup [][]TableIDWithFiles, - updateCh glue.Progress, -) error { - eg, ectx := errgroup.WithContext(ctx) - for _, tableIDWithFiles := range tableIDWithFilesGroup { - if ectx.Err() != nil { - log.Warn("Restoring encountered error and already stopped, give up remained files.", - logutil.ShortError(ectx.Err())) - // We will fetch the error from the errgroup then (If there were). - // Also note if the parent context has been canceled or something, - // breaking here directly is also a reasonable behavior. - break - } - filesReplica := tableIDWithFiles - rc.fileImporter.WaitUntilUnblock() - rc.workerPool.ApplyOnErrorGroup(eg, func() (restoreErr error) { - fileStart := time.Now() - defer func() { - if restoreErr == nil { - log.Info("import files done", zapFilesGroup(filesReplica), - zap.Duration("take", time.Since(fileStart))) - updateCh.Inc() - } - }() - if importErr := rc.fileImporter.ImportSSTFiles(ectx, filesReplica, rc.cipher, rc.dom.Store().GetCodec().GetAPIVersion()); importErr != nil { - return errors.Trace(importErr) - } - - // the data of this range has been import done - if rc.checkpointRunner != nil && len(filesReplica) > 0 { - for _, filesGroup := range filesReplica { - rangeKeySet := make(map[string]struct{}) - for _, file := range filesGroup.Files { - rangeKey := getFileRangeKey(file.Name) - // Assert that the files having the same rangeKey are all in the current filesGroup.Files - rangeKeySet[rangeKey] = struct{}{} - } - for rangeKey := range rangeKeySet { - // The checkpoint range shows this ranges of kvs has been restored into - // the table corresponding to the table-id. - if err := checkpoint.AppendRangesForRestore(ectx, rc.checkpointRunner, filesGroup.TableID, rangeKey); err != nil { - return errors.Trace(err) - } - } - } - } - - return nil - }) - } - - if err := eg.Wait(); err != nil { - summary.CollectFailureUnit("file", err) - log.Error("restore files failed", zap.Error(err)) - return errors.Trace(err) + retErr = rc.restorer.GoRestore(onProgress, tableIDWithFilesGroup...) + if retErr != nil { + return retErr } - // Once the parent context canceled and there is no task running in the errgroup, - // we may break the for loop without error in the errgroup. (Will this happen?) - // At that time, return the error in the context here. - return ctx.Err() + return rc.restorer.WaitUntilFinish() } diff --git a/br/pkg/restore/snap_client/tikv_sender_test.go b/br/pkg/restore/snap_client/tikv_sender_test.go index b23ec6298d40f..b5a38ffc839a3 100644 --- a/br/pkg/restore/snap_client/tikv_sender_test.go +++ b/br/pkg/restore/snap_client/tikv_sender_test.go @@ -22,6 +22,7 @@ import ( backuppb "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/tidb/br/pkg/glue" "github.com/pingcap/tidb/br/pkg/metautil" + "github.com/pingcap/tidb/br/pkg/restore" snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/pkg/kv" @@ -207,14 +208,14 @@ func key(tableID int64, row int) []byte { return tablecodec.EncodeRowKeyWithHandle(downstreamID(tableID), kv.IntHandle(row)) } -func files(physicalTableID int64, startRows []int, cfs []string) snapclient.TableIDWithFiles { +func files(physicalTableID int64, startRows []int, cfs []string) restore.BackupFileSet { files := make([]*backuppb.File, 0, len(startRows)) for i, startRow := range startRows { files = append(files, &backuppb.File{Name: fmt.Sprintf("file_%d_%d_%s.sst", physicalTableID, startRow, cfs[i])}) } - return snapclient.TableIDWithFiles{ - TableID: downstreamID(physicalTableID), - Files: files, + return restore.BackupFileSet{ + TableID: downstreamID(physicalTableID), + SSTFiles: files, } } @@ -247,7 +248,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { // expected result splitKeys [][]byte - tableIDWithFilesGroups [][]snapclient.TableIDWithFiles + tableIDWithFilesGroups [][]restore.BackupFileSet }{ { // large sst, split-on-table, no checkpoint upstreamTableIDs: []int64{100, 200, 300}, @@ -270,7 +271,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ /*split table key*/ key(202, 2), /*split table key*/ }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d})}, @@ -298,7 +299,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ /*split table key*/ key(202, 2), /*split table key*/ }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, //{files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d})}, @@ -323,7 +324,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(102, 2), key(202, 2), key(202, 3), key(302, 2), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d})}, @@ -351,7 +352,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(102, 2), key(202, 2), key(202, 3), key(302, 2), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, //{files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d})}, @@ -376,7 +377,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 2), /*split table key*/ }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d})}, @@ -404,7 +405,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 2), /*split table key*/ }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, // {files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d})}, @@ -429,7 +430,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 2), key(302, 2), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w}), files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d}), files(302, []int{1}, []string{w})}, {files(100, []int{1, 1}, []string{w, d})}, @@ -455,7 +456,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 2), key(302, 2), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{2, 2}, []string{w, d}), files(302, []int{1}, []string{w})}, }, @@ -475,7 +476,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeyCount: 450, splitOnTable: true, splitKeys: [][]byte{}, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{1, 1, 2, 2}, []string{w, d, w, d})}, {files(302, []int{1}, []string{w})}, @@ -500,7 +501,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeyCount: 450, splitOnTable: true, splitKeys: [][]byte{}, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{2, 2}, []string{w, d})}, {files(302, []int{1}, []string{w})}, @@ -523,7 +524,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(102, 2), key(202, 3), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{1, 1, 2, 2}, []string{w, d, w, d})}, {files(302, []int{1}, []string{w}), files(100, []int{1, 1}, []string{w, d})}, @@ -549,7 +550,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(102, 2), key(202, 3), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{2, 2}, []string{w, d})}, {files(302, []int{1}, []string{w})}, @@ -572,7 +573,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 3), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w}), files(202, []int{1, 1, 2, 2}, []string{w, d, w, d})}, {files(302, []int{1}, []string{w}), files(100, []int{1, 1}, []string{w, d})}, }, @@ -597,7 +598,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 3), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w}), files(202, []int{2, 2}, []string{w, d, w, d})}, {files(302, []int{1}, []string{w})}, }, @@ -619,7 +620,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 2), key(302, 2), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w}), files(202, []int{1, 1}, []string{w, d})}, {files(202, []int{2, 2}, []string{w, d}), files(302, []int{1}, []string{w})}, {files(100, []int{1, 1}, []string{w, d})}, @@ -645,7 +646,7 @@ func TestSortAndValidateFileRanges(t *testing.T) { splitKeys: [][]byte{ key(202, 2), key(302, 2), key(100, 2), }, - tableIDWithFilesGroups: [][]snapclient.TableIDWithFiles{ + tableIDWithFilesGroups: [][]restore.BackupFileSet{ {files(102, []int{1}, []string{w})}, {files(202, []int{2, 2}, []string{w, d}), files(302, []int{1}, []string{w})}, }, @@ -655,7 +656,8 @@ func TestSortAndValidateFileRanges(t *testing.T) { for i, cs := range cases { t.Log(i) createdTables := generateCreatedTables(t, cs.upstreamTableIDs, cs.upstreamPartitionIDs, downstreamID) - splitKeys, tableIDWithFilesGroups, err := snapclient.SortAndValidateFileRanges(createdTables, cs.files, cs.checkpointSetWithTableID, cs.splitSizeBytes, cs.splitKeyCount, cs.splitOnTable, updateCh) + onProgress := func(i int64) { updateCh.IncBy(i) } + splitKeys, tableIDWithFilesGroups, err := snapclient.SortAndValidateFileRanges(createdTables, cs.files, cs.checkpointSetWithTableID, cs.splitSizeBytes, cs.splitKeyCount, cs.splitOnTable, onProgress) require.NoError(t, err) require.Equal(t, cs.splitKeys, splitKeys) require.Equal(t, len(cs.tableIDWithFilesGroups), len(tableIDWithFilesGroups)) @@ -665,8 +667,8 @@ func TestSortAndValidateFileRanges(t *testing.T) { for j, expectFiles := range expectFilesGroup { actualFiles := actualFilesGroup[j] require.Equal(t, expectFiles.TableID, actualFiles.TableID) - for k, expectFile := range expectFiles.Files { - actualFile := actualFiles.Files[k] + for k, expectFile := range expectFiles.SSTFiles { + actualFile := actualFiles.SSTFiles[k] require.Equal(t, expectFile.Name, actualFile.Name) } } diff --git a/br/pkg/restore/split/BUILD.bazel b/br/pkg/restore/split/BUILD.bazel index 2d7002b493ad2..34eb266023809 100644 --- a/br/pkg/restore/split/BUILD.bazel +++ b/br/pkg/restore/split/BUILD.bazel @@ -7,6 +7,8 @@ go_library( "mock_pd_client.go", "region.go", "split.go", + "splitter.go", + "sum_sorted.go", ], importpath = "github.com/pingcap/tidb/br/pkg/restore/split", visibility = ["//visibility:public"], @@ -14,17 +16,21 @@ go_library( "//br/pkg/conn/util", "//br/pkg/errors", "//br/pkg/logutil", + "//br/pkg/pdutil", + "//br/pkg/restore/utils", "//br/pkg/utils", "//pkg/kv", "//pkg/lightning/common", "//pkg/lightning/config", "//pkg/lightning/log", "//pkg/store/pdtypes", + "//pkg/tablecodec", "//pkg/util", "//pkg/util/codec", "//pkg/util/intest", "//pkg/util/redact", "@com_github_docker_go_units//:go-units", + "@com_github_google_btree//:btree", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_kvproto//pkg/errorpb", @@ -39,6 +45,7 @@ go_library( "@org_golang_google_grpc//codes", "@org_golang_google_grpc//credentials", "@org_golang_google_grpc//credentials/insecure", + "@org_golang_google_grpc//keepalive", "@org_golang_google_grpc//status", "@org_golang_x_sync//errgroup", "@org_uber_go_multierr//:multierr", @@ -52,12 +59,15 @@ go_test( srcs = [ "client_test.go", "split_test.go", + "sum_sorted_test.go", ], embed = [":split"], flaky = True, - shard_count = 19, + shard_count = 26, deps = [ "//br/pkg/errors", + "//br/pkg/restore/utils", + "//br/pkg/rtree", "//br/pkg/utils", "//pkg/kv", "//pkg/sessionctx/stmtctx", @@ -67,6 +77,7 @@ go_test( "//pkg/util/codec", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/import_sstpb", "@com_github_pingcap_kvproto//pkg/kvrpcpb", "@com_github_pingcap_kvproto//pkg/metapb", "@com_github_pingcap_kvproto//pkg/pdpb", diff --git a/br/pkg/restore/split/client.go b/br/pkg/restore/split/client.go index fd3af4ee16fae..117809300dde7 100644 --- a/br/pkg/restore/split/client.go +++ b/br/pkg/restore/split/client.go @@ -195,14 +195,11 @@ func (c *pdClient) scatterRegions(ctx context.Context, newRegions []*RegionInfo) c.scatterRegionsSequentially( ctx, newRegions, // backoff about 6s, or we give up scattering this region. - &ExponentialBackoffer{ - Attempts: 7, - BaseBackoff: 100 * time.Millisecond, - }) + utils.NewBackoffRetryAllErrorStrategy(7, 100*time.Millisecond, 2*time.Second)) return nil } return err - }, &ExponentialBackoffer{Attempts: 3, BaseBackoff: 500 * time.Millisecond}) + }, utils.NewBackoffRetryAllErrorStrategy(3, 500*time.Millisecond, 2*time.Second)) } func (c *pdClient) tryScatterRegions(ctx context.Context, regionInfo []*RegionInfo) error { @@ -617,30 +614,12 @@ func (c *pdClient) SplitKeysAndScatter(ctx context.Context, sortedSplitKeys [][] } slices.SortFunc(retrySplitKeys, bytes.Compare) return lastSplitErr - }, newSplitBackoffer()) + }, utils.NewBackoffRetryAllExceptStrategy(SplitRetryTimes, SplitRetryInterval, SplitMaxRetryInterval, isNonRetryErrForSplit)) return ret, errors.Trace(err) } -type splitBackoffer struct { - state utils.RetryState -} - -func newSplitBackoffer() *splitBackoffer { - return &splitBackoffer{ - state: utils.InitialRetryState(SplitRetryTimes, SplitRetryInterval, SplitMaxRetryInterval), - } -} - -func (bo *splitBackoffer) NextBackoff(err error) time.Duration { - if berrors.ErrInvalidRange.Equal(err) { - bo.state.GiveUp() - return 0 - } - return bo.state.ExponentialBackoff() -} - -func (bo *splitBackoffer) Attempt() int { - return bo.state.Attempt() +func isNonRetryErrForSplit(err error) bool { + return berrors.ErrInvalidRange.Equal(err) } func (c *pdClient) SplitWaitAndScatter(ctx context.Context, region *RegionInfo, keys [][]byte) ([]*RegionInfo, error) { @@ -808,7 +787,7 @@ func (c *pdClient) SetStoresLabel( return nil } -func (c *pdClient) scatterRegionsSequentially(ctx context.Context, newRegions []*RegionInfo, backoffer utils.Backoffer) { +func (c *pdClient) scatterRegionsSequentially(ctx context.Context, newRegions []*RegionInfo, backoffStrategy utils.BackoffStrategy) { newRegionSet := make(map[uint64]*RegionInfo, len(newRegions)) for _, newRegion := range newRegions { newRegionSet[newRegion.Region.Id] = newRegion @@ -832,7 +811,7 @@ func (c *pdClient) scatterRegionsSequentially(ctx context.Context, newRegions [] errs = multierr.Append(errs, err) } return errs - }, backoffer); err != nil { + }, backoffStrategy); err != nil { log.Warn("Some regions haven't been scattered because errors.", zap.Int("count", len(newRegionSet)), // if all region are failed to scatter, the short error might also be verbose... diff --git a/br/pkg/restore/split/mock_pd_client.go b/br/pkg/restore/split/mock_pd_client.go index 92cd055939926..535b064700d41 100644 --- a/br/pkg/restore/split/mock_pd_client.go +++ b/br/pkg/restore/split/mock_pd_client.go @@ -5,25 +5,174 @@ package split import ( "bytes" "context" + "math" "sync" + "time" "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/kvproto/pkg/pdpb" + "github.com/pingcap/tidb/br/pkg/pdutil" "github.com/pingcap/tidb/pkg/store/pdtypes" "github.com/pingcap/tidb/pkg/util/codec" pd "github.com/tikv/pd/client" + pdhttp "github.com/tikv/pd/client/http" "google.golang.org/grpc/codes" + "google.golang.org/grpc/keepalive" "google.golang.org/grpc/status" ) +// TODO consilodate TestClient and MockPDClientForSplit and FakePDClient +// into one test client. +type TestClient struct { + SplitClient + pd.Client + + mu sync.RWMutex + stores map[uint64]*metapb.Store + Regions map[uint64]*RegionInfo + RegionsInfo *pdtypes.RegionTree // For now it's only used in ScanRegions + nextRegionID uint64 + + scattered map[uint64]bool + InjectErr bool + InjectTimes int32 +} + +func NewTestClient( + stores map[uint64]*metapb.Store, + regions map[uint64]*RegionInfo, + nextRegionID uint64, +) *TestClient { + regionsInfo := &pdtypes.RegionTree{} + for _, regionInfo := range regions { + regionsInfo.SetRegion(pdtypes.NewRegionInfo(regionInfo.Region, regionInfo.Leader)) + } + return &TestClient{ + stores: stores, + Regions: regions, + RegionsInfo: regionsInfo, + nextRegionID: nextRegionID, + scattered: map[uint64]bool{}, + } +} + +func (c *TestClient) GetAllRegions() map[uint64]*RegionInfo { + c.mu.RLock() + defer c.mu.RUnlock() + return c.Regions +} + +func (c *TestClient) GetPDClient() *FakePDClient { + stores := make([]*metapb.Store, 0, len(c.stores)) + for _, store := range c.stores { + stores = append(stores, store) + } + return NewFakePDClient(stores, false, nil) +} + +func (c *TestClient) GetStore(ctx context.Context, storeID uint64) (*metapb.Store, error) { + c.mu.RLock() + defer c.mu.RUnlock() + store, ok := c.stores[storeID] + if !ok { + return nil, errors.Errorf("store not found") + } + return store, nil +} + +func (c *TestClient) GetRegion(ctx context.Context, key []byte) (*RegionInfo, error) { + c.mu.RLock() + defer c.mu.RUnlock() + for _, region := range c.Regions { + if bytes.Compare(key, region.Region.StartKey) >= 0 && + (len(region.Region.EndKey) == 0 || bytes.Compare(key, region.Region.EndKey) < 0) { + return region, nil + } + } + return nil, errors.Errorf("region not found: key=%s", string(key)) +} + +func (c *TestClient) GetRegionByID(ctx context.Context, regionID uint64) (*RegionInfo, error) { + c.mu.RLock() + defer c.mu.RUnlock() + region, ok := c.Regions[regionID] + if !ok { + return nil, errors.Errorf("region not found: id=%d", regionID) + } + return region, nil +} + +func (c *TestClient) SplitWaitAndScatter(_ context.Context, _ *RegionInfo, keys [][]byte) ([]*RegionInfo, error) { + c.mu.Lock() + defer c.mu.Unlock() + newRegions := make([]*RegionInfo, 0) + for _, key := range keys { + var target *RegionInfo + splitKey := codec.EncodeBytes([]byte{}, key) + for _, region := range c.Regions { + if region.ContainsInterior(splitKey) { + target = region + } + } + if target == nil { + continue + } + newRegion := &RegionInfo{ + Region: &metapb.Region{ + Peers: target.Region.Peers, + Id: c.nextRegionID, + StartKey: target.Region.StartKey, + EndKey: splitKey, + }, + } + c.Regions[c.nextRegionID] = newRegion + c.nextRegionID++ + target.Region.StartKey = splitKey + c.Regions[target.Region.Id] = target + newRegions = append(newRegions, newRegion) + } + return newRegions, nil +} + +func (c *TestClient) GetOperator(context.Context, uint64) (*pdpb.GetOperatorResponse, error) { + return &pdpb.GetOperatorResponse{ + Header: new(pdpb.ResponseHeader), + }, nil +} + +func (c *TestClient) ScanRegions(ctx context.Context, key, endKey []byte, limit int) ([]*RegionInfo, error) { + if c.InjectErr && c.InjectTimes > 0 { + c.InjectTimes -= 1 + return nil, status.Error(codes.Unavailable, "not leader") + } + if len(key) != 0 && bytes.Equal(key, endKey) { + return nil, status.Error(codes.Internal, "key and endKey are the same") + } + + infos := c.RegionsInfo.ScanRange(key, endKey, limit) + regions := make([]*RegionInfo, 0, len(infos)) + for _, info := range infos { + regions = append(regions, &RegionInfo{ + Region: info.Meta, + Leader: info.Leader, + }) + } + return regions, nil +} + +func (c *TestClient) WaitRegionsScattered(context.Context, []*RegionInfo) (int, error) { + return 0, nil +} + // MockPDClientForSplit is a mock PD client for testing split and scatter. type MockPDClientForSplit struct { pd.Client mu sync.Mutex + stores map[uint64]*metapb.Store Regions *pdtypes.RegionTree lastRegionID uint64 scanRegions struct { @@ -66,6 +215,13 @@ func (c *MockPDClientForSplit) SetRegions(boundaries [][]byte) []*metapb.Region return c.setRegions(boundaries) } +func (c *MockPDClientForSplit) SetStores(stores map[uint64]*metapb.Store) { + c.mu.Lock() + defer c.mu.Unlock() + + c.stores = stores +} + func (c *MockPDClientForSplit) setRegions(boundaries [][]byte) []*metapb.Region { ret := make([]*metapb.Region, 0, len(boundaries)-1) for i := 1; i < len(boundaries); i++ { @@ -236,3 +392,273 @@ func (c *MockPDClientForSplit) GetOperator(_ context.Context, regionID uint64) ( c.getOperator.responses[regionID] = c.getOperator.responses[regionID][1:] return ret, nil } + +func (c *MockPDClientForSplit) GetStore(_ context.Context, storeID uint64) (*metapb.Store, error) { + return c.stores[storeID], nil +} + +var DefaultTestKeepaliveCfg = keepalive.ClientParameters{ + Time: 3 * time.Second, + Timeout: 10 * time.Second, +} + +var ( + ExpectPDCfgGeneratorsResult = map[string]any{ + "merge-schedule-limit": 0, + "leader-schedule-limit": float64(40), + "region-schedule-limit": float64(40), + "max-snapshot-count": float64(40), + "enable-location-replacement": "false", + "max-pending-peer-count": uint64(math.MaxInt32), + } + + ExistPDCfgGeneratorBefore = map[string]any{ + "merge-schedule-limit": 100, + "leader-schedule-limit": float64(100), + "region-schedule-limit": float64(100), + "max-snapshot-count": float64(100), + "enable-location-replacement": "true", + "max-pending-peer-count": 100, + } +) + +type FakePDHTTPClient struct { + pdhttp.Client + + expireSchedulers map[string]time.Time + cfgs map[string]any + + rules map[string]*pdhttp.Rule +} + +func NewFakePDHTTPClient() *FakePDHTTPClient { + return &FakePDHTTPClient{ + expireSchedulers: make(map[string]time.Time), + cfgs: make(map[string]any), + + rules: make(map[string]*pdhttp.Rule), + } +} + +func (fpdh *FakePDHTTPClient) GetScheduleConfig(_ context.Context) (map[string]any, error) { + return ExistPDCfgGeneratorBefore, nil +} + +func (fpdh *FakePDHTTPClient) GetSchedulers(_ context.Context) ([]string, error) { + schedulers := make([]string, 0, len(pdutil.Schedulers)) + for scheduler := range pdutil.Schedulers { + schedulers = append(schedulers, scheduler) + } + return schedulers, nil +} + +func (fpdh *FakePDHTTPClient) SetSchedulerDelay(_ context.Context, key string, delay int64) error { + expireTime, ok := fpdh.expireSchedulers[key] + if ok { + if time.Now().Compare(expireTime) > 0 { + return errors.Errorf("the scheduler config set is expired") + } + if delay == 0 { + delete(fpdh.expireSchedulers, key) + } + } + if !ok && delay == 0 { + return errors.Errorf("set the nonexistent scheduler") + } + expireTime = time.Now().Add(time.Second * time.Duration(delay)) + fpdh.expireSchedulers[key] = expireTime + return nil +} + +func (fpdh *FakePDHTTPClient) SetConfig(_ context.Context, config map[string]any, ttl ...float64) error { + for key, value := range config { + fpdh.cfgs[key] = value + } + return nil +} + +func (fpdh *FakePDHTTPClient) GetConfig(_ context.Context) (map[string]any, error) { + return fpdh.cfgs, nil +} + +func (fpdh *FakePDHTTPClient) GetDelaySchedulers() map[string]struct{} { + delaySchedulers := make(map[string]struct{}) + for key, t := range fpdh.expireSchedulers { + now := time.Now() + if now.Compare(t) < 0 { + delaySchedulers[key] = struct{}{} + } + } + return delaySchedulers +} + +func (fpdh *FakePDHTTPClient) GetPlacementRule(_ context.Context, groupID string, ruleID string) (*pdhttp.Rule, error) { + rule, ok := fpdh.rules[ruleID] + if !ok { + rule = &pdhttp.Rule{ + GroupID: groupID, + ID: ruleID, + } + fpdh.rules[ruleID] = rule + } + return rule, nil +} + +func (fpdh *FakePDHTTPClient) SetPlacementRule(_ context.Context, rule *pdhttp.Rule) error { + fpdh.rules[rule.ID] = rule + return nil +} + +func (fpdh *FakePDHTTPClient) DeletePlacementRule(_ context.Context, groupID string, ruleID string) error { + delete(fpdh.rules, ruleID) + return nil +} + +type FakePDClient struct { + pd.Client + stores []*metapb.Store + regions []*pd.Region + + notLeader bool + retryTimes *int + + peerStoreId uint64 +} + +func NewFakePDClient(stores []*metapb.Store, notLeader bool, retryTime *int) *FakePDClient { + var retryTimeInternal int + if retryTime == nil { + retryTime = &retryTimeInternal + } + return &FakePDClient{ + stores: stores, + + notLeader: notLeader, + retryTimes: retryTime, + + peerStoreId: 0, + } +} + +func (fpdc *FakePDClient) SetRegions(regions []*pd.Region) { + fpdc.regions = regions +} + +func (fpdc *FakePDClient) GetAllStores(context.Context, ...pd.GetStoreOption) ([]*metapb.Store, error) { + return append([]*metapb.Store{}, fpdc.stores...), nil +} + +func (fpdc *FakePDClient) ScanRegions( + ctx context.Context, + key, endKey []byte, + limit int, + opts ...pd.GetRegionOption, +) ([]*pd.Region, error) { + regions := make([]*pd.Region, 0, len(fpdc.regions)) + fpdc.peerStoreId = fpdc.peerStoreId + 1 + peerStoreId := (fpdc.peerStoreId + 1) / 2 + for _, region := range fpdc.regions { + if len(endKey) != 0 && bytes.Compare(region.Meta.StartKey, endKey) >= 0 { + continue + } + if len(region.Meta.EndKey) != 0 && bytes.Compare(region.Meta.EndKey, key) <= 0 { + continue + } + region.Meta.Peers = []*metapb.Peer{{StoreId: peerStoreId}} + regions = append(regions, region) + } + return regions, nil +} + +func (fpdc *FakePDClient) BatchScanRegions( + ctx context.Context, + ranges []pd.KeyRange, + limit int, + opts ...pd.GetRegionOption, +) ([]*pd.Region, error) { + regions := make([]*pd.Region, 0, len(fpdc.regions)) + fpdc.peerStoreId = fpdc.peerStoreId + 1 + peerStoreId := (fpdc.peerStoreId + 1) / 2 + for _, region := range fpdc.regions { + inRange := false + for _, keyRange := range ranges { + if len(keyRange.EndKey) != 0 && bytes.Compare(region.Meta.StartKey, keyRange.EndKey) >= 0 { + continue + } + if len(region.Meta.EndKey) != 0 && bytes.Compare(region.Meta.EndKey, keyRange.StartKey) <= 0 { + continue + } + inRange = true + } + if inRange { + region.Meta.Peers = []*metapb.Peer{{StoreId: peerStoreId}} + regions = append(regions, region) + } + } + return nil, nil +} + +func (fpdc *FakePDClient) GetTS(ctx context.Context) (int64, int64, error) { + (*fpdc.retryTimes)++ + if *fpdc.retryTimes >= 3 { // the mock PD leader switched successfully + fpdc.notLeader = false + } + + if fpdc.notLeader { + return 0, 0, errors.Errorf( + "rpc error: code = Unknown desc = [PD:tso:ErrGenerateTimestamp]generate timestamp failed, " + + "requested pd is not leader of cluster", + ) + } + return 1, 1, nil +} + +type FakeSplitClient struct { + SplitClient + regions []*RegionInfo +} + +func NewFakeSplitClient() *FakeSplitClient { + return &FakeSplitClient{ + regions: make([]*RegionInfo, 0), + } +} + +func (f *FakeSplitClient) AppendRegion(startKey, endKey []byte) { + f.regions = append(f.regions, &RegionInfo{ + Region: &metapb.Region{ + StartKey: startKey, + EndKey: endKey, + }, + }) +} + +func (f *FakeSplitClient) AppendPdRegion(region *pd.Region) { + f.regions = append(f.regions, &RegionInfo{ + Region: region.Meta, + Leader: region.Leader, + }) +} + +func (f *FakeSplitClient) ScanRegions( + ctx context.Context, + startKey, endKey []byte, + limit int, +) ([]*RegionInfo, error) { + result := make([]*RegionInfo, 0) + count := 0 + for _, rng := range f.regions { + if bytes.Compare(rng.Region.StartKey, endKey) <= 0 && bytes.Compare(rng.Region.EndKey, startKey) > 0 { + result = append(result, rng) + count++ + } + if count >= limit { + break + } + } + return result, nil +} + +func (f *FakeSplitClient) WaitRegionsScattered(context.Context, []*RegionInfo) (int, error) { + return 0, nil +} diff --git a/br/pkg/restore/split/split.go b/br/pkg/restore/split/split.go index ce6faa90b209c..7486087402a9f 100644 --- a/br/pkg/restore/split/split.go +++ b/br/pkg/restore/split/split.go @@ -37,6 +37,120 @@ const ( ScanRegionPaginationLimit = 128 ) +// RegionSplitter is a executor of region split by rules. +type RegionSplitter struct { + client SplitClient +} + +// NewRegionSplitter returns a new RegionSplitter. +func NewRegionSplitter(client SplitClient) *RegionSplitter { + return &RegionSplitter{ + client: client, + } +} + +// ExecuteSortedKeysOnRegion expose the function `SplitWaitAndScatter` of split client. +func (rs *RegionSplitter) ExecuteSortedKeysOnRegion(ctx context.Context, region *RegionInfo, keys [][]byte) ([]*RegionInfo, error) { + return rs.client.SplitWaitAndScatter(ctx, region, keys) +} + +// ExecuteSortedKeys executes regions split and make sure new splitted regions are balance. +// It will split regions by the rewrite rules, +// then it will split regions by the end key of each range. +// tableRules includes the prefix of a table, since some ranges may have +// a prefix with record sequence or index sequence. +// note: all ranges and rewrite rules must have raw key. +func (rs *RegionSplitter) ExecuteSortedKeys( + ctx context.Context, + sortedSplitKeys [][]byte, +) error { + if len(sortedSplitKeys) == 0 { + log.Info("skip split regions, no split keys") + return nil + } + + log.Info("execute split sorted keys", zap.Int("keys count", len(sortedSplitKeys))) + return rs.executeSplitByRanges(ctx, sortedSplitKeys) +} + +func (rs *RegionSplitter) executeSplitByRanges( + ctx context.Context, + sortedKeys [][]byte, +) error { + startTime := time.Now() + // Choose the rough region split keys, + // each splited region contains 128 regions to be splitted. + const regionIndexStep = 128 + + roughSortedSplitKeys := make([][]byte, 0, len(sortedKeys)/regionIndexStep+1) + for curRegionIndex := regionIndexStep; curRegionIndex < len(sortedKeys); curRegionIndex += regionIndexStep { + roughSortedSplitKeys = append(roughSortedSplitKeys, sortedKeys[curRegionIndex]) + } + if len(roughSortedSplitKeys) > 0 { + if err := rs.executeSplitByKeys(ctx, roughSortedSplitKeys); err != nil { + return errors.Trace(err) + } + } + log.Info("finish spliting regions roughly", zap.Duration("take", time.Since(startTime))) + + // Then send split requests to each TiKV. + if err := rs.executeSplitByKeys(ctx, sortedKeys); err != nil { + return errors.Trace(err) + } + + log.Info("finish spliting and scattering regions", zap.Duration("take", time.Since(startTime))) + return nil +} + +// executeSplitByKeys will split regions by **sorted** keys with following steps. +// 1. locate regions with correspond keys. +// 2. split these regions with correspond keys. +// 3. make sure new split regions are balanced. +func (rs *RegionSplitter) executeSplitByKeys( + ctx context.Context, + sortedKeys [][]byte, +) error { + startTime := time.Now() + scatterRegions, err := rs.client.SplitKeysAndScatter(ctx, sortedKeys) + if err != nil { + return errors.Trace(err) + } + if len(scatterRegions) > 0 { + log.Info("finish splitting and scattering regions. and starts to wait", zap.Int("regions", len(scatterRegions)), + zap.Duration("take", time.Since(startTime))) + rs.waitRegionsScattered(ctx, scatterRegions, ScatterWaitUpperInterval) + } else { + log.Info("finish splitting regions.", zap.Duration("take", time.Since(startTime))) + } + return nil +} + +// waitRegionsScattered try to wait mutilple regions scatterd in 3 minutes. +// this could timeout, but if many regions scatterd the restore could continue +// so we don't wait long time here. +func (rs *RegionSplitter) waitRegionsScattered(ctx context.Context, scatterRegions []*RegionInfo, timeout time.Duration) { + log.Info("start to wait for scattering regions", zap.Int("regions", len(scatterRegions))) + startTime := time.Now() + leftCnt := rs.WaitForScatterRegionsTimeout(ctx, scatterRegions, timeout) + if leftCnt == 0 { + log.Info("waiting for scattering regions done", + zap.Int("regions", len(scatterRegions)), + zap.Duration("take", time.Since(startTime))) + } else { + log.Warn("waiting for scattering regions timeout", + zap.Int("not scattered Count", leftCnt), + zap.Int("regions", len(scatterRegions)), + zap.Duration("take", time.Since(startTime))) + } +} + +func (rs *RegionSplitter) WaitForScatterRegionsTimeout(ctx context.Context, regionInfos []*RegionInfo, timeout time.Duration) int { + ctx2, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + leftRegions, _ := rs.client.WaitRegionsScattered(ctx2, regionInfos) + return leftRegions +} + func checkRegionConsistency(startKey, endKey []byte, regions []*RegionInfo) error { // current pd can't guarantee the consistency of returned regions if len(regions) == 0 { @@ -210,6 +324,7 @@ func ScanRegionsWithRetry( return regions, err } +// TODO: merge with backoff.go type WaitRegionOnlineBackoffer struct { Stat utils.RetryState } @@ -244,13 +359,14 @@ func (b *WaitRegionOnlineBackoffer) NextBackoff(err error) time.Duration { return 0 } -// Attempt returns the remain attempt times -func (b *WaitRegionOnlineBackoffer) Attempt() int { - return b.Stat.Attempt() +// RemainingAttempts returns the remain attempt times +func (b *WaitRegionOnlineBackoffer) RemainingAttempts() int { + return b.Stat.RemainingAttempts() } // BackoffMayNotCountBackoffer is a backoffer but it may not increase the retry // counter. It should be used with ErrBackoff or ErrBackoffAndDontCount. +// TODO: merge with backoff.go type BackoffMayNotCountBackoffer struct { state utils.RetryState } @@ -274,7 +390,7 @@ func NewBackoffMayNotCountBackoffer() *BackoffMayNotCountBackoffer { } } -// NextBackoff implements utils.Backoffer. For BackoffMayNotCountBackoffer, only +// NextBackoff implements utils.BackoffStrategy. For BackoffMayNotCountBackoffer, only // ErrBackoff and ErrBackoffAndDontCount is meaningful. func (b *BackoffMayNotCountBackoffer) NextBackoff(err error) time.Duration { if errors.ErrorEqual(err, ErrBackoff) { @@ -289,9 +405,9 @@ func (b *BackoffMayNotCountBackoffer) NextBackoff(err error) time.Duration { return 0 } -// Attempt implements utils.Backoffer. -func (b *BackoffMayNotCountBackoffer) Attempt() int { - return b.state.Attempt() +// RemainingAttempts implements utils.BackoffStrategy. +func (b *BackoffMayNotCountBackoffer) RemainingAttempts() int { + return b.state.RemainingAttempts() } // getSplitKeysOfRegions checks every input key is necessary to split region on diff --git a/br/pkg/restore/split/split_test.go b/br/pkg/restore/split/split_test.go index 2250f7a96635c..6c40cb0cc09b5 100644 --- a/br/pkg/restore/split/split_test.go +++ b/br/pkg/restore/split/split_test.go @@ -5,16 +5,21 @@ import ( "bytes" "context" goerrors "errors" + "fmt" "slices" + "sort" "testing" "time" "github.com/pingcap/errors" "github.com/pingcap/failpoint" + "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/kvproto/pkg/pdpb" berrors "github.com/pingcap/tidb/br/pkg/errors" + restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" + "github.com/pingcap/tidb/br/pkg/rtree" "github.com/pingcap/tidb/br/pkg/utils" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/store/pdtypes" @@ -94,7 +99,7 @@ func (b *recordCntBackoffer) NextBackoff(error) time.Duration { return 0 } -func (b *recordCntBackoffer) Attempt() int { +func (b *recordCntBackoffer) RemainingAttempts() int { return 100 } @@ -288,19 +293,19 @@ func TestWaitForScatterRegions(t *testing.T) { func TestBackoffMayNotCountBackoffer(t *testing.T) { b := NewBackoffMayNotCountBackoffer() - initVal := b.Attempt() + initVal := b.RemainingAttempts() b.NextBackoff(ErrBackoffAndDontCount) - require.Equal(t, initVal, b.Attempt()) + require.Equal(t, initVal, b.RemainingAttempts()) // test Annotate, which is the real usage in caller b.NextBackoff(errors.Annotate(ErrBackoffAndDontCount, "caller message")) - require.Equal(t, initVal, b.Attempt()) + require.Equal(t, initVal, b.RemainingAttempts()) b.NextBackoff(ErrBackoff) - require.Equal(t, initVal-1, b.Attempt()) + require.Equal(t, initVal-1, b.RemainingAttempts()) b.NextBackoff(goerrors.New("test")) - require.Equal(t, 0, b.Attempt()) + require.Equal(t, 0, b.RemainingAttempts()) } func TestSplitCtxCancel(t *testing.T) { @@ -756,3 +761,268 @@ func TestScanRegionsWithRetry(t *testing.T) { require.Equal(t, []byte("2"), regions[1].Region.StartKey) } } + +func TestScanEmptyRegion(t *testing.T) { + mockPDCli := NewMockPDClientForSplit() + mockPDCli.SetRegions([][]byte{{}, {12}, {34}, {}}) + client := NewClient(mockPDCli, nil, nil, 100, 4) + keys := initKeys() + // make keys has only one + keys = keys[0:1] + regionSplitter := NewRegionSplitter(client) + + ctx := context.Background() + err := regionSplitter.ExecuteSortedKeys(ctx, keys) + // should not return error with only one range entry + require.NoError(t, err) +} + +func TestSplitEmptyRegion(t *testing.T) { + mockPDCli := NewMockPDClientForSplit() + mockPDCli.SetRegions([][]byte{{}, {12}, {34}, {}}) + client := NewClient(mockPDCli, nil, nil, 100, 4) + regionSplitter := NewRegionSplitter(client) + err := regionSplitter.ExecuteSortedKeys(context.Background(), nil) + require.NoError(t, err) +} + +// region: [, aay), [aay, bba), [bba, bbh), [bbh, cca), [cca, ) +// range: [aaa, aae), [aae, aaz), [ccd, ccf), [ccf, ccj) +// rewrite rules: aa -> xx, cc -> bb +// expected regions after split: +// +// [, aay), [aay, bba), [bba, bbf), [bbf, bbh), [bbh, bbj), +// [bbj, cca), [cca, xxe), [xxe, xxz), [xxz, ) +func TestSplitAndScatter(t *testing.T) { + rangeBoundaries := [][]byte{[]byte(""), []byte("aay"), []byte("bba"), []byte("bbh"), []byte("cca"), []byte("")} + encodeBytes(rangeBoundaries) + mockPDCli := NewMockPDClientForSplit() + mockPDCli.SetRegions(rangeBoundaries) + client := NewClient(mockPDCli, nil, nil, 100, 4) + regionSplitter := NewRegionSplitter(client) + ctx := context.Background() + + ranges := initRanges() + rules := initRewriteRules() + splitKeys := make([][]byte, 0, len(ranges)) + for _, rg := range ranges { + tmp, err := restoreutils.RewriteRange(&rg, rules) + require.NoError(t, err) + splitKeys = append(splitKeys, tmp.EndKey) + } + sort.Slice(splitKeys, func(i, j int) bool { + return bytes.Compare(splitKeys[i], splitKeys[j]) < 0 + }) + err := regionSplitter.ExecuteSortedKeys(ctx, splitKeys) + require.NoError(t, err) + regions := mockPDCli.Regions.ScanRange(nil, nil, 100) + expected := [][]byte{[]byte(""), []byte("aay"), []byte("bba"), []byte("bbf"), []byte("bbh"), []byte("bbj"), []byte("cca"), []byte("xxe"), []byte("xxz"), []byte("")} + encodeBytes(expected) + require.Len(t, regions, len(expected)-1) + for i, region := range regions { + require.Equal(t, expected[i], region.Meta.StartKey) + require.Equal(t, expected[i+1], region.Meta.EndKey) + } +} + +func encodeBytes(keys [][]byte) { + for i := range keys { + if len(keys[i]) == 0 { + continue + } + keys[i] = codec.EncodeBytes(nil, keys[i]) + } +} + +func TestRawSplit(t *testing.T) { + // Fix issue #36490. + splitKeys := [][]byte{{}} + ctx := context.Background() + rangeBoundaries := [][]byte{[]byte(""), []byte("aay"), []byte("bba"), []byte("bbh"), []byte("cca"), []byte("")} + mockPDCli := NewMockPDClientForSplit() + mockPDCli.SetRegions(rangeBoundaries) + client := NewClient(mockPDCli, nil, nil, 100, 4, WithRawKV()) + + regionSplitter := NewRegionSplitter(client) + err := regionSplitter.ExecuteSortedKeys(ctx, splitKeys) + require.NoError(t, err) + + regions := mockPDCli.Regions.ScanRange(nil, nil, 100) + require.Len(t, regions, len(rangeBoundaries)-1) + for i, region := range regions { + require.Equal(t, rangeBoundaries[i], region.Meta.StartKey) + require.Equal(t, rangeBoundaries[i+1], region.Meta.EndKey) + } +} + +// keys: aae, aaz, ccf, ccj +func initKeys() [][]byte { + return [][]byte{ + []byte("aae"), + []byte("aaz"), + []byte("ccf"), + []byte("ccj"), + } +} + +// range: [aaa, aae), [aae, aaz), [ccd, ccf), [ccf, ccj) +func initRanges() []rtree.Range { + var ranges [4]rtree.Range + ranges[0] = rtree.Range{ + StartKey: []byte("aaa"), + EndKey: []byte("aae"), + } + ranges[1] = rtree.Range{ + StartKey: []byte("aae"), + EndKey: []byte("aaz"), + } + ranges[2] = rtree.Range{ + StartKey: []byte("ccd"), + EndKey: []byte("ccf"), + } + ranges[3] = rtree.Range{ + StartKey: []byte("ccf"), + EndKey: []byte("ccj"), + } + return ranges[:] +} + +func initRewriteRules() *restoreutils.RewriteRules { + var rules [2]*import_sstpb.RewriteRule + rules[0] = &import_sstpb.RewriteRule{ + OldKeyPrefix: []byte("aa"), + NewKeyPrefix: []byte("xx"), + } + rules[1] = &import_sstpb.RewriteRule{ + OldKeyPrefix: []byte("cc"), + NewKeyPrefix: []byte("bb"), + } + return &restoreutils.RewriteRules{ + Data: rules[:], + } +} + +func keyWithTablePrefix(tableID int64, key string) []byte { + rawKey := append(tablecodec.GenTableRecordPrefix(tableID), []byte(key)...) + return codec.EncodeBytes([]byte{}, rawKey) +} + +func TestSplitPoint(t *testing.T) { + ctx := context.Background() + var oldTableID int64 = 50 + var tableID int64 = 100 + rewriteRules := &restoreutils.RewriteRules{ + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.EncodeTablePrefix(oldTableID), + NewKeyPrefix: tablecodec.EncodeTablePrefix(tableID), + }, + }, + } + + // range: b c d e g i + // +---+ +---+ +---------+ + // +-------------+----------+---------+ + // region: a f h j + splitHelper := NewSplitHelper() + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "b"), EndKey: keyWithTablePrefix(oldTableID, "c")}, Value: Value{Size: 100, Number: 100}}) + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "d"), EndKey: keyWithTablePrefix(oldTableID, "e")}, Value: Value{Size: 200, Number: 200}}) + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "g"), EndKey: keyWithTablePrefix(oldTableID, "i")}, Value: Value{Size: 300, Number: 300}}) + client := NewFakeSplitClient() + client.AppendRegion(keyWithTablePrefix(tableID, "a"), keyWithTablePrefix(tableID, "f")) + client.AppendRegion(keyWithTablePrefix(tableID, "f"), keyWithTablePrefix(tableID, "h")) + client.AppendRegion(keyWithTablePrefix(tableID, "h"), keyWithTablePrefix(tableID, "j")) + client.AppendRegion(keyWithTablePrefix(tableID, "j"), keyWithTablePrefix(tableID+1, "a")) + + iter := NewSplitHelperIterator([]*RewriteSplitter{{tableID: tableID, rule: rewriteRules, splitter: splitHelper}}) + err := SplitPoint(ctx, iter, client, func(ctx context.Context, u uint64, o int64, ri *RegionInfo, v []Valued) error { + require.Equal(t, u, uint64(0)) + require.Equal(t, o, int64(0)) + require.Equal(t, ri.Region.StartKey, keyWithTablePrefix(tableID, "a")) + require.Equal(t, ri.Region.EndKey, keyWithTablePrefix(tableID, "f")) + require.EqualValues(t, v[0].Key.StartKey, keyWithTablePrefix(tableID, "b")) + require.EqualValues(t, v[0].Key.EndKey, keyWithTablePrefix(tableID, "c")) + require.EqualValues(t, v[1].Key.StartKey, keyWithTablePrefix(tableID, "d")) + require.EqualValues(t, v[1].Key.EndKey, keyWithTablePrefix(tableID, "e")) + require.Equal(t, len(v), 2) + return nil + }) + require.NoError(t, err) +} + +func getCharFromNumber(prefix string, i int) string { + c := '1' + (i % 10) + b := '1' + (i%100)/10 + a := '1' + i/100 + return fmt.Sprintf("%s%c%c%c", prefix, a, b, c) +} + +func TestSplitPoint2(t *testing.T) { + ctx := context.Background() + var oldTableID int64 = 50 + var tableID int64 = 100 + rewriteRules := &restoreutils.RewriteRules{ + Data: []*import_sstpb.RewriteRule{ + { + OldKeyPrefix: tablecodec.EncodeTablePrefix(oldTableID), + NewKeyPrefix: tablecodec.EncodeTablePrefix(tableID), + }, + }, + } + + // range: b c d e f i j k l n + // +---+ +---+ +-----------------+ +----+ +--------+ + // +---------------+--+.....+----+------------+---------+ + // region: a g >128 h m o + splitHelper := NewSplitHelper() + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "b"), EndKey: keyWithTablePrefix(oldTableID, "c")}, Value: Value{Size: 100, Number: 100}}) + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "d"), EndKey: keyWithTablePrefix(oldTableID, "e")}, Value: Value{Size: 200, Number: 200}}) + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "f"), EndKey: keyWithTablePrefix(oldTableID, "i")}, Value: Value{Size: 300, Number: 300}}) + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "j"), EndKey: keyWithTablePrefix(oldTableID, "k")}, Value: Value{Size: 200, Number: 200}}) + splitHelper.Merge(Valued{Key: Span{StartKey: keyWithTablePrefix(oldTableID, "l"), EndKey: keyWithTablePrefix(oldTableID, "n")}, Value: Value{Size: 200, Number: 200}}) + client := NewFakeSplitClient() + client.AppendRegion(keyWithTablePrefix(tableID, "a"), keyWithTablePrefix(tableID, "g")) + client.AppendRegion(keyWithTablePrefix(tableID, "g"), keyWithTablePrefix(tableID, getCharFromNumber("g", 0))) + for i := 0; i < 256; i++ { + client.AppendRegion(keyWithTablePrefix(tableID, getCharFromNumber("g", i)), keyWithTablePrefix(tableID, getCharFromNumber("g", i+1))) + } + client.AppendRegion(keyWithTablePrefix(tableID, getCharFromNumber("g", 256)), keyWithTablePrefix(tableID, "h")) + client.AppendRegion(keyWithTablePrefix(tableID, "h"), keyWithTablePrefix(tableID, "m")) + client.AppendRegion(keyWithTablePrefix(tableID, "m"), keyWithTablePrefix(tableID, "o")) + client.AppendRegion(keyWithTablePrefix(tableID, "o"), keyWithTablePrefix(tableID+1, "a")) + + firstSplit := true + iter := NewSplitHelperIterator([]*RewriteSplitter{{tableID: tableID, rule: rewriteRules, splitter: splitHelper}}) + err := SplitPoint(ctx, iter, client, func(ctx context.Context, u uint64, o int64, ri *RegionInfo, v []Valued) error { + if firstSplit { + require.Equal(t, u, uint64(0)) + require.Equal(t, o, int64(0)) + require.Equal(t, ri.Region.StartKey, keyWithTablePrefix(tableID, "a")) + require.Equal(t, ri.Region.EndKey, keyWithTablePrefix(tableID, "g")) + require.EqualValues(t, v[0].Key.StartKey, keyWithTablePrefix(tableID, "b")) + require.EqualValues(t, v[0].Key.EndKey, keyWithTablePrefix(tableID, "c")) + require.EqualValues(t, v[1].Key.StartKey, keyWithTablePrefix(tableID, "d")) + require.EqualValues(t, v[1].Key.EndKey, keyWithTablePrefix(tableID, "e")) + require.EqualValues(t, v[2].Key.StartKey, keyWithTablePrefix(tableID, "f")) + require.EqualValues(t, v[2].Key.EndKey, keyWithTablePrefix(tableID, "g")) + require.Equal(t, v[2].Value.Size, uint64(1)) + require.Equal(t, v[2].Value.Number, int64(1)) + require.Equal(t, len(v), 3) + firstSplit = false + } else { + require.Equal(t, u, uint64(1)) + require.Equal(t, o, int64(1)) + require.Equal(t, ri.Region.StartKey, keyWithTablePrefix(tableID, "h")) + require.Equal(t, ri.Region.EndKey, keyWithTablePrefix(tableID, "m")) + require.EqualValues(t, v[0].Key.StartKey, keyWithTablePrefix(tableID, "j")) + require.EqualValues(t, v[0].Key.EndKey, keyWithTablePrefix(tableID, "k")) + require.EqualValues(t, v[1].Key.StartKey, keyWithTablePrefix(tableID, "l")) + require.EqualValues(t, v[1].Key.EndKey, keyWithTablePrefix(tableID, "m")) + require.Equal(t, v[1].Value.Size, uint64(100)) + require.Equal(t, v[1].Value.Number, int64(100)) + require.Equal(t, len(v), 2) + } + return nil + }) + require.NoError(t, err) +} diff --git a/br/pkg/restore/internal/log_split/split.go b/br/pkg/restore/split/splitter.go similarity index 52% rename from br/pkg/restore/internal/log_split/split.go rename to br/pkg/restore/split/splitter.go index eb9b3165ce761..5faec981d4224 100644 --- a/br/pkg/restore/internal/log_split/split.go +++ b/br/pkg/restore/split/splitter.go @@ -1,18 +1,6 @@ -// Copyright 2024 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 logsplit +// Copyright 2024 PingCAP, Inc. Licensed under Apache-2.0. + +package split import ( "bytes" @@ -22,10 +10,7 @@ import ( "time" "github.com/pingcap/errors" - backuppb "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/log" - snapsplit "github.com/pingcap/tidb/br/pkg/restore/internal/snap_split" - "github.com/pingcap/tidb/br/pkg/restore/split" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/util" @@ -34,179 +19,214 @@ import ( "golang.org/x/sync/errgroup" ) -type rewriteSplitter struct { - rewriteKey []byte - tableID int64 - rule *restoreutils.RewriteRules - splitter *SplitHelper -} +// Splitter defines the interface for basic splitting strategies. +type Splitter interface { + // ExecuteSortedKeysOnRegion splits the keys within a single region and initiates scattering + // after the region has been successfully split. + ExecuteSortedKeysOnRegion(ctx context.Context, region *RegionInfo, keys [][]byte) ([]*RegionInfo, error) -type splitHelperIterator struct { - tableSplitters []*rewriteSplitter -} + // ExecuteSortedKeys splits all provided keys while ensuring that the newly created + // regions are balanced. + ExecuteSortedKeys(ctx context.Context, keys [][]byte) error -func (iter *splitHelperIterator) Traverse(fn func(v Valued, endKey []byte, rule *restoreutils.RewriteRules) bool) { - for _, entry := range iter.tableSplitters { - endKey := codec.EncodeBytes([]byte{}, tablecodec.EncodeTablePrefix(entry.tableID+1)) - rule := entry.rule - entry.splitter.Traverse(func(v Valued) bool { - return fn(v, endKey, rule) - }) - } + // WaitForScatterRegionsTimeout blocks until all regions have finished scattering, + // or until the specified timeout duration has elapsed. + WaitForScatterRegionsTimeout(ctx context.Context, regionInfos []*RegionInfo, timeout time.Duration) int } -type LogSplitHelper struct { - tableSplitter map[int64]*SplitHelper - rules map[int64]*restoreutils.RewriteRules - client split.SplitClient - pool *util.WorkerPool - eg *errgroup.Group - regionsCh chan []*split.RegionInfo - - splitThreSholdSize uint64 - splitThreSholdKeys int64 +// SplitStrategy defines how values should be accumulated and when to trigger a split. +type SplitStrategy[T any] interface { + // Accumulate adds a new value into the split strategy's internal state. + // This method accumulates data points or values, preparing them for potential splitting. + Accumulate(T) + // ShouldSplit checks if the accumulated values meet the criteria for triggering a split. + ShouldSplit() bool + // Skip the file by checkpoints or invalid files + ShouldSkip(T) bool + // GetAccumulations returns an iterator for the accumulated values. + GetAccumulations() *SplitHelperIterator + // Reset the buffer for next round + ResetAccumulations() } -func NewLogSplitHelper(rules map[int64]*restoreutils.RewriteRules, client split.SplitClient, splitSize uint64, splitKeys int64) *LogSplitHelper { - return &LogSplitHelper{ - tableSplitter: make(map[int64]*SplitHelper), - rules: rules, - client: client, - pool: util.NewWorkerPool(128, "split region"), - eg: nil, +type BaseSplitStrategy struct { + AccumulateCount int + TableSplitter map[int64]*SplitHelper + Rules map[int64]*restoreutils.RewriteRules +} - splitThreSholdSize: splitSize, - splitThreSholdKeys: splitKeys, +func NewBaseSplitStrategy(rules map[int64]*restoreutils.RewriteRules) *BaseSplitStrategy { + return &BaseSplitStrategy{ + AccumulateCount: 0, + TableSplitter: make(map[int64]*SplitHelper), + Rules: rules, } } -func (helper *LogSplitHelper) iterator() *splitHelperIterator { - tableSplitters := make([]*rewriteSplitter, 0, len(helper.tableSplitter)) - for tableID, splitter := range helper.tableSplitter { - delete(helper.tableSplitter, tableID) - rewriteRule, exists := helper.rules[tableID] +func (b *BaseSplitStrategy) GetAccumulations() *SplitHelperIterator { + tableSplitters := make([]*RewriteSplitter, 0, len(b.TableSplitter)) + for tableID, splitter := range b.TableSplitter { + rewriteRule, exists := b.Rules[tableID] if !exists { - log.Info("skip splitting due to no table id matched", zap.Int64("tableID", tableID)) - continue + log.Fatal("[unreachable] no table id matched", zap.Int64("tableID", tableID)) } newTableID := restoreutils.GetRewriteTableID(tableID, rewriteRule) if newTableID == 0 { log.Warn("failed to get the rewrite table id", zap.Int64("tableID", tableID)) continue } - tableSplitters = append(tableSplitters, &rewriteSplitter{ - rewriteKey: codec.EncodeBytes([]byte{}, tablecodec.EncodeTablePrefix(newTableID)), - tableID: newTableID, - rule: rewriteRule, - splitter: splitter, - }) + tableSplitters = append(tableSplitters, NewRewriteSpliter( + // TODO remove this field. sort by newTableID + codec.EncodeBytes([]byte{}, tablecodec.EncodeTablePrefix(newTableID)), + newTableID, + rewriteRule, + splitter, + )) } sort.Slice(tableSplitters, func(i, j int) bool { - return bytes.Compare(tableSplitters[i].rewriteKey, tableSplitters[j].rewriteKey) < 0 + return bytes.Compare(tableSplitters[i].RewriteKey, tableSplitters[j].RewriteKey) < 0 }) - return &splitHelperIterator{ - tableSplitters: tableSplitters, - } + return NewSplitHelperIterator(tableSplitters) } -const splitFileThreshold = 1024 * 1024 // 1 MB +func (b *BaseSplitStrategy) ResetAccumulations() { + // always assume all previous files has been processed + // so we should reset after handling one batch accumulations + log.Info("reset accumulations") + clear(b.TableSplitter) + b.AccumulateCount = 0 +} -func (helper *LogSplitHelper) skipFile(file *backuppb.DataFileInfo) bool { - _, exist := helper.rules[file.TableId] - return file.Length < splitFileThreshold || file.IsMeta || !exist +type RewriteSplitter struct { + RewriteKey []byte + tableID int64 + rule *restoreutils.RewriteRules + splitter *SplitHelper } -func (helper *LogSplitHelper) Merge(file *backuppb.DataFileInfo) { - if helper.skipFile(file) { - return +func NewRewriteSpliter( + rewriteKey []byte, + tableID int64, + rule *restoreutils.RewriteRules, + splitter *SplitHelper, +) *RewriteSplitter { + return &RewriteSplitter{ + RewriteKey: rewriteKey, + tableID: tableID, + rule: rule, + splitter: splitter, } - splitHelper, exist := helper.tableSplitter[file.TableId] - if !exist { - splitHelper = NewSplitHelper() - helper.tableSplitter[file.TableId] = splitHelper +} + +type SplitHelperIterator struct { + tableSplitters []*RewriteSplitter +} + +func NewSplitHelperIterator(tableSplitters []*RewriteSplitter) *SplitHelperIterator { + return &SplitHelperIterator{tableSplitters: tableSplitters} +} + +func (iter *SplitHelperIterator) Traverse(fn func(v Valued, endKey []byte, rule *restoreutils.RewriteRules) bool) { + for _, entry := range iter.tableSplitters { + endKey := codec.EncodeBytes([]byte{}, tablecodec.EncodeTablePrefix(entry.tableID+1)) + rule := entry.rule + entry.splitter.Traverse(func(v Valued) bool { + return fn(v, endKey, rule) + }) } +} - splitHelper.Merge(Valued{ - Key: Span{ - StartKey: file.StartKey, - EndKey: file.EndKey, - }, - Value: Value{ - Size: file.Length, - Number: file.NumberOfEntries, - }, - }) +// PipelineRegionsSplitter defines the interface for advanced (pipeline) splitting strategies. +// log / compacted sst files restore need to use this to split after full restore. +// and the splitter must perform with a control. +// so we choose to split and restore in a continuous flow. +type PipelineRegionsSplitter interface { + Splitter + ExecuteRegions(ctx context.Context, splitHelper *SplitHelperIterator) error // Method for executing pipeline-based splitting } -type splitFunc = func(context.Context, *snapsplit.RegionSplitter, uint64, int64, *split.RegionInfo, []Valued) error +type PipelineRegionsSplitterImpl struct { + *RegionSplitter + pool *util.WorkerPool + splitThresholdSize uint64 + splitThresholdKeys int64 -func (helper *LogSplitHelper) splitRegionByPoints( - ctx context.Context, - regionSplitter *snapsplit.RegionSplitter, - initialLength uint64, - initialNumber int64, - region *split.RegionInfo, - valueds []Valued, -) error { - var ( - splitPoints [][]byte = make([][]byte, 0) - lastKey []byte = region.Region.StartKey - length uint64 = initialLength - number int64 = initialNumber - ) - for _, v := range valueds { - // decode will discard ts behind the key, which results in the same key for consecutive ranges - if !bytes.Equal(lastKey, v.GetStartKey()) && (v.Value.Size+length > helper.splitThreSholdSize || v.Value.Number+number > helper.splitThreSholdKeys) { - _, rawKey, _ := codec.DecodeBytes(v.GetStartKey(), nil) - splitPoints = append(splitPoints, rawKey) - length = 0 - number = 0 + eg *errgroup.Group + regionsCh chan []*RegionInfo +} + +func NewPipelineRegionsSplitter( + client SplitClient, + splitSize uint64, + splitKeys int64, +) PipelineRegionsSplitter { + pool := util.NewWorkerPool(128, "split") + return &PipelineRegionsSplitterImpl{ + pool: pool, + RegionSplitter: NewRegionSplitter(client), + splitThresholdSize: splitSize, + splitThresholdKeys: splitKeys, + } +} + +func (r *PipelineRegionsSplitterImpl) ExecuteRegions(ctx context.Context, splitHelper *SplitHelperIterator) error { + var ectx context.Context + var wg sync.WaitGroup + r.eg, ectx = errgroup.WithContext(ctx) + r.regionsCh = make(chan []*RegionInfo, 1024) + wg.Add(1) + go func() { + defer wg.Done() + scatterRegions := make([]*RegionInfo, 0) + receiveNewRegions: + for { + select { + case <-ctx.Done(): + return + case newRegions, ok := <-r.regionsCh: + if !ok { + break receiveNewRegions + } + + scatterRegions = append(scatterRegions, newRegions...) + } } - lastKey = v.GetStartKey() - length += v.Value.Size - number += v.Value.Number + // It is too expensive to stop recovery and wait for a small number of regions + // to complete scatter, so the maximum waiting time is reduced to 1 minute. + _ = r.WaitForScatterRegionsTimeout(ectx, scatterRegions, time.Minute) + }() + + err := SplitPoint(ectx, splitHelper, r.client, r.splitRegionByPoints) + if err != nil { + return errors.Trace(err) } - if len(splitPoints) == 0 { - return nil + // wait for completion of splitting regions + if err := r.eg.Wait(); err != nil { + return errors.Trace(err) } - helper.pool.ApplyOnErrorGroup(helper.eg, func() error { - newRegions, errSplit := regionSplitter.SplitWaitAndScatter(ctx, region, splitPoints) - if errSplit != nil { - log.Warn("failed to split the scaned region", zap.Error(errSplit)) - sort.Slice(splitPoints, func(i, j int) bool { - return bytes.Compare(splitPoints[i], splitPoints[j]) < 0 - }) - return regionSplitter.ExecuteSplit(ctx, splitPoints) - } - select { - case <-ctx.Done(): - return nil - case helper.regionsCh <- newRegions: - } - log.Info("split the region", zap.Uint64("region-id", region.Region.Id), zap.Int("split-point-number", len(splitPoints))) - return nil - }) + // wait for completion of scattering regions + close(r.regionsCh) + wg.Wait() + return nil } +type splitFunc = func(context.Context, uint64, int64, *RegionInfo, []Valued) error + // SplitPoint selects ranges overlapped with each region, and calls `splitF` to split the region func SplitPoint( ctx context.Context, - iter *splitHelperIterator, - client split.SplitClient, + iter *SplitHelperIterator, + client SplitClient, splitF splitFunc, ) (err error) { - // common status - var ( - regionSplitter *snapsplit.RegionSplitter = snapsplit.NewRegionSplitter(client) - ) // region traverse status var ( // the region buffer of each scan - regions []*split.RegionInfo = nil - regionIndex int = 0 + regions []*RegionInfo = nil + regionIndex int = 0 ) // region split status var ( @@ -216,8 +236,8 @@ func SplitPoint( // regionValueds is the ranges array overlapped with `regionInfo` regionValueds []Valued = nil // regionInfo is the region to be split - regionInfo *split.RegionInfo = nil - // intialLength is the length of the part of the first range overlapped with the region + regionInfo *RegionInfo = nil + // initialLength is the length of the part of the first range overlapped with the region initialLength uint64 = 0 initialNumber int64 = 0 ) @@ -263,7 +283,7 @@ func SplitPoint( startKey = vStartKey } // scan at most 64 regions into the region buffer - regions, err = split.ScanRegionsWithRetry(ctx, client, startKey, endKey, 64) + regions, err = ScanRegionsWithRetry(ctx, client, startKey, endKey, 64) if err != nil { return false } @@ -285,7 +305,7 @@ func SplitPoint( regionValueds = append(regionValueds, NewValued(vStartKey, regionInfo.Region.EndKey, Value{Size: endLength, Number: endNumber})) } // try to split the region - err = splitF(ctx, regionSplitter, initialLength, initialNumber, regionInfo, regionValueds) + err = splitF(ctx, initialLength, initialNumber, regionInfo, regionValueds) if err != nil { return false } @@ -320,7 +340,7 @@ func SplitPoint( } if len(regionValueds) > 0 { // try to split the region - err = splitF(ctx, regionSplitter, initialLength, initialNumber, regionInfo, regionValueds) + err = splitF(ctx, initialLength, initialNumber, regionInfo, regionValueds) if err != nil { return errors.Trace(err) } @@ -329,48 +349,52 @@ func SplitPoint( return nil } -func (helper *LogSplitHelper) Split(ctx context.Context) error { - var ectx context.Context - var wg sync.WaitGroup - helper.eg, ectx = errgroup.WithContext(ctx) - helper.regionsCh = make(chan []*split.RegionInfo, 1024) - wg.Add(1) - go func() { - defer wg.Done() - scatterRegions := make([]*split.RegionInfo, 0) - receiveNewRegions: - for { - select { - case <-ctx.Done(): - return - case newRegions, ok := <-helper.regionsCh: - if !ok { - break receiveNewRegions - } - - scatterRegions = append(scatterRegions, newRegions...) - } +func (r *PipelineRegionsSplitterImpl) splitRegionByPoints( + ctx context.Context, + initialLength uint64, + initialNumber int64, + region *RegionInfo, + valueds []Valued, +) error { + var ( + splitPoints [][]byte = make([][]byte, 0) + lastKey []byte = region.Region.StartKey + length uint64 = initialLength + number int64 = initialNumber + ) + for _, v := range valueds { + // decode will discard ts behind the key, which results in the same key for consecutive ranges + if !bytes.Equal(lastKey, v.GetStartKey()) && (v.Value.Size+length > r.splitThresholdSize || v.Value.Number+number > r.splitThresholdKeys) { + _, rawKey, _ := codec.DecodeBytes(v.GetStartKey(), nil) + splitPoints = append(splitPoints, rawKey) + length = 0 + number = 0 } - - regionSplitter := snapsplit.NewRegionSplitter(helper.client) - // It is too expensive to stop recovery and wait for a small number of regions - // to complete scatter, so the maximum waiting time is reduced to 1 minute. - _ = regionSplitter.WaitForScatterRegionsTimeout(ctx, scatterRegions, time.Minute) - }() - - iter := helper.iterator() - if err := SplitPoint(ectx, iter, helper.client, helper.splitRegionByPoints); err != nil { - return errors.Trace(err) + lastKey = v.GetStartKey() + length += v.Value.Size + number += v.Value.Number } - // wait for completion of splitting regions - if err := helper.eg.Wait(); err != nil { - return errors.Trace(err) + if len(splitPoints) == 0 { + return nil } - // wait for completion of scattering regions - close(helper.regionsCh) - wg.Wait() - + r.pool.ApplyOnErrorGroup(r.eg, func() error { + newRegions, errSplit := r.ExecuteSortedKeysOnRegion(ctx, region, splitPoints) + if errSplit != nil { + log.Warn("failed to split the scaned region", zap.Error(errSplit)) + sort.Slice(splitPoints, func(i, j int) bool { + return bytes.Compare(splitPoints[i], splitPoints[j]) < 0 + }) + return r.ExecuteSortedKeys(ctx, splitPoints) + } + select { + case <-ctx.Done(): + return nil + case r.regionsCh <- newRegions: + } + log.Info("split the region", zap.Uint64("region-id", region.Region.Id), zap.Int("split-point-number", len(splitPoints))) + return nil + }) return nil } diff --git a/br/pkg/restore/internal/log_split/sum_sorted.go b/br/pkg/restore/split/sum_sorted.go similarity index 99% rename from br/pkg/restore/internal/log_split/sum_sorted.go rename to br/pkg/restore/split/sum_sorted.go index fb5d3d8f9a0a2..1ab51588ba6ca 100644 --- a/br/pkg/restore/internal/log_split/sum_sorted.go +++ b/br/pkg/restore/split/sum_sorted.go @@ -1,5 +1,5 @@ // Copyright 2022 PingCAP, Inc. Licensed under Apache-2.0. -package logsplit +package split import ( "bytes" diff --git a/br/pkg/restore/internal/log_split/sum_sorted_test.go b/br/pkg/restore/split/sum_sorted_test.go similarity index 87% rename from br/pkg/restore/internal/log_split/sum_sorted_test.go rename to br/pkg/restore/split/sum_sorted_test.go index 634ed93f003b1..965a39d6242c4 100644 --- a/br/pkg/restore/internal/log_split/sum_sorted_test.go +++ b/br/pkg/restore/split/sum_sorted_test.go @@ -1,17 +1,17 @@ // Copyright 2022 PingCAP, Inc. Licensed under Apache-2.0. -package logsplit_test +package split_test import ( "fmt" "testing" - logsplit "github.com/pingcap/tidb/br/pkg/restore/internal/log_split" + split "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/stretchr/testify/require" ) -func v(s, e string, val logsplit.Value) logsplit.Valued { - return logsplit.Valued{ - Key: logsplit.Span{ +func v(s, e string, val split.Value) split.Valued { + return split.Valued{ + Key: split.Span{ StartKey: []byte(s), EndKey: []byte(e), }, @@ -19,8 +19,8 @@ func v(s, e string, val logsplit.Value) logsplit.Valued { } } -func mb(b uint64) logsplit.Value { - return logsplit.Value{ +func mb(b uint64) split.Value { + return split.Value{ Size: b * 1024 * 1024, Number: int64(b), } @@ -32,12 +32,12 @@ func exportString(startKey, endKey, size string, number int) string { func TestSumSorted(t *testing.T) { cases := []struct { - values []logsplit.Valued + values []split.Valued result []uint64 strs []string }{ { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("d", "g", mb(100)), @@ -50,7 +50,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("d", "f", mb(100)), @@ -63,7 +63,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -76,7 +76,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -91,7 +91,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -108,7 +108,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -125,7 +125,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -142,7 +142,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -159,7 +159,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -176,7 +176,7 @@ func TestSumSorted(t *testing.T) { }, }, { - values: []logsplit.Valued{ + values: []split.Valued{ v("a", "f", mb(100)), v("a", "c", mb(200)), v("c", "f", mb(100)), @@ -195,14 +195,14 @@ func TestSumSorted(t *testing.T) { } for _, ca := range cases { - full := logsplit.NewSplitHelper() + full := split.NewSplitHelper() for i, v := range ca.values { require.Equal(t, ca.strs[i], v.String()) full.Merge(v) } i := 0 - full.Traverse(func(v logsplit.Valued) bool { + full.Traverse(func(v split.Valued) bool { require.Equal(t, mb(ca.result[i]), v.Value) i++ return true diff --git a/br/pkg/restore/utils/rewrite_rule.go b/br/pkg/restore/utils/rewrite_rule.go index eca06a58bee6a..a664d97a5f11d 100644 --- a/br/pkg/restore/utils/rewrite_rule.go +++ b/br/pkg/restore/utils/rewrite_rule.go @@ -16,6 +16,7 @@ package utils import ( "bytes" + "strings" "github.com/pingcap/errors" backuppb "github.com/pingcap/kvproto/pkg/brpb" @@ -44,6 +45,8 @@ type RewriteRules struct { Data []*import_sstpb.RewriteRule OldKeyspace []byte NewKeyspace []byte + // used to record checkpoint data + NewTableID int64 } // Append append its argument to this rewrite rules. @@ -171,7 +174,7 @@ func GetRewriteRuleOfTable( }) } - return &RewriteRules{Data: dataRules} + return &RewriteRules{Data: dataRules, NewTableID: newTableID} } // ValidateFileRewriteRule uses rewrite rules to validate the ranges of a file. @@ -282,6 +285,26 @@ func FindMatchedRewriteRule(file AppliedFile, rules *RewriteRules) *import_sstpb return rule } +func (r *RewriteRules) String() string { + var out strings.Builder + out.WriteRune('[') + if len(r.OldKeyspace) != 0 { + out.WriteString(redact.Key(r.OldKeyspace)) + out.WriteString(" =[ks]=> ") + out.WriteString(redact.Key(r.NewKeyspace)) + } + for i, d := range r.Data { + if i > 0 { + out.WriteString(",") + } + out.WriteString(redact.Key(d.OldKeyPrefix)) + out.WriteString(" => ") + out.WriteString(redact.Key(d.NewKeyPrefix)) + } + out.WriteRune(']') + return out.String() +} + // GetRewriteRawKeys rewrites rules to the raw key. func GetRewriteRawKeys(file AppliedFile, rewriteRules *RewriteRules) (startKey, endKey []byte, err error) { startID := tablecodec.DecodeTableID(file.GetStartKey()) @@ -290,7 +313,7 @@ func GetRewriteRawKeys(file AppliedFile, rewriteRules *RewriteRules) (startKey, if startID == endID { startKey, rule = rewriteRawKey(file.GetStartKey(), rewriteRules) if rewriteRules != nil && rule == nil { - err = errors.Annotatef(berrors.ErrRestoreInvalidRewrite, "cannot find raw rewrite rule for start key, startKey: %s", redact.Key(file.GetStartKey())) + err = errors.Annotatef(berrors.ErrRestoreInvalidRewrite, "cannot find raw rewrite rule for start key, startKey: %s; self = %s", redact.Key(file.GetStartKey()), rewriteRules) return } endKey, rule = rewriteRawKey(file.GetEndKey(), rewriteRules) @@ -364,7 +387,7 @@ func RewriteRange(rg *rtree.Range, rewriteRules *RewriteRules) (*rtree.Range, er } rg.StartKey, rule = replacePrefix(rg.StartKey, rewriteRules) if rule == nil { - log.Warn("cannot find rewrite rule", logutil.Key("key", rg.StartKey)) + log.Warn("cannot find rewrite rule", logutil.Key("start key", rg.StartKey)) } else { log.Debug( "rewrite start key", @@ -373,7 +396,7 @@ func RewriteRange(rg *rtree.Range, rewriteRules *RewriteRules) (*rtree.Range, er oldKey := rg.EndKey rg.EndKey, rule = replacePrefix(rg.EndKey, rewriteRules) if rule == nil { - log.Warn("cannot find rewrite rule", logutil.Key("key", rg.EndKey)) + log.Warn("cannot find rewrite rule", logutil.Key("end key", rg.EndKey)) } else { log.Debug( "rewrite end key", diff --git a/br/pkg/rtree/rtree.go b/br/pkg/rtree/rtree.go index d487fb70de9ba..aefa1343d4150 100644 --- a/br/pkg/rtree/rtree.go +++ b/br/pkg/rtree/rtree.go @@ -418,7 +418,8 @@ func (rangeTree *ProgressRangeTree) Iter() *IncompleteRangesFetcher { } func (iter *IncompleteRangesFetcher) GetIncompleteRanges() []Range { - incompleteRanges := make([]Range, 0, 64*len(iter.items)) + // about 64 MB memory if there are 1 million ranges + incompleteRanges := make([]Range, 0, len(iter.items)) for _, item := range iter.items { if item.complete { continue diff --git a/br/pkg/storage/BUILD.bazel b/br/pkg/storage/BUILD.bazel index 9084fc41db3cd..60c587893af9f 100644 --- a/br/pkg/storage/BUILD.bazel +++ b/br/pkg/storage/BUILD.bazel @@ -77,6 +77,7 @@ go_library( "@org_golang_google_api//transport/http", "@org_golang_x_net//http2", "@org_golang_x_oauth2//google", + "@org_golang_x_sync//errgroup", "@org_uber_go_atomic//:atomic", "@org_uber_go_multierr//:multierr", "@org_uber_go_zap//:zap", diff --git a/br/pkg/storage/azblob.go b/br/pkg/storage/azblob.go index d8ee26fd5713b..eda934a3f4aad 100644 --- a/br/pkg/storage/azblob.go +++ b/br/pkg/storage/azblob.go @@ -326,6 +326,10 @@ type AzureBlobStorage struct { cpkInfo *blob.CPKInfo } +func (*AzureBlobStorage) MarkStrongConsistency() { + // See https://github.com/MicrosoftDocs/azure-docs/issues/105331#issuecomment-1450252384 +} + func newAzureBlobStorage(ctx context.Context, options *backuppb.AzureBlobStorage, opts *ExternalStorageOptions) (*AzureBlobStorage, error) { clientBuilder, err := getAzureServiceClientBuilder(options, opts) if err != nil { diff --git a/br/pkg/storage/gcs.go b/br/pkg/storage/gcs.go index 60cb56f94025d..0ad39f7d32dfb 100644 --- a/br/pkg/storage/gcs.go +++ b/br/pkg/storage/gcs.go @@ -113,6 +113,10 @@ type GCSStorage struct { clients []*storage.Client } +func (s *GCSStorage) MarkStrongConsistency() { + // See https://cloud.google.com/storage/docs/consistency#strongly_consistent_operations +} + // GetBucketHandle gets the handle to the GCS API on the bucket. func (s *GCSStorage) GetBucketHandle() *storage.BucketHandle { i := s.idx.Inc() % int64(len(s.handles)) @@ -431,7 +435,7 @@ func (s *GCSStorage) Reset(ctx context.Context) error { if err != nil { return errors.Trace(err) } - client.SetRetry(storage.WithErrorFunc(shouldRetry)) + client.SetRetry(storage.WithErrorFunc(shouldRetry), storage.WithPolicy(storage.RetryAlways)) s.clients[i] = client return nil }) diff --git a/br/pkg/storage/helper.go b/br/pkg/storage/helper.go index c0c5c63ba0747..d9c864cf7fa66 100644 --- a/br/pkg/storage/helper.go +++ b/br/pkg/storage/helper.go @@ -7,8 +7,12 @@ import ( "sync/atomic" "github.com/pingcap/errors" + "github.com/pingcap/log" "github.com/pingcap/tidb/br/pkg/utils/iter" "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/util" + "go.uber.org/zap" + "golang.org/x/sync/errgroup" ) func init() { @@ -48,22 +52,32 @@ func UnmarshalDir[T any](ctx context.Context, walkOpt *WalkOption, s ExternalSto errCh := make(chan error, 1) reader := func() { defer close(ch) - err := s.WalkDir(ctx, walkOpt, func(path string, size int64) error { - metaBytes, err := s.ReadFile(ctx, path) - if err != nil { - return errors.Annotatef(err, "failed during reading file %s", path) - } - var meta T - if err := unmarshal(&meta, path, metaBytes); err != nil { - return errors.Annotatef(err, "failed to parse subcompaction meta of file %s", path) - } - select { - case ch <- &meta: - case <-ctx.Done(): - return ctx.Err() - } + pool := util.NewWorkerPool(128, "metadata") + eg, ectx := errgroup.WithContext(ctx) + err := s.WalkDir(ectx, walkOpt, func(path string, size int64) error { + pool.ApplyOnErrorGroup(eg, func() error { + metaBytes, err := s.ReadFile(ectx, path) + if err != nil { + log.Error("failed to read file", zap.String("file", path)) + return errors.Annotatef(err, "during reading meta file %s from storage", path) + } + + var meta T + if err := unmarshal(&meta, path, metaBytes); err != nil { + return errors.Annotatef(err, "failed to unmarshal file %s", path) + } + select { + case ch <- &meta: + case <-ctx.Done(): + return ctx.Err() + } + return nil + }) return nil }) + if err == nil { + err = eg.Wait() + } if err != nil { select { case errCh <- err: diff --git a/br/pkg/storage/local.go b/br/pkg/storage/local.go index b825c79e90381..54f011afb3dd9 100644 --- a/br/pkg/storage/local.go +++ b/br/pkg/storage/local.go @@ -14,6 +14,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/log" + "github.com/pingcap/tidb/br/pkg/logutil" "go.uber.org/zap" ) @@ -52,7 +53,7 @@ func (l *LocalStorage) DeleteFile(_ context.Context, name string) error { os.IsNotExist(err) { return nil } - return err + return errors.Annotatef(err, "failed to delete file %v", name) } // DeleteFiles deletes the files. @@ -123,8 +124,23 @@ func (l *LocalStorage) WalkDir(_ context.Context, opt *WalkOption, fn func(strin base := filepath.Join(l.base, opt.SubDir) return filepath.Walk(base, func(path string, f os.FileInfo, err error) error { if os.IsNotExist(err) { - // if path not exists, we should return nil to continue. - return nil + log.Info("Local Storage Hint: WalkDir yields a tomestone, a race may happen.", zap.String("path", path)) + if !opt.IncludeTombstone { + // if path not exists and the client doesn't require its tombstone, + // we should return nil to continue. + return nil + } + path, err = filepath.Rel(l.base, path) + if err != nil { + log.Panic("filepath.Walk returns a path that isn't a subdir of the base dir.", + zap.String("path", path), zap.String("base", l.base), logutil.ShortError(err)) + } + if !strings.HasPrefix(path, opt.ObjPrefix) { + return nil + } + // NOTE: This may cause a tombstone of the dir emit to the caller when + // call `Walk` in a non-exist dir. + return fn(path, TombstoneSize) } if err != nil { return errors.Trace(err) diff --git a/br/pkg/storage/locking.go b/br/pkg/storage/locking.go index 09486a032c88e..9a5ce3a26cd39 100644 --- a/br/pkg/storage/locking.go +++ b/br/pkg/storage/locking.go @@ -3,23 +3,140 @@ package storage import ( + "bytes" "context" + "encoding/hex" "encoding/json" "fmt" + "math/rand" "os" + "path" "time" + "github.com/google/uuid" "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/log" "github.com/pingcap/tidb/br/pkg/logutil" + "go.uber.org/multierr" "go.uber.org/zap" ) +// conditionalPut is a write that in a strong consistency storage. +// +// It provides a `Verify` hook and a `VerifyWriteContext`, you may check +// the conditions you wanting there. +// +// if the write is success and the file wasn't deleted, no other `conditionalPut` +// over the same file was success. +// +// For more details, check docs/design/2024-10-11-put-and-verify-transactions-for-external-storages.md. +type conditionalPut struct { + // Target is the target file of this txn. + // There shouldn't be other files shares this prefix with this file, or the txn will fail. + Target string + // Content is the content that needed to be written to that file. + Content func(txnID uuid.UUID) []byte + // Verify allows you add other preconditions to the write. + // This will be called when the write is allowed and about to be performed. + // If `Verify()` returns an error, the write will be aborted. + Verify func(ctx VerifyWriteContext) error +} + +type VerifyWriteContext struct { + context.Context + Target string + Storage ExternalStorage + TxnID uuid.UUID +} + +func (cx *VerifyWriteContext) IntentFileName() string { + return fmt.Sprintf("%s.INTENT.%s", cx.Target, hex.EncodeToString(cx.TxnID[:])) +} + +// CommitTo commits the write to the external storage. +// It contains two phases: +// - Intention phase, it will write an "intention" file named "$Target_$TxnID". +// - Put phase, here it actually write the "$Target" down. +// +// In each phase, before writing, it will verify whether the storage is suitable for writing, that is: +// - There shouldn't be any other intention files. +// - Verify() returns no error. (If there is one.) +func (w conditionalPut) CommitTo(ctx context.Context, s ExternalStorage) (uuid.UUID, error) { + if _, ok := s.(StrongConsisency); !ok { + log.Warn("The external storage implementation doesn't provide a strong consistency guarantee. "+ + "Please avoid concurrently accessing it if possible.", + zap.String("type", fmt.Sprintf("%T", s))) + } + + txnID := uuid.New() + cx := VerifyWriteContext{ + Context: ctx, + Target: w.Target, + Storage: s, + TxnID: txnID, + } + intentFileName := cx.IntentFileName() + checkConflict := func() error { + var err error + if w.Verify != nil { + err = multierr.Append(err, w.Verify(cx)) + } + return multierr.Append(err, cx.assertOnlyMyIntent()) + } + + if err := checkConflict(); err != nil { + return uuid.UUID{}, errors.Annotate(err, "during initial check") + } + failpoint.InjectCall("exclusive-write-commit-to-1") + + if err := s.WriteFile(cx, intentFileName, []byte{}); err != nil { + return uuid.UUID{}, errors.Annotate(err, "during writing intention file") + } + + deleteIntentionFile := func() { + if err := s.DeleteFile(cx, intentFileName); err != nil { + log.Warn("Cannot delete the intention file, you may delete it manually.", zap.String("file", intentFileName), logutil.ShortError(err)) + } + } + defer deleteIntentionFile() + if err := checkConflict(); err != nil { + return uuid.UUID{}, errors.Annotate(err, "during checking whether there are other intentions") + } + failpoint.InjectCall("exclusive-write-commit-to-2") + + return txnID, s.WriteFile(cx, w.Target, w.Content(txnID)) +} + +// assertNoOtherOfPrefixExpect asserts that there is no other file with the same prefix than the expect file. +func (cx VerifyWriteContext) assertNoOtherOfPrefixExpect(pfx string, expect string) error { + fileName := path.Base(pfx) + dirName := path.Dir(pfx) + + return cx.Storage.WalkDir(cx, &WalkOption{ + SubDir: dirName, + ObjPrefix: fileName, + // We'd better read a deleted intention... + IncludeTombstone: true, + }, func(path string, size int64) error { + if path != expect { + return fmt.Errorf("there is conflict file %s", path) + } + return nil + }) +} + +// assertOnlyMyIntent asserts that there is no other intention file than our intention file. +func (cx VerifyWriteContext) assertOnlyMyIntent() error { + return cx.assertNoOtherOfPrefixExpect(cx.Target, cx.IntentFileName()) +} + // LockMeta is the meta information of a lock. type LockMeta struct { LockedAt time.Time `json:"locked_at"` LockerHost string `json:"locker_host"` LockerPID int `json:"locker_pid"` + TxnID []byte `json:"txn_id"` Hint string `json:"hint"` } @@ -67,16 +184,18 @@ func readLockMeta(ctx context.Context, storage ExternalStorage, path string) (Lo return meta, nil } -func putLockMeta(ctx context.Context, storage ExternalStorage, path string, meta LockMeta) error { - file, err := json.Marshal(meta) - if err != nil { - return errors.Annotatef(err, "failed to marshal lock meta %s", path) - } - err = storage.WriteFile(ctx, path, file) +type RemoteLock struct { + txnID uuid.UUID + storage ExternalStorage + path string +} + +func tryFetchRemoteLock(ctx context.Context, storage ExternalStorage, path string) error { + meta, err := readLockMeta(ctx, storage, path) if err != nil { - return errors.Annotatef(err, "failed to write lock meta at %s", path) + return err } - return nil + return ErrLocked{Meta: meta} } // TryLockRemote tries to create a "lock file" at the external storage. @@ -84,30 +203,37 @@ func putLockMeta(ctx context.Context, storage ExternalStorage, path string, meta // Will return a `ErrLocked` if there is another process already creates the lock file. // This isn't a strict lock like flock in linux: that means, the lock might be forced removed by // manually deleting the "lock file" in external storage. -func TryLockRemote(ctx context.Context, storage ExternalStorage, path, hint string) (err error) { - defer func() { - log.Info("Trying lock remote file.", zap.String("path", path), zap.String("hint", hint), logutil.ShortError(err)) - }() - exists, err := storage.FileExists(ctx, path) - if err != nil { - return errors.Annotatef(err, "failed to check lock file %s exists", path) - } - if exists { - meta, err := readLockMeta(ctx, storage, path) - if err != nil { - return err - } - return ErrLocked{Meta: meta} +func TryLockRemote(ctx context.Context, storage ExternalStorage, path, hint string) (lock RemoteLock, err error) { + writer := conditionalPut{ + Target: path, + Content: func(txnID uuid.UUID) []byte { + meta := MakeLockMeta(hint) + meta.TxnID = txnID[:] + res, err := json.Marshal(meta) + if err != nil { + log.Panic( + "Unreachable: a trivial object cannot be marshaled to JSON.", + zap.String("path", path), + logutil.ShortError(err), + ) + } + return res + }, } - meta := MakeLockMeta(hint) - return putLockMeta(ctx, storage, path, meta) + lock.storage = storage + lock.path = path + lock.txnID, err = writer.CommitTo(ctx, storage) + if err != nil { + err = errors.Annotatef(err, "there is something about the lock: %s", tryFetchRemoteLock(ctx, storage, path)) + } + return } // UnlockRemote removes the lock file at the specified path. // Removing that file will release the lock. -func UnlockRemote(ctx context.Context, storage ExternalStorage, path string) error { - meta, err := readLockMeta(ctx, storage, path) +func (l RemoteLock) Unlock(ctx context.Context) error { + meta, err := readLockMeta(ctx, l.storage, l.path) if err != nil { return err } @@ -115,10 +241,88 @@ func UnlockRemote(ctx context.Context, storage ExternalStorage, path string) err // operation in our ExternalStorage abstraction. // So, once our lock has been overwritten or we are overwriting other's lock, // this information will be useful for troubleshooting. - log.Info("Releasing lock.", zap.Stringer("meta", meta), zap.String("path", path)) - err = storage.DeleteFile(ctx, path) + if !bytes.Equal(l.txnID[:], meta.TxnID) { + return errors.Errorf("Txn ID mismatch: remote is %v, our is %v", meta.TxnID, l.txnID) + } + + log.Info("Releasing lock.", zap.Stringer("meta", meta), zap.String("path", l.path)) + err = l.storage.DeleteFile(ctx, l.path) if err != nil { - return errors.Annotatef(err, "failed to delete lock file %s", path) + return errors.Annotatef(err, "failed to delete lock file %s", l.path) } return nil } + +func writeLockName(path string) string { + return fmt.Sprintf("%s.WRIT", path) +} + +func newReadLockName(path string) string { + readID := rand.Int63() + return fmt.Sprintf("%s.READ.%016x", path, readID) +} + +func TryLockRemoteWrite(ctx context.Context, storage ExternalStorage, path, hint string) (lock RemoteLock, err error) { + target := writeLockName(path) + writer := conditionalPut{ + Target: target, + Content: func(txnID uuid.UUID) []byte { + meta := MakeLockMeta(hint) + meta.TxnID = txnID[:] + res, err := json.Marshal(meta) + if err != nil { + log.Panic( + "Unreachable: a plain object cannot be marshaled to JSON.", + zap.String("path", path), + logutil.ShortError(err), + ) + } + return res + }, + Verify: func(ctx VerifyWriteContext) error { + return ctx.assertNoOtherOfPrefixExpect(path, ctx.IntentFileName()) + }, + } + + lock.storage = storage + lock.path = target + lock.txnID, err = writer.CommitTo(ctx, storage) + if err != nil { + err = errors.Annotatef(err, "there is something about the lock: %s", tryFetchRemoteLock(ctx, storage, target)) + } + return +} + +func TryLockRemoteRead(ctx context.Context, storage ExternalStorage, path, hint string) (lock RemoteLock, err error) { + target := newReadLockName(path) + writeLock := writeLockName(path) + writer := conditionalPut{ + Target: target, + Content: func(txnID uuid.UUID) []byte { + meta := MakeLockMeta(hint) + meta.TxnID = txnID[:] + res, err := json.Marshal(meta) + if err != nil { + log.Panic( + "Unreachable: a trivial object cannot be marshaled to JSON.", + zap.String("path", path), + logutil.ShortError(err), + ) + } + return res + }, + Verify: func(ctx VerifyWriteContext) error { + return ctx.assertNoOtherOfPrefixExpect(writeLock, "") + }, + } + + lock.storage = storage + lock.path = target + lock.txnID, err = writer.CommitTo(ctx, storage) + if err != nil { + err = errors.Annotatef(err, "failed to commit the lock due to existing lock: "+ + "there is something about the lock: %s", tryFetchRemoteLock(ctx, storage, writeLock)) + } + + return +} diff --git a/br/pkg/storage/locking_test.go b/br/pkg/storage/locking_test.go index ab6056c324714..2bd044dd9441a 100644 --- a/br/pkg/storage/locking_test.go +++ b/br/pkg/storage/locking_test.go @@ -6,8 +6,10 @@ import ( "context" "os" "path/filepath" + "sync/atomic" "testing" + "github.com/pingcap/failpoint" backup "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/tidb/br/pkg/storage" "github.com/stretchr/testify/require" @@ -39,10 +41,10 @@ func requireFileNotExists(t *testing.T, path string) { func TestTryLockRemote(t *testing.T) { ctx := context.Background() strg, pth := createMockStorage(t) - err := storage.TryLockRemote(ctx, strg, "test.lock", "This file is mine!") + lock, err := storage.TryLockRemote(ctx, strg, "test.lock", "This file is mine!") require.NoError(t, err) requireFileExists(t, filepath.Join(pth, "test.lock")) - err = storage.UnlockRemote(ctx, strg, "test.lock") + err = lock.Unlock(ctx) require.NoError(t, err) requireFileNotExists(t, filepath.Join(pth, "test.lock")) } @@ -50,12 +52,88 @@ func TestTryLockRemote(t *testing.T) { func TestConflictLock(t *testing.T) { ctx := context.Background() strg, pth := createMockStorage(t) - err := storage.TryLockRemote(ctx, strg, "test.lock", "This file is mine!") + lock, err := storage.TryLockRemote(ctx, strg, "test.lock", "This file is mine!") require.NoError(t, err) - err = storage.TryLockRemote(ctx, strg, "test.lock", "This file is mine!") - require.ErrorContains(t, err, "locked, meta = Locked") + _, err = storage.TryLockRemote(ctx, strg, "test.lock", "This file is mine!") + require.ErrorContains(t, err, "conflict file test.lock") requireFileExists(t, filepath.Join(pth, "test.lock")) - err = storage.UnlockRemote(ctx, strg, "test.lock") + err = lock.Unlock(ctx) require.NoError(t, err) requireFileNotExists(t, filepath.Join(pth, "test.lock")) } + +func TestRWLock(t *testing.T) { + ctx := context.Background() + strg, path := createMockStorage(t) + lock, err := storage.TryLockRemoteRead(ctx, strg, "test.lock", "I wanna read it!") + require.NoError(t, err) + lock2, err := storage.TryLockRemoteRead(ctx, strg, "test.lock", "I wanna read it too!") + require.NoError(t, err) + _, err = storage.TryLockRemoteWrite(ctx, strg, "test.lock", "I wanna write it, you get out!") + require.Error(t, err) + require.NoError(t, lock.Unlock(ctx)) + require.NoError(t, lock2.Unlock(ctx)) + l, err := storage.TryLockRemoteWrite(ctx, strg, "test.lock", "Can I have a write lock?") + require.NoError(t, err) + requireFileExists(t, filepath.Join(path, "test.lock.WRIT")) + require.NoError(t, l.Unlock(ctx)) + requireFileNotExists(t, filepath.Join(path, "test.lock.WRIT")) +} + +func TestConcurrentLock(t *testing.T) { + ctx := context.Background() + strg, path := createMockStorage(t) + + errChA := make(chan error, 1) + errChB := make(chan error, 1) + + waitRecvTwice := func(ch chan<- struct{}) func() { + return func() { + ch <- struct{}{} + ch <- struct{}{} + } + } + + asyncOnceFunc := func(f func()) func() { + run := new(atomic.Bool) + return func() { + if run.CompareAndSwap(false, true) { + f() + } + } + } + chA := make(chan struct{}) + onceA := asyncOnceFunc(waitRecvTwice(chA)) + chB := make(chan struct{}) + onceB := asyncOnceFunc(waitRecvTwice(chB)) + + require.NoError(t, failpoint.EnableCall("github.com/pingcap/tidb/br/pkg/storage/exclusive-write-commit-to-1", onceA)) + require.NoError(t, failpoint.EnableCall("github.com/pingcap/tidb/br/pkg/storage/exclusive-write-commit-to-2", onceB)) + + go func() { + _, err := storage.TryLockRemote(ctx, strg, "test.lock", "I wanna read it, but I hesitated before send my intention!") + errChA <- err + }() + + go func() { + _, err := storage.TryLockRemote(ctx, strg, "test.lock", "I wanna read it too, but I hesitated before committing!") + errChB <- err + }() + + <-chA + <-chB + + <-chB + <-chA + + // There is exactly one error. + errA := <-errChA + errB := <-errChB + if errA == nil { + require.Error(t, errB) + } else { + require.NoError(t, errB, "%s", errA) + } + + requireFileExists(t, filepath.Join(path, "test.lock")) +} diff --git a/br/pkg/storage/s3.go b/br/pkg/storage/s3.go index 3987512b2a0a2..00a90f55c3400 100644 --- a/br/pkg/storage/s3.go +++ b/br/pkg/storage/s3.go @@ -83,6 +83,10 @@ type S3Storage struct { options *backuppb.S3 } +func (*S3Storage) MarkStrongConsistency() { + // See https://aws.amazon.com/cn/s3/consistency/ +} + // GetS3APIHandle gets the handle to the S3 API. func (rs *S3Storage) GetS3APIHandle() s3iface.S3API { return rs.svc diff --git a/br/pkg/storage/storage.go b/br/pkg/storage/storage.go index 042d4a1f4d715..0ad8cdc20aeac 100644 --- a/br/pkg/storage/storage.go +++ b/br/pkg/storage/storage.go @@ -18,6 +18,12 @@ import ( // Permission represents the permission we need to check in create storage. type Permission string +// StrongConsistency is a marker interface that indicates the storage is strong consistent +// over its `Read`, `Write` and `WalkDir` APIs. +type StrongConsisency interface { + MarkStrongConsistency() +} + const ( // AccessBuckets represents bucket access permission // it replace the origin skip-check-path. @@ -33,7 +39,8 @@ const ( // we cannot check DeleteObject permission alone, so we use PutAndDeleteObject instead. PutAndDeleteObject Permission = "PutAndDeleteObject" - DefaultRequestConcurrency uint = 128 + DefaultRequestConcurrency uint = 128 + TombstoneSize int64 = -1 ) // WalkOption is the option of storage.WalkDir. @@ -62,6 +69,14 @@ type WalkOption struct { // to reduce the possibility of timeout on an extremely slow connection, or // perform testing. ListCount int64 + // IncludeTombstone will allow `Walk` to emit removed files during walking. + // + // In most cases, `Walk` runs over a snapshot, if a file in the snapshot + // was deleted during walking, the file will be ignored. Set this to `true` + // will make them be sent to the callback. + // + // The size of a deleted file should be `TombstoneSize`. + IncludeTombstone bool } // ReadSeekCloser is the interface that groups the basic Read, Seek and Close methods. diff --git a/br/pkg/stream/BUILD.bazel b/br/pkg/stream/BUILD.bazel index e72ef472d26f6..225d50cb5a9a9 100644 --- a/br/pkg/stream/BUILD.bazel +++ b/br/pkg/stream/BUILD.bazel @@ -34,6 +34,7 @@ go_library( "//pkg/util/codec", "//pkg/util/mathutil", "//pkg/util/table-filter", + "//pkg/util/versioninfo", "@com_github_docker_go_units//:go-units", "@com_github_fatih_color//:color", "@com_github_klauspost_compress//zstd", @@ -64,7 +65,7 @@ go_test( ], embed = [":stream"], flaky = True, - shard_count = 44, + shard_count = 48, deps = [ "//br/pkg/storage", "//br/pkg/streamhelper", @@ -87,6 +88,7 @@ go_test( "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//oracle", "@org_golang_x_exp//maps", + "@org_uber_go_multierr//:multierr", "@org_uber_go_zap//:zap", ], ) diff --git a/br/pkg/stream/stream_metas.go b/br/pkg/stream/stream_metas.go index b51923a9638c1..6801035ce7214 100644 --- a/br/pkg/stream/stream_metas.go +++ b/br/pkg/stream/stream_metas.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/br/pkg/utils/iter" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/mathutil" + "github.com/pingcap/tidb/pkg/util/versioninfo" "go.uber.org/multierr" "go.uber.org/zap" "golang.org/x/sync/errgroup" @@ -38,8 +39,17 @@ const ( baseTmp = "BASE_TMP" metaSuffix = ".meta" migrationPrefix = "v1/migrations" + + SupportedMigVersion = pb.MigrationVersion_M1 ) +func NewMigration() *pb.Migration { + return &pb.Migration{ + Version: pb.MigrationVersion_M1, + Creator: fmt.Sprintf("br;commit=%s;branch=%s", versioninfo.TiDBGitHash, versioninfo.TiDBGitBranch), + } +} + type StreamMetadataSet struct { // if set true, the metadata and datafile won't be removed DryRun bool @@ -196,7 +206,7 @@ func (ms *StreamMetadataSet) RemoveDataFilesAndUpdateMetadataInBatch( hst := ms.hook(st) est := MigerationExtension(hst) est.Hooks = updateFnHook{updateFn: updateFn} - res := MigratedTo{NewBase: new(pb.Migration)} + res := MigratedTo{NewBase: NewMigration()} est.doTruncateLogs(ctx, ms, from, &res) if bst, ok := hst.ExternalStorage.(*storage.Batched); ok { @@ -517,7 +527,7 @@ func MigerationExtension(s storage.ExternalStorage) MigrationExt { // Merge merges two migrations. // The merged migration contains all operations from the two arguments. func MergeMigrations(m1 *pb.Migration, m2 *pb.Migration) *pb.Migration { - out := new(pb.Migration) + out := NewMigration() out.EditMeta = mergeMetaEdits(m1.GetEditMeta(), m2.GetEditMeta()) out.Compactions = append(out.Compactions, m1.GetCompactions()...) out.Compactions = append(out.Compactions, m2.GetCompactions()...) @@ -563,6 +573,24 @@ type OrderedMigration struct { Content pb.Migration `json:"content"` } +func (o *OrderedMigration) unmarshalContent(b []byte) error { + err := o.Content.Unmarshal(b) + if err != nil { + return err + } + if o.Content.Version > SupportedMigVersion { + return errors.Annotatef( + berrors.ErrMigrationVersionNotSupported, + "the migration at %s has version %s(%d), the max version we support is %s(%d)", + o.Path, + o.Content.Version, o.Content.Version, + SupportedMigVersion, SupportedMigVersion, + ) + } + + return nil +} + // Load loads the current living migrations from the storage. func (m MigrationExt) Load(ctx context.Context) (Migrations, error) { opt := &storage.WalkOption{ @@ -575,6 +603,11 @@ func (m MigrationExt) Load(ctx context.Context) (Migrations, error) { if err != nil { return errors.Trace(err) } + err = t.unmarshalContent(b) + if err != nil { + return err + } + if t.SeqNum == baseMigrationSN { // NOTE: the legacy truncating isn't implemented by appending a migration. // We load their checkpoint here to be compatible with them. @@ -585,7 +618,7 @@ func (m MigrationExt) Load(ctx context.Context) (Migrations, error) { } t.Content.TruncatedTo = max(truncatedTs, t.Content.TruncatedTo) } - return t.Content.Unmarshal(b) + return nil }) collected := iter.CollectAll(ctx, items) if collected.Err != nil { @@ -605,7 +638,7 @@ func (m MigrationExt) Load(ctx context.Context) (Migrations, error) { // The BASE migration isn't persisted. // This happens when `migrate-to` wasn't run ever. result = Migrations{ - Base: new(pb.Migration), + Base: NewMigration(), Layers: collected.Item, } } @@ -652,6 +685,17 @@ func (migs Migrations) MergeToBy(seq int, merge func(m1, m2 *pb.Migration) *pb.M return newBase } +// ListAll returns a slice of all migrations in protobuf format. +// This includes the base migration and any additional layers. +func (migs Migrations) ListAll() []*pb.Migration { + pbMigs := make([]*pb.Migration, 0, len(migs.Layers)+1) + pbMigs = append(pbMigs, migs.Base) + for _, m := range migs.Layers { + pbMigs = append(pbMigs, &m.Content) + } + return pbMigs +} + type mergeAndMigrateToConfig struct { interactiveCheck func(context.Context, *pb.Migration) bool alwaysRunTruncate bool @@ -750,8 +794,8 @@ func (m MigrationExt) MergeAndMigrateTo( err = m.writeBase(ctx, newBase) if err != nil { result.Warnings = append( - result.MigratedTo.Warnings, - errors.Annotatef(err, "failed to save the merged new base, nothing will happen"), + result.Warnings, + errors.Annotate(err, "failed to save the merged new base"), ) // Put the new BASE here anyway. The caller may want this. result.NewBase = newBase @@ -773,9 +817,9 @@ func (m MigrationExt) MergeAndMigrateTo( result.MigratedTo = m.MigrateTo(ctx, newBase, MTMaybeSkipTruncateLog(!config.alwaysRunTruncate && canSkipTruncate)) // Put the final BASE. - err = m.writeBase(ctx, result.MigratedTo.NewBase) + err = m.writeBase(ctx, result.NewBase) if err != nil { - result.Warnings = append(result.MigratedTo.Warnings, errors.Annotatef(err, "failed to save the new base")) + result.Warnings = append(result.Warnings, errors.Annotatef(err, "failed to save the new base")) } return } @@ -807,10 +851,8 @@ func (m MigrationExt) MigrateTo(ctx context.Context, mig *pb.Migration, opts ... } result := MigratedTo{ - NewBase: new(pb.Migration), + NewBase: NewMigration(), } - // Fills: EditMeta for new Base. - m.doMetaEdits(ctx, mig, &result) // Fills: TruncatedTo, Compactions, DesctructPrefix. if !opt.skipTruncateLog { m.doTruncating(ctx, mig, &result) @@ -820,6 +862,10 @@ func (m MigrationExt) MigrateTo(ctx context.Context, mig *pb.Migration, opts ... result.NewBase.TruncatedTo = mig.TruncatedTo } + // We do skip truncate log first, so metas removed by truncating can be removed in this execution. + // Fills: EditMeta for new Base. + m.doMetaEdits(ctx, mig, &result) + return result } @@ -836,6 +882,7 @@ func (m MigrationExt) writeBase(ctx context.Context, mig *pb.Migration) error { } // doMetaEdits applies the modification to the meta files in the storage. +// This will delete data files firstly. Make sure the new BASE was persisted before calling this. func (m MigrationExt) doMetaEdits(ctx context.Context, mig *pb.Migration, out *MigratedTo) { m.Hooks.StartHandlingMetaEdits(mig.EditMeta) @@ -843,14 +890,26 @@ func (m MigrationExt) doMetaEdits(ctx context.Context, mig *pb.Migration, out *M if isEmptyEdition(medit) { return } + + // Sometimes, the meta file will be deleted by truncating. + // We clean up those meta edits. + // NOTE: can we unify the deletion of truncating and meta editing? + // Say, add a "normalize" phase that load all files to be deleted to the migration. + // The problem here is a huge migration may be created in memory then leading to OOM. + exists, errChkExist := m.s.FileExists(ctx, medit.Path) + if errChkExist == nil && !exists { + log.Warn("The meta file doesn't exist, skipping the edit", zap.String("path", medit.Path)) + return + } + + // Firstly delete data so they won't leak when BR crashes. + m.cleanUpFor(ctx, medit, out) err := m.applyMetaEdit(ctx, medit) if err != nil { out.NewBase.EditMeta = append(out.NewBase.EditMeta, medit) out.Warnings = append(out.Warnings, errors.Annotatef(err, "failed to apply meta edit %s to meta file", medit.Path)) return } - - m.cleanUpFor(ctx, medit, out) } defer m.Hooks.HandingMetaEditDone() @@ -892,6 +951,13 @@ func (m MigrationExt) cleanUpFor(ctx context.Context, medit *pb.MetaEdit, out *M } } + if len(out.Warnings) > 0 { + log.Warn( + "Failed to clean up for meta edit.", + zap.String("meta-edit", medit.Path), + zap.Errors("warnings", out.Warnings), + ) + } if !isEmptyEdition(newMetaEdit) { out.NewBase.EditMeta = append(out.NewBase.EditMeta, newMetaEdit) } @@ -930,7 +996,6 @@ func (m MigrationExt) applyMetaEditTo(ctx context.Context, medit *pb.MetaEdit, m }) metadata.FileGroups = slices.DeleteFunc(metadata.FileGroups, func(dfg *pb.DataFileGroup) bool { del := slices.Contains(medit.DeletePhysicalFiles, dfg.Path) - fmt.Println(medit.Path, medit.DeletePhysicalFiles, dfg.Path, del) return del }) for _, group := range metadata.FileGroups { @@ -1099,6 +1164,7 @@ func (m MigrationExt) doTruncateLogs( // We have already written `truncated-to` to the storage hence // we don't need to worry that the user access files already deleted. aOut := new(MigratedTo) + aOut.NewBase = new(pb.Migration) m.cleanUpFor(ctx, me, aOut) updateResult(func(r *MigratedTo) { r.Warnings = append(r.Warnings, aOut.Warnings...) diff --git a/br/pkg/stream/stream_metas_test.go b/br/pkg/stream/stream_metas_test.go index c6055459a26c0..c0fcbbae623ce 100644 --- a/br/pkg/stream/stream_metas_test.go +++ b/br/pkg/stream/stream_metas_test.go @@ -3,6 +3,7 @@ package stream import ( + "bytes" "context" "fmt" "math" @@ -23,6 +24,7 @@ import ( "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/util/intest" "github.com/stretchr/testify/require" + "go.uber.org/multierr" "go.uber.org/zap" "golang.org/x/exp/maps" ) @@ -347,8 +349,6 @@ func TestTruncateSafepoint(t *testing.T) { } func TestTruncateSafepointForGCS(t *testing.T) { - t.SkipNow() - require.True(t, intest.InTest) ctx := context.Background() opts := fakestorage.Options{ @@ -389,144 +389,6 @@ func TestTruncateSafepointForGCS(t *testing.T) { } } -func fakeMetaDatas(t *testing.T, helper *MetadataHelper, cf string) []*backuppb.Metadata { - ms := []*backuppb.Metadata{ - { - StoreId: 1, - MinTs: 1500, - MaxTs: 2000, - Files: []*backuppb.DataFileInfo{ - { - MinTs: 1500, - MaxTs: 2000, - Cf: cf, - MinBeginTsInDefaultCf: 800, - }, - }, - }, - { - StoreId: 2, - MinTs: 3000, - MaxTs: 4000, - Files: []*backuppb.DataFileInfo{ - { - MinTs: 3000, - MaxTs: 4000, - Cf: cf, - MinBeginTsInDefaultCf: 2000, - }, - }, - }, - { - StoreId: 3, - MinTs: 5100, - MaxTs: 6100, - Files: []*backuppb.DataFileInfo{ - { - MinTs: 5100, - MaxTs: 6100, - Cf: cf, - MinBeginTsInDefaultCf: 1800, - }, - }, - }, - } - - m2s := make([]*backuppb.Metadata, 0, len(ms)) - for _, m := range ms { - raw, err := m.Marshal() - require.NoError(t, err) - m2, err := helper.ParseToMetadata(raw) - require.NoError(t, err) - m2s = append(m2s, m2) - } - return m2s -} - -func fakeMetaDataV2s(t *testing.T, helper *MetadataHelper, cf string) []*backuppb.Metadata { - ms := []*backuppb.Metadata{ - { - StoreId: 1, - MinTs: 1500, - MaxTs: 6100, - FileGroups: []*backuppb.DataFileGroup{ - { - MinTs: 1500, - MaxTs: 6100, - DataFilesInfo: []*backuppb.DataFileInfo{ - { - MinTs: 1500, - MaxTs: 2000, - Cf: cf, - MinBeginTsInDefaultCf: 800, - }, - { - MinTs: 3000, - MaxTs: 4000, - Cf: cf, - MinBeginTsInDefaultCf: 2000, - }, - { - MinTs: 5200, - MaxTs: 6100, - Cf: cf, - MinBeginTsInDefaultCf: 1700, - }, - }, - }, - { - MinTs: 1000, - MaxTs: 5100, - DataFilesInfo: []*backuppb.DataFileInfo{ - { - MinTs: 9000, - MaxTs: 10000, - Cf: cf, - MinBeginTsInDefaultCf: 0, - }, - { - MinTs: 3000, - MaxTs: 4000, - Cf: cf, - MinBeginTsInDefaultCf: 2000, - }, - }, - }, - }, - MetaVersion: backuppb.MetaVersion_V2, - }, - { - StoreId: 2, - MinTs: 4100, - MaxTs: 5100, - FileGroups: []*backuppb.DataFileGroup{ - { - MinTs: 4100, - MaxTs: 5100, - DataFilesInfo: []*backuppb.DataFileInfo{ - { - MinTs: 4100, - MaxTs: 5100, - Cf: cf, - MinBeginTsInDefaultCf: 1800, - }, - }, - }, - }, - MetaVersion: backuppb.MetaVersion_V2, - }, - } - m2s := make([]*backuppb.Metadata, 0, len(ms)) - for _, m := range ms { - raw, err := m.Marshal() - require.NoError(t, err) - m2, err := helper.ParseToMetadata(raw) - require.NoError(t, err) - m2s = append(m2s, m2) - } - return m2s -} - func ff(minTS, maxTS uint64) *backuppb.DataFileGroup { return f(0, minTS, maxTS, DefaultCF, 0) } @@ -707,12 +569,26 @@ func pmt(s storage.ExternalStorage, path string, mt *backuppb.Metadata) { } } +func pmlt(s storage.ExternalStorage, path string, mt *backuppb.Metadata, logPath func(i int) string) { + for i, g := range mt.FileGroups { + g.Path = logPath(i) + maxLen := uint64(0) + for _, sg := range g.DataFilesInfo { + if sg.RangeOffset+sg.Length > maxLen { + maxLen = sg.RangeOffset + sg.Length + } + } + os.WriteFile(g.Path, bytes.Repeat([]byte("0"), int(maxLen)), 0o644) + } + pmt(s, path, mt) +} + func pmig(s storage.ExternalStorage, num uint64, mt *backuppb.Migration) string { numS := fmt.Sprintf("%08d", num) + name := fmt.Sprintf("%s_%08X.mgrt", numS, hashMigration(mt)) if num == baseMigrationSN { - numS = baseMigrationName + name = baseMigrationName } - name := fmt.Sprintf("%s_%08X.mgrt", numS, hashMigration(mt)) p := path.Join(migrationPrefix, name) data, err := mt.Marshal() @@ -732,6 +608,12 @@ func mTruncatedTo(to uint64) migOP { } } +func mVersion(ver backuppb.MigrationVersion) migOP { + return func(m *backuppb.Migration) { + m.Version = ver + } +} + // tmp creates a temporary storage. func tmp(t *testing.T) *storage.LocalStorage { tmpDir := t.TempDir() @@ -2830,3 +2712,101 @@ func TestWithSimpleTruncate(t *testing.T) { } } } + +func TestAppendingMigs(t *testing.T) { + s := tmp(t) + ctx := context.Background() + mN := func(n uint64) string { return fmt.Sprintf("v1/backupmeta/%05d.meta", n) } + lN := func(mn int) func(n int) string { + return func(n int) string { return fmt.Sprintf("v1/%05d_%05d.log", mn, n) } + } + placeholder := func(pfx string) string { + path := path.Join(pfx, "monolith") + require.NoError(t, s.WriteFile(ctx, path, []byte("🪨"))) + return path + } + // asp appends a span to the data file info. + asp := func(b *backuppb.DataFileInfo, span *backuppb.Span) *backuppb.DataFileInfo { + b.RangeOffset = span.Offset + b.RangeLength = span.Length + return b + } + + pmlt(s, mN(1), mf(1, [][]*backuppb.DataFileInfo{ + { + asp(fi(10, 20, DefaultCF, 0), sp(0, 10)), + asp(fi(15, 30, WriteCF, 8), sp(10, 15)), + asp(fi(25, 35, WriteCF, 11), sp(25, 10)), + asp(fi(42, 65, WriteCF, 20), sp(35, 10)), + }, + }), lN(1)) + pmlt(s, mN(2), mf(2, [][]*backuppb.DataFileInfo{ + { + asp(fi(45, 64, WriteCF, 32), sp(0, 19)), + asp(fi(65, 70, WriteCF, 55), sp(19, 5)), + asp(fi(50, 60, DefaultCF, 0), sp(24, 10)), + asp(fi(80, 85, WriteCF, 72), sp(34, 5)), + }, + }), lN(2)) + est := MigerationExtension(s) + + cDir := func(n uint64) string { return fmt.Sprintf("%05d/output", n) } + aDir := func(n uint64) string { return fmt.Sprintf("%05d/metas", n) } + compaction := mCompaction(placeholder(cDir(1)), placeholder(aDir(1)), 15, 66) + del11 := mLogDel(mN(1), spans(lN(1)(0), 45, sp(0, 10), sp(10, 15))) + del12 := mLogDel(mN(1), spans(lN(1)(0), 45, sp(35, 10), sp(25, 10))) + del2 := mLogDel(mN(2), spans(lN(2)(0), 39, sp(24, 10))) + m := mig(compaction, del11, del2) + pmig(s, 1, m) + pmig(s, 2, mig(del12)) + + res := est.MergeAndMigrateTo(ctx, math.MaxInt, MMOptAlwaysRunTruncate(), MMOptAppendPhantomMigration(*mig(mTruncatedTo(65)))) + require.NoError(t, multierr.Combine(res.Warnings...)) + requireMigrationsEqual(t, res.NewBase, mig(mTruncatedTo(65), compaction, del2)) + require.FileExists(t, filepath.Join(s.Base(), cDir(1), "monolith")) + + res = est.MergeAndMigrateTo(ctx, math.MaxInt, MMOptInteractiveCheck(func(ctx context.Context, m *backuppb.Migration) bool { + return true + }), MMOptAlwaysRunTruncate(), MMOptAppendPhantomMigration(*mig(mTruncatedTo(100)))) + require.NoError(t, multierr.Combine(res.Warnings...)) + requireMigrationsEqual(t, res.NewBase, mig(mTruncatedTo(100))) + require.NoFileExists(t, filepath.Join(s.Base(), cDir(1), "monolith")) + require.NoFileExists(t, filepath.Join(s.Base(), mN(1))) + require.NoFileExists(t, filepath.Join(s.Base(), lN(1)(0))) +} + +func TestUserAbort(t *testing.T) { + s := tmp(t) + ctx := context.Background() + + pmig(s, 0, mig(mTruncatedTo(42))) + pmig(s, 1, mig(mTruncatedTo(96))) + est := MigerationExtension(s) + var res MergeAndMigratedTo + effs := est.DryRun(func(me MigrationExt) { + res = me.MergeAndMigrateTo(ctx, 1, MMOptInteractiveCheck(func(ctx context.Context, m *backuppb.Migration) bool { + return false + })) + }) + require.Len(t, res.Warnings, 1) + require.ErrorContains(t, res.Warnings[0], "aborted") + require.Empty(t, effs) +} + +func TestUnsupportedVersion(t *testing.T) { + s := tmp(t) + m := mig(mVersion(backuppb.MigrationVersion(65535))) + pmig(s, 1, m) + + est := MigerationExtension(s) + ctx := context.Background() + _, err := est.Load(ctx) + require.Error(t, err) + require.ErrorContains(t, err, "ErrMigrationVersionNotSupported") +} + +func TestCreator(t *testing.T) { + mig := NewMigration() + require.Contains(t, mig.Creator, "br") + require.Equal(t, mig.Version, SupportedMigVersion) +} diff --git a/br/pkg/streamhelper/advancer.go b/br/pkg/streamhelper/advancer.go index 5eeded57a317f..8e8263f63fed0 100644 --- a/br/pkg/streamhelper/advancer.go +++ b/br/pkg/streamhelper/advancer.go @@ -6,7 +6,7 @@ import ( "bytes" "context" "fmt" - "math" + "slices" "strings" "sync" "sync/atomic" @@ -234,7 +234,7 @@ func (c *CheckpointAdvancer) tryAdvance(ctx context.Context, length int, defer c.checkpointsMu.Unlock() c.checkpoints.Merge(spans.Valued{Key: kr, Value: u}) }) - clampedRanges := utils.IntersectAll(ranges, utils.CloneSlice(c.taskRange)) + clampedRanges := utils.IntersectAll(ranges, slices.Clone(c.taskRange)) for _, r := range clampedRanges { workers.ApplyOnErrorGroup(eg, func() (e error) { defer c.recordTimeCost("get regions in range")() @@ -472,7 +472,7 @@ func (c *CheckpointAdvancer) onTaskEvent(ctx context.Context, e TaskEvent) error return nil } -func (c *CheckpointAdvancer) setCheckpoint(ctx context.Context, s spans.Valued) bool { +func (c *CheckpointAdvancer) setCheckpoint(s spans.Valued) bool { cp := NewCheckpointWithSpan(s) if cp.TS < c.lastCheckpoint.TS { log.Warn("failed to update global checkpoint: stale", @@ -498,7 +498,7 @@ func (c *CheckpointAdvancer) advanceCheckpointBy(ctx context.Context, return err } - if c.setCheckpoint(ctx, cp) { + if c.setCheckpoint(cp) { log.Info("uploading checkpoint for task", zap.Stringer("checkpoint", oracle.GetTimeFromTS(cp.Value)), zap.Uint64("checkpoint", cp.Value), @@ -585,7 +585,7 @@ func (c *CheckpointAdvancer) isCheckpointLagged(ctx context.Context) (bool, erro func (c *CheckpointAdvancer) importantTick(ctx context.Context) error { c.checkpointsMu.Lock() - c.setCheckpoint(ctx, c.checkpoints.Min()) + c.setCheckpoint(c.checkpoints.Min()) c.checkpointsMu.Unlock() if err := c.env.UploadV3GlobalCheckpointForTask(ctx, c.task.Name, c.lastCheckpoint.TS); err != nil { return errors.Annotate(err, "failed to upload global checkpoint") @@ -685,10 +685,14 @@ func (c *CheckpointAdvancer) asyncResolveLocksForRanges(ctx context.Context, tar // do not block main tick here go func() { failpoint.Inject("AsyncResolveLocks", func() {}) + maxTs := uint64(0) + for _, t := range targets { + maxTs = max(maxTs, t.Value) + } handler := func(ctx context.Context, r tikvstore.KeyRange) (rangetask.TaskStat, error) { // we will scan all locks and try to resolve them by check txn status. return tikv.ResolveLocksForRange( - ctx, c.env, math.MaxUint64, r.StartKey, r.EndKey, tikv.NewGcResolveLockMaxBackoffer, tikv.GCScanLockLimit) + ctx, c.env, maxTs+1, r.StartKey, r.EndKey, tikv.NewGcResolveLockMaxBackoffer, tikv.GCScanLockLimit) } workerPool := util.NewWorkerPool(uint(config.DefaultMaxConcurrencyAdvance), "advancer resolve locks") var wg sync.WaitGroup diff --git a/br/pkg/streamhelper/advancer_test.go b/br/pkg/streamhelper/advancer_test.go index 81e4d2454515e..e4d83c682f789 100644 --- a/br/pkg/streamhelper/advancer_test.go +++ b/br/pkg/streamhelper/advancer_test.go @@ -3,6 +3,7 @@ package streamhelper_test import ( + "bytes" "context" "fmt" "strings" @@ -356,15 +357,20 @@ func TestResolveLock(t *testing.T) { lockRegion := c.findRegionByKey([]byte("01")) allLocks := []*txnlock.Lock{ { - Key: []byte{1}, + Key: []byte("011"), // TxnID == minCheckpoint TxnID: minCheckpoint, }, { - Key: []byte{2}, + Key: []byte("012"), // TxnID > minCheckpoint TxnID: minCheckpoint + 1, }, + { + Key: []byte("013"), + // this lock cannot be resolved due to scan version + TxnID: oracle.GoTimeToTS(oracle.GetTimeFromTS(minCheckpoint).Add(2 * time.Minute)), + }, } c.LockRegion(lockRegion, allLocks) @@ -372,32 +378,39 @@ func TestResolveLock(t *testing.T) { resolveLockRef := atomic.NewBool(false) env.resolveLocks = func(locks []*txnlock.Lock, loc *tikv.KeyLocation) (*tikv.KeyLocation, error) { resolveLockRef.Store(true) - require.ElementsMatch(t, locks, allLocks) + // The third lock has skipped, because it's less than max version. + require.ElementsMatch(t, locks, allLocks[:2]) return loc, nil } adv := streamhelper.NewCheckpointAdvancer(env) - // make lastCheckpoint stuck at 123 - adv.UpdateLastCheckpoint(streamhelper.NewCheckpointWithSpan(spans.Valued{ - Key: kv.KeyRange{ - StartKey: kv.Key([]byte("1")), - EndKey: kv.Key([]byte("2")), - }, - Value: 123, - })) - adv.NewCheckpoints( - spans.Sorted(spans.NewFullWith([]kv.KeyRange{ - { - StartKey: kv.Key([]byte("1")), - EndKey: kv.Key([]byte("2")), - }, - }, 0)), - ) adv.StartTaskListener(ctx) - require.Eventually(t, func() bool { return adv.OnTick(ctx) == nil }, - time.Second, 50*time.Millisecond) + + maxTargetTs := uint64(0) coll := streamhelper.NewClusterCollector(ctx, env) + coll.SetOnSuccessHook(func(u uint64, kr kv.KeyRange) { + adv.WithCheckpoints(func(s *spans.ValueSortedFull) { + for _, lock := range allLocks { + // if there is any lock key in the range + if bytes.Compare(kr.StartKey, lock.Key) <= 0 && (bytes.Compare(lock.Key, kr.EndKey) < 0 || len(kr.EndKey) == 0) { + // mock lock behavior, do not update checkpoint + s.Merge(spans.Valued{Key: kr, Value: minCheckpoint}) + return + } + } + s.Merge(spans.Valued{Key: kr, Value: u}) + maxTargetTs = max(maxTargetTs, u) + }) + }) err := adv.GetCheckpointInRange(ctx, []byte{}, []byte{}, coll) require.NoError(t, err) + r, err := coll.Finish(ctx) + require.NoError(t, err) + require.Len(t, r.FailureSubRanges, 0) + require.Equal(t, r.Checkpoint, minCheckpoint, "%d %d", r.Checkpoint, minCheckpoint) + + env.maxTs = maxTargetTs + 1 + require.Eventually(t, func() bool { return adv.OnTick(ctx) == nil }, + time.Second, 50*time.Millisecond) // now the lock state must be ture. because tick finished and asyncResolveLocks got stuck. require.True(t, adv.GetInResolvingLock()) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/br/pkg/streamhelper/AsyncResolveLocks")) @@ -406,10 +419,6 @@ func TestResolveLock(t *testing.T) { // state must set to false after tick require.Eventually(t, func() bool { return !adv.GetInResolvingLock() }, 8*time.Second, 50*time.Microsecond) - r, err := coll.Finish(ctx) - require.NoError(t, err) - require.Len(t, r.FailureSubRanges, 0) - require.Equal(t, r.Checkpoint, minCheckpoint, "%d %d", r.Checkpoint, minCheckpoint) } func TestOwnerDropped(t *testing.T) { diff --git a/br/pkg/streamhelper/basic_lib_for_test.go b/br/pkg/streamhelper/basic_lib_for_test.go index 2e1baa89705a0..52ce89519a23a 100644 --- a/br/pkg/streamhelper/basic_lib_for_test.go +++ b/br/pkg/streamhelper/basic_lib_for_test.go @@ -99,6 +99,7 @@ type fakeCluster struct { idAlloced uint64 stores map[uint64]*fakeStore regions []*region + maxTs uint64 testCtx *testing.T onGetClient func(uint64) error @@ -773,17 +774,31 @@ func (t *testEnv) putTask() { } func (t *testEnv) ScanLocksInOneRegion(bo *tikv.Backoffer, key []byte, maxVersion uint64, limit uint32) ([]*txnlock.Lock, *tikv.KeyLocation, error) { + t.mu.Lock() + defer t.mu.Unlock() + if t.maxTs != maxVersion { + return nil, nil, errors.Errorf("unexpect max version in scan lock, expected %d, actual %d", t.maxTs, maxVersion) + } for _, r := range t.regions { if len(r.locks) != 0 { - return r.locks, &tikv.KeyLocation{ + locks := make([]*txnlock.Lock, 0, len(r.locks)) + for _, l := range r.locks { + // skip the lock larger than maxVersion + if l.TxnID < maxVersion { + locks = append(locks, l) + } + } + return locks, &tikv.KeyLocation{ Region: tikv.NewRegionVerID(r.id, 0, 0), }, nil } } - return nil, nil, nil + return nil, &tikv.KeyLocation{}, nil } func (t *testEnv) ResolveLocksInOneRegion(bo *tikv.Backoffer, locks []*txnlock.Lock, loc *tikv.KeyLocation) (*tikv.KeyLocation, error) { + t.mu.Lock() + defer t.mu.Unlock() for _, r := range t.regions { if loc != nil && loc.Region.GetID() == r.id { // reset locks @@ -791,7 +806,7 @@ func (t *testEnv) ResolveLocksInOneRegion(bo *tikv.Backoffer, locks []*txnlock.L return t.resolveLocks(locks, loc) } } - return nil, nil + return loc, nil } func (t *testEnv) Identifier() string { @@ -856,6 +871,16 @@ func (p *mockPDClient) GetStore(_ context.Context, storeID uint64) (*metapb.Stor }, nil } +func (p *mockPDClient) GetAllStores(ctx context.Context, opts ...pd.GetStoreOption) ([]*metapb.Store, error) { + // only used for GetRegionCache once in resolve lock + return []*metapb.Store{ + { + Id: 1, + Address: "127.0.0.1", + }, + }, nil +} + func (p *mockPDClient) GetClusterID(ctx context.Context) uint64 { return 1 } diff --git a/br/pkg/task/BUILD.bazel b/br/pkg/task/BUILD.bazel index 163d28fd6b0e2..b185c358a5afa 100644 --- a/br/pkg/task/BUILD.bazel +++ b/br/pkg/task/BUILD.bazel @@ -126,6 +126,7 @@ go_test( "//br/pkg/metautil", "//br/pkg/mock", "//br/pkg/restore/snap_client", + "//br/pkg/restore/split", "//br/pkg/restore/tiflashrec", "//br/pkg/storage", "//br/pkg/stream", @@ -136,7 +137,7 @@ go_test( "//pkg/meta/model", "//pkg/parser/model", "//pkg/parser/mysql", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/tablecodec", "//pkg/testkit", "//pkg/types", diff --git a/br/pkg/task/backup.go b/br/pkg/task/backup.go index ab77b59bdc7a3..af92518043a90 100644 --- a/br/pkg/task/backup.go +++ b/br/pkg/task/backup.go @@ -42,7 +42,6 @@ import ( "github.com/spf13/pflag" "github.com/tikv/client-go/v2/oracle" kvutil "github.com/tikv/client-go/v2/util" - "go.uber.org/multierr" "go.uber.org/zap" ) @@ -159,7 +158,7 @@ func DefineBackupFlags(flags *pflag.FlagSet) { } // ParseFromFlags parses the backup-related flags from the flag set. -func (cfg *BackupConfig) ParseFromFlags(flags *pflag.FlagSet) error { +func (cfg *BackupConfig) ParseFromFlags(flags *pflag.FlagSet, skipCommonConfig bool) error { timeAgo, err := flags.GetDuration(flagBackupTimeago) if err != nil { return errors.Trace(err) @@ -212,9 +211,13 @@ func (cfg *BackupConfig) ParseFromFlags(flags *pflag.FlagSet) error { } cfg.CompressionConfig = *compressionCfg - if err = cfg.Config.ParseFromFlags(flags); err != nil { - return errors.Trace(err) + // parse common flags if needed + if !skipCommonConfig { + if err = cfg.Config.ParseFromFlags(flags); err != nil { + return errors.Trace(err) + } } + cfg.RemoveSchedulers, err = flags.GetBool(flagRemoveSchedulers) if err != nil { return errors.Trace(err) @@ -788,18 +791,15 @@ func ParseTSString(ts string, tzCheck bool) (uint64, error) { return oracle.GoTimeToTS(t1), nil } -func DefaultBackupConfig() BackupConfig { +func DefaultBackupConfig(commonConfig Config) BackupConfig { fs := pflag.NewFlagSet("dummy", pflag.ContinueOnError) - DefineCommonFlags(fs) DefineBackupFlags(fs) cfg := BackupConfig{} - err := multierr.Combine( - cfg.ParseFromFlags(fs), - cfg.Config.ParseFromFlags(fs), - ) + err := cfg.ParseFromFlags(fs, true) if err != nil { - log.Panic("infallible operation failed.", zap.Error(err)) + log.Panic("failed to parse backup flags to config", zap.Error(err)) } + cfg.Config = commonConfig return cfg } diff --git a/br/pkg/task/backup_ebs.go b/br/pkg/task/backup_ebs.go index d81c498c9f333..40a9011f5fef7 100644 --- a/br/pkg/task/backup_ebs.go +++ b/br/pkg/task/backup_ebs.go @@ -297,7 +297,7 @@ func waitAllScheduleStoppedAndNoRegionHole(ctx context.Context, cfg Config, mgr } // we wait for nearly 15*40 = 600s = 10m backoffer := utils.InitialRetryState(40, 5*time.Second, waitAllScheduleStoppedInterval) - for backoffer.Attempt() > 0 { + for backoffer.RemainingAttempts() > 0 { if ctx.Err() != nil { return ctx.Err() } diff --git a/br/pkg/task/common.go b/br/pkg/task/common.go index ebb53968d5fea..1813741634609 100644 --- a/br/pkg/task/common.go +++ b/br/pkg/task/common.go @@ -64,7 +64,7 @@ const ( flagRateLimit = "ratelimit" flagRateLimitUnit = "ratelimit-unit" flagConcurrency = "concurrency" - flagChecksum = "checksum" + FlagChecksum = "checksum" flagFilter = "filter" flagCaseSensitive = "case-sensitive" flagRemoveTiFlash = "remove-tiflash" @@ -297,7 +297,7 @@ func DefineCommonFlags(flags *pflag.FlagSet) { flags.Uint(flagChecksumConcurrency, variable.DefChecksumTableConcurrency, "The concurrency of checksumming in one table") flags.Uint64(flagRateLimit, unlimited, "The rate limit of the task, MB/s per node") - flags.Bool(flagChecksum, true, "Run checksum at end of task") + flags.Bool(FlagChecksum, true, "Run checksum at end of task") flags.Bool(flagRemoveTiFlash, true, "Remove TiFlash replicas before backup or restore, for unsupported versions of TiFlash") @@ -359,7 +359,7 @@ func DefineCommonFlags(flags *pflag.FlagSet) { // HiddenFlagsForStream temporary hidden flags that stream cmd not support. func HiddenFlagsForStream(flags *pflag.FlagSet) { - _ = flags.MarkHidden(flagChecksum) + _ = flags.MarkHidden(FlagChecksum) _ = flags.MarkHidden(flagLoadStats) _ = flags.MarkHidden(flagChecksumConcurrency) _ = flags.MarkHidden(flagRateLimit) @@ -609,7 +609,7 @@ func (cfg *Config) ParseFromFlags(flags *pflag.FlagSet) error { return errors.Trace(err) } - if cfg.Checksum, err = flags.GetBool(flagChecksum); err != nil { + if cfg.Checksum, err = flags.GetBool(FlagChecksum); err != nil { return errors.Trace(err) } if cfg.ChecksumConcurrency, err = flags.GetUint(flagChecksumConcurrency); err != nil { @@ -777,6 +777,11 @@ func (cfg *Config) parseAndValidateMasterKeyInfo(hasPlaintextKey bool, flags *pf return nil } +// OverrideDefaultForBackup override common config for backup tasks +func (cfg *Config) OverrideDefaultForBackup() { + cfg.Checksum = false +} + // NewMgr creates a new mgr at the given PD address. func NewMgr(ctx context.Context, g glue.Glue, pds []string, @@ -890,7 +895,8 @@ func ReadBackupMeta( // flagToZapField checks whether this flag can be logged, // if need to log, return its zap field. Or return a field with hidden value. func flagToZapField(f *pflag.Flag) zap.Field { - if f.Name == flagStorage { + switch f.Name { + case flagStorage, FlagStreamFullBackupStorage: hiddenQuery, err := url.Parse(f.Value.String()) if err != nil { return zap.String(f.Name, "") @@ -898,8 +904,14 @@ func flagToZapField(f *pflag.Flag) zap.Field { // hide all query here. hiddenQuery.RawQuery = "" return zap.Stringer(f.Name, hiddenQuery) + case flagFullBackupCipherKey, flagLogBackupCipherKey, "azblob.encryption-key": + return zap.String(f.Name, "") + case flagMasterKeyConfig: + // TODO: we don't really need to hide the entirety of --master-key, consider parsing the URL here. + return zap.String(f.Name, "") + default: + return zap.Stringer(f.Name, f.Value) } - return zap.Stringer(f.Name, f.Value) } // LogArguments prints origin command arguments. diff --git a/br/pkg/task/common_test.go b/br/pkg/task/common_test.go index 5979ef6eebeeb..b58f3f52ee57f 100644 --- a/br/pkg/task/common_test.go +++ b/br/pkg/task/common_test.go @@ -32,13 +32,69 @@ func (f fakeValue) Type() string { } func TestUrlNoQuery(t *testing.T) { - flag := &pflag.Flag{ - Name: flagStorage, - Value: fakeValue("s3://some/what?secret=a123456789&key=987654321"), + testCases := []struct { + inputName string + expectedName string + inputValue string + expectedValue string + }{ + { + inputName: flagSendCreds, + expectedName: "send-credentials-to-tikv", + inputValue: "true", + expectedValue: "true", + }, + { + inputName: flagStorage, + expectedName: "storage", + inputValue: "s3://some/what?secret=a123456789&key=987654321", + expectedValue: "s3://some/what", + }, + { + inputName: FlagStreamFullBackupStorage, + expectedName: "full-backup-storage", + inputValue: "s3://bucket/prefix/?access-key=1&secret-key=2", + expectedValue: "s3://bucket/prefix/", + }, + { + inputName: flagFullBackupCipherKey, + expectedName: "crypter.key", + inputValue: "537570657253656372657456616C7565", + expectedValue: "", + }, + { + inputName: flagLogBackupCipherKey, + expectedName: "log.crypter.key", + inputValue: "537570657253656372657456616C7565", + expectedValue: "", + }, + { + inputName: "azblob.encryption-key", + expectedName: "azblob.encryption-key", + inputValue: "SUPERSECRET_AZURE_ENCRYPTION_KEY", + expectedValue: "", + }, + { + inputName: flagMasterKeyConfig, + expectedName: "master-key", + inputValue: "local:///path/abcd,aws-kms:///abcd?AWS_ACCESS_KEY_ID=SECRET1&AWS_SECRET_ACCESS_KEY=SECRET2®ION=us-east-1,azure-kms:///abcd/v1?AZURE_TENANT_ID=tenant-id&AZURE_CLIENT_ID=client-id&AZURE_CLIENT_SECRET=client-secret&AZURE_VAULT_NAME=vault-name", + expectedValue: "", + // expectedValue: "local:///path/abcd,aws-kms:///abcd,azure-kms:///abcd/v1" + }, + } + + for _, tc := range testCases { + flag := pflag.Flag{ + Name: tc.inputName, + Value: fakeValue(tc.inputValue), + } + field := flagToZapField(&flag) + require.Equal(t, tc.expectedName, field.Key, `test-case [%s="%s"]`, tc.expectedName, tc.expectedValue) + if stringer, ok := field.Interface.(fmt.Stringer); ok { + field.String = stringer.String() + } + require.Equal(t, tc.expectedValue, field.String, `test-case [%s="%s"]`, tc.expectedName, tc.expectedValue) } - field := flagToZapField(flag) - require.Equal(t, flagStorage, field.Key) - require.Equal(t, "s3://some/what", field.Interface.(fmt.Stringer).String()) } func TestTiDBConfigUnchanged(t *testing.T) { @@ -229,8 +285,10 @@ func expectedDefaultConfig() Config { } func expectedDefaultBackupConfig() BackupConfig { + defaultConfig := expectedDefaultConfig() + defaultConfig.Checksum = false return BackupConfig{ - Config: expectedDefaultConfig(), + Config: defaultConfig, GCTTL: utils.DefaultBRGCSafePointTTL, CompressionConfig: CompressionConfig{ CompressionType: backup.CompressionType_ZSTD, @@ -270,13 +328,16 @@ func TestDefault(t *testing.T) { } func TestDefaultBackup(t *testing.T) { - def := DefaultBackupConfig() + commonConfig := DefaultConfig() + commonConfig.OverrideDefaultForBackup() + def := DefaultBackupConfig(commonConfig) defaultConfig := expectedDefaultBackupConfig() require.Equal(t, defaultConfig, def) } func TestDefaultRestore(t *testing.T) { - def := DefaultRestoreConfig() + commonConfig := DefaultConfig() + def := DefaultRestoreConfig(commonConfig) defaultConfig := expectedDefaultRestoreConfig() require.Equal(t, defaultConfig, def) } diff --git a/br/pkg/task/config_test.go b/br/pkg/task/config_test.go index bfb08fff2afd6..9d225163d5f9c 100644 --- a/br/pkg/task/config_test.go +++ b/br/pkg/task/config_test.go @@ -31,7 +31,7 @@ import ( "github.com/pingcap/tidb/br/pkg/utils" "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/stretchr/testify/require" pd "github.com/tikv/pd/client" diff --git a/br/pkg/task/operator/migrate_to.go b/br/pkg/task/operator/migrate_to.go index 20f76b0f86967..282e82784ecb9 100644 --- a/br/pkg/task/operator/migrate_to.go +++ b/br/pkg/task/operator/migrate_to.go @@ -5,7 +5,7 @@ import ( "github.com/fatih/color" "github.com/pingcap/errors" - backup "github.com/pingcap/kvproto/pkg/brpb" + backuppb "github.com/pingcap/kvproto/pkg/brpb" "github.com/pingcap/tidb/br/pkg/glue" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/br/pkg/stream" @@ -39,7 +39,7 @@ func (cx migrateToCtx) printErr(errs []error, msg string) { } } -func (cx migrateToCtx) askForContinue(targetMig *backup.Migration) bool { +func (cx migrateToCtx) askForContinue(targetMig *backuppb.Migration) bool { tbl := cx.console.CreateTable() stream.AddMigrationToTable(targetMig, tbl) cx.console.Println("The migration going to be executed will be like: ") @@ -124,7 +124,7 @@ func RunMigrateTo(ctx context.Context, cfg MigrateToConfig) error { } return run(func(est stream.MigrationExt) stream.MergeAndMigratedTo { - return est.MergeAndMigrateTo(ctx, targetVersion, stream.MMOptInteractiveCheck(func(ctx context.Context, m *backup.Migration) bool { + return est.MergeAndMigrateTo(ctx, targetVersion, stream.MMOptInteractiveCheck(func(ctx context.Context, m *backuppb.Migration) bool { return cfg.Yes || cx.askForContinue(m) })) }) diff --git a/br/pkg/task/operator/prepare_snap.go b/br/pkg/task/operator/prepare_snap.go index cbe5c3ac2442b..2f846e2ac9dc2 100644 --- a/br/pkg/task/operator/prepare_snap.go +++ b/br/pkg/task/operator/prepare_snap.go @@ -82,7 +82,7 @@ func (cx *AdaptEnvForSnapshotBackupContext) Close() { cx.kvMgr.Close() } -func (cx *AdaptEnvForSnapshotBackupContext) GetBackOffer(operation string) utils.Backoffer { +func (cx *AdaptEnvForSnapshotBackupContext) GetBackOffer(operation string) utils.BackoffStrategy { state := utils.InitialRetryState(64, 1*time.Second, 10*time.Second) bo := utils.GiveUpRetryOn(&state, berrors.ErrPossibleInconsistency) bo = utils.VerboseRetry(bo, logutil.CL(cx).With(zap.String("operation", operation))) diff --git a/br/pkg/task/restore.go b/br/pkg/task/restore.go index 5bee261ceff21..f53b7b72a9121 100644 --- a/br/pkg/task/restore.go +++ b/br/pkg/task/restore.go @@ -100,6 +100,8 @@ const ( defaultStatsConcurrency = 12 defaultBatchFlushInterval = 16 * time.Second defaultFlagDdlBatchSize = 128 + maxRestoreBatchSizeLimit = 10240 + pb = 1024 * 1024 * 1024 * 1024 * 1024 resetSpeedLimitRetryTimes = 3 ) @@ -347,7 +349,7 @@ func (cfg *RestoreConfig) ParseStreamRestoreFlags(flags *pflag.FlagSet) error { } // ParseFromFlags parses the restore-related flags from the flag set. -func (cfg *RestoreConfig) ParseFromFlags(flags *pflag.FlagSet) error { +func (cfg *RestoreConfig) ParseFromFlags(flags *pflag.FlagSet, skipCommonConfig bool) error { var err error cfg.NoSchema, err = flags.GetBool(flagNoSchema) if err != nil { @@ -357,10 +359,15 @@ func (cfg *RestoreConfig) ParseFromFlags(flags *pflag.FlagSet) error { if err != nil { return errors.Trace(err) } - err = cfg.Config.ParseFromFlags(flags) - if err != nil { - return errors.Trace(err) + + // parse common config if needed + if !skipCommonConfig { + err = cfg.Config.ParseFromFlags(flags) + if err != nil { + return errors.Trace(err) + } } + err = cfg.RestoreCommonConfig.ParseFromFlags(flags) if err != nil { return errors.Trace(err) @@ -527,6 +534,10 @@ func (cfg *RestoreConfig) adjustRestoreConfigForStreamRestore() { cfg.PitrConcurrency += 1 log.Info("set restore kv files concurrency", zap.Int("concurrency", int(cfg.PitrConcurrency))) cfg.Config.Concurrency = cfg.PitrConcurrency + if cfg.ConcurrencyPerStore.Value > 0 { + log.Info("set restore compacted sst files concurrency per store", + zap.Int("concurrency", int(cfg.ConcurrencyPerStore.Value))) + } } func configureRestoreClient(ctx context.Context, client *snapclient.SnapClient, cfg *RestoreConfig) error { @@ -641,20 +652,16 @@ func registerTaskToPD(ctx context.Context, etcdCLI *clientv3.Client) (closeF fun return register.Close, errors.Trace(err) } -func DefaultRestoreConfig() RestoreConfig { +func DefaultRestoreConfig(commonConfig Config) RestoreConfig { fs := pflag.NewFlagSet("dummy", pflag.ContinueOnError) - DefineCommonFlags(fs) DefineRestoreFlags(fs) cfg := RestoreConfig{} - err := multierr.Combine( - cfg.ParseFromFlags(fs), - cfg.RestoreCommonConfig.ParseFromFlags(fs), - cfg.Config.ParseFromFlags(fs), - ) + err := cfg.ParseFromFlags(fs, true) if err != nil { - log.Panic("infallible failed.", zap.Error(err)) + log.Panic("failed to parse restore flags to config", zap.Error(err)) } + cfg.Config = commonConfig return cfg } @@ -718,12 +725,16 @@ func RunRestore(c context.Context, g glue.Glue, cmdName string, cfg *RestoreConf if err != nil { log.Warn("failed to remove checkpoint data for log restore", zap.Error(err)) } - err = checkpoint.RemoveCheckpointDataForSnapshotRestore(c, mgr.GetDomain(), se) + err = checkpoint.RemoveCheckpointDataForSstRestore(c, mgr.GetDomain(), se, checkpoint.CustomSSTRestoreCheckpointDatabaseName) + if err != nil { + log.Warn("failed to remove checkpoint data for compacted restore", zap.Error(err)) + } + err = checkpoint.RemoveCheckpointDataForSstRestore(c, mgr.GetDomain(), se, checkpoint.SnapshotRestoreCheckpointDatabaseName) if err != nil { log.Warn("failed to remove checkpoint data for snapshot restore", zap.Error(err)) } } else { - err = checkpoint.RemoveCheckpointDataForSnapshotRestore(c, mgr.GetDomain(), se) + err = checkpoint.RemoveCheckpointDataForSstRestore(c, mgr.GetDomain(), se, checkpoint.SnapshotRestoreCheckpointDatabaseName) if err != nil { log.Warn("failed to remove checkpoint data for snapshot restore", zap.Error(err)) } @@ -764,8 +775,10 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s keepaliveCfg := GetKeepalive(&cfg.Config) keepaliveCfg.PermitWithoutStream = true client := snapclient.NewRestoreClient(mgr.GetPDClient(), mgr.GetPDHTTPClient(), mgr.GetTLSConfig(), keepaliveCfg) + // set to cfg so that restoreStream can use it. + cfg.ConcurrencyPerStore = kvConfigs.ImportGoroutines // using tikv config to set the concurrency-per-store for client. - client.SetConcurrencyPerStore(kvConfigs.ImportGoroutines.Value) + client.SetConcurrencyPerStore(cfg.ConcurrencyPerStore.Value) err := configureRestoreClient(ctx, client, cfg) if err != nil { return errors.Trace(err) @@ -801,7 +814,7 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s } reader := metautil.NewMetaReader(backupMeta, s, &cfg.CipherInfo) - if err = client.InitBackupMeta(c, backupMeta, u, reader, cfg.LoadStats); err != nil { + if err = client.LoadSchemaIfNeededAndInitClient(c, backupMeta, u, reader, cfg.LoadStats, nil, nil); err != nil { return errors.Trace(err) } @@ -822,7 +835,7 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s } } - archiveSize := reader.ArchiveSize(ctx, files) + archiveSize := metautil.ArchiveSize(files) g.Record(summary.RestoreDataSize, archiveSize) //restore from tidb will fetch a general Size issue https://github.com/pingcap/tidb/issues/27247 g.Record("Size", archiveSize) @@ -866,7 +879,7 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s if cfg.UseCheckpoint { // if the checkpoint metadata exists in the checkpoint storage, the restore is not // for the first time. - existsCheckpointMetadata := checkpoint.ExistsSnapshotRestoreCheckpoint(ctx, mgr.GetDomain()) + existsCheckpointMetadata := checkpoint.ExistsSstRestoreCheckpoint(ctx, mgr.GetDomain(), checkpoint.SnapshotRestoreCheckpointDatabaseName) checkpointFirstRun = !existsCheckpointMetadata } @@ -1092,6 +1105,13 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s if err != nil { return errors.Trace(err) } + onProgress := func(n int64) { + if n == 0 { + updateCh.Inc() + return + } + updateCh.IncBy(n) + } if err := client.RestoreTables(ctx, placementRuleManager, createdTables, files, checkpointSetWithTableID, kvConfigs.MergeRegionSize.Value, kvConfigs.MergeRegionKeyCount.Value, // If the command is from BR binary, the ddl.EnableSplitTableRegion is always 0, @@ -1099,7 +1119,7 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s // Notice that `split-region-on-table` configure from TiKV split on the region having data, it may trigger after restore done. // It's recommended to enable TiDB configure `split-table` instead. atomic.LoadUint32(&ddl.EnableSplitTableRegion) == 1, - updateCh, + onProgress, ); err != nil { return errors.Trace(err) } @@ -1108,8 +1128,9 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s errCh := make(chan error, 32) postHandleCh := afterTableRestoredCh(ctx, createdTables) - // pipeline checksum - if cfg.Checksum { + // pipeline checksum only when enabled and is not incremental snapshot repair mode cuz incremental doesn't have + // enough information in backup meta to validate checksum + if cfg.Checksum && !client.IsIncremental() { postHandleCh = client.GoValidateChecksum( ctx, postHandleCh, mgr.GetStorage().GetClient(), errCh, updateCh, cfg.ChecksumConcurrency) } @@ -1124,25 +1145,6 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s finish := dropToBlackhole(ctx, postHandleCh, errCh) - // Reset speed limit. ResetSpeedLimit must be called after client.InitBackupMeta has been called. - defer func() { - var resetErr error - // In future we may need a mechanism to set speed limit in ttl. like what we do in switchmode. TODO - for retry := 0; retry < resetSpeedLimitRetryTimes; retry++ { - resetErr = client.ResetSpeedLimit(ctx) - if resetErr != nil { - log.Warn("failed to reset speed limit, retry it", - zap.Int("retry time", retry), logutil.ShortError(resetErr)) - time.Sleep(time.Duration(retry+3) * time.Second) - continue - } - break - } - if resetErr != nil { - log.Error("failed to reset speed limit, please reset it manually", zap.Error(resetErr)) - } - }() - select { case err = <-errCh: err = multierr.Append(err, multierr.Combine(Exhaust(errCh)...)) @@ -1173,7 +1175,7 @@ func getMaxReplica(ctx context.Context, mgr *conn.Mgr) (cnt uint64, err error) { err = utils.WithRetry(ctx, func() error { resp, err = mgr.GetPDHTTPClient().GetReplicateConfig(ctx) return err - }, utils.NewPDReqBackoffer()) + }, utils.NewAggressivePDBackoffStrategy()) if err != nil { return 0, errors.Trace(err) } @@ -1190,7 +1192,7 @@ func getStores(ctx context.Context, mgr *conn.Mgr) (stores *http.StoresInfo, err err = utils.WithRetry(ctx, func() error { stores, err = mgr.GetPDHTTPClient().GetStores(ctx) return err - }, utils.NewPDReqBackoffer()) + }, utils.NewAggressivePDBackoffStrategy()) if err != nil { return nil, errors.Trace(err) } @@ -1298,7 +1300,7 @@ func checkDiskSpace(ctx context.Context, mgr *conn.Mgr, files []*backuppb.File, } } return nil - }, utils.NewDiskCheckBackoffer()) + }, utils.NewDiskCheckBackoffStrategy()) if err != nil { return errors.Trace(err) } diff --git a/br/pkg/task/restore_data.go b/br/pkg/task/restore_data.go index 3adff48e06359..92c5b8dcaecca 100644 --- a/br/pkg/task/restore_data.go +++ b/br/pkg/task/restore_data.go @@ -127,7 +127,7 @@ func RunResolveKvData(c context.Context, g glue.Glue, cmdName string, cfg *Resto } return nil }, - utils.NewPDReqBackofferExt(), + utils.NewConservativePDBackoffStrategy(), ) restoreNumStores := len(allStores) if restoreNumStores != numStores { @@ -214,10 +214,7 @@ func resetTiFlashReplicas(ctx context.Context, g glue.Glue, storage kv.Storage, return errors.New("tiflash store count is less than expected") } return nil - }, &waitTiFlashBackoffer{ - Attempts: 30, - BaseBackoff: 4 * time.Second, - }) + }, utils.NewBackoffRetryAllErrorStrategy(30, 4*time.Second, 32*time.Second)) if err != nil { return err } @@ -238,27 +235,3 @@ func resetTiFlashReplicas(ctx context.Context, g glue.Glue, storage kv.Storage, return nil }) } - -type waitTiFlashBackoffer struct { - Attempts int - BaseBackoff time.Duration -} - -// NextBackoff returns a duration to wait before retrying again -func (b *waitTiFlashBackoffer) NextBackoff(error) time.Duration { - bo := b.BaseBackoff - b.Attempts-- - if b.Attempts == 0 { - return 0 - } - b.BaseBackoff *= 2 - if b.BaseBackoff > 32*time.Second { - b.BaseBackoff = 32 * time.Second - } - return bo -} - -// Attempt returns the remain attempt times -func (b *waitTiFlashBackoffer) Attempt() int { - return b.Attempts -} diff --git a/br/pkg/task/restore_raw.go b/br/pkg/task/restore_raw.go index 13a7382d6092c..acb2e48041e64 100644 --- a/br/pkg/task/restore_raw.go +++ b/br/pkg/task/restore_raw.go @@ -4,6 +4,7 @@ package task import ( "context" + "time" "github.com/pingcap/errors" "github.com/pingcap/log" @@ -12,6 +13,7 @@ import ( berrors "github.com/pingcap/tidb/br/pkg/errors" "github.com/pingcap/tidb/br/pkg/glue" "github.com/pingcap/tidb/br/pkg/httputil" + "github.com/pingcap/tidb/br/pkg/logutil" "github.com/pingcap/tidb/br/pkg/metautil" "github.com/pingcap/tidb/br/pkg/restore" snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" @@ -20,6 +22,7 @@ import ( "github.com/pingcap/tidb/br/pkg/summary" "github.com/spf13/cobra" "github.com/spf13/pflag" + "go.uber.org/zap" ) // RestoreRawConfig is the configuration specific for raw kv restore tasks. @@ -109,7 +112,7 @@ func RunRestoreRaw(c context.Context, g glue.Glue, cmdName string, cfg *RestoreR return errors.Trace(err) } reader := metautil.NewMetaReader(backupMeta, s, &cfg.CipherInfo) - if err = client.InitBackupMeta(c, backupMeta, u, reader, true); err != nil { + if err = client.LoadSchemaIfNeededAndInitClient(c, backupMeta, u, reader, true, cfg.StartKey, cfg.EndKey); err != nil { return errors.Trace(err) } @@ -121,7 +124,7 @@ func RunRestoreRaw(c context.Context, g glue.Glue, cmdName string, cfg *RestoreR if err != nil { return errors.Trace(err) } - archiveSize := reader.ArchiveSize(ctx, files) + archiveSize := metautil.ArchiveSize(files) g.Record(summary.RestoreDataSize, archiveSize) if len(files) == 0 { @@ -145,8 +148,9 @@ func RunRestoreRaw(c context.Context, g glue.Glue, cmdName string, cfg *RestoreR int64(len(ranges)+len(files)), !cfg.LogProgress) + onProgress := func(i int64) { updateCh.IncBy(i) } // RawKV restore does not need to rewrite keys. - err = client.SplitPoints(ctx, getEndKeys(ranges), updateCh, true) + err = client.SplitPoints(ctx, getEndKeys(ranges), onProgress, true) if err != nil { return errors.Trace(err) } @@ -158,10 +162,20 @@ func RunRestoreRaw(c context.Context, g glue.Glue, cmdName string, cfg *RestoreR } defer restore.RestorePostWork(ctx, importModeSwitcher, restoreSchedulers, cfg.Online) - err = client.RestoreRaw(ctx, cfg.StartKey, cfg.EndKey, files, updateCh) + start := time.Now() + err = client.GetRestorer().GoRestore(onProgress, restore.CreateUniqueFileSets(files)) if err != nil { return errors.Trace(err) } + err = client.GetRestorer().WaitUntilFinish() + if err != nil { + return errors.Trace(err) + } + elapsed := time.Since(start) + log.Info("Restore Raw", + logutil.Key("startKey", cfg.StartKey), + logutil.Key("endKey", cfg.EndKey), + zap.Duration("take", elapsed)) // Restore has finished. updateCh.Close() diff --git a/br/pkg/task/restore_test.go b/br/pkg/task/restore_test.go index 4713e5a540ab7..86ceb3755ee09 100644 --- a/br/pkg/task/restore_test.go +++ b/br/pkg/task/restore_test.go @@ -19,6 +19,7 @@ import ( gluemock "github.com/pingcap/tidb/br/pkg/gluetidb/mock" "github.com/pingcap/tidb/br/pkg/metautil" "github.com/pingcap/tidb/br/pkg/mock" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/br/pkg/restore/tiflashrec" "github.com/pingcap/tidb/br/pkg/task" utiltest "github.com/pingcap/tidb/br/pkg/utiltest" @@ -58,7 +59,7 @@ func TestPreCheckTableTiFlashReplicas(t *testing.T) { }, } - pdClient := utiltest.NewFakePDClient(mockStores, false, nil) + pdClient := split.NewFakePDClient(mockStores, false, nil) tables := make([]*metautil.Table, 4) for i := 0; i < len(tables); i++ { diff --git a/br/pkg/task/restore_txn.go b/br/pkg/task/restore_txn.go index 4a4a832aad660..2af64a59602cc 100644 --- a/br/pkg/task/restore_txn.go +++ b/br/pkg/task/restore_txn.go @@ -15,6 +15,7 @@ import ( snapclient "github.com/pingcap/tidb/br/pkg/restore/snap_client" restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" "github.com/pingcap/tidb/br/pkg/summary" + "go.uber.org/zap" ) // RunRestoreTxn starts a txn kv restore task inside the current goroutine. @@ -54,7 +55,7 @@ func RunRestoreTxn(c context.Context, g glue.Glue, cmdName string, cfg *Config) return errors.Trace(err) } reader := metautil.NewMetaReader(backupMeta, s, &cfg.CipherInfo) - if err = client.InitBackupMeta(c, backupMeta, u, reader, true); err != nil { + if err = client.LoadSchemaIfNeededAndInitClient(c, backupMeta, u, reader, true, nil, nil); err != nil { return errors.Trace(err) } @@ -63,7 +64,7 @@ func RunRestoreTxn(c context.Context, g glue.Glue, cmdName string, cfg *Config) } files := backupMeta.Files - archiveSize := reader.ArchiveSize(ctx, files) + archiveSize := metautil.ArchiveSize(files) g.Record(summary.RestoreDataSize, archiveSize) if len(files) == 0 { @@ -72,6 +73,7 @@ func RunRestoreTxn(c context.Context, g glue.Glue, cmdName string, cfg *Config) } summary.CollectInt("restore files", len(files)) + log.Info("restore files", zap.Int("count", len(files))) ranges, _, err := restoreutils.MergeAndRewriteFileRanges( files, nil, conn.DefaultMergeRegionSizeBytes, conn.DefaultMergeRegionKeyCount) if err != nil { @@ -86,8 +88,9 @@ func RunRestoreTxn(c context.Context, g glue.Glue, cmdName string, cfg *Config) int64(len(ranges)+len(files)), !cfg.LogProgress) + onProgress := func(i int64) { updateCh.IncBy(i) } // RawKV restore does not need to rewrite keys. - err = client.SplitPoints(ctx, getEndKeys(ranges), updateCh, false) + err = client.SplitPoints(ctx, getEndKeys(ranges), onProgress, false) if err != nil { return errors.Trace(err) } @@ -99,11 +102,14 @@ func RunRestoreTxn(c context.Context, g glue.Glue, cmdName string, cfg *Config) } defer restore.RestorePostWork(ctx, importModeSwitcher, restoreSchedulers, false) - err = client.WaitForFilesRestored(ctx, files, updateCh) + err = client.GetRestorer().GoRestore(onProgress, restore.CreateUniqueFileSets(files)) + if err != nil { + return errors.Trace(err) + } + err = client.GetRestorer().WaitUntilFinish() if err != nil { return errors.Trace(err) } - // Restore has finished. updateCh.Close() diff --git a/br/pkg/task/stream.go b/br/pkg/task/stream.go index 6009eb47a6c70..07990cc382d34 100644 --- a/br/pkg/task/stream.go +++ b/br/pkg/task/stream.go @@ -64,19 +64,26 @@ import ( ) const ( - flagYes = "yes" - flagUntil = "until" - flagStreamJSONOutput = "json" - flagStreamTaskName = "task-name" - flagStreamStartTS = "start-ts" - flagStreamEndTS = "end-ts" - flagGCSafePointTTS = "gc-ttl" + flagYes = "yes" + flagCleanUpCompactions = "clean-up-compactions" + flagUntil = "until" + flagStreamJSONOutput = "json" + flagStreamTaskName = "task-name" + flagStreamStartTS = "start-ts" + flagStreamEndTS = "end-ts" + flagGCSafePointTTS = "gc-ttl" truncateLockPath = "truncating.lock" hintOnTruncateLock = "There might be another truncate task running, or a truncate task that didn't exit properly. " + "You may check the metadata and continue by wait other task finish or manually delete the lock file " + truncateLockPath + " at the external storage." ) +const ( + waitInfoSchemaReloadCheckInterval = 1 * time.Second + // a million tables should take a few minutes to load all DDL change, making 15 to make sure we don't exit early + waitInfoSchemaReloadTimeout = 15 * time.Minute +) + var ( StreamStart = "log start" StreamStop = "log stop" @@ -119,9 +126,10 @@ type StreamConfig struct { SafePointTTL int64 `json:"safe-point-ttl" toml:"safe-point-ttl"` // Spec for the command `truncate`, we should truncate the until when? - Until uint64 `json:"until" toml:"until"` - DryRun bool `json:"dry-run" toml:"dry-run"` - SkipPrompt bool `json:"skip-prompt" toml:"skip-prompt"` + Until uint64 `json:"until" toml:"until"` + DryRun bool `json:"dry-run" toml:"dry-run"` + SkipPrompt bool `json:"skip-prompt" toml:"skip-prompt"` + CleanUpCompactions bool `json:"clean-up-compactions" toml:"clean-up-compactions"` // Spec for the command `status`. JSONOutput bool `json:"json-output" toml:"json-output"` @@ -184,6 +192,7 @@ func DefineStreamTruncateLogFlags(flags *pflag.FlagSet) { "(support TSO or datetime, e.g. '400036290571534337' or '2018-05-11 01:42:23+0800'.)") flags.Bool(flagDryRun, false, "Run the command but don't really delete the files.") flags.BoolP(flagYes, "y", false, "Skip all prompts and always execute the command.") + flags.Bool(flagCleanUpCompactions, false, "Clean up compaction files. Including the compacted log files and expired SST files.") } func (cfg *StreamConfig) ParseStreamStatusFromFlags(flags *pflag.FlagSet) error { @@ -214,6 +223,9 @@ func (cfg *StreamConfig) ParseStreamTruncateFromFlags(flags *pflag.FlagSet) erro if cfg.DryRun, err = flags.GetBool(flagDryRun); err != nil { return errors.Trace(err) } + if cfg.CleanUpCompactions, err = flags.GetBool(flagCleanUpCompactions); err != nil { + return errors.Trace(err) + } return nil } @@ -920,7 +932,11 @@ func RunStreamAdvancer(c context.Context, g glue.Glue, cmdName string, cfg *Stre env := streamhelper.CliEnv(mgr.StoreManager, mgr.GetStore(), etcdCLI) advancer := streamhelper.NewCheckpointAdvancer(env) advancer.UpdateConfig(cfg.AdvancerCfg) - advancerd := daemon.New(advancer, streamhelper.OwnerManagerForLogBackup(ctx, etcdCLI), cfg.AdvancerCfg.TickDuration) + ownerMgr := streamhelper.OwnerManagerForLogBackup(ctx, etcdCLI) + defer func() { + ownerMgr.Close() + }() + advancerd := daemon.New(advancer, ownerMgr, cfg.AdvancerCfg.TickDuration) loop, err := advancerd.Begin(ctx) if err != nil { return err @@ -1015,11 +1031,12 @@ func RunStreamTruncate(c context.Context, g glue.Glue, cmdName string, cfg *Stre if err != nil { return err } - if err := storage.TryLockRemote(ctx, extStorage, truncateLockPath, hintOnTruncateLock); err != nil { + lock, err := storage.TryLockRemote(ctx, extStorage, truncateLockPath, hintOnTruncateLock) + if err != nil { return err } defer utils.WithCleanUp(&err, 10*time.Second, func(ctx context.Context) error { - return storage.UnlockRemote(ctx, extStorage, truncateLockPath) + return lock.Unlock(ctx) }) sp, err := stream.GetTSFromFile(ctx, extStorage, stream.TruncateSafePointFileName) @@ -1034,7 +1051,34 @@ func RunStreamTruncate(c context.Context, g glue.Glue, cmdName string, cfg *Stre } } - readMetaDone := console.ShowTask("Reading log backup metadata... ", glue.WithTimeCost()) + if cfg.CleanUpCompactions { + est := stream.MigerationExtension(extStorage) + est.Hooks = stream.NewProgressBarHooks(console) + newSN := math.MaxInt + optPrompt := stream.MMOptInteractiveCheck(func(ctx context.Context, m *backuppb.Migration) bool { + console.Println("We are going to do the following: ") + tbl := console.CreateTable() + stream.AddMigrationToTable(m, tbl) + tbl.Print() + return console.PromptBool("Continue? ") + }) + optAppend := stream.MMOptAppendPhantomMigration(backuppb.Migration{TruncatedTo: cfg.Until}) + opts := []stream.MergeAndMigrateToOpt{optPrompt, optAppend, stream.MMOptAlwaysRunTruncate()} + var res stream.MergeAndMigratedTo + if cfg.DryRun { + est.DryRun(func(me stream.MigrationExt) { + res = me.MergeAndMigrateTo(ctx, newSN, opts...) + }) + } else { + res = est.MergeAndMigrateTo(ctx, newSN, opts...) + } + if len(res.Warnings) > 0 { + glue.PrintList(console, "the following errors happened", res.Warnings, 10) + } + return nil + } + + readMetaDone := console.ShowTask("Reading Metadata... ", glue.WithTimeCost()) metas := stream.StreamMetadataSet{ MetadataDownloadBatchSize: cfg.MetadataDownloadBatchSize, Helper: stream.NewMetadataHelper(), @@ -1290,7 +1334,7 @@ func restoreStream( if err != nil { return errors.Annotate(err, "failed to create restore client") } - defer client.Close() + defer client.Close(ctx) if taskInfo != nil && taskInfo.Metadata != nil { // reuse the task's rewrite ts @@ -1342,24 +1386,18 @@ func restoreStream( log.Info("finish restoring gc") }() - var checkpointRunner *checkpoint.CheckpointRunner[checkpoint.LogRestoreKeyType, checkpoint.LogRestoreValueType] + var sstCheckpointSets map[string]struct{} if cfg.UseCheckpoint { oldRatioFromCheckpoint, err := client.InitCheckpointMetadataForLogRestore(ctx, cfg.StartTS, cfg.RestoreTS, oldRatio, cfg.tiflashRecorder) if err != nil { return errors.Trace(err) } oldRatio = oldRatioFromCheckpoint - - checkpointRunner, err = client.StartCheckpointRunnerForLogRestore(ctx, g, mgr.GetStorage()) + sstCheckpointSets, err = client.InitCheckpointMetadataForCompactedSstRestore(ctx) if err != nil { return errors.Trace(err) } - defer func() { - log.Info("wait for flush checkpoint...") - checkpointRunner.WaitForFinish(ctx, !gcDisabledRestorable) - }() } - encryptionManager, err := encryption.NewManager(&cfg.LogBackupCipherInfo, &cfg.MasterKeyConfig) if err != nil { return errors.Annotate(err, "failed to create encryption manager for log restore") @@ -1369,6 +1407,11 @@ func restoreStream( if err != nil { return err } + migs, err := client.GetMigrations(ctx) + if err != nil { + return errors.Trace(err) + } + client.BuildMigrations(migs) // get full backup meta storage to generate rewrite rules. fullBackupStorage, err := parseFullBackupTablesStorage(cfg) @@ -1409,8 +1452,7 @@ func restoreStream( totalKVCount += kvCount totalSize += size } - dataFileCount := 0 - ddlFiles, err := client.LoadDDLFilesAndCountDMLFiles(ctx, &dataFileCount) + ddlFiles, err := client.LoadDDLFilesAndCountDMLFiles(ctx) if err != nil { return err } @@ -1429,52 +1471,82 @@ func restoreStream( return errors.Trace(err) } - // generate the upstream->downstream id maps for checkpoint - idrules := make(map[int64]int64) - downstreamIdset := make(map[int64]struct{}) - for upstreamId, rule := range rewriteRules { - downstreamId := restoreutils.GetRewriteTableID(upstreamId, rule) - idrules[upstreamId] = downstreamId - downstreamIdset[downstreamId] = struct{}{} + logFilesIter, err := client.LoadDMLFiles(ctx) + if err != nil { + return errors.Trace(err) } - logFilesIter, err := client.LoadDMLFiles(ctx) + compactionIter := client.LogFileManager.GetCompactionIter(ctx) + + se, err := g.CreateSession(mgr.GetStorage()) if err != nil { return errors.Trace(err) } - pd := g.StartProgress(ctx, "Restore KV Files", int64(dataFileCount), !cfg.LogProgress) + execCtx := se.GetSessionCtx().GetRestrictedSQLExecutor() + splitSize, splitKeys := utils.GetRegionSplitInfo(execCtx) + log.Info("[Log Restore] get split threshold from tikv config", zap.Uint64("split-size", splitSize), zap.Int64("split-keys", splitKeys)) + + pd := g.StartProgress(ctx, "Restore Files(SST + KV)", logclient.TotalEntryCount, !cfg.LogProgress) err = withProgress(pd, func(p glue.Progress) (pErr error) { + updateStatsWithCheckpoint := func(kvCount, size uint64) { + mu.Lock() + defer mu.Unlock() + totalKVCount += kvCount + totalSize += size + checkpointTotalKVCount += kvCount + checkpointTotalSize += size + // increase the progress + p.IncBy(int64(kvCount)) + } + compactedSplitIter, err := client.WrapCompactedFilesIterWithSplitHelper( + ctx, compactionIter, rewriteRules, sstCheckpointSets, + updateStatsWithCheckpoint, splitSize, splitKeys, + ) + if err != nil { + return errors.Trace(err) + } + + err = client.RestoreCompactedSstFiles(ctx, compactedSplitIter, rewriteRules, importModeSwitcher, p.IncBy) + if err != nil { + return errors.Trace(err) + } + + logFilesIterWithSplit, err := client.WrapLogFilesIterWithSplitHelper(ctx, logFilesIter, execCtx, rewriteRules, updateStatsWithCheckpoint, splitSize, splitKeys) + if err != nil { + return errors.Trace(err) + } + if cfg.UseCheckpoint { - updateStatsWithCheckpoint := func(kvCount, size uint64) { - mu.Lock() - defer mu.Unlock() - totalKVCount += kvCount - totalSize += size - checkpointTotalKVCount += kvCount - checkpointTotalSize += size - } - logFilesIter, err = client.WrapLogFilesIterWithCheckpoint(ctx, logFilesIter, downstreamIdset, updateStatsWithCheckpoint, p.Inc) - if err != nil { - return errors.Trace(err) - } + // TODO make a failpoint iter inside the logclient. failpoint.Inject("corrupt-files", func(v failpoint.Value) { var retErr error - logFilesIter, retErr = logclient.WrapLogFilesIterWithCheckpointFailpoint(v, logFilesIter, rewriteRules) + logFilesIterWithSplit, retErr = logclient.WrapLogFilesIterWithCheckpointFailpoint(v, logFilesIterWithSplit, rewriteRules) defer func() { pErr = retErr }() }) } - logFilesIterWithSplit, err := client.WrapLogFilesIterWithSplitHelper(logFilesIter, rewriteRules, g, mgr.GetStorage()) - if err != nil { - return errors.Trace(err) - } - return client.RestoreKVFiles(ctx, rewriteRules, idrules, logFilesIterWithSplit, checkpointRunner, + return client.RestoreKVFiles(ctx, rewriteRules, logFilesIterWithSplit, cfg.PitrBatchCount, cfg.PitrBatchSize, updateStats, p.IncBy, &cfg.LogBackupCipherInfo, cfg.MasterKeyConfig.MasterKeys) }) if err != nil { return errors.Annotate(err, "failed to restore kv files") } + // failpoint to stop for a while after restoring kvs + // this is to mimic the scenario that restore takes long time and the lease in schemaInfo has expired and needs refresh + failpoint.Inject("post-restore-kv-pending", func(val failpoint.Value) { + if val.(bool) { + // not ideal to use sleep but not sure what's the better way right now + log.Info("sleep after restoring kv") + time.Sleep(2 * time.Second) + } + }) + + // make sure schema reload finishes before proceeding + if err = waitUntilSchemaReload(ctx, client); err != nil { + return errors.Trace(err) + } + if err = client.CleanUpKVFiles(ctx); err != nil { return errors.Annotate(err, "failed to clean up") } @@ -1508,7 +1580,7 @@ func restoreStream( } failpoint.Inject("do-checksum-with-rewrite-rules", func(_ failpoint.Value) { - if err := client.FailpointDoChecksumForLogRestore(ctx, mgr.GetStorage().GetClient(), mgr.GetPDClient(), idrules, rewriteRules); err != nil { + if err := client.FailpointDoChecksumForLogRestore(ctx, mgr.GetStorage().GetClient(), mgr.GetPDClient(), rewriteRules); err != nil { failpoint.Return(errors.Annotate(err, "failed to do checksum")) } }) @@ -1523,13 +1595,14 @@ func createRestoreClient(ctx context.Context, g glue.Glue, cfg *RestoreConfig, m keepaliveCfg := GetKeepalive(&cfg.Config) keepaliveCfg.PermitWithoutStream = true client := logclient.NewRestoreClient(mgr.GetPDClient(), mgr.GetPDHTTPClient(), mgr.GetTLSConfig(), keepaliveCfg) - err = client.Init(g, mgr.GetStorage()) + + err = client.Init(ctx, g, mgr.GetStorage()) if err != nil { return nil, errors.Trace(err) } defer func() { if err != nil { - client.Close() + client.Close(ctx) } }() @@ -1543,9 +1616,20 @@ func createRestoreClient(ctx context.Context, g glue.Glue, cfg *RestoreConfig, m return nil, errors.Trace(err) } client.SetCrypter(&cfg.CipherInfo) - client.SetConcurrency(uint(cfg.Concurrency)) client.SetUpstreamClusterID(cfg.upstreamClusterID) - client.InitClients(ctx, u) + + createCheckpointSessionFn := func() (glue.Session, error) { + // always create a new session for checkpoint runner + // because session is not thread safe + if cfg.UseCheckpoint { + return g.CreateSession(mgr.GetStorage()) + } + return nil, nil + } + err = client.InitClients(ctx, u, createCheckpointSessionFn, uint(cfg.Concurrency), cfg.ConcurrencyPerStore.Value) + if err != nil { + return nil, errors.Trace(err) + } err = client.SetRawKVBatchClient(ctx, cfg.PD, cfg.TLS.ToKVSecurity()) if err != nil { @@ -1866,3 +1950,16 @@ func checkPiTRTaskInfo( return checkInfo, nil } + +func waitUntilSchemaReload(ctx context.Context, client *logclient.LogClient) error { + log.Info("waiting for schema info finishes reloading") + reloadStart := time.Now() + conditionFunc := func() bool { + return !client.GetDomain().IsLeaseExpired() + } + if err := utils.WaitUntil(ctx, conditionFunc, waitInfoSchemaReloadCheckInterval, waitInfoSchemaReloadTimeout); err != nil { + return errors.Annotate(err, "failed to wait until schema reload") + } + log.Info("reloading schema finished", zap.Duration("timeTaken", time.Since(reloadStart))) + return nil +} diff --git a/br/pkg/utils/BUILD.bazel b/br/pkg/utils/BUILD.bazel index fa18a8317b234..424329b7b3134 100644 --- a/br/pkg/utils/BUILD.bazel +++ b/br/pkg/utils/BUILD.bazel @@ -20,6 +20,7 @@ go_library( "safe_point.go", "schema.go", "store_manager.go", + "wait.go", "worker.go", ], importpath = "github.com/pingcap/tidb/br/pkg/utils", @@ -85,7 +86,7 @@ go_test( ], embed = [":utils"], flaky = True, - shard_count = 32, + shard_count = 34, deps = [ "//br/pkg/errors", "//pkg/kv", diff --git a/br/pkg/utils/backoff.go b/br/pkg/utils/backoff.go index ee97292ef7fc7..7de5e999654e4 100644 --- a/br/pkg/utils/backoff.go +++ b/br/pkg/utils/backoff.go @@ -7,7 +7,6 @@ import ( "database/sql" "io" "math" - "strings" "time" "github.com/pingcap/errors" @@ -51,21 +50,20 @@ const ( ChecksumWaitInterval = 1 * time.Second ChecksumMaxWaitInterval = 30 * time.Second - gRPC_Cancel = "the client connection is closing" + recoveryMaxAttempts = 16 + recoveryDelayTime = 30 * time.Second + recoveryMaxDelayTime = 4 * time.Minute ) -// At least, there are two possible cancel() call, -// one from go context, another from gRPC, here we retry when gRPC cancel with connection closing -func isGRPCCancel(err error) bool { - if s, ok := status.FromError(err); ok { - if strings.Contains(s.Message(), gRPC_Cancel) { - return true - } - } - return false +// BackoffStrategy implements a backoff strategy for retry operations. +type BackoffStrategy interface { + // NextBackoff returns a duration to wait before retrying again + NextBackoff(err error) time.Duration + // RemainingAttempts returns the remaining number of attempts + RemainingAttempts() int } -// ConstantBackoff is a backoffer that retry forever until success. +// ConstantBackoff is a backoff strategy that retry forever until success. type ConstantBackoff time.Duration // NextBackoff returns a duration to wait before retrying again @@ -73,16 +71,17 @@ func (c ConstantBackoff) NextBackoff(err error) time.Duration { return time.Duration(c) } -// Attempt returns the remain attempt times -func (c ConstantBackoff) Attempt() int { +// RemainingAttempts returns the remain attempt times +func (c ConstantBackoff) RemainingAttempts() int { // A large enough value. Also still safe for arithmetic operations (won't easily overflow). return math.MaxInt16 } // RetryState is the mutable state needed for retrying. -// It likes the `utils.Backoffer`, but more fundamental: +// It likes the `utils.BackoffStrategy`, but more fundamental: // this only control the backoff time and knows nothing about what error happens. // NOTE: Maybe also implement the backoffer via this. +// TODO: merge with BackoffStrategy type RetryState struct { maxRetry int retryTimes int @@ -108,7 +107,7 @@ func (rs *RetryState) ShouldRetry() bool { // Get the exponential backoff durion and transform the state. func (rs *RetryState) ExponentialBackoff() time.Duration { rs.retryTimes++ - failpoint.Inject("set-import-attempt-to-one", func(_ failpoint.Value) { + failpoint.Inject("set-remaining-attempts-to-one", func(_ failpoint.Value) { rs.retryTimes = rs.maxRetry }) backoff := rs.nextBackoff @@ -128,204 +127,330 @@ func (rs *RetryState) ReduceRetry() { rs.retryTimes-- } -// Attempt implements the `Backoffer`. +// Attempt implements the `BackoffStrategy`. // TODO: Maybe use this to replace the `exponentialBackoffer` (which is nearly homomorphic to this)? -func (rs *RetryState) Attempt() int { +func (rs *RetryState) RemainingAttempts() int { return rs.maxRetry - rs.retryTimes } -// NextBackoff implements the `Backoffer`. +// NextBackoff implements the `BackoffStrategy`. func (rs *RetryState) NextBackoff(error) time.Duration { return rs.ExponentialBackoff() } -type importerBackoffer struct { - attempt int - delayTime time.Duration - maxDelayTime time.Duration - errContext *ErrorContext +type backoffStrategyImpl struct { + remainingAttempts int + delayTime time.Duration + maxDelayTime time.Duration + errContext *ErrorContext + isRetryErr func(error) bool + isNonRetryErr func(error) bool +} + +// BackoffOption defines a function type for configuring backoffStrategyImpl +type BackoffOption func(*backoffStrategyImpl) + +// WithRemainingAttempts sets the remaining attempts +func WithRemainingAttempts(attempts int) BackoffOption { + return func(b *backoffStrategyImpl) { + b.remainingAttempts = attempts + } +} + +// WithDelayTime sets the initial delay time +func WithDelayTime(delay time.Duration) BackoffOption { + return func(b *backoffStrategyImpl) { + b.delayTime = delay + } } -// NewBackoffer creates a new controller regulating a truncated exponential backoff. -func NewBackoffer(attempt int, delayTime, maxDelayTime time.Duration, errContext *ErrorContext) Backoffer { - return &importerBackoffer{ - attempt: attempt, - delayTime: delayTime, - maxDelayTime: maxDelayTime, - errContext: errContext, +// WithMaxDelayTime sets the maximum delay time +func WithMaxDelayTime(maxDelay time.Duration) BackoffOption { + return func(b *backoffStrategyImpl) { + b.maxDelayTime = maxDelay } } -func NewImportSSTBackoffer() Backoffer { +// WithErrorContext sets the error context +func WithErrorContext(errContext *ErrorContext) BackoffOption { + return func(b *backoffStrategyImpl) { + b.errContext = errContext + } +} + +// WithRetryErrorFunc sets the retry error checking function +func WithRetryErrorFunc(isRetryErr func(error) bool) BackoffOption { + return func(b *backoffStrategyImpl) { + b.isRetryErr = isRetryErr + } +} + +// WithNonRetryErrorFunc sets the non-retry error checking function +func WithNonRetryErrorFunc(isNonRetryErr func(error) bool) BackoffOption { + return func(b *backoffStrategyImpl) { + b.isNonRetryErr = isNonRetryErr + } +} + +// NewBackoffStrategy creates a new backoff strategy with custom retry logic +func NewBackoffStrategy(opts ...BackoffOption) BackoffStrategy { + // Default values + bs := &backoffStrategyImpl{ + remainingAttempts: 1, + delayTime: time.Second, + maxDelayTime: 10 * time.Second, + errContext: NewZeroRetryContext("default"), + isRetryErr: alwaysTrueFunc(), + isNonRetryErr: alwaysFalseFunc(), + } + + for _, opt := range opts { + opt(bs) + } + + return bs +} + +func NewBackoffRetryAllErrorStrategy(remainingAttempts int, delayTime, maxDelayTime time.Duration) BackoffStrategy { + errContext := NewZeroRetryContext("retry all errors") + return NewBackoffStrategy( + WithRemainingAttempts(remainingAttempts), + WithDelayTime(delayTime), + WithMaxDelayTime(maxDelayTime), + WithErrorContext(errContext), + WithRetryErrorFunc(alwaysTrueFunc()), + WithNonRetryErrorFunc(alwaysFalseFunc()), + ) +} + +func NewBackoffRetryAllExceptStrategy(remainingAttempts int, delayTime, maxDelayTime time.Duration, isNonRetryFunc func(error) bool) BackoffStrategy { + errContext := NewZeroRetryContext("retry all except") + return NewBackoffStrategy( + WithRemainingAttempts(remainingAttempts), + WithDelayTime(delayTime), + WithMaxDelayTime(maxDelayTime), + WithErrorContext(errContext), + WithRetryErrorFunc(alwaysTrueFunc()), + WithNonRetryErrorFunc(isNonRetryFunc), + ) +} + +func NewTiKVStoreBackoffStrategy(maxRetry int, delayTime, maxDelayTime time.Duration, + errContext *ErrorContext) BackoffStrategy { + retryErrs := map[error]struct{}{ + berrors.ErrKVEpochNotMatch: {}, + berrors.ErrKVDownloadFailed: {}, + berrors.ErrKVIngestFailed: {}, + berrors.ErrPDLeaderNotFound: {}, + } + grpcRetryCodes := map[codes.Code]struct{}{ + codes.Canceled: {}, + codes.Unavailable: {}, + codes.Aborted: {}, + codes.DeadlineExceeded: {}, + codes.ResourceExhausted: {}, + codes.Internal: {}, + } + nonRetryErrs := map[error]struct{}{ + context.Canceled: {}, + berrors.ErrKVRangeIsEmpty: {}, + berrors.ErrKVRewriteRuleNotFound: {}, + } + + isRetryErrFunc := buildIsRetryErrFunc(retryErrs, grpcRetryCodes) + isNonRetryErrFunc := buildIsNonRetryErrFunc(nonRetryErrs) + + return NewBackoffStrategy( + WithRemainingAttempts(maxRetry), + WithDelayTime(delayTime), + WithMaxDelayTime(maxDelayTime), + WithErrorContext(errContext), + WithRetryErrorFunc(isRetryErrFunc), + WithNonRetryErrorFunc(isNonRetryErrFunc), + ) +} + +func NewImportSSTBackoffStrategy() BackoffStrategy { errContext := NewErrorContext("import sst", 3) - return NewBackoffer(importSSTRetryTimes, importSSTWaitInterval, importSSTMaxWaitInterval, errContext) + return NewTiKVStoreBackoffStrategy(importSSTRetryTimes, importSSTWaitInterval, importSSTMaxWaitInterval, errContext) } -func NewDownloadSSTBackoffer() Backoffer { +func NewDownloadSSTBackoffStrategy() BackoffStrategy { errContext := NewErrorContext("download sst", 3) - return NewBackoffer(downloadSSTRetryTimes, downloadSSTWaitInterval, downloadSSTMaxWaitInterval, errContext) + return NewTiKVStoreBackoffStrategy(downloadSSTRetryTimes, downloadSSTWaitInterval, downloadSSTMaxWaitInterval, + errContext) } -func NewBackupSSTBackoffer() Backoffer { +func NewBackupSSTBackoffStrategy() BackoffStrategy { errContext := NewErrorContext("backup sst", 3) - return NewBackoffer(backupSSTRetryTimes, backupSSTWaitInterval, backupSSTMaxWaitInterval, errContext) + return NewTiKVStoreBackoffStrategy(backupSSTRetryTimes, backupSSTWaitInterval, backupSSTMaxWaitInterval, errContext) } -func (bo *importerBackoffer) NextBackoff(err error) time.Duration { - // we don't care storeID here. - errs := multierr.Errors(err) - lastErr := errs[len(errs)-1] - res := HandleUnknownBackupError(lastErr.Error(), 0, bo.errContext) - if res.Strategy == StrategyRetry { - bo.delayTime = 2 * bo.delayTime - bo.attempt-- - } else { - e := errors.Cause(lastErr) - switch e { // nolint:errorlint - case berrors.ErrKVEpochNotMatch, berrors.ErrKVDownloadFailed, berrors.ErrKVIngestFailed, berrors.ErrPDLeaderNotFound: - bo.delayTime = 2 * bo.delayTime - bo.attempt-- - case berrors.ErrKVRangeIsEmpty, berrors.ErrKVRewriteRuleNotFound: - // Expected error, finish the operation - bo.delayTime = 0 - bo.attempt = 0 - default: - switch status.Code(e) { - case codes.Unavailable, codes.Aborted, codes.DeadlineExceeded, codes.ResourceExhausted, codes.Internal: - bo.delayTime = 2 * bo.delayTime - bo.attempt-- - case codes.Canceled: - if isGRPCCancel(lastErr) { - bo.delayTime = 2 * bo.delayTime - bo.attempt-- - } else { - bo.delayTime = 0 - bo.attempt = 0 - } - default: - // Unexpected error - bo.delayTime = 0 - bo.attempt = 0 - log.Warn("unexpected error, stop retrying", zap.Error(err)) - } - } +func NewPDBackoffStrategy(maxRetry int, delayTime, maxDelayTime time.Duration) BackoffStrategy { + retryErrs := map[error]struct{}{ + berrors.ErrRestoreTotalKVMismatch: {}, + io.EOF: {}, } - failpoint.Inject("set-import-attempt-to-one", func(_ failpoint.Value) { - if bo.attempt > 1 { - bo.attempt = 1 - } - }) - if bo.delayTime > bo.maxDelayTime { - return bo.maxDelayTime + grpcRetryCodes := map[codes.Code]struct{}{ + codes.Canceled: {}, + codes.DeadlineExceeded: {}, + codes.NotFound: {}, + codes.AlreadyExists: {}, + codes.PermissionDenied: {}, + codes.ResourceExhausted: {}, + codes.Aborted: {}, + codes.OutOfRange: {}, + codes.Unavailable: {}, + codes.DataLoss: {}, + codes.Unknown: {}, } - return bo.delayTime + nonRetryErrs := map[error]struct{}{ + context.Canceled: {}, + context.DeadlineExceeded: {}, + sql.ErrNoRows: {}, + } + + isRetryErrFunc := buildIsRetryErrFunc(retryErrs, grpcRetryCodes) + isNonRetryErrFunc := buildIsNonRetryErrFunc(nonRetryErrs) + + return NewBackoffStrategy( + WithRemainingAttempts(maxRetry), + WithDelayTime(delayTime), + WithMaxDelayTime(maxDelayTime), + WithErrorContext(NewZeroRetryContext("connect PD")), + WithRetryErrorFunc(isRetryErrFunc), + WithNonRetryErrorFunc(isNonRetryErrFunc), + ) } -func (bo *importerBackoffer) Attempt() int { - return bo.attempt +func NewAggressivePDBackoffStrategy() BackoffStrategy { + return NewPDBackoffStrategy(resetTSRetryTime, resetTSWaitInterval, resetTSMaxWaitInterval) } -type pdReqBackoffer struct { - attempt int - delayTime time.Duration - maxDelayTime time.Duration +func NewConservativePDBackoffStrategy() BackoffStrategy { + return NewPDBackoffStrategy(resetTSRetryTimeExt, resetTSWaitIntervalExt, resetTSMaxWaitIntervalExt) } -func NewPDReqBackoffer() Backoffer { - return &pdReqBackoffer{ - attempt: resetTSRetryTime, - delayTime: resetTSWaitInterval, - maxDelayTime: resetTSMaxWaitInterval, +func NewDiskCheckBackoffStrategy() BackoffStrategy { + retryErrs := map[error]struct{}{ + berrors.ErrPDInvalidResponse: {}, + berrors.ErrKVDiskFull: {}, } + grpcRetryCodes := map[codes.Code]struct{}{} + + isRetryErrFunc := buildIsRetryErrFunc(retryErrs, grpcRetryCodes) + + return NewBackoffStrategy( + WithRemainingAttempts(resetTSRetryTime), + WithDelayTime(resetTSWaitInterval), + WithErrorContext(NewZeroRetryContext("disk check")), + WithRetryErrorFunc(isRetryErrFunc), + WithNonRetryErrorFunc(alwaysFalseFunc()), + ) } -func NewPDReqBackofferExt() Backoffer { - return &pdReqBackoffer{ - attempt: resetTSRetryTimeExt, - delayTime: resetTSWaitIntervalExt, - maxDelayTime: resetTSMaxWaitIntervalExt, - } +func NewRecoveryBackoffStrategy(isRetryErrFunc func(error) bool) BackoffStrategy { + return NewBackoffStrategy( + WithRemainingAttempts(recoveryMaxAttempts), + WithDelayTime(recoveryDelayTime), + WithErrorContext(NewZeroRetryContext("recovery")), + WithRetryErrorFunc(isRetryErrFunc), + WithNonRetryErrorFunc(alwaysFalseFunc()), + ) +} + +func NewFlashBackBackoffStrategy() BackoffStrategy { + return NewBackoffStrategy( + WithRemainingAttempts(FlashbackRetryTime), + WithDelayTime(FlashbackWaitInterval), + WithErrorContext(NewZeroRetryContext("flashback")), + WithRetryErrorFunc(alwaysTrueFunc()), + WithNonRetryErrorFunc(alwaysFalseFunc()), + ) +} + +func NewChecksumBackoffStrategy() BackoffStrategy { + return NewBackoffStrategy( + WithRemainingAttempts(ChecksumRetryTime), + WithDelayTime(ChecksumWaitInterval), + WithErrorContext(NewZeroRetryContext("checksum")), + WithRetryErrorFunc(alwaysTrueFunc()), + WithNonRetryErrorFunc(alwaysFalseFunc()), + ) } -func (bo *pdReqBackoffer) NextBackoff(err error) time.Duration { - // bo.delayTime = 2 * bo.delayTime - // bo.attempt-- - e := errors.Cause(err) - switch e { // nolint:errorlint - case nil, context.Canceled, context.DeadlineExceeded, sql.ErrNoRows: - // Excepted error, finish the operation - bo.delayTime = 0 - bo.attempt = 0 - case berrors.ErrRestoreTotalKVMismatch, io.EOF: - bo.delayTime = 2 * bo.delayTime - bo.attempt-- - default: - // If the connection timeout, pd client would cancel the context, and return grpc context cancel error. - // So make the codes.Canceled retryable too. - // It's OK to retry the grpc context cancel error, because the parent context cancel returns context.Canceled. - // For example, cancel the `ectx` and then pdClient.GetTS(ectx) returns context.Canceled instead of grpc context canceled. - switch status.Code(e) { - case codes.DeadlineExceeded, codes.Canceled, codes.NotFound, codes.AlreadyExists, codes.PermissionDenied, codes.ResourceExhausted, codes.Aborted, codes.OutOfRange, codes.Unavailable, codes.DataLoss, codes.Unknown: - bo.delayTime = 2 * bo.delayTime - bo.attempt-- - default: - // Unexcepted error - bo.delayTime = 0 - bo.attempt = 0 - log.Warn("unexcepted error, stop to retry", zap.Error(err)) +func (bo *backoffStrategyImpl) NextBackoff(err error) time.Duration { + errs := multierr.Errors(err) + lastErr := errs[len(errs)-1] + // we don't care storeID here. + // TODO: should put all the retry logic in one place, right now errContext has internal retry counter as well + res := HandleUnknownBackupError(lastErr.Error(), 0, bo.errContext) + if res.Strategy == StrategyRetry { + bo.doBackoff() + } else if res.Reason == contextCancelledMsg { + // have to hack here due to complex context.cancel/grpc cancel + bo.stopBackoff() + } else { + e := errors.Cause(lastErr) + if bo.isNonRetryErr(e) { + bo.stopBackoff() + } else if bo.isRetryErr(e) { + bo.doBackoff() + } else { + log.Warn("stop retrying on error", zap.Error(err)) + bo.stopBackoff() } } - failpoint.Inject("set-attempt-to-one", func(_ failpoint.Value) { - bo.attempt = 1 + failpoint.Inject("set-remaining-attempts-to-one", func(_ failpoint.Value) { + if bo.remainingAttempts > 1 { + bo.remainingAttempts = 1 + } }) + if bo.delayTime > bo.maxDelayTime { return bo.maxDelayTime } return bo.delayTime } -func (bo *pdReqBackoffer) Attempt() int { - return bo.attempt +func (bo *backoffStrategyImpl) RemainingAttempts() int { + return bo.remainingAttempts +} + +func (bo *backoffStrategyImpl) doBackoff() { + bo.delayTime = 2 * bo.delayTime + bo.remainingAttempts-- } -type DiskCheckBackoffer struct { - attempt int - delayTime time.Duration - maxDelayTime time.Duration +func (bo *backoffStrategyImpl) stopBackoff() { + bo.delayTime = 0 + bo.remainingAttempts = 0 } -func NewDiskCheckBackoffer() Backoffer { - return &DiskCheckBackoffer{ - attempt: resetTSRetryTime, - delayTime: resetTSWaitInterval, - maxDelayTime: resetTSMaxWaitInterval, +func buildIsRetryErrFunc(retryErrs map[error]struct{}, grpcRetryCodes map[codes.Code]struct{}) func(error) bool { + return func(err error) bool { + _, brRetryOk := retryErrs[err] + _, grpcRetryOk := grpcRetryCodes[status.Code(err)] + return brRetryOk || grpcRetryOk } } -func (bo *DiskCheckBackoffer) NextBackoff(err error) time.Duration { - e := errors.Cause(err) - switch e { // nolint:errorlint - case nil, context.Canceled, context.DeadlineExceeded, berrors.ErrKVDiskFull: - bo.delayTime = 0 - bo.attempt = 0 - case berrors.ErrPDInvalidResponse: - bo.delayTime = 2 * bo.delayTime - bo.attempt-- - default: - bo.delayTime = 2 * bo.delayTime - if bo.attempt > 5 { - bo.attempt = 5 - } - bo.attempt-- +func buildIsNonRetryErrFunc(nonRetryErrs map[error]struct{}) func(error) bool { + return func(err error) bool { + _, brNonRetryOk := nonRetryErrs[err] + return brNonRetryOk } +} - if bo.delayTime > bo.maxDelayTime { - return bo.maxDelayTime +func alwaysTrueFunc() func(error) bool { + return func(err error) bool { + return true } - return bo.delayTime } -func (bo *DiskCheckBackoffer) Attempt() int { - return bo.attempt +func alwaysFalseFunc() func(error) bool { + return func(err error) bool { + return false + } } diff --git a/br/pkg/utils/backoff_test.go b/br/pkg/utils/backoff_test.go index e0bc87fabb95e..e63c2776f1472 100644 --- a/br/pkg/utils/backoff_test.go +++ b/br/pkg/utils/backoff_test.go @@ -21,7 +21,7 @@ import ( func TestBackoffWithSuccess(t *testing.T) { var counter int - backoffer := utils.NewBackoffer(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) + backoffStrategy := utils.NewTiKVStoreBackoffStrategy(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() switch counter { @@ -33,14 +33,14 @@ func TestBackoffWithSuccess(t *testing.T) { return nil } return nil - }, backoffer) + }, backoffStrategy) require.Equal(t, 3, counter) require.NoError(t, err) } -func TestBackoffWithUnknowneErrorSuccess(t *testing.T) { +func TestBackoffWithUnknownErrorSuccess(t *testing.T) { var counter int - backoffer := utils.NewBackoffer(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) + backoffStrategy := utils.NewTiKVStoreBackoffStrategy(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() switch counter { @@ -50,14 +50,14 @@ func TestBackoffWithUnknowneErrorSuccess(t *testing.T) { return berrors.ErrKVEpochNotMatch } return nil - }, backoffer) + }, backoffStrategy) require.Equal(t, 3, counter) require.NoError(t, err) } func TestBackoffWithFatalError(t *testing.T) { var counter int - backoffer := utils.NewBackoffer(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) + backoffStrategy := utils.NewTiKVStoreBackoffStrategy(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) gRPCError := status.Error(codes.Unavailable, "transport is closing") err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() @@ -72,7 +72,7 @@ func TestBackoffWithFatalError(t *testing.T) { return berrors.ErrKVRangeIsEmpty } return nil - }, backoffer) + }, backoffStrategy) require.Equal(t, 4, counter) require.Equal(t, []error{ gRPCError, @@ -84,7 +84,7 @@ func TestBackoffWithFatalError(t *testing.T) { func TestWithRetryReturnLastErr(t *testing.T) { var counter int - backoffer := utils.NewBackoffer(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) + backoffStrategy := utils.NewTiKVStoreBackoffStrategy(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) gRPCError := status.Error(codes.Unavailable, "transport is closing") err := utils.WithRetryReturnLastErr(context.Background(), func() error { defer func() { counter++ }() @@ -99,7 +99,7 @@ func TestWithRetryReturnLastErr(t *testing.T) { return berrors.ErrKVRangeIsEmpty } return nil - }, backoffer) + }, backoffStrategy) require.Equal(t, 4, counter) require.ErrorIs(t, berrors.ErrKVRangeIsEmpty, err) } @@ -107,22 +107,22 @@ func TestWithRetryReturnLastErr(t *testing.T) { func TestBackoffWithFatalRawGRPCError(t *testing.T) { var counter int canceledError := status.Error(codes.Canceled, "context canceled") - backoffer := utils.NewBackoffer(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) + backoffStrategy := utils.NewTiKVStoreBackoffStrategy(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() return canceledError // nolint:wrapcheck - }, backoffer) + }, backoffStrategy) require.Equal(t, 1, counter) require.Equal(t, []error{canceledError}, multierr.Errors(err)) } func TestBackoffWithRetryableError(t *testing.T) { var counter int - backoffer := utils.NewBackoffer(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) + backoffStrategy := utils.NewTiKVStoreBackoffStrategy(10, time.Nanosecond, time.Nanosecond, utils.NewDefaultContext()) err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() return berrors.ErrKVEpochNotMatch - }, backoffer) + }, backoffStrategy) require.Equal(t, 10, counter) require.Equal(t, []error{ berrors.ErrKVEpochNotMatch, @@ -140,7 +140,7 @@ func TestBackoffWithRetryableError(t *testing.T) { func TestPdBackoffWithRetryableError(t *testing.T) { var counter int - backoffer := utils.NewPDReqBackoffer() + backoffStrategy := utils.NewAggressivePDBackoffStrategy() gRPCError := status.Error(codes.Unavailable, "transport is closing") err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() @@ -151,7 +151,7 @@ func TestPdBackoffWithRetryableError(t *testing.T) { return context.Canceled } return gRPCError - }, backoffer) + }, backoffStrategy) require.Equal(t, 7, counter) require.Equal(t, []error{ gRPCError, @@ -166,28 +166,28 @@ func TestPdBackoffWithRetryableError(t *testing.T) { func TestNewImportSSTBackofferWithSucess(t *testing.T) { var counter int - backoffer := utils.NewImportSSTBackoffer() + backoffStrategy := utils.NewImportSSTBackoffStrategy() err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() if counter == 5 { return nil } return berrors.ErrKVDownloadFailed - }, backoffer) + }, backoffStrategy) require.Equal(t, 6, counter) require.NoError(t, err) } func TestNewDownloadSSTBackofferWithCancel(t *testing.T) { var counter int - backoffer := utils.NewDownloadSSTBackoffer() + backoffStrategy := utils.NewDownloadSSTBackoffStrategy() err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() if counter == 3 { return context.Canceled } return berrors.ErrKVIngestFailed - }, backoffer) + }, backoffStrategy) require.Equal(t, 4, counter) require.Equal(t, []error{ berrors.ErrKVIngestFailed, @@ -199,14 +199,14 @@ func TestNewDownloadSSTBackofferWithCancel(t *testing.T) { func TestNewBackupSSTBackofferWithCancel(t *testing.T) { var counter int - backoffer := utils.NewBackupSSTBackoffer() + backoffStrategy := utils.NewBackupSSTBackoffStrategy() err := utils.WithRetry(context.Background(), func() error { defer func() { counter++ }() if counter == 3 { return context.Canceled } return berrors.ErrKVIngestFailed - }, backoffer) + }, backoffStrategy) require.Equal(t, 4, counter) require.Equal(t, []error{ berrors.ErrKVIngestFailed, @@ -218,13 +218,13 @@ func TestNewBackupSSTBackofferWithCancel(t *testing.T) { func TestConstantBackoff(t *testing.T) { backedOff := func(t *testing.T) { - backoffer := utils.ConstantBackoff(10 * time.Millisecond) + backoffStrategy := utils.ConstantBackoff(10 * time.Millisecond) ctx, cancel := context.WithCancel(context.Background()) i := 0 ch := make(chan error) go func() { - _, err := utils.WithRetryV2(ctx, backoffer, func(ctx context.Context) (struct{}, error) { + _, err := utils.WithRetryV2(ctx, backoffStrategy, func(ctx context.Context) (struct{}, error) { i += 1 return struct{}{}, fmt.Errorf("%d times, no meaning", i) }) diff --git a/br/pkg/utils/encryption.go b/br/pkg/utils/encryption.go index 9a81f01b2e787..9262c93a4e69d 100644 --- a/br/pkg/utils/encryption.go +++ b/br/pkg/utils/encryption.go @@ -1,3 +1,17 @@ +// Copyright 2024 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 utils import ( diff --git a/br/pkg/utils/error_handling.go b/br/pkg/utils/error_handling.go index 6c6c84a2a1884..207363648945f 100644 --- a/br/pkg/utils/error_handling.go +++ b/br/pkg/utils/error_handling.go @@ -111,6 +111,14 @@ func NewDefaultContext() *ErrorContext { } } +func NewZeroRetryContext(scenario string) *ErrorContext { + return &ErrorContext{ + description: scenario, + encounterTimes: make(map[uint64]int), + encounterTimesLimitation: 0, + } +} + func HandleBackupError(err *backuppb.Error, storeId uint64, ec *ErrorContext) ErrorHandlingResult { if err == nil { return ErrorHandlingResult{StrategyRetry, unreachableRetryMsg} diff --git a/br/pkg/utils/iter/combinator_types.go b/br/pkg/utils/iter/combinator_types.go index dca8a9fe37bd2..af71a83adf5fb 100644 --- a/br/pkg/utils/iter/combinator_types.go +++ b/br/pkg/utils/iter/combinator_types.go @@ -88,12 +88,6 @@ func (t *take[T]) TryNext(ctx context.Context) IterResult[T] { return t.inner.TryNext(ctx) } -type join[T any] struct { - inner TryNextor[TryNextor[T]] - - current TryNextor[T] -} - type pureMap[T, R any] struct { inner TryNextor[T] @@ -109,6 +103,53 @@ func (p pureMap[T, R]) TryNext(ctx context.Context) IterResult[R] { return Emit(p.mapper(r.Item)) } +type filterMap[T, R any] struct { + inner TryNextor[T] + + mapper func(T) (R, bool) +} + +func (f filterMap[T, R]) TryNext(ctx context.Context) IterResult[R] { + for { + r := f.inner.TryNext(ctx) + + if r.FinishedOrError() { + return DoneBy[R](r) + } + + res, skip := f.mapper(r.Item) + if !skip { + return Emit(res) + } + } +} + +type tryMap[T, R any] struct { + inner TryNextor[T] + + mapper func(T) (R, error) +} + +func (t tryMap[T, R]) TryNext(ctx context.Context) IterResult[R] { + r := t.inner.TryNext(ctx) + + if r.FinishedOrError() { + return DoneBy[R](r) + } + + res, err := t.mapper(r.Item) + if err != nil { + return Throw[R](err) + } + return Emit(res) +} + +type join[T any] struct { + inner TryNextor[TryNextor[T]] + + current TryNextor[T] +} + func (j *join[T]) TryNext(ctx context.Context) IterResult[T] { r := j.current.TryNext(ctx) if r.Err != nil { diff --git a/br/pkg/utils/iter/combinators.go b/br/pkg/utils/iter/combinators.go index 5fc8985eadcc3..1b7c93f55708c 100644 --- a/br/pkg/utils/iter/combinators.go +++ b/br/pkg/utils/iter/combinators.go @@ -84,6 +84,20 @@ func Map[T, R any](it TryNextor[T], mapper func(T) R) TryNextor[R] { } } +func MapFilter[T, R any](it TryNextor[T], mapper func(T) (R, bool)) TryNextor[R] { + return filterMap[T, R]{ + inner: it, + mapper: mapper, + } +} + +func TryMap[T, R any](it TryNextor[T], mapper func(T) (R, error)) TryNextor[R] { + return tryMap[T, R]{ + inner: it, + mapper: mapper, + } +} + // ConcatAll concatenates all elements yields by the iterators. // In another word, it 'chains' all the input iterators. func ConcatAll[T any](items ...TryNextor[T]) TryNextor[T] { diff --git a/br/pkg/utils/json.go b/br/pkg/utils/json.go index 9f8462dd3a4d9..5f77cc0bf4596 100644 --- a/br/pkg/utils/json.go +++ b/br/pkg/utils/json.go @@ -28,6 +28,38 @@ func UnmarshalBackupMeta(data []byte) (*backuppb.BackupMeta, error) { return fromJSONBackupMeta(jMeta) } +func MarshalMetaFile(meta *backuppb.MetaFile) ([]byte, error) { + result, err := makeJSONMetaFile(meta) + if err != nil { + return nil, errors.Trace(err) + } + return json.Marshal(result) +} + +func UnmarshalMetaFile(data []byte) (*backuppb.MetaFile, error) { + jMeta := &jsonMetaFile{} + if err := json.Unmarshal(data, jMeta); err != nil { + return nil, errors.Trace(err) + } + return fromJSONMetaFile(jMeta) +} + +func MarshalStatsFile(meta *backuppb.StatsFile) ([]byte, error) { + result, err := makeJSONStatsFile(meta) + if err != nil { + return nil, errors.Trace(err) + } + return json.Marshal(result) +} + +func UnmarshalStatsFile(data []byte) (*backuppb.StatsFile, error) { + jMeta := &jsonStatsFile{} + if err := json.Unmarshal(data, jMeta); err != nil { + return nil, errors.Trace(err) + } + return fromJSONStatsFile(jMeta) +} + type jsonValue any type jsonFile struct { @@ -95,6 +127,7 @@ func fromJSONRawRange(rng *jsonRawRange) (*backuppb.RawRange, error) { type jsonSchema struct { Table jsonValue `json:"table,omitempty"` DB jsonValue `json:"db,omitempty"` + Stats jsonValue `json:"stats,omitempty"` *backuppb.Schema } @@ -109,6 +142,12 @@ func makeJSONSchema(schema *backuppb.Schema) (*jsonSchema, error) { return nil, errors.Trace(err) } } + + if schema.Stats != nil { + if err := json.Unmarshal(schema.Stats, &result.Stats); err != nil { + return nil, errors.Trace(err) + } + } return result, nil } @@ -129,6 +168,12 @@ func fromJSONSchema(jSchema *jsonSchema) (*backuppb.Schema, error) { return nil, errors.Trace(err) } } + if jSchema.Stats != nil { + schema.Stats, err = json.Marshal(jSchema.Stats) + if err != nil { + return nil, errors.Trace(err) + } + } return schema, nil } @@ -195,3 +240,132 @@ func fromJSONBackupMeta(jMeta *jsonBackupMeta) (*backuppb.BackupMeta, error) { } return meta, nil } + +type jsonMetaFile struct { + DataFiles []*jsonFile `json:"data_files,omitempty"` + Schemas []*jsonSchema `json:"schemas,omitempty"` + RawRanges []*jsonRawRange `json:"raw_ranges,omitempty"` + DDLs []jsonValue `json:"ddls,omitempty"` + + *backuppb.MetaFile +} + +func makeJSONMetaFile(meta *backuppb.MetaFile) (*jsonMetaFile, error) { + result := &jsonMetaFile{ + MetaFile: meta, + } + for _, file := range meta.DataFiles { + result.DataFiles = append(result.DataFiles, makeJSONFile(file)) + } + for _, rawRange := range meta.RawRanges { + result.RawRanges = append(result.RawRanges, makeJSONRawRange(rawRange)) + } + for _, schema := range meta.Schemas { + s, err := makeJSONSchema(schema) + if err != nil { + return nil, errors.Trace(err) + } + result.Schemas = append(result.Schemas, s) + } + for _, ddl := range meta.Ddls { + var d jsonValue + if err := json.Unmarshal(ddl, &d); err != nil { + return nil, errors.Trace(err) + } + result.DDLs = append(result.DDLs, d) + } + return result, nil +} + +func fromJSONMetaFile(jMeta *jsonMetaFile) (*backuppb.MetaFile, error) { + meta := jMeta.MetaFile + if meta == nil { + meta = &backuppb.MetaFile{} + } + + for _, schema := range jMeta.Schemas { + s, err := fromJSONSchema(schema) + if err != nil { + return nil, errors.Trace(err) + } + meta.Schemas = append(meta.Schemas, s) + } + for _, file := range jMeta.DataFiles { + f, err := fromJSONFile(file) + if err != nil { + return nil, errors.Trace(err) + } + meta.DataFiles = append(meta.DataFiles, f) + } + for _, rawRange := range jMeta.RawRanges { + rng, err := fromJSONRawRange(rawRange) + if err != nil { + return nil, errors.Trace(err) + } + meta.RawRanges = append(meta.RawRanges, rng) + } + for _, ddl := range jMeta.DDLs { + d, err := json.Marshal(ddl) + if err != nil { + return nil, errors.Trace(err) + } + meta.Ddls = append(meta.Ddls, d) + } + return meta, nil +} + +type jsonStatsBlock struct { + JSONTable jsonValue `json:"json_table,omitempty"` + + *backuppb.StatsBlock +} + +func makeJSONStatsBlock(statsBlock *backuppb.StatsBlock) (*jsonStatsBlock, error) { + result := &jsonStatsBlock{ + StatsBlock: statsBlock, + } + if err := json.Unmarshal(statsBlock.JsonTable, &result.JSONTable); err != nil { + return nil, errors.Trace(err) + } + return result, nil +} + +func fromJSONStatsBlock(jMeta *jsonStatsBlock) (*backuppb.StatsBlock, error) { + meta := jMeta.StatsBlock + + var err error + meta.JsonTable, err = json.Marshal(jMeta.JSONTable) + if err != nil { + return nil, errors.Trace(err) + } + return meta, nil +} + +type jsonStatsFile struct { + Blocks []*jsonStatsBlock `json:"blocks,omitempty"` +} + +func makeJSONStatsFile(statsFile *backuppb.StatsFile) (*jsonStatsFile, error) { + result := &jsonStatsFile{} + for _, block := range statsFile.Blocks { + b, err := makeJSONStatsBlock(block) + if err != nil { + return nil, errors.Trace(err) + } + result.Blocks = append(result.Blocks, b) + } + return result, nil +} + +func fromJSONStatsFile(jMeta *jsonStatsFile) (*backuppb.StatsFile, error) { + meta := &backuppb.StatsFile{} + + for _, schema := range jMeta.Blocks { + b, err := fromJSONStatsBlock(schema) + if err != nil { + return nil, errors.Trace(err) + } + meta.Blocks = append(meta.Blocks, b) + } + return meta, nil +} diff --git a/br/pkg/utils/json_test.go b/br/pkg/utils/json_test.go index 3f03f287d92f1..1387d71697e8c 100644 --- a/br/pkg/utils/json_test.go +++ b/br/pkg/utils/json_test.go @@ -244,7 +244,7 @@ var testMetaJSONs = [][]byte{ }`), } -func TestEncodeAndDecode(t *testing.T) { +func TestEncodeAndDecodeForBackupMeta(t *testing.T) { for _, testMetaJSON := range testMetaJSONs { meta, err := UnmarshalBackupMeta(testMetaJSON) require.NoError(t, err) @@ -253,3 +253,254 @@ func TestEncodeAndDecode(t *testing.T) { require.JSONEq(t, string(testMetaJSON), string(metaJSON)) } } + +var testMetaFileJSONs = [][]byte{ + []byte(`{ + "data_files": [ + { + "sha256": "aa5cefba077644dbb2aa1d7fae2a0f879b56411195ad62d18caaf4ec76fae48f", + "start_key": "7480000000000000365f720000000000000000", + "end_key": "7480000000000000365f72ffffffffffffffff00", + "name": "1_2_29_6e97c3b17c657c4413724f614a619f5b665b990187b159e7d2b92552076144b6_1617351201040_write.sst", + "end_version": 423978913229963260, + "crc64xor": 8093018294706077000, + "total_kvs": 1, + "total_bytes": 27, + "cf": "write", + "size": 1423 + } + ], + "schemas": [ + { + "table": { + "Lock": null, + "ShardRowIDBits": 0, + "auto_id_cache": 0, + "auto_inc_id": 0, + "auto_rand_id": 0, + "auto_random_bits": 0, + "charset": "utf8mb4", + "collate": "utf8mb4_bin", + "cols": [ + { + "change_state_info": null, + "comment": "", + "default": null, + "default_bit": null, + "default_is_expr": false, + "dependences": null, + "generated_expr_string": "", + "generated_stored": false, + "hidden": false, + "id": 1, + "name": { + "L": "pk", + "O": "pk" + }, + "offset": 0, + "origin_default": null, + "origin_default_bit": null, + "state": 5, + "type": { + "charset": "utf8mb4", + "collate": "utf8mb4_bin", + "decimal": 0, + "elems": null, + "flag": 4099, + "flen": 256, + "tp": 15 + }, + "version": 2 + } + ], + "comment": "", + "common_handle_version": 1, + "compression": "", + "constraint_info": null, + "fk_info": null, + "id": 54, + "index_info": [ + { + "comment": "", + "id": 1, + "idx_cols": [ + { + "length": -1, + "name": { + "L": "pk", + "O": "pk" + }, + "offset": 0 + } + ], + "idx_name": { + "L": "primary", + "O": "PRIMARY" + }, + "index_type": 1, + "is_global": false, + "is_invisible": false, + "is_primary": true, + "is_unique": true, + "state": 5, + "tbl_name": { + "L": "", + "O": "" + } + } + ], + "is_columnar": false, + "is_common_handle": true, + "max_col_id": 1, + "max_cst_id": 0, + "max_idx_id": 1, + "max_shard_row_id_bits": 0, + "name": { + "L": "test", + "O": "test" + }, + "partition": null, + "pk_is_handle": false, + "pre_split_regions": 0, + "sequence": null, + "state": 5, + "tiflash_replica": null, + "update_timestamp": 423978913176223740, + "version": 4, + "view": null + }, + "db": { + "charset": "utf8mb4", + "collate": "utf8mb4_bin", + "db_name": { + "L": "test", + "O": "test" + }, + "id": 1, + "state": 5 + }, + "crc64xor": 8093018294706077000, + "total_kvs": 1, + "total_bytes": 27 + } + ], + "ddls": ["ddl1","ddl2"], + "backup_ranges": [{"start_key":"MTIz"}] +} +`), + []byte(`{ + "data_files": [ + { + "sha256": "5759c4c73789d6ecbd771b374d42e72a309245d31911efc8553423303c95f22c", + "end_key": "7480000000000000ff0500000000000000f8", + "name": "1_4_2_default.sst", + "total_kvs": 153, + "total_bytes": 824218, + "cf": "default", + "size": 44931 + }, + { + "sha256": "87597535ce0edbc9a9ef124777ad1d23388467e60c0409309ad33af505c1ea5b", + "start_key": "7480000000000000ff0f00000000000000f8", + "end_key": "7480000000000000ff1100000000000000f8", + "name": "1_16_8_58be9b5dfa92efb6a7de2127c196e03c5ddc3dd8ff3a9b3e7cd4c4aa7c969747_1617689203876_default.sst", + "total_kvs": 1, + "total_bytes": 396, + "cf": "default", + "size": 1350 + }, + { + "sha256": "97bd1b07f9cc218df089c70d454e23c694113fae63a226ae0433165a9c3d75d9", + "start_key": "7480000000000000ff1700000000000000f8", + "end_key": "7480000000000000ff1900000000000000f8", + "name": "1_24_12_72fa67937dd58d654197abadeb9e633d92ebccc5fd993a8e54819a1bd7f81a8c_1617689203853_default.sst", + "total_kvs": 35, + "total_bytes": 761167, + "cf": "default", + "size": 244471 + }, + { + "sha256": "6dcb6ba2ff11f4e7db349effc98210ba372bebbf2470e6cd600ed5f2294330e7", + "start_key": "7480000000000000ff3100000000000000f8", + "end_key": "7480000000000000ff3300000000000000f8", + "name": "1_50_25_2f1abd76c185ec355039f5b4a64f04637af91f80e6cb05099601ec6b9b1910e8_1617689203867_default.sst", + "total_kvs": 22, + "total_bytes": 1438283, + "cf": "default", + "size": 1284851 + }, + { + "sha256": "ba603af7ecb2e21c8f145d995ae85eea3625480cd8186d4cffb53ab1974d8679", + "start_key": "7480000000000000ff385f72ffffffffffffffffff0000000000fb", + "name": "1_2_33_07b745c3d5a614ed6cc1cf21723b161fcb3e8e7d537546839afd82a4f392988c_1617689203895_default.sst", + "total_kvs": 260000, + "total_bytes": 114425025, + "cf": "default", + "size": 66048845 + } + ], + "raw_ranges": [ + { + "cf": "default" + } + ], + "backup_ranges": [{"start_key":"MTIz"}] +}`), + []byte(`{ + "data_files": [ + { + "sha256": "3ae857ef9b379d498ae913434f1d47c3e90a55f3a4cd9074950bfbd163d5e5fc", + "start_key": "7480000000000000115f720000000000000000", + "end_key": "7480000000000000115f72ffffffffffffffff00", + "name": "1_20_9_36adb8cedcd7af34708edff520499e712e2cfdcb202f5707dc9305a031d55a98_1675066275424_write.sst", + "end_version": 439108573623222300, + "crc64xor": 16261462091570213000, + "total_kvs": 15, + "total_bytes": 1679, + "cf": "write", + "size": 2514, + "cipher_iv": "56MTbxA4CaNILpirKnBxUw==" + } + ], + "schemas": [ + { + "db": { + "charset": "utf8mb4", + "collate": "utf8mb4_bin", + "db_name": { + "L": "test", + "O": "test" + }, + "id": 1, + "policy_ref_info": null, + "state": 5 + } + } + ], + "backup_ranges": [{"start_key":"MTIz"}] + }`), +} + +func TestEncodeAndDecodeForMetaFile(t *testing.T) { + for _, testMetaFileJSON := range testMetaFileJSONs { + meta, err := UnmarshalMetaFile(testMetaFileJSON) + require.NoError(t, err) + metaJSON, err := MarshalMetaFile(meta) + require.NoError(t, err) + require.JSONEq(t, string(testMetaFileJSON), string(metaJSON)) + } +} + +var testStatsFileJSONs = [][]byte{ + []byte(`{"blocks":[{"json_table":{"a":1},"physical_id":123},{"json_table":{"a":2},"physical_id":456}]}`), +} + +func TestEncodeAndDecodeForStatsFile(t *testing.T) { + for _, testStatsFileJSON := range testStatsFileJSONs { + meta, err := UnmarshalStatsFile(testStatsFileJSON) + require.NoError(t, err) + statsJSON, err := MarshalStatsFile(meta) + require.NoError(t, err) + require.JSONEq(t, string(testStatsFileJSON), string(statsJSON)) + } +} diff --git a/br/pkg/utils/key.go b/br/pkg/utils/key.go index 3e26211adf59e..d8371a023fca7 100644 --- a/br/pkg/utils/key.go +++ b/br/pkg/utils/key.go @@ -143,13 +143,6 @@ func clampInOneRange(rng kv.KeyRange, clampIn kv.KeyRange) (kv.KeyRange, failedT return rng, successClamp } -// CloneSlice sallowly clones a slice. -func CloneSlice[T any](s []T) []T { - r := make([]T, len(s)) - copy(r, s) - return r -} - // IntersectAll returns the intersect of two set of segments. // OWNERSHIP INFORMATION: // For running faster, this function would MUTATE the input slice. (i.e. takes its ownership.) diff --git a/br/pkg/utils/key_test.go b/br/pkg/utils/key_test.go index 10723ed4c8a16..28e24055443de 100644 --- a/br/pkg/utils/key_test.go +++ b/br/pkg/utils/key_test.go @@ -5,6 +5,7 @@ package utils import ( "encoding/hex" "fmt" + "slices" "testing" "github.com/pingcap/tidb/pkg/kv" @@ -162,7 +163,7 @@ func TestClampKeyRanges(t *testing.T) { run := func(t *testing.T, c Case) { require.ElementsMatch( t, - IntersectAll(CloneSlice(c.ranges), CloneSlice(c.clampIn)), + IntersectAll(slices.Clone(c.ranges), slices.Clone(c.clampIn)), c.result) require.ElementsMatch( t, diff --git a/br/pkg/utils/retry.go b/br/pkg/utils/retry.go index 6671f16b7842e..e1426628b8af2 100644 --- a/br/pkg/utils/retry.go +++ b/br/pkg/utils/retry.go @@ -24,14 +24,6 @@ type RetryableFunc func() error type RetryableFuncV2[T any] func(context.Context) (T, error) -// Backoffer implements a backoff policy for retrying operations. -type Backoffer interface { - // NextBackoff returns a duration to wait before retrying again - NextBackoff(err error) time.Duration - // Attempt returns the remain attempt times - Attempt() int -} - // WithRetry retries a given operation with a backoff policy. // // Returns nil if `retryableFunc` succeeded at least once. Otherwise, returns a @@ -39,9 +31,9 @@ type Backoffer interface { func WithRetry( ctx context.Context, retryableFunc RetryableFunc, - backoffer Backoffer, + backoffStrategy BackoffStrategy, ) error { - _, err := WithRetryV2[struct{}](ctx, backoffer, func(ctx context.Context) (struct{}, error) { + _, err := WithRetryV2[struct{}](ctx, backoffStrategy, func(ctx context.Context) (struct{}, error) { innerErr := retryableFunc() return struct{}{}, innerErr }) @@ -55,11 +47,11 @@ func WithRetry( // Comparing with `WithRetry`, this function reordered the argument order and supports catching the return value. func WithRetryV2[T any]( ctx context.Context, - backoffer Backoffer, + backoffStrategy BackoffStrategy, fn RetryableFuncV2[T], ) (T, error) { var allErrors error - for backoffer.Attempt() > 0 { + for backoffStrategy.RemainingAttempts() > 0 { res, err := fn(ctx) if err == nil { return res, nil @@ -69,7 +61,7 @@ func WithRetryV2[T any]( case <-ctx.Done(): // allErrors must not be `nil` here, so ignore the context error. return *new(T), allErrors - case <-time.After(backoffer.NextBackoff(err)): + case <-time.After(backoffStrategy.NextBackoff(err)): } } return *new(T), allErrors // nolint:wrapcheck @@ -84,18 +76,18 @@ var sampleLoggerFactory = logutil.SampleLoggerFactory( func WithRetryReturnLastErr( ctx context.Context, retryableFunc RetryableFunc, - backoffer Backoffer, + backoffStrategy BackoffStrategy, ) error { if err := ctx.Err(); err != nil { return err } var lastErr error - for backoffer.Attempt() > 0 { + for backoffStrategy.RemainingAttempts() > 0 { lastErr = retryableFunc() if lastErr == nil { return nil } - backoff := backoffer.NextBackoff(lastErr) + backoff := backoffStrategy.NextBackoff(lastErr) sampleLoggerFactory().Info( "retryable operation failed", zap.Error(lastErr), zap.Duration("backoff", backoff)) @@ -117,12 +109,12 @@ func FallBack2CreateTable(err error) bool { return false } -// RetryWithBackoffer is a simple context for a "mixed" retry. +// RetryWithBackoff is a simple context for a "mixed" retry. // Some of TiDB APIs, say, `ResolveLock` requires a `tikv.Backoffer` as argument. // But the `tikv.Backoffer` isn't pretty customizable, it has some sorts of predefined configuration but // we cannot create new one. So we are going to mix up the flavour of `tikv.Backoffer` and our homemade -// back off strategy. That is what the `RetryWithBackoffer` did. -type RetryWithBackoffer struct { +// back off strategy. That is what the `RetryWithBackoff` did. +type RetryWithBackoff struct { bo *tikv.Backoffer totalBackoff int @@ -133,11 +125,11 @@ type RetryWithBackoffer struct { nextBackoff int } -// AdaptTiKVBackoffer creates an "ad-hoc" backoffer, which wraps a backoffer and provides some new functions: +// AdaptTiKVBackoffer creates an "ad-hoc" backoffStrategy, which wraps a backoffer and provides some new functions: // When backing off, we can manually provide it a specified sleep duration instead of directly provide a retry.Config // Which is sealed in the "client-go/internal". -func AdaptTiKVBackoffer(ctx context.Context, maxSleepMs int, baseErr error) *RetryWithBackoffer { - return &RetryWithBackoffer{ +func AdaptTiKVBackoffer(ctx context.Context, maxSleepMs int, baseErr error) *RetryWithBackoff { + return &RetryWithBackoff{ bo: tikv.NewBackoffer(ctx, maxSleepMs), maxBackoff: maxSleepMs, baseErr: baseErr, @@ -145,25 +137,25 @@ func AdaptTiKVBackoffer(ctx context.Context, maxSleepMs int, baseErr error) *Ret } // NextSleepInMS returns the time `BackOff` will sleep in ms of the state. -func (r *RetryWithBackoffer) NextSleepInMS() int { +func (r *RetryWithBackoff) NextSleepInMS() int { r.mu.Lock() defer r.mu.Unlock() return r.nextBackoff } -// TotalSleepInMS returns the total sleeped time in ms. -func (r *RetryWithBackoffer) TotalSleepInMS() int { +// TotalSleepInMS returns the total slept time in ms. +func (r *RetryWithBackoff) TotalSleepInMS() int { return r.totalBackoff + r.bo.GetTotalSleep() } // MaxSleepInMS returns the max sleep time for the retry context in ms. -func (r *RetryWithBackoffer) MaxSleepInMS() int { +func (r *RetryWithBackoff) MaxSleepInMS() int { return r.maxBackoff } // BackOff executes the back off: sleep for a precalculated backoff time. // See `RequestBackOff` for more details. -func (r *RetryWithBackoffer) BackOff() error { +func (r *RetryWithBackoff) BackOff() error { r.mu.Lock() nextBo := r.nextBackoff r.nextBackoff = 0 @@ -179,24 +171,24 @@ func (r *RetryWithBackoffer) BackOff() error { // RequestBackOff register the intent of backing off at least n milliseconds. // That intent will be fulfilled when calling `BackOff`. -func (r *RetryWithBackoffer) RequestBackOff(ms int) { +func (r *RetryWithBackoff) RequestBackOff(ms int) { r.mu.Lock() r.nextBackoff = max(r.nextBackoff, ms) r.mu.Unlock() } // Inner returns the reference to the inner `backoffer`. -func (r *RetryWithBackoffer) Inner() *tikv.Backoffer { +func (r *RetryWithBackoff) Inner() *tikv.Backoffer { return r.bo } -type verboseBackoffer struct { - inner Backoffer +type verboseBackoffStrategy struct { + inner BackoffStrategy logger *zap.Logger groupID uuid.UUID } -func (v *verboseBackoffer) NextBackoff(err error) time.Duration { +func (v *verboseBackoffStrategy) NextBackoff(err error) time.Duration { nextBackoff := v.inner.NextBackoff(err) v.logger.Warn("Encountered err, retrying.", zap.Stringer("nextBackoff", nextBackoff), @@ -205,9 +197,9 @@ func (v *verboseBackoffer) NextBackoff(err error) time.Duration { return nextBackoff } -// Attempt returns the remain attempt times -func (v *verboseBackoffer) Attempt() int { - attempt := v.inner.Attempt() +// RemainingAttempts returns the remain attempt times +func (v *verboseBackoffStrategy) RemainingAttempts() int { + attempt := v.inner.RemainingAttempts() if attempt > 0 { v.logger.Debug("Retry attempt hint.", zap.Int("attempt", attempt), zap.Stringer("gid", v.groupID)) } else { @@ -216,11 +208,11 @@ func (v *verboseBackoffer) Attempt() int { return attempt } -func VerboseRetry(bo Backoffer, logger *zap.Logger) Backoffer { +func VerboseRetry(bo BackoffStrategy, logger *zap.Logger) BackoffStrategy { if logger == nil { logger = log.L() } - vlog := &verboseBackoffer{ + vlog := &verboseBackoffStrategy{ inner: bo, logger: logger, groupID: uuid.New(), @@ -229,7 +221,7 @@ func VerboseRetry(bo Backoffer, logger *zap.Logger) Backoffer { } type failedOnErr struct { - inner Backoffer + inner BackoffStrategy failed bool failedOn []error } @@ -248,15 +240,15 @@ func (f *failedOnErr) NextBackoff(err error) time.Duration { return 0 } -// Attempt returns the remain attempt times -func (f *failedOnErr) Attempt() int { +// RemainingAttempts returns the remain attempt times +func (f *failedOnErr) RemainingAttempts() int { if f.failed { return 0 } - return f.inner.Attempt() + return f.inner.RemainingAttempts() } -func GiveUpRetryOn(bo Backoffer, errs ...error) Backoffer { +func GiveUpRetryOn(bo BackoffStrategy, errs ...error) BackoffStrategy { return &failedOnErr{ inner: bo, failed: false, diff --git a/br/pkg/utils/retry_test.go b/br/pkg/utils/retry_test.go index 0d6bb6e1093ad..0441467638865 100644 --- a/br/pkg/utils/retry_test.go +++ b/br/pkg/utils/retry_test.go @@ -58,15 +58,15 @@ func TestFailNowIf(t *testing.T) { // Test NextBackoff with an error that is not in failedOn assert.Equal(time.Second, bo.NextBackoff(err2)) - assert.NotEqualValues(0, bo.Attempt()) + assert.NotEqualValues(0, bo.RemainingAttempts()) annotatedErr := errors.Annotate(errors.Annotate(err1, "meow?"), "nya?") assert.Equal(time.Duration(0), bo.NextBackoff(annotatedErr)) - assert.Equal(0, bo.Attempt()) + assert.Equal(0, bo.RemainingAttempts()) mockBO = utils.InitialRetryState(100, time.Second, time.Second) bo = utils.GiveUpRetryOn(&mockBO, berrors.ErrBackupNoLeader) annotatedErr = berrors.ErrBackupNoLeader.FastGen("leader is taking an adventure") assert.Equal(time.Duration(0), bo.NextBackoff(annotatedErr)) - assert.Equal(0, bo.Attempt()) + assert.Equal(0, bo.RemainingAttempts()) } diff --git a/br/pkg/utils/wait.go b/br/pkg/utils/wait.go new file mode 100644 index 0000000000000..5e5616eafb9eb --- /dev/null +++ b/br/pkg/utils/wait.go @@ -0,0 +1,49 @@ +// Copyright 2024 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 utils + +import ( + "context" + "time" + + "github.com/pingcap/errors" +) + +func WaitUntil(ctx context.Context, condition func() bool, checkInterval, maxTimeout time.Duration) error { + // do a quick check before starting the ticker + if condition() { + return nil + } + + timeoutCtx, cancel := context.WithTimeout(ctx, maxTimeout) + defer cancel() + + ticker := time.NewTicker(checkInterval) + defer ticker.Stop() + + for { + select { + case <-timeoutCtx.Done(): + if ctx.Err() != nil { + return ctx.Err() + } + return errors.Errorf("waitUntil timed out after waiting for %v", maxTimeout) + case <-ticker.C: + if condition() { + return nil + } + } + } +} diff --git a/br/pkg/utiltest/BUILD.bazel b/br/pkg/utiltest/BUILD.bazel index c8c70993f1488..97781c99c589d 100644 --- a/br/pkg/utiltest/BUILD.bazel +++ b/br/pkg/utiltest/BUILD.bazel @@ -2,23 +2,13 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "utiltest", - srcs = [ - "fake.go", - "suite.go", - ], + srcs = ["suite.go"], importpath = "github.com/pingcap/tidb/br/pkg/utiltest", visibility = ["//visibility:public"], deps = [ "//br/pkg/gluetidb/mock", "//br/pkg/mock", - "//br/pkg/pdutil", - "//br/pkg/restore/split", "//br/pkg/storage", - "@com_github_pingcap_kvproto//pkg/metapb", - "@com_github_pkg_errors//:errors", "@com_github_stretchr_testify//require", - "@com_github_tikv_pd_client//:client", - "@com_github_tikv_pd_client//http", - "@org_golang_google_grpc//keepalive", ], ) diff --git a/br/pkg/utiltest/fake.go b/br/pkg/utiltest/fake.go deleted file mode 100644 index 2d4cbaaef29ea..0000000000000 --- a/br/pkg/utiltest/fake.go +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2024 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 utiltest - -import ( - "bytes" - "context" - "math" - "time" - - "github.com/pingcap/kvproto/pkg/metapb" - "github.com/pingcap/tidb/br/pkg/pdutil" - "github.com/pingcap/tidb/br/pkg/restore/split" - "github.com/pkg/errors" - pd "github.com/tikv/pd/client" - pdhttp "github.com/tikv/pd/client/http" - "google.golang.org/grpc/keepalive" -) - -var DefaultTestKeepaliveCfg = keepalive.ClientParameters{ - Time: 3 * time.Second, - Timeout: 10 * time.Second, -} - -var ( - ExpectPDCfgGeneratorsResult = map[string]any{ - "merge-schedule-limit": 0, - "leader-schedule-limit": float64(40), - "region-schedule-limit": float64(40), - "max-snapshot-count": float64(40), - "enable-location-replacement": "false", - "max-pending-peer-count": uint64(math.MaxInt32), - } - - ExistPDCfgGeneratorBefore = map[string]any{ - "merge-schedule-limit": 100, - "leader-schedule-limit": float64(100), - "region-schedule-limit": float64(100), - "max-snapshot-count": float64(100), - "enable-location-replacement": "true", - "max-pending-peer-count": 100, - } -) - -type FakePDHTTPClient struct { - pdhttp.Client - - expireSchedulers map[string]time.Time - cfgs map[string]any - - rules map[string]*pdhttp.Rule -} - -func NewFakePDHTTPClient() *FakePDHTTPClient { - return &FakePDHTTPClient{ - expireSchedulers: make(map[string]time.Time), - cfgs: make(map[string]any), - - rules: make(map[string]*pdhttp.Rule), - } -} - -func (fpdh *FakePDHTTPClient) GetScheduleConfig(_ context.Context) (map[string]any, error) { - return ExistPDCfgGeneratorBefore, nil -} - -func (fpdh *FakePDHTTPClient) GetSchedulers(_ context.Context) ([]string, error) { - schedulers := make([]string, 0, len(pdutil.Schedulers)) - for scheduler := range pdutil.Schedulers { - schedulers = append(schedulers, scheduler) - } - return schedulers, nil -} - -func (fpdh *FakePDHTTPClient) SetSchedulerDelay(_ context.Context, key string, delay int64) error { - expireTime, ok := fpdh.expireSchedulers[key] - if ok { - if time.Now().Compare(expireTime) > 0 { - return errors.Errorf("the scheduler config set is expired") - } - if delay == 0 { - delete(fpdh.expireSchedulers, key) - } - } - if !ok && delay == 0 { - return errors.Errorf("set the nonexistent scheduler") - } - expireTime = time.Now().Add(time.Second * time.Duration(delay)) - fpdh.expireSchedulers[key] = expireTime - return nil -} - -func (fpdh *FakePDHTTPClient) SetConfig(_ context.Context, config map[string]any, ttl ...float64) error { - for key, value := range config { - fpdh.cfgs[key] = value - } - return nil -} - -func (fpdh *FakePDHTTPClient) GetConfig(_ context.Context) (map[string]any, error) { - return fpdh.cfgs, nil -} - -func (fpdh *FakePDHTTPClient) GetDelaySchedulers() map[string]struct{} { - delaySchedulers := make(map[string]struct{}) - for key, t := range fpdh.expireSchedulers { - now := time.Now() - if now.Compare(t) < 0 { - delaySchedulers[key] = struct{}{} - } - } - return delaySchedulers -} - -func (fpdh *FakePDHTTPClient) GetPlacementRule(_ context.Context, groupID string, ruleID string) (*pdhttp.Rule, error) { - rule, ok := fpdh.rules[ruleID] - if !ok { - rule = &pdhttp.Rule{ - GroupID: groupID, - ID: ruleID, - } - fpdh.rules[ruleID] = rule - } - return rule, nil -} - -func (fpdh *FakePDHTTPClient) SetPlacementRule(_ context.Context, rule *pdhttp.Rule) error { - fpdh.rules[rule.ID] = rule - return nil -} - -func (fpdh *FakePDHTTPClient) DeletePlacementRule(_ context.Context, groupID string, ruleID string) error { - delete(fpdh.rules, ruleID) - return nil -} - -type FakePDClient struct { - pd.Client - stores []*metapb.Store - regions []*pd.Region - - notLeader bool - retryTimes *int - - peerStoreId uint64 -} - -func NewFakePDClient(stores []*metapb.Store, notLeader bool, retryTime *int) *FakePDClient { - var retryTimeInternal int - if retryTime == nil { - retryTime = &retryTimeInternal - } - return &FakePDClient{ - stores: stores, - - notLeader: notLeader, - retryTimes: retryTime, - - peerStoreId: 0, - } -} - -func (fpdc *FakePDClient) SetRegions(regions []*pd.Region) { - fpdc.regions = regions -} - -func (fpdc *FakePDClient) GetAllStores(context.Context, ...pd.GetStoreOption) ([]*metapb.Store, error) { - return append([]*metapb.Store{}, fpdc.stores...), nil -} - -func (fpdc *FakePDClient) ScanRegions( - ctx context.Context, - key, endKey []byte, - limit int, - opts ...pd.GetRegionOption, -) ([]*pd.Region, error) { - regions := make([]*pd.Region, 0, len(fpdc.regions)) - fpdc.peerStoreId = fpdc.peerStoreId + 1 - peerStoreId := (fpdc.peerStoreId + 1) / 2 - for _, region := range fpdc.regions { - if len(endKey) != 0 && bytes.Compare(region.Meta.StartKey, endKey) >= 0 { - continue - } - if len(region.Meta.EndKey) != 0 && bytes.Compare(region.Meta.EndKey, key) <= 0 { - continue - } - region.Meta.Peers = []*metapb.Peer{{StoreId: peerStoreId}} - regions = append(regions, region) - } - return regions, nil -} - -func (fpdc *FakePDClient) BatchScanRegions( - ctx context.Context, - ranges []pd.KeyRange, - limit int, - opts ...pd.GetRegionOption, -) ([]*pd.Region, error) { - regions := make([]*pd.Region, 0, len(fpdc.regions)) - fpdc.peerStoreId = fpdc.peerStoreId + 1 - peerStoreId := (fpdc.peerStoreId + 1) / 2 - for _, region := range fpdc.regions { - inRange := false - for _, keyRange := range ranges { - if len(keyRange.EndKey) != 0 && bytes.Compare(region.Meta.StartKey, keyRange.EndKey) >= 0 { - continue - } - if len(region.Meta.EndKey) != 0 && bytes.Compare(region.Meta.EndKey, keyRange.StartKey) <= 0 { - continue - } - inRange = true - } - if inRange { - region.Meta.Peers = []*metapb.Peer{{StoreId: peerStoreId}} - regions = append(regions, region) - } - } - return nil, nil -} - -func (fpdc *FakePDClient) GetTS(ctx context.Context) (int64, int64, error) { - (*fpdc.retryTimes)++ - if *fpdc.retryTimes >= 3 { // the mock PD leader switched successfully - fpdc.notLeader = false - } - - if fpdc.notLeader { - return 0, 0, errors.Errorf( - "rpc error: code = Unknown desc = [PD:tso:ErrGenerateTimestamp]generate timestamp failed, " + - "requested pd is not leader of cluster", - ) - } - return 1, 1, nil -} - -type FakeSplitClient struct { - split.SplitClient - regions []*split.RegionInfo -} - -func NewFakeSplitClient() *FakeSplitClient { - return &FakeSplitClient{ - regions: make([]*split.RegionInfo, 0), - } -} - -func (f *FakeSplitClient) AppendRegion(startKey, endKey []byte) { - f.regions = append(f.regions, &split.RegionInfo{ - Region: &metapb.Region{ - StartKey: startKey, - EndKey: endKey, - }, - }) -} - -func (f *FakeSplitClient) AppendPdRegion(region *pd.Region) { - f.regions = append(f.regions, &split.RegionInfo{ - Region: region.Meta, - Leader: region.Leader, - }) -} - -func (f *FakeSplitClient) ScanRegions( - ctx context.Context, - startKey, endKey []byte, - limit int, -) ([]*split.RegionInfo, error) { - result := make([]*split.RegionInfo, 0) - count := 0 - for _, rng := range f.regions { - if bytes.Compare(rng.Region.StartKey, endKey) <= 0 && bytes.Compare(rng.Region.EndKey, startKey) > 0 { - result = append(result, rng) - count++ - } - if count >= limit { - break - } - } - return result, nil -} - -func (f *FakeSplitClient) WaitRegionsScattered(context.Context, []*split.RegionInfo) (int, error) { - return 0, nil -} diff --git a/br/tests/br_debug_meta/run.sh b/br/tests/br_debug_meta/run.sh index 9fc05b12cbaf3..4e93a54b1d709 100644 --- a/br/tests/br_debug_meta/run.sh +++ b/br/tests/br_debug_meta/run.sh @@ -32,36 +32,49 @@ run_sql "$table_region_sql" row_count_ori=$(run_sql "SELECT COUNT(*) FROM $DB.$TABLE;" | awk '/COUNT/{print $2}') -# backup table +# backup table with backupmetav2 echo "backup start..." run_br --pd $PD_ADDR backup table --db $DB --table $TABLE -s "local://$TEST_DIR/$DB" -run_sql "DROP DATABASE $DB;" - # Test validate decode run_br validate decode -s "local://$TEST_DIR/$DB" # should generate backupmeta.json -if [ ! -f "$TEST_DIR/$DB/backupmeta.json" ]; then +if [ ! -f "$TEST_DIR/$DB/jsons/backupmeta.json" ]; then + echo "TEST: [$TEST_NAME] decode failed!" + exit 1 +fi + +# backup table with backupmetav1 +echo "backup start..." +run_br --pd $PD_ADDR backup table --db $DB --table $TABLE -s "local://$TEST_DIR/${DB}_2" --use-backupmeta-v2=false + + +# Test validate decode +run_br validate decode -s "local://$TEST_DIR/${DB}_2" + +# should generate backupmeta.json +if [ ! -f "$TEST_DIR/${DB}_2/jsons/backupmeta.json" ]; then echo "TEST: [$TEST_NAME] decode failed!" exit 1 fi # Test validate encode -run_br validate encode -s "local://$TEST_DIR/$DB" +run_br validate encode -s "local://$TEST_DIR/${DB}_2" # should generate backupmeta_from_json -if [ ! -f "$TEST_DIR/$DB/backupmeta_from_json" ]; then +if [ ! -f "$TEST_DIR/${DB}_2/backupmeta_from_json" ]; then echo "TEST: [$TEST_NAME] encode failed!" exit 1 fi # replace backupmeta -mv "$TEST_DIR/$DB/backupmeta_from_json" "$TEST_DIR/$DB/backupmeta" +mv "$TEST_DIR/${DB}_2/backupmeta_from_json" "$TEST_DIR/${DB}_2/backupmeta" # restore table echo "restore start..." -run_br --pd $PD_ADDR restore table --db $DB --table $TABLE -s "local://$TEST_DIR/$DB" +run_sql "DROP DATABASE $DB;" +run_br --pd $PD_ADDR restore table --db $DB --table $TABLE -s "local://$TEST_DIR/${DB}_2" row_count_new=$(run_sql "SELECT COUNT(*) FROM $DB.$TABLE;" | awk '/COUNT/{print $2}') diff --git a/br/tests/br_encryption/run.sh b/br/tests/br_encryption/run.sh index 3934dd3b6103c..df2c6206f86f4 100755 --- a/br/tests/br_encryption/run.sh +++ b/br/tests/br_encryption/run.sh @@ -59,39 +59,6 @@ insert_additional_data() { done } -wait_log_checkpoint_advance() { - echo "wait for log checkpoint to advance" - sleep 10 - local current_ts=$(python3 -c "import time; print(int(time.time() * 1000) << 18)") - echo "current ts: $current_ts" - i=0 - while true; do - # extract the checkpoint ts of the log backup task. If there is some error, the checkpoint ts should be empty - log_backup_status=$(unset BR_LOG_TO_TERM && run_br --skip-goleak --pd $PD_ADDR log status --task-name $TASK_NAME --json 2>br.log) - echo "log backup status: $log_backup_status" - local checkpoint_ts=$(echo "$log_backup_status" | head -n 1 | jq 'if .[0].last_errors | length == 0 then .[0].checkpoint else empty end') - echo "checkpoint ts: $checkpoint_ts" - - # check whether the checkpoint ts is a number - if [ $checkpoint_ts -gt 0 ] 2>/dev/null; then - if [ $checkpoint_ts -gt $current_ts ]; then - echo "the checkpoint has advanced" - break - fi - echo "the checkpoint hasn't advanced" - i=$((i+1)) - if [ "$i" -gt 50 ]; then - echo 'the checkpoint lag is too large' - exit 1 - fi - sleep 10 - else - echo "TEST: [$TEST_NAME] failed to wait checkpoint advance!" - exit 1 - fi - done -} - calculate_checksum() { local db=$1 local checksum=$(run_sql "USE $db; ADMIN CHECKSUM TABLE $TABLE;" | awk '/CHECKSUM/{print $2}') @@ -170,7 +137,7 @@ run_backup_restore_test() { checksum_ori[${i}]=$(calculate_checksum "$DB${i}") || { echo "Failed to calculate checksum after insertion"; exit 1; } done - wait_log_checkpoint_advance || { echo "Failed to wait for log checkpoint"; exit 1; } + . "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance $TASK_NAME || { echo "Failed to wait for log checkpoint"; exit 1; } #sanity check pause still works run_br log pause --task-name $TASK_NAME --pd $PD_ADDR || { echo "Failed to pause log backup"; exit 1; } @@ -270,7 +237,7 @@ test_backup_encrypted_restore_unencrypted() { # Insert additional test data insert_additional_data "insert_after_full_backup" || { echo "Failed to insert additional data"; exit 1; } - wait_log_checkpoint_advance || { echo "Failed to wait for log checkpoint"; exit 1; } + . "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance $TASK_NAME || { echo "Failed to wait for log checkpoint"; exit 1; } # Stop and clean the cluster diff --git a/br/tests/br_file_corruption/run.sh b/br/tests/br_file_corruption/run.sh index 35a7698bb9fef..cd78ac7370a11 100644 --- a/br/tests/br_file_corruption/run.sh +++ b/br/tests/br_file_corruption/run.sh @@ -22,33 +22,62 @@ CUR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) run_sql "CREATE DATABASE $DB;" go-ycsb load mysql -P $CUR/workload -p mysql.host=$TIDB_IP -p mysql.port=$TIDB_PORT -p mysql.user=root -p mysql.db=$DB -run_br --pd $PD_ADDR backup full -s "local://$TEST_DIR/$DB" +run_br --pd $PD_ADDR backup full -s "local://$TEST_DIR/$DB" --checksum=false -filename=$(find $TEST_DIR/$DB -regex ".*.sst" | head -n 1) -filename_temp=$filename"_temp" -filename_bak=$filename"_bak" -echo "corruption" > $filename_temp -cat $filename >> $filename_temp +# Replace the single file manipulation with a loop over all .sst files +for filename in $(find $TEST_DIR/$DB -name "*.sst"); do + filename_temp="${filename}_temp" + filename_bak="${filename}_bak" + echo "corruption" > "$filename_temp" + cat "$filename" >> "$filename_temp" + mv "$filename" "$filename_bak" +done + +# need to drop db otherwise restore will fail because of cluster not fresh but not the expected issue +run_sql "DROP DATABASE IF EXISTS $DB;" # file lost -mv $filename $filename_bak -export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-import-attempt-to-one=return(true)" +export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-remaining-attempts-to-one=return(true)" restore_fail=0 run_br --pd $PD_ADDR restore full -s "local://$TEST_DIR/$DB" || restore_fail=1 export GO_FAILPOINTS="" if [ $restore_fail -ne 1 ]; then - echo 'restore success' + echo 'expect restore to fail on file lost but succeed' exit 1 fi +run_sql "DROP DATABASE IF EXISTS $DB;" # file corruption -mv $filename_temp $filename -truncate --size=-11 $filename -export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-import-attempt-to-one=return(true)" +for filename in $(find $TEST_DIR/$DB -name "*.sst_temp"); do + mv "$filename" "${filename%_temp}" + truncate -s -11 "${filename%_temp}" +done + +export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-remaining-attempts-to-one=return(true)" restore_fail=0 run_br --pd $PD_ADDR restore full -s "local://$TEST_DIR/$DB" || restore_fail=1 export GO_FAILPOINTS="" if [ $restore_fail -ne 1 ]; then - echo 'restore success' + echo 'expect restore to fail on file corruption but succeed' + exit 1 +fi +run_sql "DROP DATABASE IF EXISTS $DB;" + +# verify validating checksum is still performed even backup didn't enable it +for filename in $(find $TEST_DIR/$DB -name "*.sst_bak"); do + mv "$filename" "${filename%_bak}" +done + +export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/restore/snap_client/full-restore-validate-checksum=return(true)" +restore_fail=0 +run_br --pd $PD_ADDR restore full -s "local://$TEST_DIR/$DB" --checksum=true || restore_fail=1 +export GO_FAILPOINTS="" +if [ $restore_fail -ne 1 ]; then + echo 'expect restore to fail on checksum mismatch but succeed' exit 1 fi +run_sql "DROP DATABASE IF EXISTS $DB;" + +# sanity check restore can succeed +run_br --pd $PD_ADDR restore full -s "local://$TEST_DIR/$DB" --checksum=true +echo 'file corruption tests passed' diff --git a/br/tests/br_full_ddl/run.sh b/br/tests/br_full_ddl/run.sh index 5f9d67184e7d6..70e9b544fabb5 100755 --- a/br/tests/br_full_ddl/run.sh +++ b/br/tests/br_full_ddl/run.sh @@ -125,7 +125,7 @@ echo "backup start with stats..." unset BR_LOG_TO_TERM cluster_index_before_backup=$(run_sql "show variables like '%cluster%';" | awk '{print $2}') -run_br --pd $PD_ADDR backup full -s "local://$TEST_DIR/$DB" --log-file $LOG --ignore-stats=false || cat $LOG +run_br --pd $PD_ADDR backup full -s "local://$TEST_DIR/$DB" --log-file $LOG --ignore-stats=false --checksum=true || cat $LOG checksum_count=$(cat $LOG | grep "checksum success" | wc -l | xargs) if [ "${checksum_count}" -lt "1" ];then diff --git a/br/tests/br_full_index/run.sh b/br/tests/br_full_index/run.sh index edcac1bfa2377..28f959c10b5f4 100755 --- a/br/tests/br_full_index/run.sh +++ b/br/tests/br_full_index/run.sh @@ -41,7 +41,7 @@ echo "backup start..." # Do not log to terminal unset BR_LOG_TO_TERM # do not backup stats to test whether we can restore without stats. -run_br --pd $PD_ADDR backup full -s "local://$TEST_DIR/$DB" --ignore-stats=true --log-file $LOG || cat $LOG +run_br --pd $PD_ADDR backup full -s "local://$TEST_DIR/$DB" --ignore-stats=true --log-file $LOG --checksum=true || cat $LOG BR_LOG_TO_TERM=1 checksum_count=$(cat $LOG | grep "checksum success" | wc -l | xargs) diff --git a/br/tests/br_partition_add_index/run.sh b/br/tests/br_partition_add_index/run.sh index 0a146cb515562..84dcc554765e5 100644 --- a/br/tests/br_partition_add_index/run.sh +++ b/br/tests/br_partition_add_index/run.sh @@ -53,7 +53,7 @@ run_br restore db --db $DB -s "local://$TEST_DIR/$DB" --pd $PD_ADDR run_sql "ALTER TABLE $DB.t0 ADD INDEX idx(data);" -result=$(run_sql "ADMIN SHOW DDL JOBS 1 WHERE job_type LIKE '%ingest%';") +result=$(run_sql "ADMIN SHOW DDL JOBS 1 WHERE comments LIKE '%ingest%';") run_sql "ADMIN SHOW DDL JOBS 1;" diff --git a/br/tests/br_pitr/run.sh b/br/tests/br_pitr/run.sh index 02d85e1170589..4ec1936228fe3 100644 --- a/br/tests/br_pitr/run.sh +++ b/br/tests/br_pitr/run.sh @@ -21,6 +21,7 @@ CUR=$(cd `dirname $0`; pwd) # const value PREFIX="pitr_backup" # NOTICE: don't start with 'br' because `restart services` would remove file/directory br*. res_file="$TEST_DIR/sql_res.$TEST_NAME.txt" +TASK_NAME="br_pitr" # start a new cluster echo "restart a services" @@ -38,7 +39,7 @@ echo "prepare_delete_range_count: $prepare_delete_range_count" # start the log backup task echo "start log task" -run_br --pd $PD_ADDR log start --task-name integration_test -s "local://$TEST_DIR/$PREFIX/log" +run_br --pd $PD_ADDR log start --task-name $TASK_NAME -s "local://$TEST_DIR/$PREFIX/log" # run snapshot backup echo "run snapshot backup" @@ -70,39 +71,8 @@ incremental_delete_range_count=$(run_sql "select count(*) DELETE_RANGE_CNT from echo "incremental_delete_range_count: $incremental_delete_range_count" # wait checkpoint advance -echo "wait checkpoint advance" -sleep 10 current_ts=$(python3 -c "import time; print(int(time.time() * 1000) << 18)") -echo "current ts: $current_ts" -i=0 -while true; do - # extract the checkpoint ts of the log backup task. If there is some error, the checkpoint ts should be empty - log_backup_status=$(unset BR_LOG_TO_TERM && run_br --skip-goleak --pd $PD_ADDR log status --task-name integration_test --json 2>br.log) - echo "log backup status: $log_backup_status" - checkpoint_ts=$(echo "$log_backup_status" | head -n 1 | jq 'if .[0].last_errors | length == 0 then .[0].checkpoint else empty end') - echo "checkpoint ts: $checkpoint_ts" - - # check whether the checkpoint ts is a number - if [ $checkpoint_ts -gt 0 ] 2>/dev/null; then - # check whether the checkpoint has advanced - if [ $checkpoint_ts -gt $current_ts ]; then - echo "the checkpoint has advanced" - break - fi - # the checkpoint hasn't advanced - echo "the checkpoint hasn't advanced" - i=$((i+1)) - if [ "$i" -gt 50 ]; then - echo 'the checkpoint lag is too large' - exit 1 - fi - sleep 10 - else - # unknown status, maybe somewhere is wrong - echo "TEST: [$TEST_NAME] failed to wait checkpoint advance!" - exit 1 - fi -done +. "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance $TASK_NAME # dump some info from upstream cluster # ... @@ -137,6 +107,7 @@ fi # PITR restore echo "run pitr" run_sql "DROP DATABASE __TiDB_BR_Temporary_Log_Restore_Checkpoint;" +run_sql "DROP DATABASE __TiDB_BR_Temporary_Custom_SST_Restore_Checkpoint;" run_br --pd $PD_ADDR restore point -s "local://$TEST_DIR/$PREFIX/log" --full-backup-storage "local://$TEST_DIR/$PREFIX/full" > $res_file 2>&1 check_result @@ -186,7 +157,7 @@ file_corruption() { # file corruption file_corruption -export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-import-attempt-to-one=return(true)" +export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-remaining-attempts-to-one=return(true)" restore_fail=0 run_br --pd $PD_ADDR restore point -s "local://$TEST_DIR/$PREFIX/log" --full-backup-storage "local://$TEST_DIR/$PREFIX/full" || restore_fail=1 export GO_FAILPOINTS="" @@ -210,7 +181,7 @@ file_lost() { # file lost file_lost -export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-import-attempt-to-one=return(true)" +export GO_FAILPOINTS="github.com/pingcap/tidb/br/pkg/utils/set-remaining-attempts-to-one=return(true)" restore_fail=0 run_br --pd $PD_ADDR restore point -s "local://$TEST_DIR/$PREFIX/log" --full-backup-storage "local://$TEST_DIR/$PREFIX/full" || restore_fail=1 export GO_FAILPOINTS="" diff --git a/br/tests/br_pitr_failpoint/run.sh b/br/tests/br_pitr_failpoint/run.sh index dc6e9b463367e..1b5bf221d0be6 100644 --- a/br/tests/br_pitr_failpoint/run.sh +++ b/br/tests/br_pitr_failpoint/run.sh @@ -17,6 +17,7 @@ set -eu . run_services CUR=$(cd `dirname $0`; pwd) +TASK_NAME="br_pitr_failpoint" # const value PREFIX="pitr_backup_failpoint" # NOTICE: don't start with 'br' because `restart services` would remove file/directory br*. @@ -42,12 +43,12 @@ sql_pid=$! # start the log backup task echo "start log task" -run_br --pd $PD_ADDR log start --task-name integration_test -s "local://$TEST_DIR/$PREFIX/log" +run_br --pd $PD_ADDR log start --task-name $TASK_NAME -s "local://$TEST_DIR/$PREFIX/log" # wait until the index creation is running retry_cnt=0 while true; do - run_sql "ADMIN SHOW DDL JOBS WHERE DB_NAME = 'test' AND TABLE_NAME = 'pairs' AND STATE = 'running' AND SCHEMA_STATE = 'write reorganization' AND JOB_TYPE = 'add index /* ingest */';" + run_sql "ADMIN SHOW DDL JOBS WHERE DB_NAME = 'test' AND TABLE_NAME = 'pairs' AND STATE = 'running' AND SCHEMA_STATE = 'write reorganization' AND JOB_TYPE = 'add index';" if grep -Fq "1. row" $res_file; then break fi @@ -71,7 +72,7 @@ touch $hint_sig_file_public # wait until the index creation is done retry_cnt=0 while true; do - run_sql "ADMIN SHOW DDL JOBS WHERE DB_NAME = 'test' AND TABLE_NAME = 'pairs' AND STATE = 'done' AND SCHEMA_STATE = 'public' AND JOB_TYPE = 'add index /* ingest */';" + run_sql "ADMIN SHOW DDL JOBS WHERE DB_NAME = 'test' AND TABLE_NAME = 'pairs' AND STATE = 'done' AND SCHEMA_STATE = 'public' AND JOB_TYPE = 'add index';" if grep -Fq "1. row" $res_file; then break fi @@ -98,7 +99,7 @@ wait $sql_pid # wait until the index creation is done retry_cnt=0 while true; do - run_sql "ADMIN SHOW DDL JOBS WHERE DB_NAME = 'test' AND TABLE_NAME = 'pairs' AND STATE = 'synced' AND SCHEMA_STATE = 'public' AND JOB_TYPE = 'add index /* ingest */';" + run_sql "ADMIN SHOW DDL JOBS WHERE DB_NAME = 'test' AND TABLE_NAME = 'pairs' AND STATE = 'synced' AND SCHEMA_STATE = 'public' AND JOB_TYPE = 'add index';" if grep -Fq "1. row" $res_file; then break fi @@ -121,42 +122,9 @@ check_contains "Column_name: y" check_contains "Column_name: z" # wait checkpoint advance -echo "wait checkpoint advance" -sleep 10 -current_ts=$(echo $(($(date +%s%3N) << 18))) -echo "current ts: $current_ts" -i=0 -while true; do - # extract the checkpoint ts of the log backup task. If there is some error, the checkpoint ts should be empty - log_backup_status=$(unset BR_LOG_TO_TERM && run_br --skip-goleak --pd $PD_ADDR log status --task-name integration_test --json 2>/dev/null) - echo "log backup status: $log_backup_status" - checkpoint_ts=$(echo "$log_backup_status" | head -n 1 | jq 'if .[0].last_errors | length == 0 then .[0].checkpoint else empty end') - echo "checkpoint ts: $checkpoint_ts" - - # check whether the checkpoint ts is a number - if [ $checkpoint_ts -gt 0 ] 2>/dev/null; then - # check whether the checkpoint has advanced - if [ $checkpoint_ts -gt $current_ts ]; then - echo "the checkpoint has advanced" - break - fi - # the checkpoint hasn't advanced - echo "the checkpoint hasn't advanced" - i=$((i+1)) - if [ "$i" -gt 50 ]; then - echo 'the checkpoint lag is too large' - exit 1 - fi - sleep 10 - else - # unknown status, maybe somewhere is wrong - echo "TEST: [$TEST_NAME] failed to wait checkpoint advance!" - exit 1 - fi -done +. "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance $TASK_NAME # start a new cluster -echo "restart a services" restart_services # PITR restore - 1 diff --git a/br/tests/br_pitr_gc_safepoint/run.sh b/br/tests/br_pitr_gc_safepoint/run.sh index 26b3b533c1d69..ef572a92fef67 100644 --- a/br/tests/br_pitr_gc_safepoint/run.sh +++ b/br/tests/br_pitr_gc_safepoint/run.sh @@ -21,6 +21,7 @@ CUR=$(cd `dirname $0`; pwd) # const value PREFIX="pitr_backup" # NOTICE: don't start with 'br' because `restart services` would remove file/directory br*. res_file="$TEST_DIR/sql_res.$TEST_NAME.txt" +TASK_NAME="br_pitr_gc_safepoint" # start a new cluster echo "restart a services" @@ -28,7 +29,7 @@ restart_services # start the log backup task echo "start log task" -run_br --pd $PD_ADDR log start --task-name integration_test -s "local://$TEST_DIR/$PREFIX/log" +run_br --pd $PD_ADDR log start --task-name $TASK_NAME -s "local://$TEST_DIR/$PREFIX/log" # prepare the data echo "prepare the data" @@ -41,41 +42,9 @@ prepare_delete_range_count=$(run_sql "select count(*) DELETE_RANGE_CNT from (sel echo "prepare_delete_range_count: $prepare_delete_range_count" # wait checkpoint advance -echo "wait checkpoint advance" -sleep 10 -current_ts=$(echo $(($(date +%s%3N) << 18))) -echo "current ts: $current_ts" -i=0 -while true; do - # extract the checkpoint ts of the log backup task. If there is some error, the checkpoint ts should be empty - log_backup_status=$(unset BR_LOG_TO_TERM && run_br --skip-goleak --pd $PD_ADDR log status --task-name integration_test --json 2>br.log) - echo "log backup status: $log_backup_status" - checkpoint_ts=$(echo "$log_backup_status" | head -n 1 | jq 'if .[0].last_errors | length == 0 then .[0].checkpoint else empty end') - echo "checkpoint ts: $checkpoint_ts" +. "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance "$TASK_NAME" - # check whether the checkpoint ts is a number - if [ $checkpoint_ts -gt 0 ] 2>/dev/null; then - # check whether the checkpoint has advanced - if [ $checkpoint_ts -gt $current_ts ]; then - echo "the checkpoint has advanced" - break - fi - # the checkpoint hasn't advanced - echo "the checkpoint hasn't advanced" - i=$((i+1)) - if [ "$i" -gt 50 ]; then - echo 'the checkpoint lag is too large' - exit 1 - fi - sleep 10 - else - # unknown status, maybe somewhere is wrong - echo "TEST: [$TEST_NAME] failed to wait checkpoint advance!" - exit 1 - fi -done - -run_br --pd $PD_ADDR log pause --task-name integration_test +run_br --pd $PD_ADDR log pause --task-name $TASK_NAME safe_point=$(run_pd_ctl -u https://$PD_ADDR service-gc-safepoint) diff --git a/br/tests/br_pitr_long_running_schema_loading/run.sh b/br/tests/br_pitr_long_running_schema_loading/run.sh new file mode 100644 index 0000000000000..e6f32c08bcdce --- /dev/null +++ b/br/tests/br_pitr_long_running_schema_loading/run.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# +# Copyright 2024 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 -eu +. run_services +CUR=$(cd `dirname $0`; pwd) + +TASK_NAME="pitr_long_running_schema_loading" +res_file="$TEST_DIR/sql_res.$TEST_NAME.txt" +DB="$TEST_NAME" + +restart_services + +run_sql "CREATE SCHEMA $DB;" + +# start the log backup +run_br --pd $PD_ADDR log start --task-name $TASK_NAME -s "local://$TEST_DIR/$TASK_NAME/log" + +run_sql "USE $DB; CREATE TABLE t1 (id INT PRIMARY KEY, value VARCHAR(255));" +run_sql "USE $DB; INSERT INTO t1 VALUES (1, 'before-backup-1'), (2, 'before-backup-2');" + + +# do a full backup +run_br --pd "$PD_ADDR" backup full -s "local://$TEST_DIR/$TASK_NAME/full" + +run_sql "USE $DB; INSERT INTO t1 VALUES (3, 'after-backup-1'), (4, 'after-backup-2');" +run_sql "USE $DB; DROP TABLE t1;" +run_sql "USE $DB; CREATE TABLE t2 (id INT PRIMARY KEY, data TEXT);" +run_sql "USE $DB; INSERT INTO t2 VALUES (1, 'new-table-data');" + +echo "wait checkpoint advance" +. "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance $TASK_NAME + +restart_services + +export GO_FAILPOINTS="github.com/pingcap/tidb/pkg/domain/mock-load-schema-long-time=return(true);github.com/pingcap/tidb/br/pkg/task/post-restore-kv-pending=return(true)" +run_br --pd "$PD_ADDR" restore point -s "local://$TEST_DIR/$TASK_NAME/log" --full-backup-storage "local://$TEST_DIR/$TASK_NAME/full" +export GO_FAILPOINTS="" diff --git a/br/tests/br_restore_checkpoint/run.sh b/br/tests/br_restore_checkpoint/run.sh index 2a4b1104916de..da45692cdcb62 100644 --- a/br/tests/br_restore_checkpoint/run.sh +++ b/br/tests/br_restore_checkpoint/run.sh @@ -22,9 +22,9 @@ CUR=$(cd `dirname $0`; pwd) PREFIX="checkpoint" # NOTICE: don't start with 'br' because `restart services` would remove file/directory br*. DB=$TEST_NAME res_file="$TEST_DIR/sql_res.$TEST_NAME.txt" +TASK_NAME="br_restore_checkpoint" # start a new cluster -echo "restart a services" restart_services # prepare snapshot data @@ -37,7 +37,7 @@ run_sql "INSERT INTO $DB.tbl2 values (2, 'b');" # start the log backup task echo "start log task" -run_br --pd $PD_ADDR log start --task-name integration_test -s "local://$TEST_DIR/$PREFIX/log" +run_br --pd $PD_ADDR log start --task-name $TASK_NAME -s "local://$TEST_DIR/$PREFIX/log" # run snapshot backup echo "run snapshot backup" @@ -53,41 +53,9 @@ run_sql "INSERT INTO $DB.tbl3 values (33, 'cc');" # wait checkpoint advance echo "wait checkpoint advance" -sleep 10 -current_ts=$(echo $(($(date +%s%3N) << 18))) -echo "current ts: $current_ts" -i=0 -while true; do - # extract the checkpoint ts of the log backup task. If there is some error, the checkpoint ts should be empty - log_backup_status=$(unset BR_LOG_TO_TERM && run_br --skip-goleak --pd $PD_ADDR log status --task-name integration_test --json 2>br.log) - echo "log backup status: $log_backup_status" - checkpoint_ts=$(echo "$log_backup_status" | head -n 1 | jq 'if .[0].last_errors | length == 0 then .[0].checkpoint else empty end') - echo "checkpoint ts: $checkpoint_ts" - - # check whether the checkpoint ts is a number - if [ $checkpoint_ts -gt 0 ] 2>/dev/null; then - # check whether the checkpoint has advanced - if [ $checkpoint_ts -gt $current_ts ]; then - echo "the checkpoint has advanced" - break - fi - # the checkpoint hasn't advanced - echo "the checkpoint hasn't advanced" - i=$((i+1)) - if [ "$i" -gt 50 ]; then - echo 'the checkpoint lag is too large' - exit 1 - fi - sleep 10 - else - # unknown status, maybe somewhere is wrong - echo "TEST: [$TEST_NAME] failed to wait checkpoint advance!" - exit 1 - fi -done +. "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance $TASK_NAME # start a new cluster -echo "restart a services" restart_services # PITR but failed in the snapshot restore stage diff --git a/br/tests/br_table_partition/prepare.sh b/br/tests/br_table_partition/prepare.sh index 9a89b313ea2ff..6f553d5f11790 100755 --- a/br/tests/br_table_partition/prepare.sh +++ b/br/tests/br_table_partition/prepare.sh @@ -58,16 +58,17 @@ run_sql "CREATE TABLE IF NOT EXISTS $DB.${TABLE}_List ($TABLE_COLUMNS) PARTITION wait +insertRecords $DB.${TABLE}_Hash 1 $ROW_COUNT & +insertRecords $DB.${TABLE}_List 1 $ROW_COUNT & + for i in $(seq $TABLE_COUNT); do for j in $(seq $CONCURRENCY); do insertRecords $DB.$TABLE${i} $(expr $ROW_COUNT / $CONCURRENCY \* $(expr $j - 1) + 1) $(expr $ROW_COUNT / $CONCURRENCY \* $j) & done - insertRecords $DB.${TABLE}_Hash 1 $ROW_COUNT & - insertRecords $DB.${TABLE}_List 1 $ROW_COUNT & - if ! ((i % 4)); then + if [ $((i % 4)) -eq 0 ]; then run_sql "ALTER TABLE $DB.$TABLE${i} REMOVE PARTITIONING" fi - if ! ((i % 2)); then + if [ $((i % 2)) -eq 0 ]; then run_sql "ALTER TABLE $DB.$TABLE${i} \ PARTITION BY RANGE(c1) ( \ PARTITION p0 VALUES LESS THAN (0), \ @@ -77,3 +78,12 @@ for i in $(seq $TABLE_COUNT); do fi done wait + +run_sql "ALTER TABLE $DB.${TABLE}_Hash ADD UNIQUE INDEX idx(c1) GLOBAL" & +run_sql "ALTER TABLE $DB.${TABLE}_List ADD UNIQUE INDEX idx(c1) GLOBAL" & + +for i in $(seq $TABLE_COUNT); do + run_sql "ALTER TABLE $DB.$TABLE${i} ADD UNIQUE INDEX idx(c1) GLOBAL" & +done +wait + diff --git a/br/tests/br_test_utils.sh b/br/tests/br_test_utils.sh new file mode 100644 index 0000000000000..9102415a77e14 --- /dev/null +++ b/br/tests/br_test_utils.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# +# Copyright 2024 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 -eux + +wait_log_checkpoint_advance() { + local task_name=${1:-$TASK_NAME} + echo "wait for log checkpoint to advance for task: $task_name" + sleep 10 + local current_ts=$(python3 -c "import time; print(int(time.time() * 1000) << 18)") + echo "current ts: $current_ts" + i=0 + while true; do + # extract the checkpoint ts of the log backup task. If there is some error, the checkpoint ts should be empty + log_backup_status=$(unset BR_LOG_TO_TERM && run_br --skip-goleak --pd $PD_ADDR log status --task-name $task_name --json 2>br.log) + echo "log backup status: $log_backup_status" + local checkpoint_ts=$(echo "$log_backup_status" | head -n 1 | jq 'if .[0].last_errors | length == 0 then .[0].checkpoint else empty end') + echo "checkpoint ts: $checkpoint_ts" + + # check whether the checkpoint ts is a number + if [ $checkpoint_ts -gt 0 ] 2>/dev/null; then + if [ $checkpoint_ts -gt $current_ts ]; then + echo "the checkpoint has advanced" + break + fi + echo "the checkpoint hasn't advanced" + i=$((i+1)) + if [ "$i" -gt 50 ]; then + echo 'the checkpoint lag is too large' + exit 1 + fi + sleep 10 + else + echo "TEST: [$TEST_NAME] failed to wait checkpoint advance!" + exit 1 + fi + done +} diff --git a/br/tests/br_tiflash_conflict/run.sh b/br/tests/br_tiflash_conflict/run.sh index f224a1497bf00..5f7e1f7726ae4 100644 --- a/br/tests/br_tiflash_conflict/run.sh +++ b/br/tests/br_tiflash_conflict/run.sh @@ -22,6 +22,7 @@ CUR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) backup_dir=$TEST_DIR/keep/${TEST_NAME} pitr_dir=${backup_dir}_pitr br_log_file=$TEST_DIR/br.log +TASK_NAME="br_tiflash_conflict" # start a new cluster echo "restart a services" @@ -33,7 +34,7 @@ run_sql_file $CUR/prepare_data/prepare_data.sql #run pitr backup echo "run pitr backup" -run_br log start --task-name integration_test -s "local://$pitr_dir" +run_br log start --task-name $TASK_NAME -s "local://$pitr_dir" # run snapshot backup echo "run snapshot backup" @@ -47,39 +48,7 @@ echo "load the incremental data" run_sql_file $CUR/prepare_data/insert_data.sql # wait checkpoint advance -echo "wait checkpoint advance" -sleep 10 -current_ts=$(echo $(($(date +%s%3N) << 18))) -echo "current ts: $current_ts" -i=0 -while true; do - # extract the checkpoint ts of the log backup task. If there is some error, the checkpoint ts should be empty - log_backup_status=$(unset BR_LOG_TO_TERM && run_br --skip-goleak log status --task-name integration_test --json 2>br.log) - echo "log backup status: $log_backup_status" - checkpoint_ts=$(echo "$log_backup_status" | head -n 1 | jq 'if .[0].last_errors | length == 0 then .[0].checkpoint else empty end') - echo "checkpoint ts: $checkpoint_ts" - - # check whether the checkpoint ts is a number - if [ $checkpoint_ts -gt 0 ] 2>/dev/null; then - # check whether the checkpoint has advanced - if [ $checkpoint_ts -gt $current_ts ]; then - echo "the checkpoint has advanced" - break - fi - # the checkpoint hasn't advanced - echo "the checkpoint hasn't advanced" - i=$((i+1)) - if [ "$i" -gt 50 ]; then - echo 'the checkpoint lag is too large' - exit 1 - fi - sleep 10 - else - # unknown status, maybe somewhere is wrong - echo "TEST: [$TEST_NAME] failed to wait checkpoint advance!" - exit 1 - fi -done +. "$CUR/../br_test_utils.sh" && wait_log_checkpoint_advance $TASK_NAME # start a new cluster echo "restart a services" diff --git a/br/tests/run_group_br_tests.sh b/br/tests/run_group_br_tests.sh index 5064127142204..fdb9dd6d6ea6b 100755 --- a/br/tests/run_group_br_tests.sh +++ b/br/tests/run_group_br_tests.sh @@ -22,7 +22,7 @@ declare -A groups groups=( ["G00"]="br_300_small_tables br_backup_empty br_backup_version br_cache_table br_case_sensitive br_charset_gbk br_check_new_collocation_enable br_history br_gcs br_rawkv br_tidb_placement_policy" ["G01"]="br_autoid br_crypter2 br_db br_db_online br_db_online_newkv br_db_skip br_debug_meta br_ebs br_foreign_key br_full br_table_partition br_full_ddl br_tiflash" - ["G02"]="br_full_cluster_restore br_full_index br_incremental_ddl br_pitr_failpoint br_pitr_gc_safepoint br_other" + ["G02"]="br_full_cluster_restore br_full_index br_incremental_ddl br_pitr_failpoint br_pitr_gc_safepoint br_other br_pitr_long_running_schema_loading" ["G03"]='br_incompatible_tidb_config br_incremental br_incremental_index br_incremental_only_ddl br_incremental_same_table br_insert_after_restore br_key_locked br_log_test br_move_backup br_mv_index' ["G04"]='br_range br_replica_read br_restore_TDE_enable br_restore_log_task_enable br_s3 br_shuffle_leader br_shuffle_region br_single_table' ["G05"]='br_skip_checksum br_split_region_fail br_systables br_table_filter br_txn br_stats br_clustered_index br_crypter br_partition_add_index' diff --git a/build/image/base b/build/image/base index 2624e2d2e7f16..4530be14be419 100644 --- a/build/image/base +++ b/build/image/base @@ -30,7 +30,7 @@ RUN --mount=type=cache,target=/var/cache/dnf \ # install golang toolchain # renovate: datasource=docker depName=golang -ARG GOLANG_VERSION=1.23.2 +ARG GOLANG_VERSION=1.23.4 RUN OS=linux; ARCH=$([ "$(arch)" = "x86_64" ] && echo amd64 || echo arm64); \ curl -fsSL https://dl.google.com/go/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz | tar -C /usr/local -xz ENV PATH /usr/local/go/bin/:$PATH diff --git a/build/image/parser_test b/build/image/parser_test index 98a572c9e9efb..692ff36f9cfb3 100644 --- a/build/image/parser_test +++ b/build/image/parser_test @@ -14,7 +14,7 @@ FROM rockylinux:9 -ENV GOLANG_VERSION 1.23.2 +ENV GOLANG_VERSION 1.23.4 ENV ARCH amd64 ENV GOLANG_DOWNLOAD_URL https://dl.google.com/go/go$GOLANG_VERSION.linux-$ARCH.tar.gz ENV GOPATH /home/prow/go diff --git a/cmd/benchdb/BUILD.bazel b/cmd/benchdb/BUILD.bazel index 6e8acbd0bd3ff..a5275dbc84d66 100644 --- a/cmd/benchdb/BUILD.bazel +++ b/cmd/benchdb/BUILD.bazel @@ -6,6 +6,8 @@ go_library( importpath = "github.com/pingcap/tidb/cmd/benchdb", visibility = ["//visibility:private"], deps = [ + "//pkg/config", + "//pkg/ddl", "//pkg/parser/terror", "//pkg/session", "//pkg/session/types", diff --git a/cmd/benchdb/main.go b/cmd/benchdb/main.go index 8d95bee890ab9..fb9e370f03260 100644 --- a/cmd/benchdb/main.go +++ b/cmd/benchdb/main.go @@ -24,6 +24,8 @@ import ( "time" "github.com/pingcap/log" + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/session" sessiontypes "github.com/pingcap/tidb/pkg/session/types" @@ -58,7 +60,7 @@ func main() { flag.PrintDefaults() err := logutil.InitLogger(logutil.NewLogConfig(*logLevel, logutil.DefaultLogFormat, "", "", logutil.EmptyFileLogConfig, false)) terror.MustNil(err) - err = store.Register("tikv", driver.TiKVDriver{}) + err = store.Register(config.StoreTypeTiKV, driver.TiKVDriver{}) terror.MustNil(err) ut := newBenchDB() works := strings.Split(*runJobs, "|") @@ -96,11 +98,16 @@ func newBenchDB() *benchDB { // Create TiKV store and disable GC as we will trigger GC manually. store, err := store.New("tikv://" + *addr + "?disableGC=true") terror.MustNil(err) + // maybe close below components, but it's for test anyway. + ctx := context.Background() + config.GetGlobalConfig().Store = config.StoreTypeTiKV + err = ddl.StartOwnerManager(ctx, store) + terror.MustNil(err) _, err = session.BootstrapSession(store) terror.MustNil(err) se, err := session.CreateSession(store) terror.MustNil(err) - _, err = se.ExecuteInternal(context.Background(), "use test") + _, err = se.ExecuteInternal(ctx, "use test") terror.MustNil(err) return &benchDB{ diff --git a/cmd/ddltest/BUILD.bazel b/cmd/ddltest/BUILD.bazel index bf3fce97cf57a..6dce632241496 100644 --- a/cmd/ddltest/BUILD.bazel +++ b/cmd/ddltest/BUILD.bazel @@ -14,7 +14,9 @@ go_test( race = "on", shard_count = 6, deps = [ + "//dumpling/context", "//pkg/config", + "//pkg/ddl", "//pkg/domain", "//pkg/kv", "//pkg/parser/model", diff --git a/cmd/ddltest/ddl_test.go b/cmd/ddltest/ddl_test.go index 15997dad72864..78e53088e15bc 100644 --- a/cmd/ddltest/ddl_test.go +++ b/cmd/ddltest/ddl_test.go @@ -33,7 +33,9 @@ import ( _ "github.com/go-sql-driver/mysql" "github.com/pingcap/errors" "github.com/pingcap/log" + "github.com/pingcap/tidb/dumpling/context" "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" @@ -95,12 +97,13 @@ func createDDLSuite(t *testing.T) (s *ddlSuite) { s.quit = make(chan struct{}) + config.GetGlobalConfig().Store = config.StoreTypeTiKV s.store, err = store.New(fmt.Sprintf("tikv://%s%s", *etcd, *tikvPath)) require.NoError(t, err) // Make sure the schema lease of this session is equal to other TiDB servers'. session.SetSchemaLease(time.Duration(*lease) * time.Second) - + require.NoError(t, ddl.StartOwnerManager(context.Background(), s.store)) s.dom, err = session.BootstrapSession(s.store) require.NoError(t, err) @@ -118,6 +121,7 @@ func createDDLSuite(t *testing.T) (s *ddlSuite) { err = domain.GetDomain(s.ctx).DDL().Stop() require.NoError(t, err) config.GetGlobalConfig().Instance.TiDBEnableDDL.Store(false) + ddl.CloseOwnerManager() session.ResetStoreForWithTiKVTest(s.store) s.dom.Close() require.NoError(t, s.store.Close()) @@ -1157,5 +1161,5 @@ func addEnvPath(newPath string) { } func init() { - _ = store.Register("tikv", tidbdriver.TiKVDriver{}) + _ = store.Register(config.StoreTypeTiKV, tidbdriver.TiKVDriver{}) } diff --git a/cmd/importer/BUILD.bazel b/cmd/importer/BUILD.bazel index e11e994a2280d..a7f688613f32c 100644 --- a/cmd/importer/BUILD.bazel +++ b/cmd/importer/BUILD.bazel @@ -24,7 +24,7 @@ go_library( "//pkg/planner/core", "//pkg/statistics", "//pkg/statistics/handle/storage", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/types", "@com_github_burntsushi_toml//:toml", "@com_github_go_sql_driver_mysql//:mysql", diff --git a/cmd/importer/stats.go b/cmd/importer/stats.go index b338aa7641385..febd01233a0a3 100644 --- a/cmd/importer/stats.go +++ b/cmd/importer/stats.go @@ -25,7 +25,7 @@ import ( "github.com/pingcap/tidb/pkg/meta/model" stats "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/storage" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/types" "go.uber.org/zap" ) diff --git a/cmd/tidb-server/BUILD.bazel b/cmd/tidb-server/BUILD.bazel index 8a50288fafa54..7962ec6a56fdf 100644 --- a/cmd/tidb-server/BUILD.bazel +++ b/cmd/tidb-server/BUILD.bazel @@ -56,6 +56,7 @@ go_library( "//pkg/util/tiflashcompute", "//pkg/util/topsql", "//pkg/util/versioninfo", + "//pkg/util/workloadrepo", "@com_github_opentracing_opentracing_go//:opentracing-go", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", diff --git a/cmd/tidb-server/main.go b/cmd/tidb-server/main.go index 9e6bfc78f5771..0059196ecca86 100644 --- a/cmd/tidb-server/main.go +++ b/cmd/tidb-server/main.go @@ -80,6 +80,7 @@ import ( "github.com/pingcap/tidb/pkg/util/tiflashcompute" "github.com/pingcap/tidb/pkg/util/topsql" "github.com/pingcap/tidb/pkg/util/versioninfo" + repository "github.com/pingcap/tidb/pkg/util/workloadrepo" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/push" "github.com/tikv/client-go/v2/tikv" @@ -198,7 +199,7 @@ func initFlagSet() *flag.FlagSet { configStrict = flagBoolean(fset, nmConfigStrict, false, "enforce config file validity") // Base - store = fset.String(nmStore, "unistore", "registered store name, [tikv, mocktikv, unistore]") + store = fset.String(nmStore, string(config.StoreTypeUniStore), fmt.Sprintf("registered store name, %v", config.StoreTypeList())) storePath = fset.String(nmStorePath, "/tmp/tidb", "tidb storage path") host = fset.String(nmHost, "0.0.0.0", "tidb server host") advertiseAddress = fset.String(nmAdvertiseAddress, "", "tidb server advertise IP") @@ -317,7 +318,8 @@ func main() { keyspaceName := keyspace.GetKeyspaceNameBySettings() executor.Start() resourcemanager.InstanceResourceManager.Start() - storage, dom := createStoreAndDomain(keyspaceName) + storage, dom := createStoreDDLOwnerMgrAndDomain(keyspaceName) + repository.SetupRepository(dom) svr := createServer(storage, dom) exited := make(chan struct{}) @@ -389,15 +391,15 @@ func setCPUAffinity() { } func registerStores() { - err := kvstore.Register("tikv", driver.TiKVDriver{}) + err := kvstore.Register(config.StoreTypeTiKV, driver.TiKVDriver{}) terror.MustNil(err) - err = kvstore.Register("mocktikv", mockstore.MockTiKVDriver{}) + err = kvstore.Register(config.StoreTypeMockTiKV, mockstore.MockTiKVDriver{}) terror.MustNil(err) - err = kvstore.Register("unistore", mockstore.EmbedUnistoreDriver{}) + err = kvstore.Register(config.StoreTypeUniStore, mockstore.EmbedUnistoreDriver{}) terror.MustNil(err) } -func createStoreAndDomain(keyspaceName string) (kv.Storage, *domain.Domain) { +func createStoreDDLOwnerMgrAndDomain(keyspaceName string) (kv.Storage, *domain.Domain) { cfg := config.GetGlobalConfig() var fullPath string if keyspaceName == "" { @@ -411,6 +413,8 @@ func createStoreAndDomain(keyspaceName string) (kv.Storage, *domain.Domain) { copr.GlobalMPPFailedStoreProber.Run() mppcoordmanager.InstanceMPPCoordinatorManager.Run() // Bootstrap a session to load information schema. + err = ddl.StartOwnerManager(context.Background(), storage) + terror.MustNil(err) dom, err := session.BootstrapSession(storage) terror.MustNil(err) return storage, dom @@ -511,7 +515,7 @@ func overrideConfig(cfg *config.Config, fset *flag.FlagSet) { cfg.Cors = *cors } if actualFlags[nmStore] { - cfg.Store = *store + cfg.Store = config.StoreType(*store) } if actualFlags[nmStorePath] { cfg.Path = *storePath @@ -859,7 +863,7 @@ func createServer(storage kv.Storage, dom *domain.Domain) *server.Server { svr, err := server.NewServer(cfg, driver) // Both domain and storage have started, so we have to clean them before exiting. if err != nil { - closeDomainAndStorage(storage, dom) + closeDDLOwnerMgrDomainAndStorage(storage, dom) log.Fatal("failed to create the server", zap.Error(err), zap.Stack("stack")) } svr.SetDomain(dom) @@ -893,9 +897,10 @@ func setupTracing() { opentracing.SetGlobalTracer(tracer) } -func closeDomainAndStorage(storage kv.Storage, dom *domain.Domain) { +func closeDDLOwnerMgrDomainAndStorage(storage kv.Storage, dom *domain.Domain) { tikv.StoreShuttingDown(1) dom.Close() + ddl.CloseOwnerManager() copr.GlobalMPPFailedStoreProber.Stop() mppcoordmanager.InstanceMPPCoordinatorManager.Stop() err := storage.Close() @@ -918,7 +923,8 @@ func cleanup(svr *server.Server, storage kv.Storage, dom *domain.Domain) { // See https://github.com/pingcap/tidb/issues/40038 for details. svr.KillSysProcesses() plugin.Shutdown(context.Background()) - closeDomainAndStorage(storage, dom) + repository.StopRepository() + closeDDLOwnerMgrDomainAndStorage(storage, dom) disk.CleanUp() closeStmtSummary() topsql.Close() diff --git a/docs/design/2024-07-12-support-vector-index.md b/docs/design/2024-07-12-support-vector-index.md index 65367ef1f63cb..ebdc40ca11a0c 100644 --- a/docs/design/2024-07-12-support-vector-index.md +++ b/docs/design/2024-07-12-support-vector-index.md @@ -16,7 +16,7 @@ This document plans to support the same processing of vector indexes as ordinary ## **Detailed Design** -The process of adding a vector index is similar to that of adding an ordinary index. However, since the actual vector index data is added to TiFlash, there is no process for populating the index data to TiKV. +The process of adding a vector index is similar to that of adding an ordinary index. However, since the actual vector index data is added to TiFlash, there is no process for populating the index data to TiKV. The following figure takes the add vector index operation as an example and briefly describes its execution process. ![Figure 1: flow chart](./imgs/vector-index.png) @@ -42,13 +42,13 @@ CREATE TABLE foo ( * By `IndexKeyTypeOpt` add `VECTOR` index type, and `IndexTypeOpt` add `HNSW` option type, and add vector index after creating the table. ```sql -CREATE VECTOR INDEX idx_name USING HNSW ON foo ((VEC_COSINE_DISTANCE(data))) +CREATE VECTOR INDEX idx_name USING HNSW ON foo ((VEC_COSINE_DISTANCE(data))) -- Proposal 1, "WITH OPTION" is not supported in Phase 1 [WITH OPTION "m=16, ef_construction=64"]; -- Proposal 2, "VECTOR_INDEX_PARAM" is not supported in Phase 1 [VECTOR_INDEX_PARAM "m=16, ef_construction=64"]; -ALTER TABLE foo ADD VECTOR INDEX idx_name USING HNSW ((VEC_COSINE_DISTANCE(data))) +ALTER TABLE foo ADD VECTOR INDEX idx_name USING HNSW ((VEC_COSINE_DISTANCE(data))) -- "WITH OPTION" is not supported in Phase 1 [WITH OPTION "m=16, ef_construction=64"]; ``` @@ -71,8 +71,8 @@ ALTER TABLE t ADD VECTOR INDEX IF NOT EXISTS ((VEC_COSINE_DISTANCE(a))) USING HN * The vector index only obtains the top n values through similarity. The following is the syntax for using a vector index when querying. ```sql -SELECT * -FROM foo +SELECT * +FROM foo ORDER BY VEC_COSINE_DISTANCE(data, '[3,1,2]') LIMIT 5; ``` @@ -91,8 +91,7 @@ type ANNQueryInfo struct { RefVecF32 []byte `protobuf:"bytes,6,opt,name=ref_vec_f32,json=refVecF32" json:"ref_vec_f32,omitempty"` MaxDistance float64 `protobuf:"fixed64,10,opt,name=max_distance,json=maxDistance" json:"max_distance"` HnswEfSearch uint32 `protobuf:"varint,20,opt,name=hnsw_ef_search,json=hnswEfSearch" json:"hnsw_ef_search"` - XXX_unrecognized []byte `json:"-"` - + // new fields IndexId int64 `protobuf:"varint,5,opt,name=column_id,json=columnId" json:"column_id"` } @@ -151,7 +150,7 @@ type IndexInfo struct { Name CIStr `json:"idx_name"` // Index name. ... // VectorInfo is the vector index information. - VectorInfo *VectorIndexInfo `json:"is_vector"` + VectorInfo *VectorIndexInfo `json:"is_vector"` } ``` diff --git a/docs/design/2024-10-11-put-and-verify-transactions-for-external-storages.md b/docs/design/2024-10-11-put-and-verify-transactions-for-external-storages.md new file mode 100644 index 0000000000000..666b8a9cee068 --- /dev/null +++ b/docs/design/2024-10-11-put-and-verify-transactions-for-external-storages.md @@ -0,0 +1,233 @@ +# Put and Verify Transactions for External Storages + +- Author: [Yu Juncen](https://github.com/YuJuncen) +- Tracking Issue: https://github.com/pingcap/tidb/issues/56523 + +## Background + +Sometimes, we need to control concurrency access to the same backup archive, like: + +- When compacting / restoring, we want to block migrating to a new version. +- When migrating the backup storage to a new version, we want to forbid reading. +- When truncating the storage, we don't want another truncating operation happen. +- When backing up, we don't want another backup uses the same storage. + +But external storage locking isn't trivial. Simply putting a lock file isn't safe enough: because after checking there isn't such a lock file, another one may write it immediately. Object locks provide stronger consistency, but also require extra configuration and permissions. Most object storages also support "conditional write", which is lighter-weighted than object locks in the concurrency control scenario. But both object locks and conditional write are focus on "entities", the available conditions are restricted: you cannot say, "if the prefix `/competitor` doesn't contain any file, write `/me`.", at least for now (mid 2024). + +This proposal will propose a new procedure for locking / unlocking, which is safe in all object storages that have a *strong consistency* guarantee over its PUT, GET and LIST API. This has been promised in: + +- S3: https://aws.amazon.com/cn/s3/consistency/ +- Google Cloud Storage: https://cloud.google.com/storage/docs/consistency#strongly_consistent_operations +- Azure Blob Storage: https://github.com/MicrosoftDocs/azure-docs/issues/105331#issuecomment-1450252384 (But no official documents found yet :( ) + +## Spec + +A put-and-verify transaction looks like: + +```go +type VerifyWriteContext struct { + context.Context + Target string + Storage ExternalStorage + TxnID uuid.UUID +} + +type ExclusiveWrite struct { + // Target is the target file of this txn. + // There shouldn't be other files shares this prefix with this file, or the txn will fail. + Target string + // Content is the content that needed to be written to that file. + Content func(txnID uuid.UUID) []byte + // Verify allows you add other preconditions to the write. + // This will be called when the write is allowed and about to be performed. + // If `Verify()` returns an error, the write will be aborted. + // + // With this, you may add extra preconditions of committing in usecases like RWLock. + Verify func(ctx VerifyWriteContext) error +} +``` + +After successfully committing such a PutAndVerify transaction, the following invariants are kept: + +- The `Target` should be written exactly once. +- The function `Verify()` returns no error after this transaction committed, if the function `Verify` satisfies: + - Once it returns non-error, it will always return non-error as long as exactly one file has the Prefix(). + +A PutAndVerify txn was committed by: + +- Put a intention file with a random suffix to the `Target`. +- Check if there is another file in the `Target`. +- If there is, remove our intention file and back off or report error to caller. +- If there isn't, and `Verify()` returns no error, put the `Content()` to the `Target`, without suffix, then remove the intention file. + +Here is the detailed code for committing such a transaction: + +```go +func (w ExclusiveWrite) CommitTo(ctx context.Context, s ExternalStorage) (uuid.UUID, error) { + txnID := uuid.New() + cx := VerifyWriteContext{ + Context: ctx, + Target: w.Target, + Storage: s, + TxnID: txnID, + } + intentFileName := cx.IntentFileName() // Should be "{Target}.INTENT.{UUID}" + checkConflict := func() error { + var err error + if w.Verify != nil { + err = multierr.Append(err, w.Verify(cx)) + } + return multierr.Append(err, cx.assertOnlyMyIntent()) + } + + if err := checkConflict(); err != nil { + return uuid.UUID{}, errors.Annotate(err, "during initial check") + } + if err := s.WriteFile(cx, intentFileName, []byte{}); err != nil { + return uuid.UUID{}, errors.Annotate(err, "during writing intention file") + } + defer s.DeleteFile(cx, intentFileName) + if err := checkConflict(); err != nil { + return uuid.UUID{}, errors.Annotate(err, "during checking whether there are other intentions") + } + + return txnID, s.WriteFile(cx, w.Target, w.Content(txnID)) +} +``` + + + +An example of the txn aborting, when there are two conflicting txns, the name of intent files are simplified for reading: + +| Alice's Txn | Bob's Txn | +| ---------------------------------------- | ------------------------------------------ | +| intentFile := "LOCK_Alice" | intentFile := "LOCK_Bob" | +| | Verify() → **OK** | +| Verify() → **OK** | | +| | Write("LOCK_Bob", "") → **OK** | +| Write("LOCK_Alice", "") → **OK** | | +| | Verify() → **Failed! "LOCK_Alice" exists** | +| Verify() → **Failed! "Lock_Bob" exists** | | +| | Delete("LOCK_Bob") → **OK** | +| Delete("LOCK_Alice") → **OK** | | +| ABORT | ABORT | + +Then, they may retry committing. + +| Alice's Txn | Bob's Txn | +| -------------------------------------------------- | ------------------------------------------ | +| intentFile := "LOCK_Alice" | intentFile := "LOCK_Bob" | +| | Verify() → **OK** | +| Verify() → **OK** | | +| | Write("LOCK_Bob", "") → **OK** | +| Write("LOCK_Alice", "") → **OK** | | +| | Verify() → **Failed! "LOCK_Alice" exists** | +| | Delete("LOCK_Bob") → **OK** | +| Verify() → **OK** | | +| Write("LOCK_Alice","Alice owns the lock") → **OK** | | +| COMMITTED | ABORT | + +This time, Alice is lucky enough, she committes her transaction, Bob gives up committing when he realizes that there is a conflicting transaction. + +## Correctness + +### Atomic CAS + +Here is a TLA+ module that describes the algorithm. + +You can find a rendered version [here](imgs/write-and-verify-tla.pdf). + +The theorem have been checked by a TLA+ model, [here](imgs/write-and-verfiy-tla-states.pdf) is the state transform graph with 2 clients, you may check it manually. + +### Invariant of `Verify()` + +It looks trivial: the last call to `Verify` makes sure there should be exactly one file that has the prefix. +By its definition, it should always return nil before the file is removed. + +## Example 1: Mutex + +An empty `Verify()` function is enough for implementing a Mutex in the external storage. + +```go +func TryLockRemote(ctx context.Context, storage ExternalStorage, path) error { + writer := ExclusiveWrite{ + Target: path, + Content: func(_ uuid.UUID) []byte { + return []byte("I got the lock :D") + }, + } + + _, err = writer.CommitTo(ctx, storage) + return err +} +``` + +## Example 2: RwLock + +We can use `Verify()` to check whether there is a conflicting lock. + +Before we start, let's involve a helper function of the verify context: + +```go +// assertNoOtherOfPrefixExpect asserts that there is no other file with the same prefix than the expect file. +func (cx VerifyWriteContext) assertNoOtherOfPrefixExpect(pfx string, expect string) error { + fileName := path.Base(pfx) + dirName := path.Dir(pfx) + return cx.Storage.WalkDir(cx, &WalkOption{ + SubDir: dirName, + ObjPrefix: fileName, + }, func(path string, size int64) error { + if path != expect { + return fmt.Errorf("there is conflict file %s", path) + } + return nil + }) +} +``` + +Then, when adding a write lock, we need to verify that there isn't anyone holds any sort of locks... + +Be aware that we are going to put a lock file at `"$path.WRIT"` instead of `"$path"`. + +```go +func TryLockRemoteWrite(ctx context.Context, storage ExternalStorage, path string) error { + target := fmt.Sprintf("%s.WRIT", path) + writer := ExclusiveWrite{ + Target: target, + Content: func(txnID uuid.UUID) []byte { + return []byte("I'm going to write something down :<") + }, + Verify: func(ctx VerifyWriteContext) error { + return ctx.assertNoOtherOfPrefixExpect(path, ctx.IntentFileName()) + }, + } + + _, err = writer.CommitTo(ctx, storage) + return err +} +``` + +When putting a read lock, we need to check that if there is a write lock... + +```go +func TryLockRemoteRead(ctx context.Context, storage ExternalStorage, path string) error + readID := rand.Int63() + target := fmt.Sprintf("%s.READ.%016x", path, readID) + writeLock := fmt.Sprintf("%s.WRIT", target) + writer := ExclusiveWrite{ + Target: target, + Content: func(txnID uuid.UUID) []byte { + return []byte("Guess what we will find today =D") + }, + Verify: func(ctx VerifyWriteContext) error { + // Make sure that the write lock doesn't exist. + return ctx.assertNoOtherOfPrefixExpect(writeLock, "") + }, + } + + _, err = writer.CommitTo(ctx, storage) + return err +} +``` + +Notice that we are putting a read lock with a random suffix. So read locks won't conflict with each other. diff --git a/docs/design/imgs/write-and-verfiy-tla-states.pdf b/docs/design/imgs/write-and-verfiy-tla-states.pdf new file mode 100644 index 0000000000000..0d81db91fa24e Binary files /dev/null and b/docs/design/imgs/write-and-verfiy-tla-states.pdf differ diff --git a/docs/design/imgs/write-and-verify-tla.pdf b/docs/design/imgs/write-and-verify-tla.pdf new file mode 100644 index 0000000000000..f513736b2efe0 Binary files /dev/null and b/docs/design/imgs/write-and-verify-tla.pdf differ diff --git a/docs/tidb_http_api.md b/docs/tidb_http_api.md index 10402354706a4..eddf4b4c954aa 100644 --- a/docs/tidb_http_api.md +++ b/docs/tidb_http_api.md @@ -232,11 +232,11 @@ If the handle is clustered, specify the primary key column values in the query string ```shell - $curl http://{TiDBIP}:10080/mvcc/key/{db}/{table}?${c1}={v1}&${c2}=${v2} + $curl "http://{TiDBIP}:10080/mvcc/key/{db}/{table}?${c1}={v1}&${c2}=${v2}" ``` ```shell - $curl http://127.0.0.1:10080/mvcc/key/test/t\?a\=aaa\&b\=2020-01-01 + $curl "http://127.0.0.1:10080/mvcc/key/test/t?a=aaa&b=2020-01-01" { "key": "7480000000000000365F72016161610000000000FA0419A5420000000000", "region_id": 52, @@ -387,14 +387,14 @@ 14. Get MVCC Information of a specified index key, argument example: column_name_1=column_value_1&column_name_2=column_value2... ```shell - curl http://{TiDBIP}:10080/mvcc/index/{db}/{table}/{index}/{handle}?${c1}={v1}&${c2}=${v2} + curl "http://{TiDBIP}:10080/mvcc/index/{db}/{table}/{index}/{handle}?${c1}={v1}&${c2}=${v2}" ``` *Hint: For the index column which column type is timezone dependent, e.g. `timestamp`, convert its value to UTC timezone.* ```shell - $curl http://127.0.0.1:10080/mvcc/index/test/t1/idx/1\?a\=A + $curl "http://127.0.0.1:10080/mvcc/index/test/t1/idx/1?a=A" { "info": { "writes": [ @@ -411,17 +411,17 @@ timezone.* *Hint: On a partitioned table, use the `table(partition)` pattern as the table name, `t1(p1)` for example:* ```shell - $curl http://127.0.0.1:10080/mvcc/index/test/t1(p1)/idx/1\?a\=A + $curl "http://127.0.0.1:10080/mvcc/index/test/t1(p1)/idx/1?a=A" ``` If the handle is clustered, also specify the primary key column values in the query string ```shell - $curl http://{TiDBIP}:10080/mvcc/index/{db}/{table}/{index}?${c1}={v1}&${c2}=${v2} + $curl "http://{TiDBIP}:10080/mvcc/index/{db}/{table}/{index}?${c1}={v1}&${c2}=${v2}" ``` ```shell - $curl http://127.0.0.1:10080/mvcc/index/test/t/idx\?a\=1.1\&b\=111\&c\=1 + $curl "http://127.0.0.1:10080/mvcc/index/test/t/idx?a=1.1&b=111&c=1" { "key": "74800000000000003B5F69800000000000000203800000000000000105BFF199999999999A013131310000000000FA", "region_id": 59, @@ -582,7 +582,7 @@ timezone.* 27. Get count {number} TiDB DDL job history information, start with job {id} ```shell - curl http://{TIDBIP}:10080/ddl/history?start_job_id={id}&limit={number} + curl "http://{TIDBIP}:10080/ddl/history?start_job_id={id}&limit={number}" ``` 28. Download TiDB debug info diff --git a/dumpling/export/config.go b/dumpling/export/config.go index 52337ec732601..486f0b42248c4 100644 --- a/dumpling/export/config.go +++ b/dumpling/export/config.go @@ -738,9 +738,10 @@ const ( ) var ( - decodeRegionVersion = semver.New("3.0.0") - gcSafePointVersion = semver.New("4.0.0") - tableSampleVersion = semver.New("5.0.0-nightly") + decodeRegionVersion = semver.New("3.0.0") + gcSafePointVersion = semver.New("4.0.0") + tableSampleVersion = semver.New("5.0.0-nightly") + minNewTerminologyMySQL = semver.New("8.4.0") // first MySQL version to no longer support MASTER/SLAVE/etc ) func adjustConfig(conf *Config, fns ...func(*Config) error) error { diff --git a/dumpling/export/dump.go b/dumpling/export/dump.go index eccae7cae4a7b..8174d32746742 100644 --- a/dumpling/export/dump.go +++ b/dumpling/export/dump.go @@ -200,9 +200,9 @@ func (d *Dumper) Dump() (dumpErr error) { // for consistency flush, record snapshot after whole tables are locked. The recorded meta info is exactly the locked snapshot. // for consistency snapshot, we should use the snapshot that we get/set at first in metadata. TiDB will assure the snapshot of TSO. // for consistency none, the binlog pos in metadata might be earlier than dumped data. We need to enable safe-mode to assure data safety. - err = m.recordGlobalMetaData(metaConn, conf.ServerInfo.ServerType, false) + err = m.recordGlobalMetaData(metaConn, conf.ServerInfo, false) if err != nil { - tctx.L().Info("get global metadata failed", log.ShortError(err)) + tctx.L().Warn("get global metadata failed", log.ShortError(err)) } if d.conf.CollationCompatible == StrictCollationCompatible { @@ -239,7 +239,7 @@ func (d *Dumper) Dump() (dumpErr error) { conn = newConn // renew the master status after connection. dm can't close safe-mode until dm reaches current pos if updateMeta && conf.PosAfterConnect { - err1 = m.recordGlobalMetaData(conn, conf.ServerInfo.ServerType, true) + err1 = m.recordGlobalMetaData(conn, conf.ServerInfo, true) if err1 != nil { return conn, errors.Trace(err1) } @@ -284,7 +284,7 @@ func (d *Dumper) Dump() (dumpErr error) { if conf.PosAfterConnect { // record again, to provide a location to exit safe mode for DM - err = m.recordGlobalMetaData(metaConn, conf.ServerInfo.ServerType, true) + err = m.recordGlobalMetaData(metaConn, conf.ServerInfo, true) if err != nil { tctx.L().Info("get global metadata (after connection pool established) failed", log.ShortError(err)) } @@ -1150,15 +1150,21 @@ func prepareTableListToDump(tctx *tcontext.Context, conf *Config, db *sql.Conn) return nil } - ifSeqExists, err := CheckIfSeqExists(db) - if err != nil { - return err - } var listType listTableType - if ifSeqExists { - listType = listTableByShowFullTables + + // TiDB has optimized the performance of reading INFORMATION_SCHEMA.TABLES + if conf.ServerInfo.ServerType == version.ServerTypeTiDB { + listType = listTableByInfoSchema } else { - listType = getListTableTypeByConf(conf) + ifSeqExists, err := checkIfSeqExists(db) + if err != nil { + return err + } + if ifSeqExists { + listType = listTableByShowFullTables + } else { + listType = getListTableTypeByConf(conf) + } } if conf.SpecifiedTables { diff --git a/dumpling/export/metadata.go b/dumpling/export/metadata.go index 68b2ac0661036..15e26e41be655 100644 --- a/dumpling/export/metadata.go +++ b/dumpling/export/metadata.go @@ -57,17 +57,24 @@ func (m *globalMetadata) recordFinishTime(t time.Time) { m.buffer.WriteString("Finished dump at: " + t.Format(metadataTimeLayout) + "\n") } -func (m *globalMetadata) recordGlobalMetaData(db *sql.Conn, serverType version.ServerType, afterConn bool) error { // revive:disable-line:flag-parameter +func (m *globalMetadata) recordGlobalMetaData(db *sql.Conn, serverInfo version.ServerInfo, afterConn bool) error { // revive:disable-line:flag-parameter if afterConn { m.afterConnBuffer.Reset() - return recordGlobalMetaData(m.tctx, db, &m.afterConnBuffer, serverType, afterConn, m.snapshot) + return recordGlobalMetaData(m.tctx, db, &m.afterConnBuffer, serverInfo, afterConn, m.snapshot) } - return recordGlobalMetaData(m.tctx, db, &m.buffer, serverType, afterConn, m.snapshot) + return recordGlobalMetaData(m.tctx, db, &m.buffer, serverInfo, afterConn, m.snapshot) } -func recordGlobalMetaData(tctx *tcontext.Context, db *sql.Conn, buffer *bytes.Buffer, serverType version.ServerType, afterConn bool, snapshot string) error { // revive:disable-line:flag-parameter +func recordGlobalMetaData(tctx *tcontext.Context, db *sql.Conn, buffer *bytes.Buffer, serverInfo version.ServerInfo, afterConn bool, snapshot string) error { // revive:disable-line:flag-parameter + serverType := serverInfo.ServerType writeMasterStatusHeader := func() { - buffer.WriteString("SHOW MASTER STATUS:") + if serverInfo.ServerVersion == nil { + buffer.WriteString("SHOW MASTER STATUS:") + } else if serverInfo.ServerVersion.LessThan(*minNewTerminologyMySQL) { + buffer.WriteString("SHOW MASTER STATUS:") + } else { + buffer.WriteString("SHOW BINARY LOG STATUS:") + } if afterConn { buffer.WriteString(" /* AFTER CONNECTION POOL ESTABLISHED */") } @@ -95,7 +102,7 @@ func recordGlobalMetaData(tctx *tcontext.Context, db *sql.Conn, buffer *bytes.Bu // +-------------+--------------------+--------------+------------------+-------------------+ // 1 row in set (0.00 sec) case version.ServerTypeMySQL, version.ServerTypeTiDB: - str, err := ShowMasterStatus(db) + str, err := ShowMasterStatus(db, serverInfo) if err != nil { return err } @@ -127,7 +134,7 @@ func recordGlobalMetaData(tctx *tcontext.Context, db *sql.Conn, buffer *bytes.Bu // +--------------------------+ // 1 row in set (0.00 sec) case version.ServerTypeMariaDB: - str, err := ShowMasterStatus(db) + str, err := ShowMasterStatus(db, serverInfo) if err != nil { return err } @@ -136,7 +143,7 @@ func recordGlobalMetaData(tctx *tcontext.Context, db *sql.Conn, buffer *bytes.Bu var gtidSet string err = db.QueryRowContext(context.Background(), "SELECT @@global.gtid_binlog_pos").Scan(>idSet) if err != nil { - tctx.L().Warn("fail to get gtid for mariaDB", zap.Error(err)) + tctx.L().Warn("fail to get gtid for MariaDB", zap.Error(err)) } if logFile != "" { @@ -167,9 +174,14 @@ func recordGlobalMetaData(tctx *tcontext.Context, db *sql.Conn, buffer *bytes.Bu isms = false } if isms { - query = "SHOW ALL SLAVES STATUS" + query = "SHOW ALL SLAVES STATUS" // MariaDB + } else if serverInfo.ServerVersion == nil { + query = "SHOW SLAVE STATUS" // Unknown version + } else if serverInfo.ServerType == version.ServerTypeMySQL && + !serverInfo.ServerVersion.LessThan(*minNewTerminologyMySQL) { + query = "SHOW REPLICA STATUS" // MySQL 8.4.0 and newer } else { - query = "SHOW SLAVE STATUS" + query = "SHOW SLAVE STATUS" // MySQL } return simpleQuery(db, query, func(rows *sql.Rows) error { cols, err := rows.Columns() diff --git a/dumpling/export/metadata_test.go b/dumpling/export/metadata_test.go index 90099bbf00acd..e499fa233300c 100644 --- a/dumpling/export/metadata_test.go +++ b/dumpling/export/metadata_test.go @@ -40,7 +40,7 @@ func TestMysqlMetaData(t *testing.T) { sqlmock.NewRows([]string{"exec_master_log_pos", "relay_master_log_file", "master_host", "Executed_Gtid_Set", "Seconds_Behind_Master"})) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMySQL, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMySQL}, false)) expected := "SHOW MASTER STATUS:\n" + "\tLog: ON.000001\n" + @@ -72,8 +72,8 @@ func TestMetaDataAfterConn(t *testing.T) { mock.ExpectQuery("SHOW MASTER STATUS").WillReturnRows(rows2) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMySQL, false)) - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMySQL, true)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMySQL}, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMySQL}, true)) m.buffer.Write(m.afterConnBuffer.Bytes()) @@ -108,7 +108,7 @@ func TestMysqlWithFollowersMetaData(t *testing.T) { mock.ExpectQuery("SHOW SLAVE STATUS").WillReturnRows(followerRows) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMySQL, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMySQL}, false)) expected := "SHOW MASTER STATUS:\n" + "\tLog: ON.000001\n" + @@ -140,7 +140,7 @@ func TestMysqlWithNullFollowersMetaData(t *testing.T) { mock.ExpectQuery("SHOW SLAVE STATUS").WillReturnRows(sqlmock.NewRows([]string{"SQL_Remaining_Delay"}).AddRow(nil)) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMySQL, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMySQL}, false)) expected := "SHOW MASTER STATUS:\n" + "\tLog: ON.000001\n" + @@ -171,7 +171,7 @@ func TestMariaDBMetaData(t *testing.T) { mock.ExpectQuery("SELECT @@global.gtid_binlog_pos").WillReturnRows(rows) mock.ExpectQuery("SHOW SLAVE STATUS").WillReturnRows(rows) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMariaDB, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMariaDB}, false)) require.NoError(t, mock.ExpectationsWereMet()) } @@ -197,7 +197,7 @@ func TestMariaDBWithFollowersMetaData(t *testing.T) { mock.ExpectQuery("SHOW ALL SLAVES STATUS").WillReturnRows(followerRows) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMySQL, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMySQL}, false)) expected := "SHOW MASTER STATUS:\n" + "\tLog: ON.000001\n" + @@ -239,7 +239,7 @@ func TestEarlierMysqlMetaData(t *testing.T) { sqlmock.NewRows([]string{"exec_master_log_pos", "relay_master_log_file", "master_host", "Executed_Gtid_Set", "Seconds_Behind_Master"})) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeMySQL, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeMySQL}, false)) expected := "SHOW MASTER STATUS:\n" + "\tLog: mysql-bin.000001\n" + @@ -266,7 +266,7 @@ func TestTiDBSnapshotMetaData(t *testing.T) { mock.ExpectQuery("SHOW MASTER STATUS").WillReturnRows(rows) m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeTiDB, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeTiDB}, false)) expected := "SHOW MASTER STATUS:\n" + "\tLog: tidb-binlog\n" + @@ -279,7 +279,7 @@ func TestTiDBSnapshotMetaData(t *testing.T) { AddRow(logFile, pos, "", "") mock.ExpectQuery("SHOW MASTER STATUS").WillReturnRows(rows) m = newGlobalMetadata(tcontext.Background(), createStorage(t), snapshot) - require.NoError(t, m.recordGlobalMetaData(conn, version.ServerTypeTiDB, false)) + require.NoError(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeTiDB}, false)) expected = "SHOW MASTER STATUS:\n" + "\tLog: tidb-binlog\n" + @@ -303,7 +303,7 @@ func TestNoPrivilege(t *testing.T) { m := newGlobalMetadata(tcontext.Background(), createStorage(t), "") // some consistencyType will ignore this error, this test make sure no extra message is written - require.Error(t, m.recordGlobalMetaData(conn, version.ServerTypeTiDB, false)) + require.Error(t, m.recordGlobalMetaData(conn, version.ServerInfo{ServerType: version.ServerTypeTiDB}, false)) require.Equal(t, "", m.buffer.String()) } diff --git a/dumpling/export/prepare_test.go b/dumpling/export/prepare_test.go index ebfb2ee7efe48..bc745396d067a 100644 --- a/dumpling/export/prepare_test.go +++ b/dumpling/export/prepare_test.go @@ -79,19 +79,19 @@ func TestListAllTables(t *testing.T) { AppendViews("db3", "t6", "t7", "t8") dbNames := make([]databaseName, 0, len(data)) - rows := sqlmock.NewRows([]string{"TABLE_SCHEMA", "TABLE_NAME", "TABLE_TYPE", "AVG_ROW_LENGTH"}) for dbName, tableInfos := range data { dbNames = append(dbNames, dbName) + query := "SELECT TABLE_NAME,TABLE_TYPE,AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=\\? AND \\(TABLE_TYPE='BASE TABLE'\\)" + rows := sqlmock.NewRows([]string{"TABLE_NAME", "TABLE_TYPE", "AVG_ROW_LENGTH"}) for _, tbInfo := range tableInfos { if tbInfo.Type == TableTypeView { continue } - rows.AddRow(dbName, tbInfo.Name, tbInfo.Type.String(), tbInfo.AvgRowLength) + rows.AddRow(tbInfo.Name, tbInfo.Type.String(), tbInfo.AvgRowLength) } + mock.ExpectQuery(query).WithArgs(dbName).WillReturnRows(rows) } - query := "SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'" - mock.ExpectQuery(query).WillReturnRows(rows) tables, err := ListAllDatabasesTables(tctx, conn, dbNames, listTableByInfoSchema, TableTypeBase) require.NoError(t, err) @@ -108,9 +108,9 @@ func TestListAllTables(t *testing.T) { data = NewDatabaseTables(). AppendTables("db", []string{"t1"}, []uint64{1}). AppendViews("db", "t2") - query = "SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' OR TABLE_TYPE='VIEW'" - mock.ExpectQuery(query).WillReturnRows(sqlmock.NewRows([]string{"TABLE_SCHEMA", "TABLE_NAME", "TABLE_TYPE", "AVG_ROW_LENGTH"}). - AddRow("db", "t1", TableTypeBaseStr, 1).AddRow("db", "t2", TableTypeViewStr, nil)) + query := "SELECT TABLE_NAME,TABLE_TYPE,AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=\\? AND \\(TABLE_TYPE='BASE TABLE' OR TABLE_TYPE='VIEW'\\)" + mock.ExpectQuery(query).WithArgs("db").WillReturnRows(sqlmock.NewRows([]string{"TABLE_NAME", "TABLE_TYPE", "AVG_ROW_LENGTH"}). + AddRow("t1", TableTypeBaseStr, 1).AddRow("t2", TableTypeViewStr, nil)) tables, err = ListAllDatabasesTables(tctx, conn, []string{"db"}, listTableByInfoSchema, TableTypeBase, TableTypeView) require.NoError(t, err) require.Len(t, tables, 1) diff --git a/dumpling/export/retry.go b/dumpling/export/retry.go index d76cdf2281614..4220ad590634c 100644 --- a/dumpling/export/retry.go +++ b/dumpling/export/retry.go @@ -24,7 +24,7 @@ const ( ) type backOfferResettable interface { - utils.Backoffer + utils.BackoffStrategy Reset() } @@ -61,7 +61,7 @@ func (b *dumpChunkBackoffer) NextBackoff(err error) time.Duration { return b.delayTime } -func (b *dumpChunkBackoffer) Attempt() int { +func (b *dumpChunkBackoffer) RemainingAttempts() int { return b.attempt } @@ -79,7 +79,7 @@ func (b *noopBackoffer) NextBackoff(_ error) time.Duration { return time.Duration(0) } -func (b *noopBackoffer) Attempt() int { +func (b *noopBackoffer) RemainingAttempts() int { return b.attempt } @@ -128,7 +128,7 @@ func (b *lockTablesBackoffer) NextBackoff(err error) time.Duration { return 0 } -func (b *lockTablesBackoffer) Attempt() int { +func (b *lockTablesBackoffer) RemainingAttempts() int { return b.attempt } diff --git a/dumpling/export/sql.go b/dumpling/export/sql.go index db924d5309528..67ee1dcc30047 100644 --- a/dumpling/export/sql.go +++ b/dumpling/export/sql.go @@ -368,10 +368,10 @@ func ListAllDatabasesTables(tctx *tcontext.Context, db *sql.Conn, databaseNames listType listTableType, tableTypes ...TableType) (DatabaseTables, error) { // revive:disable-line:flag-parameter dbTables := DatabaseTables{} var ( - schema, table, tableTypeStr string - tableType TableType - avgRowLength uint64 - err error + table, tableTypeStr string + tableType TableType + avgRowLength uint64 + err error ) tableTypeConditions := make([]string, len(tableTypes)) @@ -380,38 +380,35 @@ func ListAllDatabasesTables(tctx *tcontext.Context, db *sql.Conn, databaseNames } switch listType { case listTableByInfoSchema: - query := fmt.Sprintf("SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE %s", strings.Join(tableTypeConditions, " OR ")) for _, schema := range databaseNames { + query := fmt.Sprintf("SELECT TABLE_NAME,TABLE_TYPE,AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=? AND (%s)", strings.Join(tableTypeConditions, " OR ")) dbTables[schema] = make([]*TableInfo, 0) - } - if err = simpleQueryWithArgs(tctx, db, func(rows *sql.Rows) error { - var ( - sqlAvgRowLength sql.NullInt64 - err2 error - ) - if err2 = rows.Scan(&schema, &table, &tableTypeStr, &sqlAvgRowLength); err != nil { - return errors.Trace(err2) - } - tableType, err2 = ParseTableType(tableTypeStr) - if err2 != nil { - return errors.Trace(err2) - } + if err = simpleQueryWithArgs(tctx, db, func(rows *sql.Rows) error { + var ( + sqlAvgRowLength sql.NullInt64 + err2 error + ) + if err2 = rows.Scan(&table, &tableTypeStr, &sqlAvgRowLength); err != nil { + return errors.Trace(err2) + } + tableType, err2 = ParseTableType(tableTypeStr) + if err2 != nil { + return errors.Trace(err2) + } - if sqlAvgRowLength.Valid { - avgRowLength = uint64(sqlAvgRowLength.Int64) - } else { - avgRowLength = 0 - } - // only append tables to schemas in databaseNames - if _, ok := dbTables[schema]; ok { + if sqlAvgRowLength.Valid { + avgRowLength = uint64(sqlAvgRowLength.Int64) + } else { + avgRowLength = 0 + } dbTables[schema] = append(dbTables[schema], &TableInfo{table, avgRowLength, tableType}) + return nil + }, query, schema); err != nil { + return nil, errors.Annotatef(err, "sql: %s", query) } - return nil - }, query); err != nil { - return nil, errors.Annotatef(err, "sql: %s", query) } case listTableByShowFullTables: - for _, schema = range databaseNames { + for _, schema := range databaseNames { dbTables[schema] = make([]*TableInfo, 0) query := fmt.Sprintf("SHOW FULL TABLES FROM `%s` WHERE %s", escapeString(schema), strings.Join(tableTypeConditions, " OR ")) @@ -437,7 +434,7 @@ func ListAllDatabasesTables(tctx *tcontext.Context, db *sql.Conn, databaseNames for _, tableType = range tableTypes { selectedTableType[tableType] = struct{}{} } - for _, schema = range databaseNames { + for _, schema := range databaseNames { dbTables[schema] = make([]*TableInfo, 0) query := fmt.Sprintf(queryTemplate, escapeString(schema)) rows, err := db.QueryContext(tctx, query) @@ -748,7 +745,7 @@ func UnlockTables(ctx context.Context, db *sql.Conn) error { } // ShowMasterStatus get SHOW MASTER STATUS result from database -func ShowMasterStatus(db *sql.Conn) ([]string, error) { +func ShowMasterStatus(db *sql.Conn, serverInfo version.ServerInfo) ([]string, error) { var oneRow []string handleOneRow := func(rows *sql.Rows) error { cols, err := rows.Columns() @@ -763,7 +760,17 @@ func ShowMasterStatus(db *sql.Conn) ([]string, error) { } return rows.Scan(addr...) } - const showMasterStatusQuery = "SHOW MASTER STATUS" + + // MySQL 8.4.0 and newer: SHOW BINARY LOG STATUS + // TiDB, MariaDB, Old MySQL: SHOW MASTER STATUS + showMasterStatusQuery := "SHOW MASTER STATUS" + if serverInfo.ServerVersion != nil { + if serverInfo.ServerType == version.ServerTypeMySQL && + !serverInfo.ServerVersion.LessThan(*minNewTerminologyMySQL) { + showMasterStatusQuery = "SHOW BINARY LOG STATUS" + } + } + err := simpleQuery(db, showMasterStatusQuery, handleOneRow) if err != nil { return nil, errors.Annotatef(err, "sql: %s", showMasterStatusQuery) @@ -897,7 +904,7 @@ func CheckTiDBWithTiKV(db *sql.DB) (bool, error) { }() tidbConfig, err := getTiDBConfig(conn) if err == nil { - return tidbConfig.Store == "tikv", nil + return tidbConfig.Store == dbconfig.StoreTypeTiKV, nil } } var count int @@ -912,8 +919,8 @@ func CheckTiDBWithTiKV(db *sql.DB) (bool, error) { return count > 0, nil } -// CheckIfSeqExists use sql to check whether sequence exists -func CheckIfSeqExists(db *sql.Conn) (bool, error) { +// checkIfSeqExists use sql to check whether sequence exists +func checkIfSeqExists(db *sql.Conn) (bool, error) { var count int const query = "SELECT COUNT(1) as c FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='SEQUENCE'" row := db.QueryRowContext(context.Background(), query) @@ -935,7 +942,10 @@ func CheckTiDBEnableTableLock(db *sql.Conn) (bool, error) { } func getSnapshot(db *sql.Conn) (string, error) { - str, err := ShowMasterStatus(db) + serverInfo := version.ServerInfo{ + ServerType: version.ServerTypeTiDB, + } + str, err := ShowMasterStatus(db, serverInfo) if err != nil { return "", err } diff --git a/dumpling/export/sql_test.go b/dumpling/export/sql_test.go index 6b4e4e1fe97c6..f612688a92eb1 100644 --- a/dumpling/export/sql_test.go +++ b/dumpling/export/sql_test.go @@ -1618,8 +1618,7 @@ func TestCheckTiDBWithTiKV(t *testing.T) { }() tidbConf := dbconfig.NewConfig() - stores := []string{"unistore", "mocktikv", "tikv"} - for _, store := range stores { + for _, store := range dbconfig.StoreTypeList() { tidbConf.Store = store tidbConfBytes, err := json.Marshal(tidbConf) require.NoError(t, err) @@ -1627,7 +1626,7 @@ func TestCheckTiDBWithTiKV(t *testing.T) { sqlmock.NewRows([]string{"@@tidb_config"}).AddRow(string(tidbConfBytes))) hasTiKV, err := CheckTiDBWithTiKV(db) require.NoError(t, err) - if store == "tikv" { + if store == dbconfig.StoreTypeTiKV { require.True(t, hasTiKV) } else { require.False(t, hasTiKV) @@ -1816,7 +1815,7 @@ func TestCheckIfSeqExists(t *testing.T) { WillReturnRows(sqlmock.NewRows([]string{"c"}). AddRow("1")) - exists, err := CheckIfSeqExists(conn) + exists, err := checkIfSeqExists(conn) require.NoError(t, err) require.Equal(t, true, exists) @@ -1824,7 +1823,7 @@ func TestCheckIfSeqExists(t *testing.T) { WillReturnRows(sqlmock.NewRows([]string{"c"}). AddRow("0")) - exists, err = CheckIfSeqExists(conn) + exists, err = checkIfSeqExists(conn) require.NoError(t, err) require.Equal(t, false, exists) } diff --git a/dumpling/tests/consistency/run.sh b/dumpling/tests/consistency/run.sh index afd916b0d250d..8d8ab0c6b7788 100644 --- a/dumpling/tests/consistency/run.sh +++ b/dumpling/tests/consistency/run.sh @@ -8,6 +8,12 @@ cur=$(cd `dirname $0`; pwd) DB_NAME="mysql_consistency" TABLE_NAME="t" +# get version info +# MySQL: VERSION(): 9.1.0 +# MariaDB: VERSION(): 11.4.2-MariaDB-ubu2404 +# TiDB: VERSION(): 8.0.11-TiDB-v8.3.0 +versioninfo=`run_sql "SELECT VERSION();"` + # drop database on mysql run_sql "drop database if exists \`$DB_NAME\`;" @@ -26,7 +32,17 @@ run_dumpling & sleep 2 # record metadata info -metadata=`run_sql "show master status;"` +if [[ $versioninfo =~ (Ti|Maria)DB ]]; then + metadata=`run_sql "show master status;"` +else + if [[ $versioninfo =~ "VERSION(): "(8.4|9) ]]; then + # MySQL 8.4.0 and newer no longer support SHOW MASTER STATUS + # and only support SHOW BINARY LOG STATUS + metadata=`run_sql "show binary log status;"` + else + metadata=`run_sql "show master status;"` + fi +fi metaLog=`echo $metadata | awk -F 'File:' '{print $2}' | awk '{print $1}'` metaPos=`echo $metadata | awk -F 'Position:' '{print $2}' | awk '{print $1}'` metaGTID=`echo $metadata | awk -F 'Executed_Gtid_Set:' '{print $2}' | awk '{print $1}'` diff --git a/dumpling/tests/partition_table/data/pt_case_0.sql b/dumpling/tests/partition_table/data/pt_case_0.sql new file mode 100644 index 0000000000000..caa6890a93047 --- /dev/null +++ b/dumpling/tests/partition_table/data/pt_case_0.sql @@ -0,0 +1,13 @@ +create table `pt_case_0` (a int, b int, unique index idx(a) global) partition by hash(b) partitions 5; +insert into `pt_case_0` values +(0, 10), +(1, 9), +(2, 8), +(3, 7), +(4, 6), +(5, 5), +(6, 4), +(7, 3), +(8, 2), +(9, 1), +(10, 0); diff --git a/dumpling/tests/partition_table/data/pt_case_1.sql b/dumpling/tests/partition_table/data/pt_case_1.sql new file mode 100644 index 0000000000000..dacd1b37d117b --- /dev/null +++ b/dumpling/tests/partition_table/data/pt_case_1.sql @@ -0,0 +1,16 @@ +create table `pt_case_1` (a int, b int, unique index idx(a) global) partition by list(b) +(partition p0 values in (0, 1, 2, 3), + partition p1 values in (4, 5, 6), + partition p2 values in (7, 8, 9, 10)); +insert into `pt_case_1` values +(0, 10), +(1, 9), +(2, 8), +(3, 7), +(4, 6), +(5, 5), +(6, 4), +(7, 3), +(8, 2), +(9, 1), +(10, 0); diff --git a/dumpling/tests/partition_table/data/pt_case_2.sql b/dumpling/tests/partition_table/data/pt_case_2.sql new file mode 100644 index 0000000000000..f87558898464e --- /dev/null +++ b/dumpling/tests/partition_table/data/pt_case_2.sql @@ -0,0 +1,16 @@ +create table `pt_case_2` (a int, b int, unique index idx(a) global) partition by range(b) +(partition p0 values less than (4), + partition p1 values less than (7), + partition p2 values less than (11)); +insert into `pt_case_2` values +(0, 10), +(1, 9), +(2, 8), +(3, 7), +(4, 6), +(5, 5), +(6, 4), +(7, 3), +(8, 2), +(9, 1), +(10, 0); diff --git a/dumpling/tests/partition_table/result/pt_case_0-schema.sql b/dumpling/tests/partition_table/result/pt_case_0-schema.sql new file mode 100644 index 0000000000000..ac2691edc5492 --- /dev/null +++ b/dumpling/tests/partition_table/result/pt_case_0-schema.sql @@ -0,0 +1,8 @@ +/*!40014 SET FOREIGN_KEY_CHECKS=0*/; +/*!40101 SET NAMES binary*/; +CREATE TABLE `pt_case_0` ( + `a` int DEFAULT NULL, + `b` int DEFAULT NULL, + UNIQUE KEY `idx` (`a`) /*T![global_index] GLOBAL */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +PARTITION BY HASH (`b`) PARTITIONS 5; diff --git a/dumpling/tests/partition_table/result/pt_case_0.sql b/dumpling/tests/partition_table/result/pt_case_0.sql new file mode 100644 index 0000000000000..124393a91551e --- /dev/null +++ b/dumpling/tests/partition_table/result/pt_case_0.sql @@ -0,0 +1,14 @@ +/*!40014 SET FOREIGN_KEY_CHECKS=0*/; +/*!40101 SET NAMES binary*/; +INSERT INTO `pt_case_0` VALUES +(0,10), +(1,9), +(2,8), +(3,7), +(4,6), +(5,5), +(6,4), +(7,3), +(8,2), +(9,1), +(10,0); diff --git a/dumpling/tests/partition_table/result/pt_case_1-schema.sql b/dumpling/tests/partition_table/result/pt_case_1-schema.sql new file mode 100644 index 0000000000000..b3e5510c5eabb --- /dev/null +++ b/dumpling/tests/partition_table/result/pt_case_1-schema.sql @@ -0,0 +1,11 @@ +/*!40014 SET FOREIGN_KEY_CHECKS=0*/; +/*!40101 SET NAMES binary*/; +CREATE TABLE `pt_case_1` ( + `a` int DEFAULT NULL, + `b` int DEFAULT NULL, + UNIQUE KEY `idx` (`a`) /*T![global_index] GLOBAL */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +PARTITION BY LIST (`b`) +(PARTITION `p0` VALUES IN (0,1,2,3), + PARTITION `p1` VALUES IN (4,5,6), + PARTITION `p2` VALUES IN (7,8,9,10)); diff --git a/dumpling/tests/partition_table/result/pt_case_1.sql b/dumpling/tests/partition_table/result/pt_case_1.sql new file mode 100644 index 0000000000000..dbdb0033d0929 --- /dev/null +++ b/dumpling/tests/partition_table/result/pt_case_1.sql @@ -0,0 +1,14 @@ +/*!40014 SET FOREIGN_KEY_CHECKS=0*/; +/*!40101 SET NAMES binary*/; +INSERT INTO `pt_case_1` VALUES +(0,10), +(1,9), +(2,8), +(3,7), +(4,6), +(5,5), +(6,4), +(7,3), +(8,2), +(9,1), +(10,0); diff --git a/dumpling/tests/partition_table/result/pt_case_2-schema.sql b/dumpling/tests/partition_table/result/pt_case_2-schema.sql new file mode 100644 index 0000000000000..a4c458363059b --- /dev/null +++ b/dumpling/tests/partition_table/result/pt_case_2-schema.sql @@ -0,0 +1,11 @@ +/*!40014 SET FOREIGN_KEY_CHECKS=0*/; +/*!40101 SET NAMES binary*/; +CREATE TABLE `pt_case_2` ( + `a` int DEFAULT NULL, + `b` int DEFAULT NULL, + UNIQUE KEY `idx` (`a`) /*T![global_index] GLOBAL */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +PARTITION BY RANGE (`b`) +(PARTITION `p0` VALUES LESS THAN (4), + PARTITION `p1` VALUES LESS THAN (7), + PARTITION `p2` VALUES LESS THAN (11)); diff --git a/dumpling/tests/partition_table/result/pt_case_2.sql b/dumpling/tests/partition_table/result/pt_case_2.sql new file mode 100644 index 0000000000000..c780f760ec2fd --- /dev/null +++ b/dumpling/tests/partition_table/result/pt_case_2.sql @@ -0,0 +1,14 @@ +/*!40014 SET FOREIGN_KEY_CHECKS=0*/; +/*!40101 SET NAMES binary*/; +INSERT INTO `pt_case_2` VALUES +(0,10), +(1,9), +(2,8), +(3,7), +(4,6), +(5,5), +(6,4), +(7,3), +(8,2), +(9,1), +(10,0); diff --git a/dumpling/tests/partition_table/run.sh b/dumpling/tests/partition_table/run.sh new file mode 100644 index 0000000000000..7c01e10443098 --- /dev/null +++ b/dumpling/tests/partition_table/run.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright 2024 PingCAP, Inc. Licensed under Apache-2.0. + +set -eu + +export DUMPLING_TEST_PORT=4000 + +run_sql "drop database if exists partition_table" +run_sql "create database partition_table DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin" +export DUMPLING_TEST_DATABASE=partition_table + +for data in "$DUMPLING_BASE_NAME"/data/*; do + run_sql_file "$data" +done + +run_dumpling + +for file_path in "$DUMPLING_BASE_NAME"/data/*; do + base_name=$(basename "$file_path") + table_name="${base_name%.sql}" + file_should_exist "$DUMPLING_BASE_NAME/result/$table_name.sql" + file_should_exist "$DUMPLING_OUTPUT_DIR/partition_table.$table_name.000000000.sql" + file_should_exist "$DUMPLING_OUTPUT_DIR/partition_table.$table_name-schema.sql" + diff "$DUMPLING_BASE_NAME/result/$table_name.sql" "$DUMPLING_OUTPUT_DIR/partition_table.$table_name.000000000.sql" + diff "$DUMPLING_BASE_NAME/result/$table_name-schema.sql" "$DUMPLING_OUTPUT_DIR/partition_table.$table_name-schema.sql" +done diff --git a/errors.toml b/errors.toml index 1b79985c72a08..f8567cca42a7b 100644 --- a/errors.toml +++ b/errors.toml @@ -56,6 +56,11 @@ error = ''' invalid restore range ''' +["BR:Common:ErrMigrationVersionNotSupported"] +error = ''' +the migration version isn't supported +''' + ["BR:Common:ErrUndefinedDbOrTable"] error = ''' undefined restore databases or tables @@ -521,6 +526,11 @@ error = ''' check local storage resource error ''' +["Lightning:PreCheck:ErrCheckPDTiDBSameCluster"] +error = ''' +check PD and TiDB in the same cluster error +''' + ["Lightning:PreCheck:ErrCheckTableEmpty"] error = ''' check table empty error @@ -901,6 +911,11 @@ error = ''' View's SELECT contains a '%s' clause ''' +["ddl:1351"] +error = ''' +View's SELECT contains a variable or parameter +''' + ["ddl:1353"] error = ''' In definition of view, derived table or common table expression, SELECT list and column names list have different column counts @@ -2166,6 +2181,11 @@ error = ''' not implemented ''' +["kv:8178"] +error = ''' +key is too large, the size of given key is %d +''' + ["kv:9007"] error = ''' Write conflict, txnStartTS=%d, conflictStartTS=%d, conflictCommitTS=%d, key=%s%s%s%s, reason=%s [try again later] diff --git a/go.mod b/go.mod index 110335258504d..88670e1269bae 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/pingcap/tidb -go 1.23 +go 1.23.4 require ( cloud.google.com/go/kms v1.15.7 @@ -39,7 +39,7 @@ require ( github.com/docker/go-units v0.5.0 github.com/dolthub/swiss v0.2.1 github.com/emirpasic/gods v1.18.1 - github.com/fatih/color v1.17.0 + github.com/fatih/color v1.18.0 github.com/felixge/fgprof v0.9.3 github.com/fsouza/fake-gcs-server v1.44.0 github.com/go-ldap/ldap/v3 v3.4.4 @@ -50,7 +50,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/golang/snappy v0.0.4 github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 - github.com/golangci/golangci-lint v1.61.1-0.20240915150923-7187c89d4091 + github.com/golangci/golangci-lint v1.62.2 github.com/golangci/gosec v0.0.0-20180901114220-8afd9cbb6cfb github.com/golangci/misspell v0.6.0 github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 @@ -70,12 +70,11 @@ require ( github.com/johannesboyne/gofakes3 v0.0.0-20230506070712-04da935ef877 github.com/joho/sqltocsv v0.0.0-20210428211105-a6d6801d59df github.com/karamaru-alpha/copyloopvar v1.1.0 - github.com/kisielk/errcheck v1.7.0 + github.com/kisielk/errcheck v1.8.0 github.com/klauspost/compress v1.17.9 github.com/ks3sdklib/aws-sdk-go v1.2.9 - github.com/lance6716/pebble v0.0.0-20241104073946-6f55c09bd183 github.com/lestrrat-go/jwx/v2 v2.0.21 - github.com/mgechev/revive v1.4.0 + github.com/mgechev/revive v1.5.1 github.com/ngaut/pools v0.0.0-20180318154953-b7bc8c42aac7 github.com/ngaut/sync2 v0.0.0-20141008032647-7a24ed77b2ef github.com/nishanths/predeclared v0.2.2 @@ -87,11 +86,11 @@ require ( github.com/pingcap/errors v0.11.5-0.20240318064555-6bd07397691f github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86 github.com/pingcap/fn v1.0.0 - github.com/pingcap/kvproto v0.0.0-20240924080114-4a3e17f5e62d - github.com/pingcap/log v1.1.1-0.20240314023424-862ccc32f18d + github.com/pingcap/kvproto v0.0.0-20241120022153-92b0414aeed8 + github.com/pingcap/log v1.1.1-0.20241212030209-7e3ff8601a2a 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-20241008083645-0bcddae67837 + github.com/pingcap/tipb v0.0.0-20241105053214-f91fdb81a69e github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_model v0.6.1 github.com/prometheus/common v0.57.0 @@ -106,12 +105,12 @@ require ( github.com/spf13/pflag v1.0.5 github.com/spkg/bom v1.0.0 github.com/stathat/consistent v1.0.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tdakkota/asciicheck v0.2.0 github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 github.com/tidwall/btree v1.7.0 - github.com/tikv/client-go/v2 v2.0.8-0.20241023023120-691e80ae0ea9 - github.com/tikv/pd/client v0.0.0-20241016064947-b70107ec31e6 + github.com/tikv/client-go/v2 v2.0.8-0.20241120024459-05d115b3e88b + github.com/tikv/pd/client v0.0.0-20241111073742-238d4d79ea31 github.com/timakin/bodyclose v0.0.0-20240125160201-f835fa56326a github.com/twmb/murmur3 v1.1.6 github.com/uber/jaeger-client-go v2.22.1+incompatible @@ -132,21 +131,21 @@ require ( go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 - golang.org/x/net v0.30.0 + golang.org/x/net v0.32.0 golang.org/x/oauth2 v0.23.0 - golang.org/x/sync v0.8.0 - golang.org/x/sys v0.26.0 - golang.org/x/term v0.25.0 - golang.org/x/text v0.19.0 + golang.org/x/sync v0.10.0 + golang.org/x/sys v0.28.0 + golang.org/x/term v0.27.0 + golang.org/x/text v0.21.0 golang.org/x/time v0.7.0 - golang.org/x/tools v0.26.0 + golang.org/x/tools v0.28.0 google.golang.org/api v0.169.0 google.golang.org/grpc v1.63.2 gopkg.in/yaml.v2 v2.4.0 gorm.io/driver/mysql v1.5.7 gorm.io/gorm v1.25.11 honnef.co/go/tools v0.5.1 - k8s.io/api v0.28.6 + k8s.io/api v0.29.11 sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67 ) @@ -268,7 +267,7 @@ require ( github.com/prometheus/procfs v0.15.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 // indirect github.com/segmentio/asm v1.2.0 // indirect github.com/shabbyrobe/gocovmerge v0.0.0-20190829150210-3e036491d500 // indirect @@ -299,9 +298,9 @@ require ( go.opentelemetry.io/otel/sdk v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.opentelemetry.io/proto/otlp v1.1.0 // indirect - golang.org/x/crypto v0.28.0 // indirect - golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f // indirect - golang.org/x/mod v0.21.0 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect + golang.org/x/mod v0.22.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect @@ -310,7 +309,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apimachinery v0.28.6 // indirect + k8s.io/apimachinery v0.29.11 // indirect k8s.io/klog/v2 v2.120.1 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/go.sum b/go.sum index 631799d088f9b..830d16a42272a 100644 --- a/go.sum +++ b/go.sum @@ -242,8 +242,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g= @@ -309,7 +309,6 @@ github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG github.com/goccy/go-reflect v1.2.0 h1:O0T8rZCuNmGXewnATuKYnkL0xm6o8UNOJZd/gOkb9ms= github.com/goccy/go-reflect v1.2.0/go.mod h1:n0oYZn8VcV2CkWTxi8B9QjkCoq6GTtCEdfmR66YhFtE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v0.0.0-20180717141946-636bf0302bc9/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -354,6 +353,7 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -362,8 +362,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE= -github.com/golangci/golangci-lint v1.61.1-0.20240915150923-7187c89d4091 h1:QOO0qQ6PJxmQgr1J4WfUrMvwXclzhXsKTaLjRflOU7U= -github.com/golangci/golangci-lint v1.61.1-0.20240915150923-7187c89d4091/go.mod h1:PRvTpn+9dXYfWhsJX3OQ+RzzXBkzJjqkux72cKQECGs= +github.com/golangci/golangci-lint v1.62.2 h1:b8K5K9PN+rZN1+mKLtsZHz2XXS9aYKzQ9i25x3Qnxxw= +github.com/golangci/golangci-lint v1.62.2/go.mod h1:ILWWyeFUrctpHVGMa1dg2xZPKoMUTc5OIMgW7HZr34g= github.com/golangci/gosec v0.0.0-20180901114220-8afd9cbb6cfb h1:Bi7BYmZVg4C+mKGi8LeohcP2GGUl2XJD4xCkJoZSaYc= github.com/golangci/gosec v0.0.0-20180901114220-8afd9cbb6cfb/go.mod h1:ON/c2UR0VAAv6ZEAFKhjCLplESSmRFfZcDLASbI1GWo= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= @@ -528,8 +528,8 @@ github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJz github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0= -github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= +github.com/kisielk/errcheck v1.8.0 h1:ZX/URYa7ilESY19ik/vBmCn6zdGQLxACwjAcWbHlYlg= +github.com/kisielk/errcheck v1.8.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= @@ -558,8 +558,6 @@ github.com/ks3sdklib/aws-sdk-go v1.2.9 h1:Eg0fM56r4Gjp9PiK1Bg9agJUxCAWCk236qq9DI github.com/ks3sdklib/aws-sdk-go v1.2.9/go.mod h1:xBNbOrxSnd36AQpZ8o99mGGu+blblUd9rI0MKGmeufo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lance6716/pebble v0.0.0-20241104073946-6f55c09bd183 h1:CrFmpCAT5PGMgmQadTa2lXZrjuvpknONB1/pyxiyDsM= -github.com/lance6716/pebble v0.0.0-20241104073946-6f55c09bd183/go.mod h1:ZxnWA3Ab0ufDIyppyzL16j6HFNpdXeiU/1cE4Wlv/lQ= github.com/lestrrat-go/blackmagic v1.0.2 h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k= github.com/lestrrat-go/blackmagic v1.0.2/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= @@ -591,8 +589,8 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mgechev/revive v1.4.0 h1:+6LDNE1XKsUCkpuDOMrzjOsXqiQOZ/jPlscLyA6mMXw= -github.com/mgechev/revive v1.4.0/go.mod h1:uzGR6feiCiJi4oND58/KMt/lEnR5vmjzRYPZiR0sQRQ= +github.com/mgechev/revive v1.5.1 h1:hE+QPeq0/wIzJwOphdVyUJ82njdd8Khp4fUIHGZHW3M= +github.com/mgechev/revive v1.5.1/go.mod h1:lC9AhkJIBs5zwx8wkudyHrU+IJkrEKmpCmGMnIJPk4o= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= @@ -633,8 +631,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q= -github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= +github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -672,16 +670,16 @@ github.com/pingcap/fn v1.0.0/go.mod h1:u9WZ1ZiOD1RpNhcI42RucFh/lBuzTu6rw88a+oF2Z github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 h1:surzm05a8C9dN8dIUmo4Be2+pMRb6f55i+UIYrluu2E= github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989/go.mod h1:O17XtbryoCJhkKGbT62+L2OlrniwqiGLSqrmdHCMzZw= github.com/pingcap/kvproto v0.0.0-20191211054548-3c6b38ea5107/go.mod h1:WWLmULLO7l8IOcQG+t+ItJ3fEcrL5FxF0Wu+HrMy26w= -github.com/pingcap/kvproto v0.0.0-20240924080114-4a3e17f5e62d h1:vSdKTrF6kpcd56G5BLP0Bz88Nho2tDo7IR1+oSsBAfc= -github.com/pingcap/kvproto v0.0.0-20240924080114-4a3e17f5e62d/go.mod h1:rXxWk2UnwfUhLXha1jxRWPADw9eMZGWEWCg92Tgmb/8= +github.com/pingcap/kvproto v0.0.0-20241120022153-92b0414aeed8 h1:aNNifhc6xCjXKejjiNYtJJLFNMXnoDiXxkJIg1JErQE= +github.com/pingcap/kvproto v0.0.0-20241120022153-92b0414aeed8/go.mod h1:rXxWk2UnwfUhLXha1jxRWPADw9eMZGWEWCg92Tgmb/8= github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM= github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= -github.com/pingcap/log v1.1.1-0.20240314023424-862ccc32f18d h1:y3EueKVfVykdpTyfUnQGqft0ud+xVFuCdp1XkVL0X1E= -github.com/pingcap/log v1.1.1-0.20240314023424-862ccc32f18d/go.mod h1:ORfBOFp1eteu2odzsyaxI+b8TzJwgjwyQcGhI+9SfEA= +github.com/pingcap/log v1.1.1-0.20241212030209-7e3ff8601a2a h1:WIhmJBlNGmnCWH6TLMdZfNEDaiU8cFpZe3iaqDbQ0M8= +github.com/pingcap/log v1.1.1-0.20241212030209-7e3ff8601a2a/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-20241008083645-0bcddae67837 h1:tyIymn821fB8gUmqafdvLlcFkVOpgyJXImoYJ8n9oJE= -github.com/pingcap/tipb v0.0.0-20241008083645-0bcddae67837/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= +github.com/pingcap/tipb v0.0.0-20241105053214-f91fdb81a69e h1:7DdrYVwWpYr4o1AyKl8T376B4h2RsMEjkmom8MxQuuM= +github.com/pingcap/tipb v0.0.0-20241105053214-f91fdb81a69e/go.mod h1:zrnYy8vReNODg8G0OiYaX9OK+kpq+rK1jHmvd1DnIWw= 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= @@ -733,8 +731,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= @@ -812,8 +810,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= @@ -826,10 +824,10 @@ github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a h1:J/YdBZ46WKpXsxsW github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a/go.mod h1:h4xBhSNtOeEosLJ4P7JyKXX7Cabg7AVkWCK5gV2vOrM= github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/tikv/client-go/v2 v2.0.8-0.20241023023120-691e80ae0ea9 h1:1Fgp6FqjgXEj/CKcegdXu3wLo77sx7JM9NPC7sF0io0= -github.com/tikv/client-go/v2 v2.0.8-0.20241023023120-691e80ae0ea9/go.mod h1:WAp0oZxDL+3GX+QhJdG0quubJUzEH8LrFofmIxleJhs= -github.com/tikv/pd/client v0.0.0-20241016064947-b70107ec31e6 h1:u0z6yR68sg0pextuabJv/bD4mvwBe8iFeQOdymBUy0E= -github.com/tikv/pd/client v0.0.0-20241016064947-b70107ec31e6/go.mod h1:W5a0sDadwUpI9k8p7M77d3jo253ZHdmua+u4Ho4Xw8U= +github.com/tikv/client-go/v2 v2.0.8-0.20241120024459-05d115b3e88b h1:/hmt2FCt34rCVBX9dswiSdHOkppP67VWaESryTxDKc8= +github.com/tikv/client-go/v2 v2.0.8-0.20241120024459-05d115b3e88b/go.mod h1:NI2GfVlB9n7DsIGCxrKcD4psrcuFNEV8m1BgyzK1Amc= +github.com/tikv/pd/client v0.0.0-20241111073742-238d4d79ea31 h1:oAYc4m5Eu1OY9ogJ103VO47AYPHvhtzbUPD8L8B67Qk= +github.com/tikv/pd/client v0.0.0-20241111073742-238d4d79ea31/go.mod h1:W5a0sDadwUpI9k8p7M77d3jo253ZHdmua+u4Ho4Xw8U= github.com/timakin/bodyclose v0.0.0-20240125160201-f835fa56326a h1:A6uKudFIfAEpoPdaal3aSqGxBzLyU8TqyXImLwo6dIo= github.com/timakin/bodyclose v0.0.0-20240125160201-f835fa56326a/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= @@ -966,8 +964,8 @@ golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -985,8 +983,8 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= -golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8= -golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f h1:WTyX8eCCyfdqiPYkRGm0MqElSfYFH3yR1+rl/mct9sA= +golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1027,8 +1025,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= -golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1076,8 +1074,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1100,8 +1098,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1166,8 +1164,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1177,8 +1175,8 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= -golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1192,8 +1190,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1251,7 +1249,6 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= @@ -1265,8 +1262,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= -golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1436,10 +1433,10 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= -k8s.io/api v0.28.6 h1:yy6u9CuIhmg55YvF/BavPBBXB+5QicB64njJXxVnzLo= -k8s.io/api v0.28.6/go.mod h1:AM6Ys6g9MY3dl/XNaNfg/GePI0FT7WBGu8efU/lirAo= -k8s.io/apimachinery v0.28.6 h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0= -k8s.io/apimachinery v0.28.6/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA= +k8s.io/api v0.29.11 h1:6FwDo33f1WX5Yu0RQTX9YAd3wth8Ik0B4SXQKsoQfbk= +k8s.io/api v0.29.11/go.mod h1:3TDAW1OpFbz/Yx5r0W06b6eiAfHEwtH61VYDzpTU4Ng= +k8s.io/apimachinery v0.29.11 h1:55+6ue9advpA7T0sX2ZJDHCLKuiFfrAAR/39VQN9KEQ= +k8s.io/apimachinery v0.29.11/go.mod h1:i3FJVwhvSp/6n8Fl4K97PJEP8C+MM+aoDq4+ZJBf70Y= k8s.io/client-go v0.28.6 h1:Gge6ziyIdafRchfoBKcpaARuz7jfrK1R1azuwORIsQI= k8s.io/client-go v0.28.6/go.mod h1:+nu0Yp21Oeo/cBCsprNVXB2BfJTV51lFfe5tXl2rUL8= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= diff --git a/lightning/pkg/importer/BUILD.bazel b/lightning/pkg/importer/BUILD.bazel index dc25bdc18b42d..4f2413b0832a7 100644 --- a/lightning/pkg/importer/BUILD.bazel +++ b/lightning/pkg/importer/BUILD.bazel @@ -66,6 +66,7 @@ go_library( "//pkg/table/tables", "//pkg/tablecodec", "//pkg/types", + "//pkg/util", "//pkg/util/cdcutil", "//pkg/util/codec", "//pkg/util/collate", diff --git a/lightning/pkg/importer/check_info.go b/lightning/pkg/importer/check_info.go index 78ca56010d564..e28eb167ce57d 100644 --- a/lightning/pkg/importer/check_info.go +++ b/lightning/pkg/importer/check_info.go @@ -159,3 +159,10 @@ func (rc *Controller) checkCDCPiTR(ctx context.Context) error { } return rc.doPreCheckOnItem(ctx, precheck.CheckTargetUsingCDCPITR) } + +func (rc *Controller) checkPDTiDBFromSameCluster(ctx context.Context) error { + if rc.cfg.TikvImporter.Backend == config.BackendTiDB { + return nil + } + return rc.doPreCheckOnItem(ctx, precheck.CheckPDTiDBFromSameCluster) +} diff --git a/lightning/pkg/importer/check_info_test.go b/lightning/pkg/importer/check_info_test.go index ed02f15f23149..1550ff42cd1c3 100644 --- a/lightning/pkg/importer/check_info_test.go +++ b/lightning/pkg/importer/check_info_test.go @@ -413,6 +413,7 @@ func TestCheckCSVHeader(t *testing.T) { preInfoGetter, nil, nil, + nil, ) preInfoGetter.dbInfosCache = rc.dbInfos err = rc.checkCSVHeader(ctx) @@ -467,6 +468,7 @@ func TestCheckTableEmpty(t *testing.T) { preInfoGetter, nil, nil, + nil, ) rc := &Controller{ @@ -625,6 +627,7 @@ func TestLocalResource(t *testing.T) { preInfoGetter, nil, nil, + nil, ) rc := &Controller{ cfg: cfg, diff --git a/lightning/pkg/importer/get_pre_info.go b/lightning/pkg/importer/get_pre_info.go index 775cf7ec5f3eb..77c6d6558c8e4 100644 --- a/lightning/pkg/importer/get_pre_info.go +++ b/lightning/pkg/importer/get_pre_info.go @@ -622,7 +622,7 @@ func (p *PreImportInfoGetterImpl) sampleDataFromTable( if err != nil { return 0.0, false, errors.Trace(err) } - idAlloc := kv.NewPanickingAllocators(tableInfo.SepAutoInc(), 0) + idAlloc := kv.NewPanickingAllocators(tableInfo.SepAutoInc()) tbl, err := tables.TableFromMeta(idAlloc, tableInfo) if err != nil { return 0.0, false, errors.Trace(err) diff --git a/lightning/pkg/importer/import.go b/lightning/pkg/importer/import.go index 512aa277d6b34..ad0c55a8069ae 100644 --- a/lightning/pkg/importer/import.go +++ b/lightning/pkg/importer/import.go @@ -479,7 +479,7 @@ func NewImportControllerWithPauser( } preCheckBuilder := NewPrecheckItemBuilder( - cfg, p.DBMetas, preInfoGetter, cpdb, pdHTTPCli, + cfg, p.DBMetas, preInfoGetter, cpdb, pdHTTPCli, db, ) rc := &Controller{ @@ -1488,19 +1488,8 @@ func (rc *Controller) importTables(ctx context.Context) (finalErr error) { allTasks = append(allTasks, task{tr: tr, cp: cp}) if len(cp.Engines) == 0 { - for i, fi := range tableMeta.DataFiles { + for _, fi := range tableMeta.DataFiles { totalDataSizeToRestore += fi.FileMeta.FileSize - if fi.FileMeta.Type == mydump.SourceTypeParquet { - numberRows, err := mydump.ReadParquetFileRowCountByFile(ctx, rc.store, fi.FileMeta) - if err != nil { - return errors.Trace(err) - } - if m, ok := metric.FromContext(ctx); ok { - m.RowsCounter.WithLabelValues(metric.StateTotalRestore, tableName).Add(float64(numberRows)) - } - fi.FileMeta.Rows = numberRows - tableMeta.DataFiles[i] = fi - } } } else { for _, eng := range cp.Engines { @@ -1919,6 +1908,9 @@ func (rc *Controller) preCheckRequirements(ctx context.Context) error { if err := rc.checkClusterRegion(ctx); err != nil { return common.ErrCheckClusterRegion.Wrap(err).GenWithStackByArgs() } + if err := rc.checkPDTiDBFromSameCluster(ctx); err != nil { + return common.ErrCheckPDTiDBFromSameCluster.Wrap(err).GenWithStackByArgs() + } } // even if checkpoint exists, we still need to make sure CDC/PiTR task is not running. if err := rc.checkCDCPiTR(ctx); err != nil { @@ -1990,20 +1982,17 @@ type deliverResult struct { } func saveCheckpoint(rc *Controller, t *TableImporter, engineID int32, chunk *checkpoints.ChunkCheckpoint) { - // We need to update the AllocBase every time we've finished a file. - // The AllocBase is determined by the maximum of the "handle" (_tidb_rowid - // or integer primary key), which can only be obtained by reading all data. - - var base int64 - if t.tableInfo.Core.ContainsAutoRandomBits() { - base = t.alloc.Get(autoid.AutoRandomType).Base() + 1 - } else { - base = t.alloc.Get(autoid.RowIDAllocType).Base() + 1 - } + // we save the XXXBase every time a chunk is finished. + // Note, it's possible some chunk with larger autoID range finished first, so + // the saved XXXBase is larger, when chunks with smaller autoID range finished + // it might have no effect on the saved XXXBase, but it's OK, we only need + // the largest. rc.saveCpCh <- saveCp{ tableName: t.tableName, merger: &checkpoints.RebaseCheckpointMerger{ - AllocBase: base, + AutoRandBase: t.alloc.Get(autoid.AutoRandomType).Base(), + AutoIncrBase: t.alloc.Get(autoid.AutoIncrementType).Base(), + AutoRowIDBase: t.alloc.Get(autoid.RowIDAllocType).Base(), }, } rc.saveCpCh <- saveCp{ diff --git a/lightning/pkg/importer/import_test.go b/lightning/pkg/importer/import_test.go index 1dbc692a4c13a..f948353cbfe22 100644 --- a/lightning/pkg/importer/import_test.go +++ b/lightning/pkg/importer/import_test.go @@ -221,7 +221,7 @@ func TestPreCheckFailed(t *testing.T) { dbMetas: make([]*mydump.MDDatabaseMeta, 0), } cpdb := panicCheckpointDB{} - theCheckBuilder := NewPrecheckItemBuilder(cfg, make([]*mydump.MDDatabaseMeta, 0), preInfoGetter, cpdb, nil) + theCheckBuilder := NewPrecheckItemBuilder(cfg, make([]*mydump.MDDatabaseMeta, 0), preInfoGetter, cpdb, nil, db) ctl := &Controller{ cfg: cfg, saveCpCh: make(chan saveCp), diff --git a/lightning/pkg/importer/meta_manager.go b/lightning/pkg/importer/meta_manager.go index d4fe9523b08e4..7c678db76a116 100644 --- a/lightning/pkg/importer/meta_manager.go +++ b/lightning/pkg/importer/meta_manager.go @@ -93,7 +93,7 @@ func (b *dbMetaMgrBuilder) TableMetaMgr(tr *TableImporter) tableMetaMgr { type tableMetaMgr interface { InitTableMeta(ctx context.Context) error - AllocTableRowIDs(ctx context.Context, rawRowIDMax int64) (*verify.KVChecksum, int64, error) + AllocTableRowIDs(ctx context.Context, requiredRowIDCnt int64) (*verify.KVChecksum, int64, error) UpdateTableStatus(ctx context.Context, status metaStatus) error UpdateTableBaseChecksum(ctx context.Context, checksum *verify.KVChecksum) error CheckAndUpdateLocalChecksum(ctx context.Context, checksum *verify.KVChecksum, hasLocalDupes bool) ( @@ -177,7 +177,7 @@ func parseMetaStatus(s string) (metaStatus, error) { } } -func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64) (*verify.KVChecksum, int64, error) { +func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, requiredRowIDCnt int64) (*verify.KVChecksum, int64, error) { conn, err := m.session.Conn(ctx) if err != nil { return nil, 0, errors.Trace(err) @@ -188,8 +188,10 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 DB: conn, Logger: m.tr.logger, } - var newRowIDBase, newRowIDMax int64 - curStatus := metaStatusInitial + // (myStartRowID, myEndRowID] is the range of row_id that current instance + // can use to encode the table. + var myStartRowID, myEndRowID int64 + myStatus := metaStatusInitial newStatus := metaStatusRowIDAllocated var baseTotalKvs, baseTotalBytes, baseChecksum uint64 err = exec.Exec(ctx, "enable pessimistic transaction", "SET SESSION tidb_txn_mode = 'pessimistic';") @@ -197,13 +199,20 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 return nil, 0, errors.Annotate(err, "enable pessimistic transaction failed") } - needAutoID := common.TableHasAutoID(m.tr.tableInfo.Core) + hasAutoID := common.TableHasAutoID(m.tr.tableInfo.Core) tableChecksumingMsg := "Target table is calculating checksum. Please wait until the checksum is finished and try again." doAllocTableRowIDsFn := func() error { return exec.Transact(ctx, "init table allocator base", func(ctx context.Context, tx *sql.Tx) error { + // lightning follows below calling sequence, so at most one client + // can execute the code after the FOR UPDATE part for some table, + // even though FOR UPDATE only lock rows that matches the condition: + // - insert into table_meta with key (table_id, task_id) + // - try lock with FOR UPDATE rows, err := tx.QueryContext( ctx, - common.SprintfWithIdentifiers("SELECT task_id, row_id_base, row_id_max, total_kvs_base, total_bytes_base, checksum_base, status FROM %s.%s WHERE table_id = ? FOR UPDATE", m.schemaName, m.tableName), + common.SprintfWithIdentifiers(` +SELECT task_id, row_id_base, row_id_max, total_kvs_base, total_bytes_base, checksum_base, status +FROM %s.%s WHERE table_id = ? FOR UPDATE`, m.schemaName, m.tableName), m.tr.tableInfo.ID, ) if err != nil { @@ -234,16 +243,16 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 } if metaTaskID == m.taskID { - curStatus = status + myStatus = status baseChecksum = checksum baseTotalKvs = totalKvs baseTotalBytes = totalBytes if status >= metaStatusRowIDAllocated { - if rowIDMax-rowIDBase != rawRowIDMax { - return common.ErrAllocTableRowIDs.GenWithStack("verify allocator base failed. local: '%d', meta: '%d'", rawRowIDMax, rowIDMax-rowIDBase) + if rowIDMax-rowIDBase != requiredRowIDCnt { + return common.ErrAllocTableRowIDs.GenWithStack("verify allocator base failed. local: '%d', meta: '%d'", requiredRowIDCnt, rowIDMax-rowIDBase) } - newRowIDBase = rowIDBase - newRowIDMax = rowIDMax + myStartRowID = rowIDBase + myEndRowID = rowIDMax break } continue @@ -263,36 +272,43 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 } // no enough info are available, fetch row_id max for table - if curStatus == metaStatusInitial { - if needAutoID { - // maxRowIDMax is the max row_id that other tasks has allocated, we need to rebase the global autoid base first. - // TODO this is not right when AUTO_ID_CACHE=1 and have auto row id, - // the id allocators are separated in this case. - if err := common.RebaseGlobalAutoID(ctx, maxRowIDMax, m.tr, m.tr.dbInfo.ID, m.tr.tableInfo.Core); err != nil { - return errors.Trace(err) - } - newRowIDBase, newRowIDMax, err = common.AllocGlobalAutoID(ctx, rawRowIDMax, m.tr, m.tr.dbInfo.ID, m.tr.tableInfo.Core) + if myStatus == metaStatusInitial { + // if the table don't have auto id, we still guarantee that the + // row ID is unique across all lightning instances. + // or if someone have already allocated the auto id, we can continue + // allocating from previous maxRowIDMax. + if !hasAutoID || maxRowIDMax > 0 { + myStartRowID = maxRowIDMax + } else { + // we are the first one to allocate the auto id, we need to + // fetch the max auto id base from the table, and allocate + // from there. + // as we only have one estimated requiredRowIDCount, but the + // table might have multiple allocators, so we use the max + // of them. + maxAutoIDBase, err := common.GetMaxAutoIDBase(m.tr, m.tr.dbInfo.ID, m.tr.tableInfo.Core) if err != nil { return errors.Trace(err) } - } else { - // Though we don't need auto ID, we still guarantee that the row ID is unique across all lightning instances. - newRowIDBase = maxRowIDMax - newRowIDMax = newRowIDBase + rawRowIDMax + myStartRowID = maxAutoIDBase } + myEndRowID = myStartRowID + requiredRowIDCnt - // table contains no data, can skip checksum - if needAutoID && newRowIDBase == 0 && newStatus < metaStatusRestoreStarted { + // if we are the first one to allocate, the table has auto-id, + // and our start is 0, it means the table is empty, so we move + // the state to next one directly without going through below + // checksum branch. + if hasAutoID && myStartRowID == 0 && newStatus < metaStatusRestoreStarted { newStatus = metaStatusRestoreStarted } query := common.SprintfWithIdentifiers("UPDATE %s.%s SET row_id_base = ?, row_id_max = ?, status = ? WHERE table_id = ? AND task_id = ?", m.schemaName, m.tableName) - _, err := tx.ExecContext(ctx, query, newRowIDBase, newRowIDMax, newStatus.String(), m.tr.tableInfo.ID, m.taskID) + _, err := tx.ExecContext(ctx, query, myStartRowID, myEndRowID, newStatus.String(), m.tr.tableInfo.ID, m.taskID) if err != nil { return errors.Trace(err) } - curStatus = newStatus + myStatus = newStatus } return nil }) @@ -325,9 +341,12 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 var checksum *verify.KVChecksum // need to do checksum and update checksum meta since we are the first one. - if curStatus < metaStatusRestoreStarted { - // table contains data but haven't do checksum yet - if (newRowIDBase > 0 || !needAutoID) && m.needChecksum && baseTotalKvs == 0 { + if myStatus < metaStatusRestoreStarted { + // the table might have data if our StartRowID is not 0, or if the table + // don't have any auto id. + if (myStartRowID > 0 || !hasAutoID) && m.needChecksum && baseTotalKvs == 0 { + // if another instance finished import before below checksum logic, + // it will cause checksum mismatch, but it's very rare. remoteCk, err := DoChecksum(ctx, m.tr.tableInfo) if err != nil { return nil, 0, errors.Trace(err) @@ -354,11 +373,11 @@ func (m *dbTableMetaMgr) AllocTableRowIDs(ctx context.Context, rawRowIDMax int64 checksum = &ck } log.FromContext(ctx).Info("allocate table row_id base", zap.String("table", m.tr.tableName), - zap.Int64("row_id_base", newRowIDBase)) + zap.Int64("startRowID", myStartRowID), zap.Int64("endRowID", myEndRowID)) if checksum != nil { log.FromContext(ctx).Info("checksum base", zap.Any("checksum", checksum)) } - return checksum, newRowIDBase, nil + return checksum, myStartRowID, nil } func (m *dbTableMetaMgr) UpdateTableBaseChecksum(ctx context.Context, checksum *verify.KVChecksum) error { diff --git a/lightning/pkg/importer/precheck.go b/lightning/pkg/importer/precheck.go index 477c80cd17c42..a4494b4b2eed6 100644 --- a/lightning/pkg/importer/precheck.go +++ b/lightning/pkg/importer/precheck.go @@ -16,6 +16,7 @@ package importer import ( "context" + "database/sql" "github.com/pingcap/errors" ropts "github.com/pingcap/tidb/lightning/pkg/importer/opts" @@ -42,6 +43,7 @@ type PrecheckItemBuilder struct { preInfoGetter PreImportInfoGetter checkpointsDB checkpoints.DB pdAddrsGetter func(context.Context) []string + targetDB *sql.DB } // NewPrecheckItemBuilderFromConfig creates a new PrecheckItemBuilder from config @@ -91,7 +93,7 @@ func NewPrecheckItemBuilderFromConfig( if err != nil { return nil, errors.Trace(err) } - return NewPrecheckItemBuilder(cfg, dbMetas, preInfoGetter, cpdb, pdHTTPCli), gerr + return NewPrecheckItemBuilder(cfg, dbMetas, preInfoGetter, cpdb, pdHTTPCli, targetDB), gerr } // NewPrecheckItemBuilder creates a new PrecheckItemBuilder @@ -101,6 +103,7 @@ func NewPrecheckItemBuilder( preInfoGetter PreImportInfoGetter, checkpointsDB checkpoints.DB, pdHTTPCli pdhttp.Client, + targetDB *sql.DB, ) *PrecheckItemBuilder { pdAddrsGetter := func(context.Context) []string { return []string{cfg.TiDB.PdAddr} @@ -125,6 +128,7 @@ func NewPrecheckItemBuilder( preInfoGetter: preInfoGetter, checkpointsDB: checkpointsDB, pdAddrsGetter: pdAddrsGetter, + targetDB: targetDB, } } @@ -157,6 +161,8 @@ func (b *PrecheckItemBuilder) BuildPrecheckItem(checkID precheck.CheckItemID) (p return NewLocalTempKVDirCheckItem(b.cfg, b.preInfoGetter, b.dbMetas), nil case precheck.CheckTargetUsingCDCPITR: return NewCDCPITRCheckItem(b.cfg, b.pdAddrsGetter), nil + case precheck.CheckPDTiDBFromSameCluster: + return NewPDTiDBFromSameClusterCheckItem(b.targetDB, b.pdAddrsGetter), nil default: return nil, errors.Errorf("unsupported check item: %v", checkID) } diff --git a/lightning/pkg/importer/precheck_impl.go b/lightning/pkg/importer/precheck_impl.go index 14567eee5299f..1acee2cccc1be 100644 --- a/lightning/pkg/importer/precheck_impl.go +++ b/lightning/pkg/importer/precheck_impl.go @@ -17,7 +17,9 @@ package importer import ( "cmp" "context" + "database/sql" "fmt" + "net/url" "path/filepath" "reflect" "slices" @@ -43,6 +45,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/cdcutil" "github.com/pingcap/tidb/pkg/util/engine" "github.com/pingcap/tidb/pkg/util/set" @@ -1433,3 +1436,74 @@ func hasDefault(col *model.ColumnInfo) bool { return col.DefaultIsExpr || col.DefaultValue != nil || !mysql.HasNotNullFlag(col.GetFlag()) || col.IsGenerated() || mysql.HasAutoIncrementFlag(col.GetFlag()) } + +// pdTiDBFromSameClusterCheckItem provides two sources of PD addresses and use +// util.CheckIfSameCluster to check if they are from the same cluster. +// +// The first source stands for PD leader's all etcd client URL addresses in most +// time, the second source stands for all PD nodes' first etcd client URL +// addresses. +// +// If we can't reach PD leader, the first source will be replaced by the PD +// address set in lightning's task configuration, or in TiDB's configuration. +// Then it may have false alert if PD has multiple endpoints and above +// configuration uses one of them, while etcd information uses another one, and +// there are no common addresses passed to util.CheckIfSameCluster. +type pdTiDBFromSameClusterCheckItem struct { + db *sql.DB + pdAddrsGetter func(context.Context) []string +} + +// NewPDTiDBFromSameClusterCheckItem creates a new pdTiDBFromSameClusterCheckItem. +func NewPDTiDBFromSameClusterCheckItem( + db *sql.DB, + pdAddrsGetter func(context.Context) []string, +) precheck.Checker { + return &pdTiDBFromSameClusterCheckItem{ + db: db, + pdAddrsGetter: pdAddrsGetter, + } +} + +func (i *pdTiDBFromSameClusterCheckItem) Check(ctx context.Context) (*precheck.CheckResult, error) { + theResult := &precheck.CheckResult{ + Item: i.GetCheckItemID(), + Severity: precheck.Critical, + Passed: true, + Message: "PD and TiDB in configuration are from the same cluster", + } + + pdLeaderAddrsGetter := func(ctx context.Context) ([]string, error) { + addrs := i.pdAddrsGetter(ctx) + for idx, addrURL := range addrs { + u, err2 := url.Parse(addrURL) + if err2 != nil { + return nil, errors.Trace(err2) + } + addrs[idx] = u.Host + } + return addrs, nil + } + + sameCluster, pdAddrs, pdAddrsFromTiDB, err := util.CheckIfSameCluster( + ctx, pdLeaderAddrsGetter, util.GetPDsAddrWithoutScheme(i.db), + ) + if err != nil { + return nil, errors.Trace(err) + } + if sameCluster { + return theResult, nil + } + + theResult.Passed = false + theResult.Message = fmt.Sprintf( + "PD and TiDB in configuration are not from the same cluster, "+ + "PD addresses read from PD are: %v, PD addresses read from TiDB are %v", + pdAddrs, pdAddrsFromTiDB, + ) + return theResult, nil +} + +func (*pdTiDBFromSameClusterCheckItem) GetCheckItemID() precheck.CheckItemID { + return precheck.CheckPDTiDBFromSameCluster +} diff --git a/lightning/pkg/importer/precheck_impl_test.go b/lightning/pkg/importer/precheck_impl_test.go index e35535ef6be69..2adfb4ce30f36 100644 --- a/lightning/pkg/importer/precheck_impl_test.go +++ b/lightning/pkg/importer/precheck_impl_test.go @@ -19,6 +19,7 @@ import ( "fmt" "testing" + "github.com/DATA-DOG/go-sqlmock" "github.com/docker/go-units" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/br/pkg/streamhelper" @@ -683,3 +684,49 @@ func (s *precheckImplSuite) TestCDCPITRCheckItem() { s.Require().True(result.Passed) s.Require().Equal("TiDB Lightning is not using local backend, skip this check", result.Message) } + +func (s *precheckImplSuite) TestPDTiDBFromSameCluster() { + ctx := context.Background() + db, mock, err := sqlmock.New() + s.Require().NoError(err) + pdAddrGetter := func(ctx context.Context) []string { + return []string{"https://1.2.3.4:2379", "http://127.0.0.1:2379"} + } + + // check wrong host and port + mock.ExpectQuery(`SELECT STATUS_ADDRESS FROM INFORMATION_SCHEMA.CLUSTER_INFO WHERE TYPE = 'pd'`). + WillReturnRows(sqlmock.NewRows([]string{"STATUS_ADDRESS"}). + AddRow("1.2.3.4:2380").AddRow("10.20.30.40:2379"), + ) + + checker := NewPDTiDBFromSameClusterCheckItem(db, pdAddrGetter) + result, err := checker.Check(ctx) + s.Require().NoError(err) + s.Require().False(result.Passed) + s.Require().Equal( + "PD and TiDB in configuration are not from the same cluster, "+ + "PD addresses read from PD are: [1.2.3.4:2379 127.0.0.1:2379], "+ + "PD addresses read from TiDB are [1.2.3.4:2380 10.20.30.40:2379]", + result.Message) + + // check partial match is enough + mock.ExpectQuery(`SELECT STATUS_ADDRESS FROM INFORMATION_SCHEMA.CLUSTER_INFO WHERE TYPE = 'pd'`). + WillReturnRows(sqlmock.NewRows([]string{"STATUS_ADDRESS"}). + AddRow("1.2.3.4:2379"), + ) + checker = NewPDTiDBFromSameClusterCheckItem(db, pdAddrGetter) + result, err = checker.Check(ctx) + s.Require().NoError(err) + s.Require().True(result.Passed) + + mock.ExpectQuery(`SELECT STATUS_ADDRESS FROM INFORMATION_SCHEMA.CLUSTER_INFO WHERE TYPE = 'pd'`). + WillReturnRows(sqlmock.NewRows([]string{"STATUS_ADDRESS"}). + AddRow("2.3.4.5:2379").AddRow("3.4.5.6:2379").AddRow("1.2.3.4:2379"), + ) + checker = NewPDTiDBFromSameClusterCheckItem(db, pdAddrGetter) + result, err = checker.Check(ctx) + s.Require().NoError(err) + s.Require().True(result.Passed) + + s.Require().NoError(mock.ExpectationsWereMet()) +} diff --git a/lightning/pkg/importer/precheck_test.go b/lightning/pkg/importer/precheck_test.go index 01e67752322ae..59dfef2f9c1ca 100644 --- a/lightning/pkg/importer/precheck_test.go +++ b/lightning/pkg/importer/precheck_test.go @@ -33,7 +33,7 @@ func TestPrecheckBuilderBasic(t *testing.T) { preInfoGetter, err := NewPreImportInfoGetter(cfg, mockSrc.GetAllDBFileMetas(), mockSrc.GetStorage(), mockTarget, nil, nil) require.NoError(t, err) - theCheckBuilder := NewPrecheckItemBuilder(cfg, mockSrc.GetAllDBFileMetas(), preInfoGetter, nil, nil) + theCheckBuilder := NewPrecheckItemBuilder(cfg, mockSrc.GetAllDBFileMetas(), preInfoGetter, nil, nil, nil) for _, checkItemID := range []precheck.CheckItemID{ precheck.CheckLargeDataFile, precheck.CheckSourcePermission, diff --git a/lightning/pkg/importer/table_import.go b/lightning/pkg/importer/table_import.go index 658d17430ebc6..17f342fc535c9 100644 --- a/lightning/pkg/importer/table_import.go +++ b/lightning/pkg/importer/table_import.go @@ -92,7 +92,7 @@ func NewTableImporter( etcdCli *clientv3.Client, logger log.Logger, ) (*TableImporter, error) { - idAlloc := kv.NewPanickingAllocators(tableInfo.Core.SepAutoInc(), cp.AllocBase) + idAlloc := kv.NewPanickingAllocatorsWithBase(tableInfo.Core.SepAutoInc(), cp.AutoRandBase, cp.AutoIncrBase, cp.AutoRowIDBase) tbl, err := tables.TableFromMeta(idAlloc, tableInfo.Core) if err != nil { return nil, errors.Annotatef(err, "failed to tables.TableFromMeta %s", tableName) @@ -143,12 +143,15 @@ func (tr *TableImporter) importTable( } // fetch the max chunk row_id max value as the global max row_id - rowIDMax := int64(0) + requiredRowIDCnt := int64(0) for _, engine := range cp.Engines { - if len(engine.Chunks) > 0 && engine.Chunks[len(engine.Chunks)-1].Chunk.RowIDMax > rowIDMax { - rowIDMax = engine.Chunks[len(engine.Chunks)-1].Chunk.RowIDMax + if len(engine.Chunks) > 0 && engine.Chunks[len(engine.Chunks)-1].Chunk.RowIDMax > requiredRowIDCnt { + requiredRowIDCnt = engine.Chunks[len(engine.Chunks)-1].Chunk.RowIDMax } } + tr.logger.Info("estimated required row id count", + zap.String("table", tr.tableName), + zap.Int64("count", requiredRowIDCnt)) versionStr, err := version.FetchVersion(ctx, rc.db) if err != nil { return false, errors.Trace(err) @@ -163,7 +166,7 @@ func (tr *TableImporter) importTable( return false, err } - checksum, rowIDBase, err := metaMgr.AllocTableRowIDs(ctx, rowIDMax) + checksum, rowIDBase, err := metaMgr.AllocTableRowIDs(ctx, requiredRowIDCnt) if err != nil { return false, err } @@ -187,22 +190,31 @@ func (tr *TableImporter) importTable( } web.BroadcastTableCheckpoint(tr.tableName, cp) - // rebase the allocator so it exceeds the number of rows. - if tr.tableInfo.Core.ContainsAutoRandomBits() { - cp.AllocBase = max(cp.AllocBase, tr.tableInfo.Core.AutoRandID) - if err := tr.alloc.Get(autoid.AutoRandomType).Rebase(context.Background(), cp.AllocBase, false); err != nil { + // rebase the allocator based on the max ID from table info. + ti := tr.tableInfo.Core + if ti.ContainsAutoRandomBits() { + cp.AutoRandBase = max(cp.AutoRandBase, ti.AutoRandID) + if err := tr.alloc.Get(autoid.AutoRandomType).Rebase(context.Background(), cp.AutoRandBase, false); err != nil { return false, err } } else { - cp.AllocBase = max(cp.AllocBase, tr.tableInfo.Core.AutoIncID) - if err := tr.alloc.Get(autoid.RowIDAllocType).Rebase(context.Background(), cp.AllocBase, false); err != nil { + if ti.GetAutoIncrementColInfo() != nil && ti.SepAutoInc() { + cp.AutoIncrBase = max(cp.AutoIncrBase, ti.AutoIncID) + if err := tr.alloc.Get(autoid.AutoIncrementType).Rebase(context.Background(), cp.AutoIncrBase, false); err != nil { + return false, err + } + } + cp.AutoRowIDBase = max(cp.AutoRowIDBase, ti.AutoIncID) + if err := tr.alloc.Get(autoid.RowIDAllocType).Rebase(context.Background(), cp.AutoRowIDBase, false); err != nil { return false, err } } rc.saveCpCh <- saveCp{ tableName: tr.tableName, merger: &checkpoints.RebaseCheckpointMerger{ - AllocBase: cp.AllocBase, + AutoRandBase: cp.AutoRandBase, + AutoIncrBase: cp.AutoIncrBase, + AutoRowIDBase: cp.AutoRowIDBase, }, } } diff --git a/lightning/pkg/importer/table_import_test.go b/lightning/pkg/importer/table_import_test.go index aeb024863952f..80d1f0206f956 100644 --- a/lightning/pkg/importer/table_import_test.go +++ b/lightning/pkg/importer/table_import_test.go @@ -409,7 +409,7 @@ func (s *tableRestoreSuite) TestRestoreEngineFailed() { mockEngineWriter.EXPECT().IsSynced().Return(true).AnyTimes() mockEngineWriter.EXPECT().Close(gomock.Any()).Return(mockChunkFlushStatus, nil).AnyTimes() - tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(s.tableInfo.Core.SepAutoInc(), 0), s.tableInfo.Core) + tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(s.tableInfo.Core.SepAutoInc()), s.tableInfo.Core) require.NoError(s.T(), err) _, indexUUID := backend.MakeUUID("`db`.`table`", -1) _, dataUUID := backend.MakeUUID("`db`.`table`", 0) @@ -1195,7 +1195,7 @@ func (s *tableRestoreSuite) TestCheckClusterResource() { targetInfoGetter: targetInfoGetter, srcStorage: mockStore, } - theCheckBuilder := NewPrecheckItemBuilder(cfg, []*mydump.MDDatabaseMeta{}, preInfoGetter, nil, nil) + theCheckBuilder := NewPrecheckItemBuilder(cfg, []*mydump.MDDatabaseMeta{}, preInfoGetter, nil, nil, nil) rc := &Controller{ cfg: cfg, store: mockStore, @@ -1332,7 +1332,7 @@ func (s *tableRestoreSuite) TestCheckClusterRegion() { targetInfoGetter: targetInfoGetter, dbMetas: dbMetas, } - theCheckBuilder := NewPrecheckItemBuilder(cfg, dbMetas, preInfoGetter, checkpoints.NewNullCheckpointsDB(), nil) + theCheckBuilder := NewPrecheckItemBuilder(cfg, dbMetas, preInfoGetter, checkpoints.NewNullCheckpointsDB(), nil, nil) rc := &Controller{ cfg: cfg, taskMgr: mockTaskMetaMgr{}, @@ -1425,7 +1425,7 @@ func (s *tableRestoreSuite) TestCheckHasLargeCSV() { for _, ca := range cases { template := NewSimpleTemplate() cfg := &config.Config{Mydumper: config.MydumperRuntime{StrictFormat: ca.strictFormat}} - theCheckBuilder := NewPrecheckItemBuilder(cfg, ca.dbMetas, nil, nil, nil) + theCheckBuilder := NewPrecheckItemBuilder(cfg, ca.dbMetas, nil, nil, nil, nil) rc := &Controller{ cfg: cfg, checkTemplate: template, @@ -1445,7 +1445,7 @@ func (s *tableRestoreSuite) TestEstimate() { controller := gomock.NewController(s.T()) defer controller.Finish() mockEncBuilder := mock.NewMockEncodingBuilder(controller) - idAlloc := kv.NewPanickingAllocators(s.tableInfo.Core.SepAutoInc(), 0) + idAlloc := kv.NewPanickingAllocators(s.tableInfo.Core.SepAutoInc()) tbl, err := tables.TableFromMeta(idAlloc, s.tableInfo.Core) require.NoError(s.T(), err) diff --git a/lightning/pkg/precheck/precheck.go b/lightning/pkg/precheck/precheck.go index f785b458bed3e..47c2cc4665450 100644 --- a/lightning/pkg/precheck/precheck.go +++ b/lightning/pkg/precheck/precheck.go @@ -45,6 +45,7 @@ const ( CheckLocalDiskPlacement CheckItemID = "CHECK_LOCAL_DISK_PLACEMENT" CheckLocalTempKVDir CheckItemID = "CHECK_LOCAL_TEMP_KV_DIR" CheckTargetUsingCDCPITR CheckItemID = "CHECK_TARGET_USING_CDC_PITR" + CheckPDTiDBFromSameCluster CheckItemID = "CHECK_PD_TIDB_FROM_SAME_CLUSTER" ) var ( @@ -63,6 +64,7 @@ var ( CheckLocalDiskPlacement: "Local disk placement", CheckLocalTempKVDir: "Local temp KV dir", CheckTargetUsingCDCPITR: "Target using CDC/PITR", + CheckPDTiDBFromSameCluster: "PD and TiDB are from the same cluster", } ) diff --git a/lightning/tests/config/pd-no-tls.toml b/lightning/tests/config/pd-no-tls.toml new file mode 100644 index 0000000000000..28d5da286680d --- /dev/null +++ b/lightning/tests/config/pd-no-tls.toml @@ -0,0 +1,2 @@ +[replication] +enable-placement-rules = true diff --git a/lightning/tests/config/tikv-no-tls.toml b/lightning/tests/config/tikv-no-tls.toml new file mode 100644 index 0000000000000..f38a7598c1de2 --- /dev/null +++ b/lightning/tests/config/tikv-no-tls.toml @@ -0,0 +1,23 @@ +# config of tikv +[storage] +reserve-space = "1KB" +data-dir = "/tmp/lightning_test/tikv1/" + +[coprocessor] +region-max-keys = 100 +region-split-keys = 60 + +[rocksdb] +max-open-files = 4096 +[raftdb] +max-open-files = 4096 + +[raftstore] +# true (default value) for high reliability, this can prevent data loss when power failure. +sync-log = false +capacity = "10GB" +# Speed up TiKV region heartbeat +pd-heartbeat-tick-interval = "1s" + +[cdc] +hibernate-regions-compatible=false diff --git a/lightning/tests/lightning_checkpoint/config-file.toml b/lightning/tests/lightning_checkpoint/config-file.toml new file mode 100644 index 0000000000000..a5cd9efcc4879 --- /dev/null +++ b/lightning/tests/lightning_checkpoint/config-file.toml @@ -0,0 +1,15 @@ +[lightning] +index-concurrency = 1 +table-concurrency = 1 + +[tikv-importer] +backend = "local" +parallel-import = true + +[checkpoint] +enable = true +driver = "file" + +[mydumper] +read-block-size = 1 +filter = ['cppk_tsr.tbl1', 'cppk_tsr.tbl2', 'cppk_tsr.tbl7', 'cppk_tsr.tbl8', 'cppk_tsr.tbl9'] diff --git a/lightning/tests/lightning_checkpoint/config.toml b/lightning/tests/lightning_checkpoint/config.toml index a1d2090a4bb63..82ef5f94325e3 100644 --- a/lightning/tests/lightning_checkpoint/config.toml +++ b/lightning/tests/lightning_checkpoint/config.toml @@ -4,6 +4,7 @@ table-concurrency = 1 [tikv-importer] backend = "local" +parallel-import = true [checkpoint] enable = true diff --git a/lightning/tests/lightning_checkpoint/run.sh b/lightning/tests/lightning_checkpoint/run.sh index 76607a79760d8..c2bf20256d6ce 100755 --- a/lightning/tests/lightning_checkpoint/run.sh +++ b/lightning/tests/lightning_checkpoint/run.sh @@ -17,6 +17,7 @@ set -euE # Populate the mydumper source +CUR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) DBPATH="$TEST_DIR/cppk.mydump" TABLE_COUNT=9 CHUNK_COUNT=50 @@ -25,10 +26,16 @@ mkdir -p $DBPATH echo 'CREATE DATABASE cppk_tsr;' > "$DBPATH/cppk_tsr-schema-create.sql" INNER_QUERY='0' OUTER_QUERY='0' +# total 64*50 = 3200 bytes +NOISE_COL_VAL="PJNKNoQE3TX3NuMQRCP0fbtYEnI9cVcVxcnr3MRpqjoaZf1DyT" +for i in {1..6}; do + export NOISE_COL_VAL="$NOISE_COL_VAL$NOISE_COL_VAL" +done for i in $(seq "$TABLE_COUNT"); do + TABLE_ATTRIBUTES="" case $i in 1) - INDICES="PRIMARY KEY" + INDICES="PRIMARY KEY auto_increment" ;; 2) INDICES="UNIQUE" @@ -45,15 +52,26 @@ for i in $(seq "$TABLE_COUNT"); do 6) INDICES=", PRIMARY KEY(j)" ;; + 7) + INDICES="PRIMARY KEY auto_random" + ;; + 8) + INDICES="PRIMARY KEY auto_increment" + TABLE_ATTRIBUTES="AUTO_ID_CACHE=1" + ;; + 9) + INDICES="PRIMARY KEY nonclustered auto_increment" + TABLE_ATTRIBUTES="AUTO_ID_CACHE=1" + ;; *) INDICES="" ;; esac - echo "CREATE TABLE tbl$i(i TINYINT, j INT $INDICES);" > "$DBPATH/cppk_tsr.tbl$i-schema.sql" + echo "CREATE TABLE tbl$i(n text, i TINYINT, j bigint $INDICES) $TABLE_ATTRIBUTES;" > "$DBPATH/cppk_tsr.tbl$i-schema.sql" INNER_QUERY="$INNER_QUERY, (SELECT sum(j) FROM cppk_tsr.tbl$i) as s$i" OUTER_QUERY="$OUTER_QUERY + coalesce(s$i, 0)" for j in $(seq "$CHUNK_COUNT"); do - echo "INSERT INTO tbl$i VALUES ($i,${j}000),($i,${j}001);" > "$DBPATH/cppk_tsr.tbl$i.$j.sql" + echo "INSERT INTO tbl$i VALUES ('$NOISE_COL_VAL',$i,${j}000),('$NOISE_COL_VAL',$i,${j}001);" > "$DBPATH/cppk_tsr.tbl$i.$j.sql" done done PARTIAL_IMPORT_QUERY="SELECT *, $OUTER_QUERY AS s FROM (SELECT $INNER_QUERY) _" @@ -63,35 +81,87 @@ check_cluster_version 4 0 0 'local backend' # Set the failpoint to kill the lightning instance as soon as one table is imported # If checkpoint does work, this should only kill 9 instances of lightnings. SLOWDOWN_FAILPOINTS='github.com/pingcap/tidb/lightning/pkg/importer/SlowDownImport=sleep(250)' -export GO_FAILPOINTS="$SLOWDOWN_FAILPOINTS;github.com/pingcap/tidb/lightning/pkg/importer/FailBeforeIndexEngineImported=return" +# +# run with file checkpoint +# +run_sql 'DROP DATABASE IF EXISTS cppk_tsr' +export GO_FAILPOINTS="github.com/pingcap/tidb/lightning/pkg/importer/FailBeforeIndexEngineImported=return" +set +e +for i in $(seq 5); do + echo "******** with file checkpoint (step $i/5) ********" + run_lightning -d "$DBPATH" --enable-checkpoint=1 --config $CUR/config-file.toml 2> /dev/null + [ $? -ne 0 ] || exit 1 +done +set -e +export GO_FAILPOINTS="" +run_lightning -d "$DBPATH" --enable-checkpoint=1 --config $CUR/config-file.toml +run_sql "show table cppk_tsr.tbl1 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +run_sql "show table cppk_tsr.tbl2 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 63205" +run_sql "show table cppk_tsr.tbl7 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +run_sql "show table cppk_tsr.tbl8 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +run_sql "show table cppk_tsr.tbl9 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +check_contains "NEXT_GLOBAL_ROW_ID: 63205" + +# +# run with mysql checkpoint +# # Start importing the tables. run_sql 'DROP DATABASE IF EXISTS cppk_tsr' run_sql 'DROP DATABASE IF EXISTS tidb_lightning_checkpoint_test_cppk' run_sql 'DROP DATABASE IF EXISTS `tidb_lightning_checkpoint_test_cppk.1357924680.bak`' +export GO_FAILPOINTS="github.com/pingcap/tidb/lightning/pkg/importer/FailBeforeIndexEngineImported=return" # panic after saving index engine checkpoint status before saving table checkpoint status set +e for i in $(seq "$TABLE_COUNT"); do - echo "******** Importing Table Now (step $i/$TABLE_COUNT) ********" + echo "******** with mysql checkpoint (step $i/$TABLE_COUNT) ********" run_lightning -d "$DBPATH" --enable-checkpoint=1 2> /dev/null [ $? -ne 0 ] || exit 1 done set -e +run_sql "select concat(table_name, '|', auto_rand_base, '|', auto_incr_base, '|', auto_row_id_base) s from tidb_lightning_checkpoint_test_cppk.table_v10" +# auto-incr & auto-row-id share the same allocator, below too +check_contains 's: `cppk_tsr`.`tbl1`|0|50001|50001' +# use the estimated value of auto-row-id +check_contains 's: `cppk_tsr`.`tbl2`|0|63204|63204' +# no auto id +check_contains 's: `cppk_tsr`.`tbl4`|0|0|0' +check_contains 's: `cppk_tsr`.`tbl7`|50001|0|0' +check_contains 's: `cppk_tsr`.`tbl8`|0|50001|0' +check_contains 's: `cppk_tsr`.`tbl9`|0|50001|63204' + # at the failure of last table, all data engines are imported so finished == total grep "print lightning status" "$TEST_DIR/lightning.log" | grep -q "equal=true" -export GO_FAILPOINTS="$SLOWDOWN_FAILPOINTS" +export GO_FAILPOINTS="" # After everything is done, there should be no longer new calls to ImportEngine # (and thus `kill_lightning_after_one_import` will spare this final check) echo "******** Verify checkpoint no-op ********" run_lightning -d "$DBPATH" --enable-checkpoint=1 run_sql "$PARTIAL_IMPORT_QUERY" check_contains "s: $(( (1000 * $CHUNK_COUNT + 1001) * $CHUNK_COUNT * $TABLE_COUNT ))" -run_sql 'SELECT count(*) FROM `tidb_lightning_checkpoint_test_cppk`.table_v9 WHERE status >= 200' +run_sql 'SELECT count(*) FROM `tidb_lightning_checkpoint_test_cppk`.table_v10 WHERE status >= 200' check_contains "count(*): $TABLE_COUNT" +run_sql "show table cppk_tsr.tbl1 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +run_sql "show table cppk_tsr.tbl2 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 63205" +run_sql "show table cppk_tsr.tbl7 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +run_sql "show table cppk_tsr.tbl8 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +run_sql "show table cppk_tsr.tbl9 next_row_id" +check_contains "NEXT_GLOBAL_ROW_ID: 50002" +check_contains "NEXT_GLOBAL_ROW_ID: 63205" + # Start importing the tables. run_sql 'DROP DATABASE IF EXISTS cppk_tsr' run_sql 'DROP DATABASE IF EXISTS tidb_lightning_checkpoint_test_cppk' @@ -113,5 +183,5 @@ echo "******** Verify checkpoint no-op ********" run_lightning -d "$DBPATH" --enable-checkpoint=1 run_sql "$PARTIAL_IMPORT_QUERY" check_contains "s: $(( (1000 * $CHUNK_COUNT + 1001) * $CHUNK_COUNT * $TABLE_COUNT ))" -run_sql 'SELECT count(*) FROM `tidb_lightning_checkpoint_test_cppk`.table_v9 WHERE status >= 200' +run_sql 'SELECT count(*) FROM `tidb_lightning_checkpoint_test_cppk`.table_v10 WHERE status >= 200' check_contains "count(*): $TABLE_COUNT" diff --git a/lightning/tests/lightning_checkpoint_chunks/run.sh b/lightning/tests/lightning_checkpoint_chunks/run.sh index 582dd80e1daaf..d80cbdfab2d1d 100755 --- a/lightning/tests/lightning_checkpoint_chunks/run.sh +++ b/lightning/tests/lightning_checkpoint_chunks/run.sh @@ -34,7 +34,7 @@ verify_checkpoint_noop() { run_sql 'SELECT count(i), sum(i) FROM cpch_tsr.tbl;' check_contains "count(i): $(($ROW_COUNT*$CHUNK_COUNT))" check_contains "sum(i): $(( $ROW_COUNT*$CHUNK_COUNT*(($CHUNK_COUNT+2)*$ROW_COUNT + 1)/2 ))" - run_sql 'SELECT count(*) FROM `tidb_lightning_checkpoint_test_cpch.1234567890.bak`.table_v9 WHERE status >= 200' + run_sql 'SELECT count(*) FROM `tidb_lightning_checkpoint_test_cpch.1234567890.bak`.table_v10 WHERE status >= 200' check_contains "count(*): 1" } diff --git a/lightning/tests/lightning_config_max_error/run.sh b/lightning/tests/lightning_config_max_error/run.sh index d0464245a573e..74419dddae718 100755 --- a/lightning/tests/lightning_config_max_error/run.sh +++ b/lightning/tests/lightning_config_max_error/run.sh @@ -28,7 +28,7 @@ duplicated_row_count=$(( ${total_row_count} - ${uniq_row_count} )) remaining_row_count=$(( ${uniq_row_count} + ${duplicated_row_count}/2 )) run_sql 'DROP TABLE IF EXISTS mytest.testtbl' -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v3' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v4' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' stderr_file="/tmp/${TEST_NAME}.stderr" @@ -47,7 +47,7 @@ EOF cat "${stderr_file}" grep -q "${err_msg}" "${stderr_file}" -run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_error_v3' +run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_error_v4' # Although conflict error number exceeds the max-error limit, # all the conflict errors are recorded, # because recording of conflict errors are executed batch by batch (batch size 1024), @@ -57,12 +57,12 @@ check_contains "COUNT(*): ${duplicated_row_count}" # import a second time run_sql 'DROP TABLE IF EXISTS mytest.testtbl' -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v3' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v4' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' run_lightning --backend local --config "${mydir}/normal_config.toml" -run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_error_v3' +run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_error_v4' check_contains "COUNT(*): ${duplicated_row_count}" # Check remaining records in the target table @@ -72,12 +72,12 @@ check_contains "COUNT(*): ${remaining_row_count}" # import a third time run_sql 'DROP TABLE IF EXISTS mytest.testtbl' -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v3' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v4' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' run_lightning --backend local --config "${mydir}/normal_config_old_style.toml" -run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_error_v3' +run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_error_v4' check_contains "COUNT(*): ${duplicated_row_count}" # Check remaining records in the target table @@ -85,27 +85,27 @@ run_sql 'SELECT COUNT(*) FROM mytest.testtbl' check_contains "COUNT(*): ${remaining_row_count}" # import a fourth time -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_records' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_records_v2' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' ! run_lightning --backend local --config "${mydir}/ignore_config.toml" [ $? -eq 0 ] tail -n 10 $TEST_DIR/lightning.log | grep "ERROR" | tail -n 1 | grep -Fq "[Lightning:Config:ErrInvalidConfig]conflict.strategy cannot be set to \\\"ignore\\\" when use tikv-importer.backend = \\\"local\\\"" -# Check tidb backend record duplicate entry in conflict_records table -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_records' +# Check tidb backend record duplicate entry in conflict_records_v2 table +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_records_v2' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' run_lightning --backend tidb --config "${mydir}/tidb.toml" -run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_records' +run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_records_v2' check_contains "COUNT(*): 15" -run_sql 'SELECT * FROM lightning_task_info.conflict_records WHERE offset = 149' +run_sql 'SELECT * FROM lightning_task_info.conflict_records_v2 WHERE offset = 149' check_contains "error: Error 1062 (23000): Duplicate entry '5' for key 'testtbl.PRIMARY'" check_contains "row_data: ('5','bbb05')" -# Check max-error-record can limit the size of conflict_records table +# Check max-error-record can limit the size of conflict_records_v2 table run_sql 'DROP DATABASE IF EXISTS lightning_task_info' run_sql 'DROP DATABASE IF EXISTS mytest' run_lightning --backend tidb --config "${mydir}/tidb-limit-record.toml" 2>&1 | grep "\`lightning_task_info\`.\`conflict_view\`" | grep -q "5" -run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_records' +run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_records_v2' check_contains "COUNT(*): 5" # Check conflict.threshold @@ -121,8 +121,8 @@ run_sql 'DROP DATABASE IF EXISTS mytest' rm "${TEST_DIR}/lightning.log" run_lightning --backend tidb --config "${mydir}/tidb-error.toml" 2>&1 | grep -q "Error 1062 (23000): Duplicate entry '1' for key 'testtbl.PRIMARY'" check_contains "Error 1062 (23000): Duplicate entry '1' for key 'testtbl.PRIMARY'" "${TEST_DIR}/lightning.log" -run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_records' +run_sql 'SELECT COUNT(*) FROM lightning_task_info.conflict_records_v2' check_contains "COUNT(*): 1" -run_sql 'SELECT * FROM lightning_task_info.conflict_records' +run_sql 'SELECT * FROM lightning_task_info.conflict_records_v2' check_contains "error: Error 1062 (23000): Duplicate entry '1' for key 'testtbl.PRIMARY'" check_contains "row_data: ('1','bbb01')" diff --git a/lightning/tests/lightning_duplicate_detection/run.sh b/lightning/tests/lightning_duplicate_detection/run.sh index ec9effd73a82d..46f8ab497d16a 100644 --- a/lightning/tests/lightning_duplicate_detection/run.sh +++ b/lightning/tests/lightning_duplicate_detection/run.sh @@ -53,7 +53,7 @@ verify_detected_rows() { done done mapfile -t expect_rows < <(for row in "${expect_rows[@]}"; do echo "$row"; done | sort | uniq) - mapfile -t actual_rows < <(run_sql "SELECT row_data FROM lightning_task_info.conflict_error_v3 WHERE table_name = \"\`dup_detect\`.\`${table}\`\"" | + mapfile -t actual_rows < <(run_sql "SELECT row_data FROM lightning_task_info.conflict_error_v4 WHERE table_name = \"\`dup_detect\`.\`${table}\`\"" | grep "row_data:" | sed 's/^.*(//' | sed 's/).*$//' | sed 's/"//g' | sed 's/, */,/g' | sort | uniq) equal=0 if [ "${#actual_rows[@]}" = "${#expect_rows[@]}" ]; then diff --git a/lightning/tests/lightning_duplicate_detection_new/run.sh b/lightning/tests/lightning_duplicate_detection_new/run.sh index 902d0a6b08271..8d4d6e8ca34ec 100755 --- a/lightning/tests/lightning_duplicate_detection_new/run.sh +++ b/lightning/tests/lightning_duplicate_detection_new/run.sh @@ -40,14 +40,14 @@ if [ "$expected_rows" != "$actual_rows" ] || [ "$expected_pks" != "$actual_pks" echo "local backend replace strategy result is not equal to tidb backend" exit 1 fi -run_sql "SELECT count(*) FROM lightning_task_info.conflict_records" +run_sql "SELECT count(*) FROM lightning_task_info.conflict_records_v2" check_contains "count(*): 227" -run_sql "SELECT count(*) FROM lightning_task_info.conflict_records WHERE error = ''" +run_sql "SELECT count(*) FROM lightning_task_info.conflict_records_v2 WHERE error = ''" check_contains "count(*): 0" -run_sql "SELECT * FROM lightning_task_info.conflict_records WHERE row_id = 12" +run_sql "SELECT * FROM lightning_task_info.conflict_records_v2 WHERE row_id = 12" check_contains "(171,'yRxZE',9201592769833450947,'xs3d',5,4,283270321)" check_contains "[kv:1062]Duplicate entry '171' for key 'dup_detect.PRIMARY'" -run_sql "SELECT * FROM lightning_task_info.conflict_records WHERE row_id = 1" +run_sql "SELECT * FROM lightning_task_info.conflict_records_v2 WHERE row_id = 1" check_contains "(87,'nEoKu',7836621565948506759,'y6',48,0,177543185)" check_contains "[kv:1062]Duplicate entry '0-177543185' for key 'dup_detect.uniq_col6_col7'" @@ -61,11 +61,11 @@ expected_pks=$(run_sql "SELECT group_concat(col1 ORDER BY col1) AS pks FROM test cleanup run_lightning --backend local --config "$CUR/local-error.toml" --log-file "$LOG_FILE" 2>&1 | grep -q "duplicate key in table \`test\`.\`dup_detect\` caused by index .*, but because checkpoint is off we can't have more details" grep -q "duplicate key in table \`test\`.\`dup_detect\` caused by index .*, but because checkpoint is off we can't have more details" "$LOG_FILE" -run_sql "SELECT * FROM lightning_task_info.conflict_records" +run_sql "SELECT * FROM lightning_task_info.conflict_records_v2" check_contains "error: duplicate key in table \`test\`.\`dup_detect\`" run_lightning --backend local --config "$CUR/local-error.toml" --log-file "$LOG_FILE" --enable-checkpoint=1 2>&1 | grep -q "duplicate entry for key 'uniq_col6_col7', a pair of conflicting rows are (row 1 counting from offset 0 in file test.dup_detect.1.sql, row 101 counting from offset 0 in file test.dup_detect.4.sql)" grep -q "duplicate entry for key 'uniq_col6_col7', a pair of conflicting rows are (row 1 counting from offset 0 in file test.dup_detect.1.sql, row 101 counting from offset 0 in file test.dup_detect.4.sql)" "$LOG_FILE" -run_sql "SELECT * FROM lightning_task_info.conflict_records" +run_sql "SELECT * FROM lightning_task_info.conflict_records_v2" check_contains "error: duplicate entry for key 'uniq_col6_col7', a pair of conflicting rows are" check_contains "restore table \`test\`.\`dup_detect\` failed: duplicate entry for key 'uniq_col6_col7', a pair of conflicting rows are (row 1 counting from offset 0 in file test.dup_detect.1.sql, row 101 counting from offset 0 in file test.dup_detect.4.sql)" "$LOG_FILE" run_lightning_ctl --enable-checkpoint=1 --backend local --config "$CUR/local-error.toml" --checkpoint-error-destroy="\`test\`.\`dup_detect\`" @@ -89,6 +89,6 @@ run_lightning_ctl --enable-checkpoint=1 --backend local --config "$CUR/local-rep run_lightning --enable-checkpoint=1 --backend local --config "$CUR/local-replace.toml" --log-file "$LOG_FILE" run_sql "SELECT count(*) FROM test.dup_detect" check_contains "count(*): 174" -run_sql "SELECT count(*) FROM lightning_task_info.conflict_records" +run_sql "SELECT count(*) FROM lightning_task_info.conflict_records_v2" check_contains "count(*): 227" check_not_contains "duplicate detection start" "$LOG_FILE" diff --git a/lightning/tests/lightning_duplicate_resolution_error/run.sh b/lightning/tests/lightning_duplicate_resolution_error/run.sh index bd2978802923f..f468fff3ce9c0 100644 --- a/lightning/tests/lightning_duplicate_resolution_error/run.sh +++ b/lightning/tests/lightning_duplicate_resolution_error/run.sh @@ -21,7 +21,7 @@ check_cluster_version 5 2 0 'duplicate detection' || exit 0 mydir=$(dirname "${BASH_SOURCE[0]}") run_sql 'DROP TABLE IF EXISTS dup_resolve.a' -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v3' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v4' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' ! run_lightning --backend local --config "${mydir}/config.toml" diff --git a/lightning/tests/lightning_duplicate_resolution_error_pk_multiple_files/run.sh b/lightning/tests/lightning_duplicate_resolution_error_pk_multiple_files/run.sh index e6988d22b9699..690ddbd18a871 100644 --- a/lightning/tests/lightning_duplicate_resolution_error_pk_multiple_files/run.sh +++ b/lightning/tests/lightning_duplicate_resolution_error_pk_multiple_files/run.sh @@ -21,7 +21,7 @@ check_cluster_version 5 2 0 'duplicate detection' || exit 0 mydir=$(dirname "${BASH_SOURCE[0]}") run_sql 'DROP TABLE IF EXISTS dup_resolve.a' -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v3' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v4' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' ! run_lightning --backend local --config "${mydir}/config.toml" diff --git a/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files/run.sh b/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files/run.sh index e346b3961977b..5ef374f9b1dab 100644 --- a/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files/run.sh +++ b/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files/run.sh @@ -21,7 +21,7 @@ check_cluster_version 5 2 0 'duplicate detection' || exit 0 mydir=$(dirname "${BASH_SOURCE[0]}") run_sql 'DROP TABLE IF EXISTS dup_resolve.a' -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v3' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v4' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' ! run_lightning --backend local --config "${mydir}/config.toml" diff --git a/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files_multicol_index/run.sh b/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files_multicol_index/run.sh index 02b441d5ca058..b433e3c225510 100644 --- a/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files_multicol_index/run.sh +++ b/lightning/tests/lightning_duplicate_resolution_error_uk_multiple_files_multicol_index/run.sh @@ -21,7 +21,7 @@ check_cluster_version 5 2 0 'duplicate detection' || exit 0 mydir=$(dirname "${BASH_SOURCE[0]}") run_sql 'DROP TABLE IF EXISTS dup_resolve.a' -run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v3' +run_sql 'DROP TABLE IF EXISTS lightning_task_info.conflict_error_v4' run_sql 'DROP VIEW IF EXISTS lightning_task_info.conflict_view' ! run_lightning --backend local --config "${mydir}/config.toml" diff --git a/lightning/tests/lightning_duplicate_resolution_merge/run.sh b/lightning/tests/lightning_duplicate_resolution_merge/run.sh index 9060067362876..2891c6ab3bc03 100644 --- a/lightning/tests/lightning_duplicate_resolution_merge/run.sh +++ b/lightning/tests/lightning_duplicate_resolution_merge/run.sh @@ -42,10 +42,10 @@ run_sql 'admin check table dup_resolve.a' run_sql 'select count(*) from dup_resolve.a' check_contains 'count(*): 10' -run_sql 'select count(*) from lightning_task_info.conflict_records' +run_sql 'select count(*) from lightning_task_info.conflict_records_v2' check_contains 'count(*): 16' -run_sql 'select count(*) from lightning_task_info.conflict_error_v3' +run_sql 'select count(*) from lightning_task_info.conflict_error_v4' check_contains 'count(*): 4' run_sql 'select count(*) from lightning_task_info.conflict_view' diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.a-schema.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.a-schema.sql index a67f4ec1b0cf4..274e117b91171 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.a-schema.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.a-schema.sql @@ -1 +1 @@ -create table a (a int, b varchar(16), KEY key_b (`b`)) partition by hash(a) partitions 5; +create table a (a int, b varchar(16), c int, KEY key_b (`b`), unique index key_c(c) global) partition by hash(a) partitions 5; diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.a.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.a.sql index 5961519a68fd6..547bef00f1ff5 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.a.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.a.sql @@ -1,10 +1,10 @@ insert into a values - (268435456, '268435456'), - (1, 'adgagdadgagag'), - (262144, 'gadgagaha'), - (32, '32'), - (4, 'hahaha'), - (65536, 'luck dog'), - (8388608, 'heyhey'), - (0, '999'); + (268435456, '268435456', 268435456), + (1, 'adgagdadgagag', 1), + (262144, 'gadgagaha', 262144), + (32, '32', 32), + (4, 'hahaha', 4), + (65536, 'luck dog', 65536), + (8388608, 'heyhey', 8388608), + (0, '999', 0); diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist-schema.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist-schema.sql index 557564b9daeee..f8e01f41d78b1 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist-schema.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist-schema.sql @@ -1 +1 @@ -create table `defaultlist` (a int, b varchar(16), KEY key_b (`b`)) partition by list(a) (partition p1 values in (1,4,8),partition p2 values in (32,default), partition p3 values in (262144,65536)); +create table `defaultlist` (a int, b varchar(16), c int, KEY key_b (`b`), unique index key_c(`c`) global) partition by list(a) (partition p1 values in (1,4,8),partition p2 values in (32,default), partition p3 values in (262144,65536)); diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist.sql index 639941b98535d..69dd8d9cc05c4 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.defaultlist.sql @@ -1,10 +1,9 @@ insert into defaultlist values - (268435456, '268435456'), - (1, 'adgagdadgagag'), - (262144, 'gadgagaha'), - (32, '32'), - (4, 'hahaha'), - (65536, 'luck dog'), - (8388608, 'heyhey'), - (0, '999'); - + (268435456, '268435456', 268435456), + (1, 'adgagdadgagag', 1), + (262144, 'gadgagaha', 262144), + (32, '32', 32), + (4, 'hahaha', 4), + (65536, 'luck dog', 65536), + (8388608, 'heyhey', 8388608), + (0, '999', 0); diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.list-schema.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.list-schema.sql index e12be337ca781..dfd046ae2521a 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.list-schema.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.list-schema.sql @@ -1 +1 @@ -create table `list` (a int, b varchar(16), KEY key_b (`b`)) partition by list(a) (partition p1 values in (1,4,8),partition p2 values in (32,8388608,268435456), partition p3 values in (262144,0,65536)); +create table `list` (a int, b varchar(16), c int, KEY key_b (`b`), unique index key_c(`c`) global) partition by list(a) (partition p1 values in (1,4,8),partition p2 values in (32,8388608,268435456), partition p3 values in (262144,0,65536)); diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.list.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.list.sql index 902d3309b724f..308b8f855ff64 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.list.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.list.sql @@ -1,10 +1,10 @@ insert into list values - (268435456, '268435456'), - (1, 'adgagdadgagag'), - (262144, 'gadgagaha'), - (32, '32'), - (4, 'hahaha'), - (65536, 'luck dog'), - (8388608, 'heyhey'), - (0, '999'); + (268435456, '268435456', 268435456), + (1, 'adgagdadgagag', 1), + (262144, 'gadgagaha', 262144), + (32, '32', 32), + (4, 'hahaha', 4), + (65536, 'luck dog', 65536), + (8388608, 'heyhey', 8388608), + (0, '999', 0); diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.range-schema.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.range-schema.sql index df01163252b60..0bbc1c03dfb7b 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.range-schema.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.range-schema.sql @@ -1 +1 @@ -create table `range` (a int, b varchar(16), KEY key_b (`b`)) partition by range(a) (partition pNeg values less than (0), partition pMax values less than (maxvalue)); +create table `range` (a int, b varchar(16), c int, KEY key_b (`b`), unique index key_c(`c`) global) partition by range(a) (partition pNeg values less than (0), partition pMax values less than (maxvalue)); diff --git a/lightning/tests/lightning_partitioned-table/data/partitioned.range.sql b/lightning/tests/lightning_partitioned-table/data/partitioned.range.sql index de0901331a0a0..ec71166a505cc 100644 --- a/lightning/tests/lightning_partitioned-table/data/partitioned.range.sql +++ b/lightning/tests/lightning_partitioned-table/data/partitioned.range.sql @@ -1,10 +1,10 @@ insert into range values - (268435456, '268435456'), - (1, 'adgagdadgagag'), - (262144, 'gadgagaha'), - (32, '32'), - (4, 'hahaha'), - (65536, 'luck dog'), - (8388608, 'heyhey'), - (0, '999'); + (268435456, '268435456', 268435456), + (1, 'adgagdadgagag', 1), + (262144, 'gadgagaha', 262144), + (32, '32', 32), + (4, 'hahaha', 4), + (65536, 'luck dog', 65536), + (8388608, 'heyhey', 8388608), + (0, '999', 0); diff --git a/lightning/tests/lightning_partitioned-table/run.sh b/lightning/tests/lightning_partitioned-table/run.sh index 3dff86f23346b..82bcb888d31c0 100755 --- a/lightning/tests/lightning_partitioned-table/run.sh +++ b/lightning/tests/lightning_partitioned-table/run.sh @@ -31,6 +31,10 @@ for BACKEND in tidb local; do check_contains 'count(1): 8' check_contains 'sum(a): 277151781' + run_sql 'SELECT count(1), sum(c) FROM partitioned.a use index (key_c);' + check_contains 'count(1): 8' + check_contains 'sum(c): 277151781' + run_sql "SHOW TABLE STATUS FROM partitioned WHERE name = 'a';" check_contains 'Create_options: partitioned' @@ -38,6 +42,10 @@ for BACKEND in tidb local; do check_contains 'count(1): 8' check_contains 'sum(a): 277151781' + run_sql 'SELECT count(1), sum(c) FROM partitioned.range use index (key_c);' + check_contains 'count(1): 8' + check_contains 'sum(c): 277151781' + run_sql "SHOW TABLE STATUS FROM partitioned WHERE name = 'range';" check_contains 'Create_options: partitioned' @@ -45,6 +53,10 @@ for BACKEND in tidb local; do check_contains 'count(1): 8' check_contains 'sum(a): 277151781' + run_sql 'SELECT count(1), sum(c) FROM partitioned.list use index (key_c);' + check_contains 'count(1): 8' + check_contains 'sum(c): 277151781' + run_sql "SHOW TABLE STATUS FROM partitioned WHERE name = 'list';" check_contains 'Create_options: partitioned' @@ -52,6 +64,10 @@ for BACKEND in tidb local; do check_contains 'count(1): 8' check_contains 'sum(a): 277151781' + run_sql 'SELECT count(1), sum(c) FROM partitioned.defaultlist use index (key_c);' + check_contains 'count(1): 8' + check_contains 'sum(c): 277151781' + run_sql "SHOW TABLE STATUS FROM partitioned WHERE name = 'defaultlist';" check_contains 'Create_options: partitioned' done diff --git a/lightning/tests/lightning_sqlmode/run.sh b/lightning/tests/lightning_sqlmode/run.sh index e12e409b1b909..5c77f690d9e26 100755 --- a/lightning/tests/lightning_sqlmode/run.sh +++ b/lightning/tests/lightning_sqlmode/run.sh @@ -61,28 +61,28 @@ run_sql 'SELECT min(id), max(id) FROM sqlmodedb.t' check_contains 'min(id): 4' check_contains 'max(id): 4' -run_sql 'SELECT count(*) FROM sqlmodedb_lightning_task_info.type_error_v1' +run_sql 'SELECT count(*) FROM sqlmodedb_lightning_task_info.type_error_v2' check_contains 'count(*): 4' -run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v1 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(1,%";' +run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v2 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(1,%";' check_contains 'path: sqlmodedb.t.1.sql' check_contains 'offset: 53' check_contains 'cannot convert datum from unsigned bigint to type timestamp.' check_contains "row_data: (1,9,128,'too long','x,y,z')" -run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v1 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(2,%";' +run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v2 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(2,%";' check_contains 'path: sqlmodedb.t.1.sql' check_contains 'offset: 100' check_contains "Incorrect timestamp value: '2000-00-00 00:00:00'" check_contains "row_data: (2,'2000-00-00 00:00:00',-99999,'🤩',3)" -run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v1 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(3,%";' +run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v2 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(3,%";' check_contains 'path: sqlmodedb.t.1.sql' check_contains 'offset: 149' check_contains "Incorrect timestamp value: '9999-12-31 23:59:59'" check_contains "row_data: (3,'9999-12-31 23:59:59','NaN',x'99','x+y')" -run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v1 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(5,%";' +run_sql 'SELECT path, `offset`, error, row_data FROM sqlmodedb_lightning_task_info.type_error_v2 WHERE table_name = "`sqlmodedb`.`t`" AND row_data LIKE "(5,%";' check_contains 'path: sqlmodedb.t.1.sql' check_contains 'offset: 237' check_contains "Column 'a' cannot be null" diff --git a/lightning/tests/run_local_sst_test.sh b/lightning/tests/run_local_sst_test.sh new file mode 100755 index 0000000000000..9c585d5ea38c1 --- /dev/null +++ b/lightning/tests/run_local_sst_test.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# +# Copyright 2019 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. + +# currently the script is WIP and not used in the CI. + +set -eu +CUR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +export UTILS_DIR="$CUR/../../tests/_utils" +export PATH="$PATH:$CUR/../../bin:$UTILS_DIR" +export TEST_DIR=/tmp/lightning_test +export COV_DIR="/tmp/group_cover" +mkdir -p $COV_DIR || true +export TIKV_CONFIG="$CUR/config/tikv-no-tls.toml" +export PD_CONFIG="$CUR/config/pd-no-tls.toml" +export TESTS_ROOT="$CUR" +source $UTILS_DIR/run_services + +export TIKV_COUNT=1 +export PD_HTTP_PROTO="http" + +# Create COV_DIR if not exists +if [ -d "$COV_DIR" ]; then + mkdir -p $COV_DIR +fi + +# Reset TEST_DIR +rm -rf $TEST_DIR && mkdir -p $TEST_DIR + +trap stop_services EXIT +start_services $@ --no-tiflash --no-tidb + +rm /tmp/*.sst || true + +# change to project root +cd $CUR/../.. +go test ./pkg/lightning/tikv -tikv-write-test -test.v -test.run TestIntegrationTest +cp /tmp/lightning_test/tikv1/import/*_write_*.sst /tmp/tikv-write-cf.sst + +for prefix in go tikv; do + bin/tikv-ctl sst_dump --file=/tmp/$prefix-write-cf.sst --command=scan --output_hex --show_properties \ + > /tmp/$prefix-write-cf-scan.txt + awk " + /from \[\] to \[\]/ { f1 = 1; next } + /Table Properties:/ { f1 = 0; f2 = 1; next } + f1 { print > \"/tmp/$prefix-write-cf-data.txt\" } + f2 { print > \"/tmp/$prefix-write-cf-properties.txt\" } + " /tmp/$prefix-write-cf-scan.txt + # filter some properties that are not deterministic by logical content + grep -v -F -e "data block size" -e "index block size" -e "entries for filter" -e "(estimated) table size" \ + -e "DB identity" -e "DB session identity" -e "DB host id" -e "original file number" -e "unique ID" \ + /tmp/$prefix-write-cf-properties.txt > /tmp/$prefix-write-cf-properties.txt.filtered +done + +diff /tmp/tikv-write-cf-data.txt /tmp/go-write-cf-data.txt +diff /tmp/tikv-write-cf-properties.txt.filtered /tmp/go-write-cf-properties.txt.filtered + +# clean tikv-ctl temporary files +rm -rf ctl-engine-info-log || true diff --git a/lightning/tidb-lightning.toml b/lightning/tidb-lightning.toml index df7c8842e7f59..bb5530ad99a30 100644 --- a/lightning/tidb-lightning.toml +++ b/lightning/tidb-lightning.toml @@ -103,7 +103,7 @@ strategy = "" # precheck-conflict-before-import = false # Controls the maximum number of conflict errors that can be handled when strategy is "replace" or "ignore". You can set it only when the strategy is "replace" or "ignore". The default value is 10000. If you set a value larger than 10000, the import process might experience performance degradation. # threshold = 10000 -# Controls the maximum number of records in the `conflict_records` table. The default value is 10000. +# Controls the maximum number of records in the `conflict_records_v2` table. The default value is 10000. # Starting from v8.1.0, there is no need to configure `max-record-rows` manually, because TiDB Lightning automatically assigns the value of `max-record-rows` with the value of `threshold`, regardless of the user input. `max-record-rows` will be deprecated in a future release. # In the physical import mode, if the strategy is "replace", the conflict records that are overwritten are recorded. # In the logical import mode, if the strategy is "ignore", the conflict records that are ignored are recorded; if the strategy is "replace", the conflict records are not recorded. diff --git a/pkg/autoid_service/autoid.go b/pkg/autoid_service/autoid.go index 005d6783b9739..b5435e055f0e7 100644 --- a/pkg/autoid_service/autoid.go +++ b/pkg/autoid_service/autoid.go @@ -379,8 +379,8 @@ func MockForTest(store kv.Storage) autoid.AutoIDAllocClient { // Close closes the Service and clean up resource. func (s *Service) Close() { - if s.leaderShip != nil && s.leaderShip.IsOwner() { - s.leaderShip.Cancel() + if s.leaderShip != nil { + s.leaderShip.Close() } } diff --git a/pkg/bindinfo/BUILD.bazel b/pkg/bindinfo/BUILD.bazel index 55b8c67a178c9..fc81b0958b6b9 100644 --- a/pkg/bindinfo/BUILD.bazel +++ b/pkg/bindinfo/BUILD.bazel @@ -45,6 +45,7 @@ go_library( "//pkg/util/table-filter", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pkg_errors//:errors", "@org_golang_x_sync//singleflight", "@org_uber_go_zap//:zap", ], diff --git a/pkg/bindinfo/binding.go b/pkg/bindinfo/binding.go index 447e80dd8f778..8f3586f676175 100644 --- a/pkg/bindinfo/binding.go +++ b/pkg/bindinfo/binding.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/hint" + "github.com/pkg/errors" ) const ( @@ -130,7 +131,13 @@ func HasAvailableBinding(br Bindings) bool { // prepareHints builds ID and Hint for Bindings. If sctx is not nil, we check if // the BindSQL is still valid. -func prepareHints(sctx sessionctx.Context, binding *Binding) error { +func prepareHints(sctx sessionctx.Context, binding *Binding) (rerr error) { + defer func() { + if r := recover(); r != nil { + rerr = errors.Errorf("panic when preparing hints for binding %v, panic: %v", binding.BindSQL, r) + } + }() + p := parser.New() if (binding.Hint != nil && binding.ID != "") || binding.Status == deleted { return nil diff --git a/pkg/bindinfo/session_handle_test.go b/pkg/bindinfo/session_handle_test.go index 5d5bc3d7bb1fa..61377ceee62f4 100644 --- a/pkg/bindinfo/session_handle_test.go +++ b/pkg/bindinfo/session_handle_test.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "strconv" + "strings" "testing" "time" @@ -336,14 +337,10 @@ func TestIssue19836(t *testing.T) { tk.MustExec("set @a=1;") tk.MustExec("set @b=2;") tk.MustExec("EXECUTE stmt USING @a, @b;") - explainResult := testkit.Rows( - "Limit_8 2.00 0 root time:0s, loops:0 offset:1, count:2 N/A N/A", - "└─TableReader_13 3.00 0 root time:0s, loops:0 data:Limit_12 N/A N/A", - " └─Limit_12 3.00 0 cop[tikv] offset:0, count:3 N/A N/A", - " └─Selection_11 3.00 0 cop[tikv] eq(test.t.a, 40) N/A N/A", - " └─TableFullScan_10 3000.00 0 cop[tikv] table:t keep order:false, stats:pseudo N/A N/A", - ) - tk.MustQuery("explain for connection " + strconv.FormatUint(tk.Session().ShowProcess().ID, 10)).Check(explainResult) + result := tk.MustQuery("explain for connection " + strconv.FormatUint(tk.Session().ShowProcess().ID, 10)).String() + // Don't check the whole output here, since the explain for connection output contains execution time, which is not fixed + // after we including open/close time in it. + require.True(t, strings.Contains(result, "TableFullScan")) } func TestDropSingleBindings(t *testing.T) { diff --git a/pkg/config/BUILD.bazel b/pkg/config/BUILD.bazel index f12196ecc9721..c4387914a9036 100644 --- a/pkg/config/BUILD.bazel +++ b/pkg/config/BUILD.bazel @@ -6,6 +6,7 @@ go_library( "config.go", "config_util.go", "const.go", + "store.go", ], importpath = "github.com/pingcap/tidb/pkg/config", visibility = ["//visibility:public"], @@ -33,11 +34,12 @@ go_test( "config_test.go", "config_util_test.go", "main_test.go", + "store_test.go", ], data = glob(["**"]), embed = [":config"], flaky = True, - shard_count = 25, + shard_count = 26, deps = [ "//pkg/testkit/testsetup", "//pkg/util/logutil", diff --git a/pkg/config/config.go b/pkg/config/config.go index 262fd24d43b56..3df1ac5cefc36 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -105,11 +105,6 @@ const ( // Valid config maps var ( - ValidStorage = map[string]bool{ - "mocktikv": true, - "tikv": true, - "unistore": true, - } // CheckTableBeforeDrop enable to execute `admin check table` before `drop table`. CheckTableBeforeDrop = false // checkBeforeDropLDFlag is a go build flag. @@ -175,18 +170,18 @@ var ( // Config contains configuration options. type Config struct { - Host string `toml:"host" json:"host"` - AdvertiseAddress string `toml:"advertise-address" json:"advertise-address"` - Port uint `toml:"port" json:"port"` - Cors string `toml:"cors" json:"cors"` - Store string `toml:"store" json:"store"` - Path string `toml:"path" json:"path"` - Socket string `toml:"socket" json:"socket"` - Lease string `toml:"lease" json:"lease"` - SplitTable bool `toml:"split-table" json:"split-table"` - TokenLimit uint `toml:"token-limit" json:"token-limit"` - TempDir string `toml:"temp-dir" json:"temp-dir"` - TempStoragePath string `toml:"tmp-storage-path" json:"tmp-storage-path"` + Host string `toml:"host" json:"host"` + AdvertiseAddress string `toml:"advertise-address" json:"advertise-address"` + Port uint `toml:"port" json:"port"` + Cors string `toml:"cors" json:"cors"` + Store StoreType `toml:"store" json:"store"` + Path string `toml:"path" json:"path"` + Socket string `toml:"socket" json:"socket"` + Lease string `toml:"lease" json:"lease"` + SplitTable bool `toml:"split-table" json:"split-table"` + TokenLimit uint `toml:"token-limit" json:"token-limit"` + TempDir string `toml:"temp-dir" json:"temp-dir"` + TempStoragePath string `toml:"tmp-storage-path" json:"tmp-storage-path"` // TempStorageQuota describe the temporary storage Quota during query exector when TiDBEnableTmpStorageOnOOM is enabled // If the quota exceed the capacity of the TempStoragePath, the tidb-server would exit with fatal error TempStorageQuota int64 `toml:"tmp-storage-quota" json:"tmp-storage-quota"` // Bytes @@ -898,7 +893,7 @@ var defaultConf = Config{ Port: DefPort, Socket: "/tmp/tidb-{Port}.sock", Cors: "", - Store: "unistore", + Store: StoreTypeUniStore, Path: "/tmp/tidb", RunDDL: true, SplitTable: true, @@ -1322,16 +1317,10 @@ func (c *Config) Valid() error { if c.Security.SkipGrantTable && !hasRootPrivilege() { return fmt.Errorf("TiDB run with skip-grant-table need root privilege") } - if !ValidStorage[c.Store] { - nameList := make([]string, 0, len(ValidStorage)) - for k, v := range ValidStorage { - if v { - nameList = append(nameList, k) - } - } - return fmt.Errorf("invalid store=%s, valid storages=%v", c.Store, nameList) + if !c.Store.Valid() { + return fmt.Errorf("invalid store=%s, valid storages=%v", c.Store, StoreTypeList()) } - if c.Store == "mocktikv" && !c.Instance.TiDBEnableDDL.Load() { + if c.Store == StoreTypeMockTiKV && !c.Instance.TiDBEnableDDL.Load() { return fmt.Errorf("can't disable DDL on mocktikv") } if c.MaxIndexLength < DefMaxIndexLength || c.MaxIndexLength > DefMaxOfMaxIndexLength { diff --git a/pkg/config/store.go b/pkg/config/store.go new file mode 100644 index 0000000000000..57294a4dcc063 --- /dev/null +++ b/pkg/config/store.go @@ -0,0 +1,48 @@ +// Copyright 2024 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 config + +// StoreType is the type of storage. +// TODO maybe put it inside pkg/store, but it introduces a cycle import. +type StoreType string + +const ( + // StoreTypeTiKV is TiKV type. the underlying storage engines might be one or + // multiple of TiKV/TiFlash/TiDB, see kv.StoreType for more details. + StoreTypeTiKV StoreType = "tikv" + // StoreTypeUniStore is UniStore type which we implemented using badger, for test only. + StoreTypeUniStore StoreType = "unistore" + // StoreTypeMockTiKV is MockTiKV type which we implemented using goleveldb, for test only. + StoreTypeMockTiKV StoreType = "mocktikv" +) + +// String implements fmt.Stringer interface. +func (t StoreType) String() string { + return string(t) +} + +// Valid returns true if the storage type is valid. +func (t StoreType) Valid() bool { + switch t { + case StoreTypeTiKV, StoreTypeUniStore, StoreTypeMockTiKV: + return true + } + return false +} + +// StoreTypeList returns all valid storage types. +func StoreTypeList() []StoreType { + return []StoreType{StoreTypeTiKV, StoreTypeUniStore, StoreTypeMockTiKV} +} diff --git a/br/pkg/restore/internal/log_split/export_test.go b/pkg/config/store_test.go similarity index 62% rename from br/pkg/restore/internal/log_split/export_test.go rename to pkg/config/store_test.go index bca3eada27bbb..d269873f1c9cc 100644 --- a/br/pkg/restore/internal/log_split/export_test.go +++ b/pkg/config/store_test.go @@ -12,18 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -package logsplit +package config -import restoreutils "github.com/pingcap/tidb/br/pkg/restore/utils" +import ( + "testing" -func NewSplitHelperIteratorForTest(helper *SplitHelper, tableID int64, rule *restoreutils.RewriteRules) *splitHelperIterator { - return &splitHelperIterator{ - tableSplitters: []*rewriteSplitter{ - { - tableID: tableID, - rule: rule, - splitter: helper, - }, - }, + "github.com/stretchr/testify/require" +) + +func TestStoreType(t *testing.T) { + require.Len(t, StoreTypeList(), 3) + for _, tp := range StoreTypeList() { + require.True(t, tp.Valid()) } } diff --git a/pkg/ddl/BUILD.bazel b/pkg/ddl/BUILD.bazel index 2016d1dd5c3f2..f2b64d949cd9e 100644 --- a/pkg/ddl/BUILD.bazel +++ b/pkg/ddl/BUILD.bazel @@ -51,6 +51,7 @@ go_library( "modify_column.go", "multi_schema_change.go", "options.go", + "owner_mgr.go", "partition.go", "placement_policy.go", "reorg.go", @@ -133,6 +134,7 @@ go_library( "//pkg/sessiontxn", "//pkg/statistics", "//pkg/statistics/handle", + "//pkg/store", "//pkg/store/driver/txn", "//pkg/store/helper", "//pkg/table", @@ -251,6 +253,7 @@ go_test( "multi_schema_change_test.go", "mv_index_test.go", "options_test.go", + "owner_mgr_test.go", "partition_test.go", "placement_policy_ddl_test.go", "placement_policy_test.go", @@ -355,7 +358,9 @@ go_test( "@com_github_tikv_client_go_v2//testutils", "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_client_go_v2//util", + "@com_github_tikv_pd_client//http", "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_tests_v3//integration", "@org_golang_google_grpc//:grpc", "@org_golang_x_sync//errgroup", "@org_uber_go_atomic//:atomic", diff --git a/pkg/ddl/add_column.go b/pkg/ddl/add_column.go index e9cdb4296c4de..b246c20685db1 100644 --- a/pkg/ddl/add_column.go +++ b/pkg/ddl/add_column.go @@ -48,6 +48,7 @@ import ( "github.com/pingcap/tidb/pkg/util/collate" "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/hack" + "github.com/pingcap/tidb/pkg/util/intest" "go.uber.org/zap" ) @@ -1225,6 +1226,21 @@ func checkColumnDefaultValue(ctx exprctx.BuildContext, col *table.Column, value } } } + if value != nil && col.GetType() == mysql.TypeBit { + v, ok := value.(string) + if !ok { + return hasDefaultValue, value, types.ErrInvalidDefault.GenWithStackByArgs(col.Name.O) + } + + uintVal, err := types.BinaryLiteral(v).ToInt(ctx.GetEvalCtx().TypeCtx()) + if err != nil { + return hasDefaultValue, value, types.ErrInvalidDefault.GenWithStackByArgs(col.Name.O) + } + intest.Assert(col.GetFlen() > 0 && col.GetFlen() <= 64) + if col.GetFlen() < 64 && uintVal >= 1<<(uint64(col.GetFlen())) { + return hasDefaultValue, value, types.ErrInvalidDefault.GenWithStackByArgs(col.Name.O) + } + } return hasDefaultValue, value, nil } diff --git a/pkg/ddl/attributes_sql_test.go b/pkg/ddl/attributes_sql_test.go index b5215b9b6ef28..8449a1487abc6 100644 --- a/pkg/ddl/attributes_sql_test.go +++ b/pkg/ddl/attributes_sql_test.go @@ -252,7 +252,7 @@ PARTITION BY RANGE (c) ( func TestFlashbackTable(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true, dom.InfoCache()) require.NoError(t, err) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") @@ -310,7 +310,7 @@ PARTITION BY RANGE (c) ( func TestDropTable(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true, dom.InfoCache()) require.NoError(t, err) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") @@ -363,7 +363,7 @@ PARTITION BY RANGE (c) ( func TestCreateWithSameName(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true, dom.InfoCache()) require.NoError(t, err) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") @@ -427,7 +427,7 @@ PARTITION BY RANGE (c) ( func TestPartition(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true, dom.InfoCache()) require.NoError(t, err) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") diff --git a/pkg/ddl/backfilling.go b/pkg/ddl/backfilling.go index bcb80bea944de..abf10591f1cec 100644 --- a/pkg/ddl/backfilling.go +++ b/pkg/ddl/backfilling.go @@ -327,7 +327,7 @@ func (w *backfillWorker) handleBackfillTask(d *ddlCtx, task *reorgBackfillTask, // we will never cancel the job once there is panic in bf.BackfillData. // Because reorgRecordTask may run a long time, // we should check whether this ddl job is still runnable. - err := d.isReorgRunnable(jobID, false) + err := d.isReorgRunnable(d.ctx, false) if err != nil { result.err = err return result @@ -431,8 +431,14 @@ func (w *backfillWorker) run(d *ddlCtx, bf backfiller, job *model.Job) { }) // Change the batch size dynamically. - newBatchCnt := job.ReorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize())) - w.GetCtx().batchCnt = newBatchCnt + currentBatchCnt := w.GetCtx().batchCnt + targetBatchSize := job.ReorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize())) + if targetBatchSize != currentBatchCnt { + w.GetCtx().batchCnt = targetBatchSize + logger.Info("adjust ddl job config success", + zap.Int64("jobID", job.ID), + zap.Int("current batch size", w.GetCtx().batchCnt)) + } result := w.handleBackfillTask(d, task, bf) w.sendResult(result) @@ -671,8 +677,7 @@ func (dc *ddlCtx) runAddIndexInLocalIngestMode( t table.PhysicalTable, reorgInfo *reorgInfo, ) error { - // TODO(tangenta): support adjust worker count dynamically. - if err := dc.isReorgRunnable(reorgInfo.Job.ID, false); err != nil { + if err := dc.isReorgRunnable(ctx, false); err != nil { return errors.Trace(err) } job := reorgInfo.Job @@ -702,8 +707,9 @@ func (dc *ddlCtx) runAddIndexInLocalIngestMode( //nolint: forcetypeassert discovery := dc.store.(tikv.Storage).GetRegionCache().PDClient().GetServiceDiscovery() importConc := job.ReorgMeta.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter())) + maxWriteSpeed := job.ReorgMeta.GetMaxWriteSpeedOrDefault() bcCtx, err := ingest.LitBackCtxMgr.Register( - ctx, job.ID, hasUnique, nil, discovery, job.ReorgMeta.ResourceGroupName, importConc, job.RealStartTS) + ctx, job.ID, hasUnique, nil, discovery, job.ReorgMeta.ResourceGroupName, importConc, maxWriteSpeed, job.RealStartTS) if err != nil { return errors.Trace(err) } @@ -770,7 +776,7 @@ func (dc *ddlCtx) runAddIndexInLocalIngestMode( if err != nil { return err } - err = executeAndClosePipeline(opCtx, pipe) + err = executeAndClosePipeline(opCtx, pipe, job, bcCtx, avgRowSize) if err != nil { err1 := bcCtx.FinishAndUnregisterEngines(ingest.OptCloseEngines) if err1 != nil { @@ -787,12 +793,74 @@ func (dc *ddlCtx) runAddIndexInLocalIngestMode( return bcCtx.FinishAndUnregisterEngines(ingest.OptCleanData | ingest.OptCheckDup) } -func executeAndClosePipeline(ctx *OperatorCtx, pipe *operator.AsyncPipeline) error { +func adjustWorkerCntAndMaxWriteSpeed(ctx context.Context, pipe *operator.AsyncPipeline, job *model.Job, bcCtx ingest.BackendCtx, avgRowSize int) { + opR, opW := pipe.GetLocalIngestModeReaderAndWriter() + if opR == nil || opW == nil { + logutil.DDLIngestLogger().Error("failed to get local ingest mode reader or writer", zap.Int64("jobID", job.ID)) + return + } + reader, readerOk := opR.(*TableScanOperator) + writer, writerOk := opW.(*IndexIngestOperator) + if !readerOk || !writerOk { + logutil.DDLIngestLogger().Error( + "unexpected operator types, config can't be adjusted", + zap.Int64("jobID", job.ID), + zap.Bool("isReaderValid", readerOk), + zap.Bool("isWriterValid", writerOk), + ) + return + } + ticker := time.NewTicker(UpdateDDLJobReorgCfgInterval) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + maxWriteSpeed := job.ReorgMeta.GetMaxWriteSpeedOrDefault() + if maxWriteSpeed != bcCtx.GetLocalBackend().GetWriteSpeedLimit() { + bcCtx.GetLocalBackend().UpdateWriteSpeedLimit(maxWriteSpeed) + logutil.DDLIngestLogger().Info("adjust ddl job config success", + zap.Int64("jobID", job.ID), + zap.Int("max write speed", bcCtx.GetLocalBackend().GetWriteSpeedLimit())) + } + + concurrency := job.ReorgMeta.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter())) + targetReaderCnt, targetWriterCnt := expectedIngestWorkerCnt(concurrency, avgRowSize) + currentReaderCnt, currentWriterCnt := reader.GetWorkerPoolSize(), writer.GetWorkerPoolSize() + if int32(targetReaderCnt) != currentReaderCnt || int32(targetWriterCnt) != currentWriterCnt { + reader.TuneWorkerPoolSize(int32(targetReaderCnt)) + writer.TuneWorkerPoolSize(int32(targetWriterCnt)) + logutil.DDLIngestLogger().Info("adjust ddl job config success", + zap.Int64("jobID", job.ID), + zap.Int32("table scan operator count", reader.GetWorkerPoolSize()), + zap.Int32("index ingest operator count", writer.GetWorkerPoolSize())) + } + } + } +} + +func executeAndClosePipeline(ctx *OperatorCtx, pipe *operator.AsyncPipeline, job *model.Job, bcCtx ingest.BackendCtx, avgRowSize int) error { err := pipe.Execute() if err != nil { return err } + + // Adjust worker pool size and max write speed dynamically. + var wg util.WaitGroupWrapper + adjustCtx, cancel := context.WithCancel(ctx) + if job != nil { + wg.Add(1) + go func() { + defer wg.Done() + adjustWorkerCntAndMaxWriteSpeed(adjustCtx, pipe, job, bcCtx, avgRowSize) + }() + } + err = pipe.Close() + + cancel() + wg.Wait() // wait for adjustWorkerCntAndMaxWriteSpeed to exit if opErr := ctx.OperatorErr(); opErr != nil { return opErr } @@ -825,6 +893,9 @@ func (s *localRowCntListener) SetTotal(total int) { s.reorgCtx.setRowCount(s.prevPhysicalRowCnt + int64(total)) } +// UpdateDDLJobReorgCfgInterval is the interval to check and update reorg configuration. +const UpdateDDLJobReorgCfgInterval = 2 * time.Second + // writePhysicalTableRecord handles the "add index" or "modify/change column" reorganization state for a non-partitioned table or a partition. // For a partitioned table, it should be handled partition by partition. // @@ -849,7 +920,7 @@ func (dc *ddlCtx) writePhysicalTableRecord( ) (err error) { startKey, endKey := reorgInfo.StartKey, reorgInfo.EndKey - if err := dc.isReorgRunnable(reorgInfo.Job.ID, false); err != nil { + if err := dc.isReorgRunnable(ctx, false); err != nil { return errors.Trace(err) } defer func() { @@ -929,14 +1000,6 @@ func (dc *ddlCtx) writePhysicalTableRecord( zap.Int64("job ID", reorgInfo.ID), zap.Error(err2)) } - // We try to adjust the worker size regularly to reduce - // the overhead of loading the DDL related global variables. - err2 = scheduler.adjustWorkerSize() - if err2 != nil { - logutil.DDLLogger().Warn("cannot adjust backfill worker size", - zap.Int64("job ID", reorgInfo.ID), - zap.Error(err2)) - } failpoint.InjectCall("afterUpdateReorgMeta") } } @@ -978,6 +1041,31 @@ func (dc *ddlCtx) writePhysicalTableRecord( return nil }) + // update the worker cnt goroutine + go func() { + ticker := time.NewTicker(UpdateDDLJobReorgCfgInterval) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + currentWorkerCnt := scheduler.currentWorkerSize() + targetWorkerCnt := reorgInfo.ReorgMeta.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter())) + if currentWorkerCnt != targetWorkerCnt { + err := scheduler.adjustWorkerSize() + if err != nil { + logutil.DDLLogger().Error("adjust ddl job config failed", + zap.Error(err)) + } else { + logutil.DDLLogger().Info("adjust ddl job config success", + zap.Int("current worker count", scheduler.currentWorkerSize())) + } + } + } + } + }() + return eg.Wait() } diff --git a/pkg/ddl/backfilling_dist_executor.go b/pkg/ddl/backfilling_dist_executor.go index d9b5e6c062273..799be7baa1f8c 100644 --- a/pkg/ddl/backfilling_dist_executor.go +++ b/pkg/ddl/backfilling_dist_executor.go @@ -154,6 +154,7 @@ func (s *backfillDistExecutor) getBackendCtx() (ingest.BackendCtx, error) { discovery, job.ReorgMeta.ResourceGroupName, job.ReorgMeta.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter())), + job.ReorgMeta.GetMaxWriteSpeedOrDefault(), job.RealStartTS, ) } diff --git a/pkg/ddl/backfilling_import_cloud.go b/pkg/ddl/backfilling_import_cloud.go index a3bf8579f90a8..4259a28bf461b 100644 --- a/pkg/ddl/backfilling_import_cloud.go +++ b/pkg/ddl/backfilling_import_cloud.go @@ -159,8 +159,3 @@ func (m *cloudImportExecutor) Cleanup(ctx context.Context) error { ingest.LitBackCtxMgr.Unregister(m.job.ID) return nil } - -func (*cloudImportExecutor) OnFinished(ctx context.Context, _ *proto.Subtask) error { - logutil.Logger(ctx).Info("cloud import executor finish subtask") - return nil -} diff --git a/pkg/ddl/backfilling_merge_sort.go b/pkg/ddl/backfilling_merge_sort.go index a302f9ba5ff70..a60c3d955bfad 100644 --- a/pkg/ddl/backfilling_merge_sort.go +++ b/pkg/ddl/backfilling_merge_sort.go @@ -89,7 +89,7 @@ func (m *mergeSortExecutor) RunSubtask(ctx context.Context, subtask *proto.Subta memSizePerCon := res.Mem.Capacity() / int64(subtask.Concurrency) partSize := max(external.MinUploadPartSize, memSizePerCon*int64(external.MaxMergingFilesPerThread)/10000) - return external.MergeOverlappingFiles( + err = external.MergeOverlappingFiles( ctx, sm.DataFiles, store, @@ -100,6 +100,10 @@ func (m *mergeSortExecutor) RunSubtask(ctx context.Context, subtask *proto.Subta subtask.Concurrency, true, ) + if err != nil { + return errors.Trace(err) + } + return m.onFinished(ctx, subtask) } func (*mergeSortExecutor) Cleanup(ctx context.Context) error { @@ -107,7 +111,7 @@ func (*mergeSortExecutor) Cleanup(ctx context.Context) error { return nil } -func (m *mergeSortExecutor) OnFinished(ctx context.Context, subtask *proto.Subtask) error { +func (m *mergeSortExecutor) onFinished(ctx context.Context, subtask *proto.Subtask) error { logutil.Logger(ctx).Info("merge sort finish subtask") sm, err := decodeBackfillSubTaskMeta(subtask.Meta) if err != nil { diff --git a/pkg/ddl/backfilling_operators.go b/pkg/ddl/backfilling_operators.go index 7cf087aad1058..d38582ebd2f1c 100644 --- a/pkg/ddl/backfilling_operators.go +++ b/pkg/ddl/backfilling_operators.go @@ -20,6 +20,7 @@ import ( "fmt" "path" "strconv" + "sync" "sync/atomic" "time" @@ -41,6 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/resourcemanager/pool/workerpool" "github.com/pingcap/tidb/pkg/resourcemanager/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/table/tables" "github.com/pingcap/tidb/pkg/tablecodec" @@ -170,11 +172,17 @@ func NewAddIndexIngestPipeline( if err != nil { return nil, err } - srcChkPool := createChunkPool(copCtx, concurrency, reorgMeta.BatchSize) + srcChkPool := createChunkPool(copCtx, reorgMeta) readerCnt, writerCnt := expectedIngestWorkerCnt(concurrency, avgRowSize) + rm := reorgMeta + if rm.IsDistReorg { + // Currently, only the batch size of local ingest mode can be adjusted + rm = nil + } srcOp := NewTableScanTaskSource(ctx, store, tbl, startKey, endKey, cpMgr) - scanOp := NewTableScanOperator(ctx, sessPool, copCtx, srcChkPool, readerCnt, cpMgr, reorgMeta.BatchSize) + scanOp := NewTableScanOperator(ctx, sessPool, copCtx, srcChkPool, readerCnt, cpMgr, + reorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize())), rm) ingestOp := NewIndexIngestOperator(ctx, copCtx, backendCtx, sessPool, tbl, indexes, engines, srcChkPool, writerCnt, reorgMeta, cpMgr, rowCntListener) sinkOp := newIndexWriteResultSink(ctx, backendCtx, tbl, indexes, cpMgr, rowCntListener) @@ -221,7 +229,7 @@ func NewWriteIndexToExternalStoragePipeline( if err != nil { return nil, err } - srcChkPool := createChunkPool(copCtx, concurrency, reorgMeta.BatchSize) + srcChkPool := createChunkPool(copCtx, reorgMeta) readerCnt, writerCnt := expectedIngestWorkerCnt(concurrency, avgRowSize) backend, err := storage.ParseBackend(extStoreURI, nil) @@ -239,7 +247,8 @@ func NewWriteIndexToExternalStoragePipeline( }) srcOp := NewTableScanTaskSource(ctx, store, tbl, startKey, endKey, nil) - scanOp := NewTableScanOperator(ctx, sessPool, copCtx, srcChkPool, readerCnt, nil, reorgMeta.BatchSize) + scanOp := NewTableScanOperator(ctx, sessPool, copCtx, srcChkPool, readerCnt, nil, + reorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize())), nil) writeOp := NewWriteExternalStoreOperator( ctx, copCtx, sessPool, jobID, subtaskID, tbl, indexes, extStore, srcChkPool, writerCnt, @@ -264,14 +273,13 @@ func NewWriteIndexToExternalStoragePipeline( ), nil } -func createChunkPool(copCtx copr.CopContext, hintConc, hintBatchSize int) chan *chunk.Chunk { - poolSize := ingest.CopReadChunkPoolSize(hintConc) - batchSize := ingest.CopReadBatchSize(hintBatchSize) - srcChkPool := make(chan *chunk.Chunk, poolSize) - for i := 0; i < poolSize; i++ { - srcChkPool <- chunk.NewChunkWithCapacity(copCtx.GetBase().FieldTypes, batchSize) +func createChunkPool(copCtx copr.CopContext, reorgMeta *model.DDLReorgMeta) *sync.Pool { + return &sync.Pool{ + New: func() any { + return chunk.NewChunkWithCapacity(copCtx.GetBase().FieldTypes, + reorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize()))) + }, } - return srcChkPool } // TableScanTask contains the start key and the end key of a region. @@ -478,10 +486,11 @@ func NewTableScanOperator( ctx *OperatorCtx, sessPool opSessPool, copCtx copr.CopContext, - srcChkPool chan *chunk.Chunk, + srcChkPool *sync.Pool, concurrency int, cpMgr *ingest.CheckpointManager, hintBatchSize int, + reorgMeta *model.DDLReorgMeta, ) *TableScanOperator { totalCount := new(atomic.Int64) pool := workerpool.NewWorkerPool( @@ -498,6 +507,7 @@ func NewTableScanOperator( cpMgr: cpMgr, hintBatchSize: hintBatchSize, totalCount: totalCount, + reorgMeta: reorgMeta, } }) return &TableScanOperator{ @@ -518,9 +528,10 @@ type tableScanWorker struct { copCtx copr.CopContext sessPool opSessPool se *session.Session - srcChkPool chan *chunk.Chunk + srcChkPool *sync.Pool cpMgr *ingest.CheckpointManager + reorgMeta *model.DDLReorgMeta hintBatchSize int totalCount *atomic.Int64 } @@ -588,17 +599,21 @@ func (w *tableScanWorker) scanRecords(task TableScanTask, sender func(IndexRecor } func (w *tableScanWorker) getChunk() *chunk.Chunk { - chk := <-w.srcChkPool - newCap := ingest.CopReadBatchSize(w.hintBatchSize) - if chk.Capacity() != newCap { - chk = chunk.NewChunkWithCapacity(w.copCtx.GetBase().FieldTypes, newCap) + targetCap := ingest.CopReadBatchSize(w.hintBatchSize) + if w.reorgMeta != nil { + targetCap = ingest.CopReadBatchSize(w.reorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize()))) + } + chk := w.srcChkPool.Get().(*chunk.Chunk) + if chk.Capacity() != targetCap { + chk = chunk.NewChunkWithCapacity(w.copCtx.GetBase().FieldTypes, targetCap) + logutil.Logger(w.ctx).Info("adjust ddl job config success", zap.Int("current batch size", chk.Capacity())) } chk.Reset() return chk } func (w *tableScanWorker) recycleChunk(chk *chunk.Chunk) { - w.srcChkPool <- chk + w.srcChkPool.Put(chk) } // WriteExternalStoreOperator writes index records to external storage. @@ -618,7 +633,7 @@ func NewWriteExternalStoreOperator( tbl table.PhysicalTable, indexes []table.Index, store storage.ExternalStorage, - srcChunkPool chan *chunk.Chunk, + srcChunkPool *sync.Pool, concurrency int, onClose external.OnCloseFunc, memoryQuota uint64, @@ -704,7 +719,7 @@ func NewIndexIngestOperator( tbl table.PhysicalTable, indexes []table.Index, engines []ingest.Engine, - srcChunkPool chan *chunk.Chunk, + srcChunkPool *sync.Pool, concurrency int, reorgMeta *model.DDLReorgMeta, cpMgr *ingest.CheckpointManager, @@ -765,7 +780,7 @@ type indexIngestExternalWorker struct { func (w *indexIngestExternalWorker) HandleTask(ck IndexRecordChunk, send func(IndexWriteResult)) { defer func() { if ck.Chunk != nil { - w.srcChunkPool <- ck.Chunk + w.srcChunkPool.Put(ck.Chunk) } }() rs, err := w.indexIngestBaseWorker.HandleTask(ck) @@ -787,7 +802,7 @@ type indexIngestLocalWorker struct { func (w *indexIngestLocalWorker) HandleTask(ck IndexRecordChunk, send func(IndexWriteResult)) { defer func() { if ck.Chunk != nil { - w.srcChunkPool <- ck.Chunk + w.srcChunkPool.Put(ck.Chunk) } }() rs, err := w.indexIngestBaseWorker.HandleTask(ck) @@ -827,7 +842,7 @@ type indexIngestBaseWorker struct { restore func(sessionctx.Context) writers []ingest.Writer - srcChunkPool chan *chunk.Chunk + srcChunkPool *sync.Pool // only available in global sort totalCount *atomic.Int64 } diff --git a/pkg/ddl/backfilling_read_index.go b/pkg/ddl/backfilling_read_index.go index 8e848b19b654c..db492ce3f4450 100644 --- a/pkg/ddl/backfilling_read_index.go +++ b/pkg/ddl/backfilling_read_index.go @@ -114,14 +114,17 @@ func (r *readIndexExecutor) RunSubtask(ctx context.Context, subtask *proto.Subta if err != nil { return err } - return executeAndClosePipeline(opCtx, pipe) + if err = executeAndClosePipeline(opCtx, pipe, nil, nil, 0); err != nil { + return errors.Trace(err) + } + return r.onFinished(ctx, subtask) } pipe, err := r.buildLocalStorePipeline(opCtx, sm, subtask.Concurrency) if err != nil { return err } - err = executeAndClosePipeline(opCtx, pipe) + err = executeAndClosePipeline(opCtx, pipe, nil, nil, 0) if err != nil { // For dist task local based ingest, checkpoint is unsupported. // If there is an error we should keep local sort dir clean. @@ -131,7 +134,11 @@ func (r *readIndexExecutor) RunSubtask(ctx context.Context, subtask *proto.Subta } return err } - return r.bc.FinishAndUnregisterEngines(ingest.OptCleanData | ingest.OptCheckDup) + err = r.bc.FinishAndUnregisterEngines(ingest.OptCleanData | ingest.OptCheckDup) + if err != nil { + return errors.Trace(err) + } + return r.onFinished(ctx, subtask) } func (r *readIndexExecutor) RealtimeSummary() *execute.SubtaskSummary { @@ -147,7 +154,7 @@ func (r *readIndexExecutor) Cleanup(ctx context.Context) error { return nil } -func (r *readIndexExecutor) OnFinished(ctx context.Context, subtask *proto.Subtask) error { +func (r *readIndexExecutor) onFinished(ctx context.Context, subtask *proto.Subtask) error { failpoint.InjectCall("mockDMLExecutionAddIndexSubTaskFinish") if len(r.cloudStorageURI) == 0 { return nil diff --git a/pkg/ddl/backfilling_test.go b/pkg/ddl/backfilling_test.go index cb769947e4d72..d67fac8443331 100644 --- a/pkg/ddl/backfilling_test.go +++ b/pkg/ddl/backfilling_test.go @@ -16,9 +16,11 @@ package ddl import ( "bytes" + "context" "testing" "time" + "github.com/pingcap/tidb/pkg/ddl/copr" "github.com/pingcap/tidb/pkg/ddl/ingest" distsqlctx "github.com/pingcap/tidb/pkg/distsql/context" "github.com/pingcap/tidb/pkg/errctx" @@ -485,3 +487,34 @@ func TestValidateAndFillRanges(t *testing.T) { err = validateAndFillRanges(ranges, []byte("b"), []byte("f")) require.Error(t, err) } + +func TestTuneTableScanWorkerBatchSize(t *testing.T) { + reorgMeta := &model.DDLReorgMeta{} + reorgMeta.Concurrency.Store(4) + reorgMeta.BatchSize.Store(32) + copCtx := &copr.CopContextSingleIndex{ + CopContextBase: &copr.CopContextBase{ + FieldTypes: []*types.FieldType{}, + }, + } + opCtx, cancel := NewDistTaskOperatorCtx(context.Background(), 1, 1) + w := tableScanWorker{ + copCtx: copCtx, + ctx: opCtx, + srcChkPool: createChunkPool(copCtx, reorgMeta), + hintBatchSize: 32, + reorgMeta: reorgMeta, + } + for i := 0; i < 10; i++ { + chk := w.getChunk() + require.Equal(t, 32, chk.Capacity()) + w.srcChkPool.Put(chk) + } + reorgMeta.SetBatchSize(64) + for i := 0; i < 10; i++ { + chk := w.getChunk() + require.Equal(t, 64, chk.Capacity()) + w.srcChkPool.Put(chk) + } + cancel() +} diff --git a/pkg/ddl/cancel_test.go b/pkg/ddl/cancel_test.go index 661169350c5ba..4b8be31fc13c0 100644 --- a/pkg/ddl/cancel_test.go +++ b/pkg/ddl/cancel_test.go @@ -287,14 +287,14 @@ func TestCancelVariousJobs(t *testing.T) { } resetHook := func() { - _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/onJobUpdated") - _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") + _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") } registerHook := func(onJobRunBefore bool) { if onJobRunBefore { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", hookFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", hookFunc) } else { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hookFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hookFunc) } } @@ -357,7 +357,7 @@ func TestCancelForAddUniqueIndex(t *testing.T) { tk.MustExec("insert into t values(1, 1, 1)") var testCancelState model.SchemaState - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState == testCancelState && job.State == model.JobStateRollingback { tkCancel.MustExec(fmt.Sprintf("admin cancel ddl jobs %d", job.ID)) } diff --git a/pkg/ddl/cluster.go b/pkg/ddl/cluster.go index 565b092172a22..e38326cd18d43 100644 --- a/pkg/ddl/cluster.go +++ b/pkg/ddl/cluster.go @@ -36,7 +36,6 @@ import ( "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/meta/model" - "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/tablecodec" @@ -113,16 +112,12 @@ func getStoreGlobalMinSafeTS(s kv.Storage) time.Time { // ValidateFlashbackTS validates that flashBackTS in range [gcSafePoint, currentTS). func ValidateFlashbackTS(ctx context.Context, sctx sessionctx.Context, flashBackTS uint64) error { - currentTS, err := sctx.GetStore().GetOracle().GetStaleTimestamp(ctx, oracle.GlobalTxnScope, 0) - // If we fail to calculate currentTS from local time, fallback to get a timestamp from PD. + currentVer, err := sctx.GetStore().CurrentVersion(oracle.GlobalTxnScope) if err != nil { - metrics.ValidateReadTSFromPDCount.Inc() - currentVer, err := sctx.GetStore().CurrentVersion(oracle.GlobalTxnScope) - if err != nil { - return errors.Errorf("fail to validate flashback timestamp: %v", err) - } - currentTS = currentVer.Ver + return errors.Errorf("fail to validate flashback timestamp: %v", err) } + currentTS := currentVer.Ver + oracleFlashbackTS := oracle.GetTimeFromTS(flashBackTS) if oracleFlashbackTS.After(oracle.GetTimeFromTS(currentTS)) { return errors.Errorf("cannot set flashback timestamp to future time") diff --git a/pkg/ddl/cluster_test.go b/pkg/ddl/cluster_test.go index d7a6feeb50946..1e77dfa08dc19 100644 --- a/pkg/ddl/cluster_test.go +++ b/pkg/ddl/cluster_test.go @@ -52,7 +52,7 @@ func TestFlashbackCloseAndResetPDSchedule(t *testing.T) { defer resetGC() tk.MustExec(fmt.Sprintf(safePointSQL, timeBeforeDrop)) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionFlashbackCluster, job.Type) if job.SchemaState == model.StateWriteReorganization { closeValue, err := infosync.GetPDScheduleConfig(context.Background()) @@ -60,7 +60,7 @@ func TestFlashbackCloseAndResetPDSchedule(t *testing.T) { assert.Equal(t, closeValue["merge-schedule-limit"], 0) } }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionFlashbackCluster, job.Type) if job.SchemaState == model.StateWriteReorganization { // cancel flashback job @@ -74,8 +74,8 @@ func TestFlashbackCloseAndResetPDSchedule(t *testing.T) { require.NoError(t, err) tk.MustGetErrCode(fmt.Sprintf("flashback cluster to timestamp '%s'", oracle.GetTimeFromTS(ts).Format(types.TimeFSPFormat)), errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep") finishValue, err := infosync.GetPDScheduleConfig(context.Background()) require.NoError(t, err) @@ -101,7 +101,7 @@ func TestAddDDLDuringFlashback(t *testing.T) { defer resetGC() tk.MustExec(fmt.Sprintf(safePointSQL, timeBeforeDrop)) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionFlashbackCluster, job.Type) if job.SchemaState == model.StateWriteOnly { tk1 := testkit.NewTestKit(t, store) @@ -111,7 +111,7 @@ func TestAddDDLDuringFlashback(t *testing.T) { }) tk.MustExec(fmt.Sprintf("flashback cluster to timestamp '%s'", oracle.GetTimeFromTS(ts).Format(types.TimeFSPFormat))) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockFlashbackTest")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/injectSafeTS")) } @@ -135,7 +135,7 @@ func TestGlobalVariablesOnFlashback(t *testing.T) { defer resetGC() tk.MustExec(fmt.Sprintf(safePointSQL, timeBeforeDrop)) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionFlashbackCluster, job.Type) if job.SchemaState == model.StateWriteReorganization { rs, err := tk.Exec("show variables like 'tidb_gc_enable'") @@ -187,7 +187,7 @@ func TestGlobalVariablesOnFlashback(t *testing.T) { assert.NoError(t, err) assert.Equal(t, tk.ResultSetToResult(rs, "").Rows()[0][1], variable.Off) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockFlashbackTest")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/injectSafeTS")) } @@ -213,7 +213,7 @@ func TestCancelFlashbackCluster(t *testing.T) { hook := newCancelJobHook(t, store, func(job *model.Job) bool { return job.SchemaState == model.StateDeleteOnly }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustExec("set global tidb_ttl_job_enable = on") tk.MustGetErrCode(fmt.Sprintf("flashback cluster to timestamp '%s'", oracle.GetTimeFromTS(ts).Format(types.TimeFSPFormat)), errno.ErrCancelledDDLJob) hook.MustCancelDone(t) @@ -226,7 +226,7 @@ func TestCancelFlashbackCluster(t *testing.T) { hook = newCancelJobHook(t, store, func(job *model.Job) bool { return job.SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustExec(fmt.Sprintf("flashback cluster to timestamp '%s'", oracle.GetTimeFromTS(ts).Format(types.TimeFSPFormat))) hook.MustCancelFailed(t) diff --git a/pkg/ddl/column.go b/pkg/ddl/column.go index 21e4a4a65be7d..11e359f45a641 100644 --- a/pkg/ddl/column.go +++ b/pkg/ddl/column.go @@ -779,7 +779,7 @@ func (w *updateColumnWorker) getRowRecord(handle kv.Handle, recordKey []byte, ra ec := w.exprCtx.GetEvalCtx().ErrCtx() var checksum rowcodec.Checksum if w.checksumNeeded { - checksum = rowcodec.RawChecksum{Key: recordKey} + checksum = rowcodec.RawChecksum{Handle: handle} } newRowVal, err := tablecodec.EncodeRow(sysTZ, newRow, newColumnIDs, nil, nil, checksum, rd) err = ec.HandleError(err) diff --git a/pkg/ddl/column_change_test.go b/pkg/ddl/column_change_test.go index 5c73d0b598239..805b5a1b0fe36 100644 --- a/pkg/ddl/column_change_test.go +++ b/pkg/ddl/column_change_test.go @@ -58,7 +58,7 @@ func TestColumnAdd(t *testing.T) { ) first := true var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { jobID = job.ID tbl, exist := dom.InfoSchema().TableByID(context.Background(), job.TableID) require.True(t, exist) @@ -83,13 +83,13 @@ func TestColumnAdd(t *testing.T) { checkHistoryJobArgs(t, tk.Session(), jobID, &historyJobArgs{ver: v, tbl: tb.Meta()}) // Drop column. - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if dropCol == nil { tbl := external.GetTableByName(t, internal, "test", "t") dropCol = tbl.VisibleCols()[2] } }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.NotStarted() { return } @@ -108,7 +108,7 @@ func TestColumnAdd(t *testing.T) { // Add column not default. first = true - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { jobID = job.ID tbl, exist := dom.InfoSchema().TableByID(context.Background(), job.TableID) require.True(t, exist) @@ -143,7 +143,7 @@ func TestModifyAutoRandColumnWithMetaKeyChanged(t *testing.T) { var dbID int64 var tID int64 var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { jobID = job.ID dbID = job.SchemaID tID = job.TableID @@ -432,7 +432,7 @@ func TestIssue40135(t *testing.T) { tk.MustExec("CREATE TABLE t40135 ( a tinyint DEFAULT NULL, b varchar(32) DEFAULT 'md') PARTITION BY HASH (a) PARTITIONS 2") one := true var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if one { one = false _, checkErr = tk1.Exec("alter table t40135 change column a aNew SMALLINT NULL DEFAULT '-14996'") diff --git a/pkg/ddl/column_modify_test.go b/pkg/ddl/column_modify_test.go index a70fa6def454e..3b2f01e641894 100644 --- a/pkg/ddl/column_modify_test.go +++ b/pkg/ddl/column_modify_test.go @@ -437,7 +437,7 @@ func TestTransactionWithWriteOnlyColumn(t *testing.T) { } var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr != nil { return } @@ -489,7 +489,7 @@ func TestAddGeneratedColumnAndInsert(t *testing.T) { ctx.Store = store times := 0 var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -529,7 +529,7 @@ func TestColumnTypeChangeGenUniqueChangingName(t *testing.T) { var checkErr error assertChangingColName := "_col$_c2_0" assertChangingIdxName := "_idx$_idx_0" - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == model.StateDeleteOnly && job.Type == model.ActionModifyColumn { args, err := model.GetModifyColumnArgs(job) if err != nil { @@ -573,7 +573,7 @@ func TestColumnTypeChangeGenUniqueChangingName(t *testing.T) { assertChangingColName2 := "_col$__col$__col$_c1_0_1" query1 := "alter table t modify column _col$_c1 tinyint" query2 := "alter table t modify column _col$__col$_c1_0 tinyint" - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if (job.Query == query1 || job.Query == query2) && job.SchemaState == model.StateDeleteOnly && job.Type == model.ActionModifyColumn { args, err := model.GetModifyColumnArgs(job) if err != nil { @@ -622,7 +622,7 @@ func TestModifyColumnReorgCheckpoint(t *testing.T) { tk.MustExec("use test") tk2 := testkit.NewTestKit(t, store) tk2.MustExec("use test") - tk.MustExec("set global tidb_ddl_reorg_worker_cnt = 1;") + tk.MustExec("set @@tidb_ddl_reorg_worker_cnt = 1;") tk.MustExec("create table t (a int primary key, b bigint);") rowCnt := 10 for i := 0; i < rowCnt; i++ { diff --git a/pkg/ddl/column_test.go b/pkg/ddl/column_test.go index 24508517a60bc..500292059c2b6 100644 --- a/pkg/ddl/column_test.go +++ b/pkg/ddl/column_test.go @@ -661,7 +661,7 @@ func TestAddColumn(t *testing.T) { checkOK := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkOK { return } @@ -721,7 +721,7 @@ func TestAddColumns(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { mu.Lock() defer mu.Unlock() if checkOK { @@ -784,7 +784,7 @@ func TestDropColumnInColumnTest(t *testing.T) { var hookErr error var mu sync.Mutex - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { mu.Lock() defer mu.Unlock() if checkOK { @@ -839,7 +839,7 @@ func TestDropColumns(t *testing.T) { var hookErr error var mu sync.Mutex - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { mu.Lock() defer mu.Unlock() if checkOK { @@ -884,7 +884,7 @@ func TestWriteDataWriteOnlyMode(t *testing.T) { tk2.MustExec("use test") tk.MustExec("CREATE TABLE t (`col1` bigint(20) DEFAULT 1,`col2` float,UNIQUE KEY `key1` (`col1`))") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateWriteOnly { return } @@ -893,7 +893,7 @@ func TestWriteDataWriteOnlyMode(t *testing.T) { }) tk.MustExec("alter table t change column `col1` `col1` varchar(20)") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateWriteOnly { return } diff --git a/pkg/ddl/column_type_change_test.go b/pkg/ddl/column_type_change_test.go index d29f0e692579d..908a395f4b42a 100644 --- a/pkg/ddl/column_type_change_test.go +++ b/pkg/ddl/column_type_change_test.go @@ -58,7 +58,7 @@ func TestColumnTypeChangeStateBetweenInteger(t *testing.T) { require.NotNil(t, external.GetModifyColumn(t, tk, "test", "t", "c2", false)) var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr != nil { return } @@ -148,7 +148,7 @@ func TestRollbackColumnTypeChangeBetweenInteger(t *testing.T) { } func customizeHookRollbackAtState(t *testing.T, tbl table.Table, state model.SchemaState) { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID { return } @@ -192,7 +192,7 @@ func TestColumnTypeChangeIgnoreDisplayLength(t *testing.T) { assertHasAlterWriteReorg := func(tbl table.Table) { // Restore assertResult to false. assertResult = false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID { return } @@ -260,7 +260,7 @@ func TestRowFormatWithChecksums(t *testing.T) { data, err := h.GetMvccByEncodedKey(encodedKey) require.NoError(t, err) // row value with checksums - expected := []byte{0x80, 0x2, 0x3, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, 0x1, 0x0, 0x4, 0x0, 0x7, 0x0, 0x1, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x1, 0xa9, 0x7a, 0xf4, 0xc8} + expected := []byte{0x80, 0x2, 0x3, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, 0x1, 0x0, 0x4, 0x0, 0x7, 0x0, 0x1, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x2, 0x9e, 0x56, 0xf5, 0x45} require.Equal(t, expected, data.Info.Writes[0].ShortValue) tk.MustExec("drop table if exists t") } @@ -284,7 +284,7 @@ func TestRowLevelChecksumWithMultiSchemaChange(t *testing.T) { data, err := h.GetMvccByEncodedKey(encodedKey) require.NoError(t, err) // checksum skipped and with a null col vv - expected := []byte{0x80, 0x2, 0x3, 0x0, 0x1, 0x0, 0x1, 0x2, 0x4, 0x3, 0x1, 0x0, 0x4, 0x0, 0x7, 0x0, 0x1, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x1, 0xeb, 0x42, 0xda, 0x20} + expected := []byte{0x80, 0x2, 0x3, 0x0, 0x1, 0x0, 0x1, 0x2, 0x4, 0x3, 0x1, 0x0, 0x4, 0x0, 0x7, 0x0, 0x1, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x2, 0x0, 0x4f, 0xd2, 0x26} require.Equal(t, expected, data.Info.Writes[0].ShortValue) tk.MustExec("drop table if exists t") } @@ -315,7 +315,7 @@ func TestChangingColOriginDefaultValue(t *testing.T) { checkErr error ) i := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -362,7 +362,7 @@ func TestChangingColOriginDefaultValue(t *testing.T) { } }) tk.MustExec("alter table t modify column b tinyint NOT NULL") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") require.NoError(t, checkErr) // Since getReorgInfo will stagnate StateWriteReorganization for a ddl round, so insert should exec 3 times. tk.MustQuery("select * from t order by a").Check(testkit.Rows("1 -1", "2 -2", "3 3", "4 4", "5 5")) @@ -392,7 +392,7 @@ func TestChangingColOriginDefaultValueAfterAddColAndCastSucc(t *testing.T) { checkErr error ) i, stableTimes := 0, 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr != nil { return } @@ -446,7 +446,7 @@ func TestChangingColOriginDefaultValueAfterAddColAndCastSucc(t *testing.T) { }) tk.MustExec("alter table t modify column c date NOT NULL") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") require.NoError(t, checkErr) // Since getReorgInfo will stagnate StateWriteReorganization for a ddl round, so insert should exec 3 times. tk.MustQuery("select * from t order by a").Check( @@ -472,7 +472,7 @@ func TestChangingColOriginDefaultValueAfterAddColAndCastFail(t *testing.T) { tbl := external.GetTableByName(t, tk, "test", "t") var checkErr error var firstJobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr != nil { return } @@ -528,7 +528,7 @@ func TestChangingColOriginDefaultValueAfterAddColAndCastFail(t *testing.T) { tk.MustExec("alter table t modify column x DATETIME NULL DEFAULT '3771-02-28 13:00:11' AFTER b;") tk.MustExec("insert into t(a) value('1')") tk.MustExec("alter table t modify column b varchar(256) default (REPLACE(UPPER(UUID()), '-', ''));") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") require.NoError(t, checkErr) tk.MustQuery("select * from t order by a").Check(testkit.Rows("18apf -729850476163 3771-02-28 13:00:11")) tk.MustExec("drop table if exists t") @@ -553,7 +553,7 @@ func TestDDLExitWhenCancelMeetPanic(t *testing.T) { }() var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if jobID != 0 { return } @@ -590,7 +590,7 @@ func TestCancelCTCInReorgStateWillCauseGoroutineLeak(t *testing.T) { tbl := external.GetTableByName(t, tk, "test", "ctc_goroutine_leak") var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if jobID != 0 { return } @@ -638,7 +638,7 @@ func TestCastDateToTimestampInReorgAttribute(t *testing.T) { var checkErr1 error var checkErr2 error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr1 != nil || checkErr2 != nil || tbl.Meta().ID != job.TableID { return } diff --git a/pkg/ddl/constraint_test.go b/pkg/ddl/constraint_test.go index 65499b07857ef..6a0cf914752cf 100644 --- a/pkg/ddl/constraint_test.go +++ b/pkg/ddl/constraint_test.go @@ -47,7 +47,7 @@ func TestAlterConstraintAddDrop(t *testing.T) { require.Error(t, err) var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -76,7 +76,7 @@ func TestAlterAddConstraintStateChange(t *testing.T) { tk1.MustExec("insert into t values(12)") var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -119,7 +119,7 @@ func TestAlterAddConstraintStateChange1(t *testing.T) { tk1.MustExec("insert into t values(12)") // StatNone -> StateWriteOnly - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == model.StateWriteOnly { // set constraint state constraintTable := external.GetTableByName(t, tk1, "test", "t") @@ -153,7 +153,7 @@ func TestAlterAddConstraintStateChange2(t *testing.T) { tk1.MustExec("insert into t values(12)") // StateWriteOnly -> StateWriteReorganization - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == model.StateWriteReorganization { // set constraint state constraintTable := external.GetTableByName(t, tk1, "test", "t") @@ -186,7 +186,7 @@ func TestAlterAddConstraintStateChange3(t *testing.T) { addCheckDone := false // StateWriteReorganization -> StatePublic - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.Type != model.ActionAddCheckConstraint || job.TableName != "t" { return } @@ -228,7 +228,7 @@ func TestAlterEnforcedConstraintStateChange(t *testing.T) { tk1.MustExec("insert into t values(12)") // StateWriteReorganization -> StatePublic - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == model.StateWriteReorganization { // set constraint state constraintTable := external.GetTableByName(t, tk1, "test", "t") diff --git a/pkg/ddl/db_change_test.go b/pkg/ddl/db_change_test.go index 2b640c029a4fb..b4bd4d0fdb2dc 100644 --- a/pkg/ddl/db_change_test.go +++ b/pkg/ddl/db_change_test.go @@ -77,7 +77,7 @@ func TestShowCreateTable(t *testing.T) { } prevState := model.StateNone currTestCaseOffset := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == prevState || checkErr != nil { return } @@ -140,7 +140,7 @@ func TestDropNotNullColumn(t *testing.T) { var checkErr error sqlNum := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -173,7 +173,7 @@ func TestDropNotNullColumn(t *testing.T) { sqlNum++ tk.MustExec("alter table t4 drop column e") require.NoError(t, checkErr) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") tk.MustExec("drop table t, t1, t2, t3") } @@ -223,7 +223,7 @@ func TestTwoStates(t *testing.T) { times := 0 var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == prevState || checkErr != nil || times >= 3 { return } @@ -796,13 +796,13 @@ func runTestInSchemaState( } } if isOnJobUpdated { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", cbFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", cbFunc) } else { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", cbFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", cbFunc) } tk.MustExec(alterTableSQL) require.NoError(t, checkErr) - _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") if expectQuery != nil { tk := testkit.NewTestKit(t, store) @@ -835,7 +835,7 @@ func TestShowIndex(t *testing.T) { prevState := model.StateNone showIndexSQL := `show index from t` var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == prevState || checkErr != nil { return } @@ -862,7 +862,7 @@ func TestShowIndex(t *testing.T) { "t 0 PRIMARY 1 c1 A 0 BTREE YES NO NO", "t 1 c2 1 c2 A 0 YES BTREE YES NO NO", )) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") tk.MustExec(`create table tr( id int, name varchar(50), @@ -1323,7 +1323,7 @@ func TestParallelAlterAndDropSchema(t *testing.T) { func prepareTestControlParallelExecSQL(t *testing.T, store kv.Storage) (*testkit.TestKit, *testkit.TestKit, chan struct{}) { times := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if times != 0 { return } @@ -1424,13 +1424,13 @@ func dbChangeTestParallelExecSQL(t *testing.T, store kv.Storage, sql string) { var wg util.WaitGroupWrapper once := sync.Once{} - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { // sleep a while, let other job enqueue. once.Do(func() { time.Sleep(time.Millisecond * 10) }) }) - defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") wg.Run(func() { err2 = tk1.ExecToErr(sql) }) @@ -1637,7 +1637,7 @@ func TestCreateExpressionIndex(t *testing.T) { // If waitReorg timeout, the worker may enter writeReorg more than 2 times. reorgTime := 0 var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -1703,7 +1703,7 @@ func TestCreateUniqueExpressionIndex(t *testing.T) { // If waitReorg timeout, the worker may enter writeReorg more than 2 times. reorgTime := 0 var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -1805,7 +1805,7 @@ func TestDropExpressionIndex(t *testing.T) { stateWriteReorganizationSQLs := []string{"insert into t values (10, 10)", "begin pessimistic;", "insert into t select * from t", "rollback", "insert into t set b = 11", "update t set b = 7 where a = 5", "delete from t where b = 6"} var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -1860,7 +1860,7 @@ func TestParallelRenameTable(t *testing.T) { var wg sync.WaitGroup var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { switch job.SchemaState { case model.StateNone: if !firstDDL { @@ -1969,7 +1969,7 @@ func TestConcurrentSetDefaultValue(t *testing.T) { var wg sync.WaitGroup skip := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { switch job.SchemaState { case model.StateDeleteOnly: if skip { diff --git a/pkg/ddl/db_integration_test.go b/pkg/ddl/db_integration_test.go index 7721bd6dff3a7..1af799f128a89 100644 --- a/pkg/ddl/db_integration_test.go +++ b/pkg/ddl/db_integration_test.go @@ -384,7 +384,7 @@ func TestUpdateMultipleTable(t *testing.T) { tk2 := testkit.NewTestKit(t, store) tk2.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == model.StateWriteOnly { tk2.MustExec("update t1, t2 set t1.c1 = 8, t2.c2 = 10 where t1.c2 = t2.c1") tk2.MustQuery("select * from t1").Check(testkit.Rows("8 1", "8 2")) @@ -2226,14 +2226,12 @@ func TestAutoIncrementForceAutoIDCache(t *testing.T) { tk.MustExec("insert into t values (100000000, 1);") tk.MustExec("delete from t where a = 100000000;") tk.MustQuery("show table t next_row_id").Check(testkit.Rows( - "auto_inc_force t a 1 _TIDB_ROWID", "auto_inc_force t a 100000001 AUTO_INCREMENT", )) // Cannot set next global ID to 0. tk.MustGetErrCode("alter table t /*T![force_inc] force */ auto_increment = 0;", errno.ErrAutoincReadFailed) tk.MustExec("alter table t /*T![force_inc] force */ auto_increment = 2;") tk.MustQuery("show table t next_row_id").Check(testkit.Rows( - "auto_inc_force t a 1 _TIDB_ROWID", "auto_inc_force t a 2 AUTO_INCREMENT", )) @@ -2265,7 +2263,6 @@ func TestAutoIncrementForceAutoIDCache(t *testing.T) { fmt.Println("execute alter table force increment to ==", b) tk.MustExec(fmt.Sprintf("alter table t force auto_increment = %d;", b)) tk.MustQuery("show table t next_row_id").Check(testkit.Rows( - "auto_inc_force t a 1 _TIDB_ROWID", fmt.Sprintf("auto_inc_force t a %d AUTO_INCREMENT", b), )) } @@ -2277,7 +2274,6 @@ func TestAutoIncrementForceAutoIDCache(t *testing.T) { for _, b := range bases { tk.MustExec(fmt.Sprintf("alter table t force auto_increment = %d;", b)) tk.MustQuery("show table t next_row_id").Check(testkit.Rows( - "auto_inc_force t a 1 _TIDB_ROWID", fmt.Sprintf("auto_inc_force t a %d AUTO_INCREMENT", b), )) tk.MustExec("insert into t values ();") @@ -3093,7 +3089,6 @@ func TestIssue52680(t *testing.T) { } tk.MustQuery("show table issue52680 next_row_id").Check(testkit.Rows( - "test issue52680 id 1 _TIDB_ROWID", "test issue52680 id 3 AUTO_INCREMENT", )) @@ -3113,7 +3108,7 @@ func TestCreateIndexWithChangeMaxIndexLength(t *testing.T) { config.StoreGlobalConfig(originCfg) }() - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type != model.ActionAddIndex { return } diff --git a/pkg/ddl/db_table_test.go b/pkg/ddl/db_table_test.go index 19f28c31ad4e0..8363a454c8f93 100644 --- a/pkg/ddl/db_table_test.go +++ b/pkg/ddl/db_table_test.go @@ -131,7 +131,7 @@ func TestTransactionOnAddDropColumn(t *testing.T) { } var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr != nil { return } @@ -752,7 +752,7 @@ func TestAddColumn2(t *testing.T) { defer tk.MustExec("drop table if exists t1, t2") var writeOnlyTable table.Table - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState == model.StateWriteOnly { writeOnlyTable, _ = dom.InfoSchema().TableByID(context.Background(), job.TableID) } @@ -787,7 +787,7 @@ func TestAddColumn2(t *testing.T) { // Test for _tidb_rowid var re *testkit.Result tk.MustExec("create table t2 (a int);") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateWriteOnly { return } @@ -806,7 +806,7 @@ func TestAddColumn2(t *testing.T) { require.NoError(t, err) re.Check(testkit.Rows("1 2")) tk.MustQuery("select a,b,_tidb_rowid from t2").Check(testkit.Rows("1 3 2")) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") } func TestDropTables(t *testing.T) { diff --git a/pkg/ddl/db_test.go b/pkg/ddl/db_test.go index 4898e0322f33d..528f9067e0646 100644 --- a/pkg/ddl/db_test.go +++ b/pkg/ddl/db_test.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "math" + "strconv" "strings" "sync" "testing" @@ -143,7 +144,7 @@ func TestIssue22307(t *testing.T) { tk.MustExec("insert into t values(1, 1);") var checkErr1, checkErr2 error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateWriteOnly { return } @@ -174,7 +175,7 @@ func TestAddExpressionIndexRollback(t *testing.T) { ctx := mock.NewContext() ctx.Store = store times := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if checkErr != nil { return } @@ -386,7 +387,7 @@ func TestDDLJobErrorCount(t *testing.T) { }() var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { jobID = job.ID }) @@ -518,7 +519,7 @@ func TestCancelJobWriteConflict(t *testing.T) { var rs []sqlexec.RecordSet // Test when cancelling cannot be retried and adding index succeeds. - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionAddIndex && job.State == model.JobStateRunning && job.SchemaState == model.StateWriteReorganization { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/kv/mockCommitErrorInNewTxn", `return("no_retry")`)) defer func() { @@ -538,7 +539,7 @@ func TestCancelJobWriteConflict(t *testing.T) { // Test when cancelling is retried only once and adding index is cancelled in the end. var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionAddIndex && job.State == model.JobStateRunning && job.SchemaState == model.StateWriteReorganization { jobID = job.ID stmt := fmt.Sprintf("admin cancel ddl jobs %d", job.ID) @@ -931,7 +932,7 @@ func TestDDLBlockedCreateView(t *testing.T) { tk.MustExec("create table t(a int)") first := true - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateWriteOnly { return } @@ -953,7 +954,7 @@ func TestHashPartitionAddColumn(t *testing.T) { tk.MustExec("use test") tk.MustExec("create table t(a int, b int) partition by hash(a) partitions 4") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateWriteOnly { return } @@ -974,7 +975,7 @@ func TestSetInvalidDefaultValueAfterModifyColumn(t *testing.T) { var wg sync.WaitGroup var checkErr error one := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateDeleteOnly { return } @@ -1013,7 +1014,7 @@ func TestMDLTruncateTable(t *testing.T) { var timetk3 time.Time one := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if one { return } @@ -1055,7 +1056,7 @@ func TestTruncateTableAndSchemaDependence(t *testing.T) { var timetk3 time.Time first := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if first || job.Type != model.ActionTruncateTable { return } @@ -1089,7 +1090,7 @@ func TestInsertIgnore(t *testing.T) { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { switch job.SchemaState { case model.StateDeleteOnly: _, err := tk1.Exec("INSERT INTO t VALUES (-18585,'aaa',1), (-18585,'0',1), (-18585,'1',1), (-18585,'duplicatevalue',1);") @@ -1124,3 +1125,148 @@ func TestDDLJobErrEntrySizeTooLarge(t *testing.T) { tk.MustExec("create table t1 (a int);") tk.MustExec("alter table t add column b int;") // Should not block. } + +func insertMockJob2Table(tk *testkit.TestKit, job *model.Job) { + b, err := job.Encode(false) + tk.RequireNoError(err) + sql := fmt.Sprintf("insert into mysql.tidb_ddl_job(job_id, job_meta) values(%s, ?);", + strconv.FormatInt(job.ID, 10)) + tk.MustExec(sql, b) +} + +func getJobMetaByID(t *testing.T, tk *testkit.TestKit, jobID int64) *model.Job { + sql := fmt.Sprintf("select job_meta from mysql.tidb_ddl_job where job_id = %s", + strconv.FormatInt(jobID, 10)) + rows := tk.MustQuery(sql) + res := rows.Rows() + require.Len(t, res, 1) + require.Len(t, res[0], 1) + jobBinary := []byte(res[0][0].(string)) + job := model.Job{} + err := job.Decode(jobBinary) + require.NoError(t, err) + return &job +} + +func deleteJobMetaByID(tk *testkit.TestKit, jobID int64) { + sql := fmt.Sprintf("delete from mysql.tidb_ddl_job where job_id = %s", + strconv.FormatInt(jobID, 10)) + tk.MustExec(sql) +} + +func TestAdminAlterDDLJobUpdateSysTable(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int);") + + job := model.Job{ + ID: 1, + Type: model.ActionAddIndex, + ReorgMeta: &model.DDLReorgMeta{}, + } + job.ReorgMeta.Concurrency.Store(4) + job.ReorgMeta.BatchSize.Store(128) + insertMockJob2Table(tk, &job) + tk.MustExec(fmt.Sprintf("admin alter ddl jobs %d thread = 8;", job.ID)) + j := getJobMetaByID(t, tk, job.ID) + require.Equal(t, j.ReorgMeta.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter())), 8) + + tk.MustExec(fmt.Sprintf("admin alter ddl jobs %d batch_size = 256;", job.ID)) + j = getJobMetaByID(t, tk, job.ID) + require.Equal(t, j.ReorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize())), 256) + + tk.MustExec(fmt.Sprintf("admin alter ddl jobs %d thread = 16, batch_size = 512;", job.ID)) + j = getJobMetaByID(t, tk, job.ID) + require.Equal(t, j.ReorgMeta.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter())), 16) + require.Equal(t, j.ReorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize())), 512) + deleteJobMetaByID(tk, job.ID) +} + +func TestAdminAlterDDLJobUnsupportedCases(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int);") + + // invalid config value + tk.MustGetErrMsg("admin alter ddl jobs 1 thread = 0;", "the value 0 for thread is out of range [1, 256]") + tk.MustGetErrMsg("admin alter ddl jobs 1 thread = 257;", "the value 257 for thread is out of range [1, 256]") + tk.MustGetErrMsg("admin alter ddl jobs 1 thread = 10.5;", "the value for thread is invalid, only integer is allowed") + tk.MustGetErrMsg("admin alter ddl jobs 1 thread = '16';", "the value for thread is invalid, only integer is allowed") + tk.MustGetErrMsg("admin alter ddl jobs 1 thread = '';", "the value for thread is invalid, only integer is allowed") + tk.MustGetErrMsg("admin alter ddl jobs 1 batch_size = 31;", "the value 31 for batch_size is out of range [32, 10240]") + tk.MustGetErrMsg("admin alter ddl jobs 1 batch_size = 10241;", "the value 10241 for batch_size is out of range [32, 10240]") + tk.MustGetErrMsg("admin alter ddl jobs 1 batch_size = 321.3;", "the value for batch_size is invalid, only integer is allowed") + tk.MustGetErrMsg("admin alter ddl jobs 1 batch_size = '512';", "the value for batch_size is invalid, only integer is allowed") + tk.MustGetErrMsg("admin alter ddl jobs 1 batch_size = '';", "the value for batch_size is invalid, only integer is allowed") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '2PiB';", "the value 2251799813685248 for max_write_speed is out of range [0, 1125899906842624]") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = -1;", "the value -1 for max_write_speed is out of range [0, 1125899906842624]") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = 1.23;", "the value 1.23 for max_write_speed is invalid") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = 'MiB';", "parse max_write_speed value error: invalid size: 'MiB'") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = 'asd';", "parse max_write_speed value error: invalid size: 'asd'") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '';", "parse max_write_speed value error: invalid size: ''") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '20xl';", "parse max_write_speed value error: invalid suffix: 'xl'") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = 1.2.3;", "[parser:1064]You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 46 near \".3;\" ") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = 20+30;", "[parser:1064]You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 44 near \"+30;\" ") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = rand();", "[parser:1064]You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 45 near \"rand();\" ") + // valid config value + tk.MustGetErrMsg("admin alter ddl jobs 1 thread = 16;", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 batch_size = 64;", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '0';", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '64';", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '2KB';", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '3MiB';", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '4 gb';", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = 1;", "ddl job 1 is not running") + tk.MustGetErrMsg("admin alter ddl jobs 1 max_write_speed = '1.23';", "ddl job 1 is not running") + + // invalid job id + tk.MustGetErrMsg("admin alter ddl jobs 1 thread = 8;", "ddl job 1 is not running") + + job := model.Job{ + ID: 1, + Type: model.ActionAddColumn, + } + insertMockJob2Table(tk, &job) + // unsupported job type + tk.MustGetErrMsg(fmt.Sprintf("admin alter ddl jobs %d thread = 8;", job.ID), + "unsupported DDL operation: add column. Supported DDL operations are: ADD INDEX (with tidb_enable_dist_task=OFF), MODIFY COLUMN, and ALTER TABLE REORGANIZE PARTITION") + deleteJobMetaByID(tk, 1) + + job = model.Job{ + ID: 1, + Type: model.ActionAddIndex, + ReorgMeta: &model.DDLReorgMeta{ + IsDistReorg: true, + }, + } + insertMockJob2Table(tk, &job) + // unsupported job type + tk.MustGetErrMsg(fmt.Sprintf("admin alter ddl jobs %d thread = 8;", job.ID), + "unsupported DDL operation: add index. Supported DDL operations are: ADD INDEX (with tidb_enable_dist_task=OFF), MODIFY COLUMN, and ALTER TABLE REORGANIZE PARTITION") + deleteJobMetaByID(tk, 1) +} + +func TestAdminAlterDDLJobCommitFailed(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int);") + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/executor/mockAlterDDLJobCommitFailed", `return(true)`) + defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/executor/mockAlterDDLJobCommitFailed") + + job := model.Job{ + ID: 1, + Type: model.ActionAddIndex, + ReorgMeta: &model.DDLReorgMeta{}, + } + job.ReorgMeta.Concurrency.Store(4) + job.ReorgMeta.BatchSize.Store(128) + insertMockJob2Table(tk, &job) + tk.MustGetErrMsg(fmt.Sprintf("admin alter ddl jobs %d thread = 8, batch_size = 256;", job.ID), + "mock commit failed on admin alter ddl jobs") + j := getJobMetaByID(t, tk, job.ID) + require.Equal(t, j.ReorgMeta, job.ReorgMeta) + deleteJobMetaByID(tk, job.ID) +} diff --git a/pkg/ddl/ddl.go b/pkg/ddl/ddl.go index 8f3fa816e1466..912eaa271e4a5 100644 --- a/pkg/ddl/ddl.go +++ b/pkg/ddl/ddl.go @@ -73,7 +73,8 @@ const ( ddlSchemaVersionKeyLock = "/tidb/ddl/schema_version_lock" // addingDDLJobPrefix is the path prefix used to record the newly added DDL job, and it's saved to etcd. addingDDLJobPrefix = "/tidb/ddl/add_ddl_job_" - ddlPrompt = "ddl" + // Prompt is the prompt for ddl owner manager. + Prompt = "ddl" batchAddingJobs = 100 @@ -638,19 +639,21 @@ func newDDL(ctx context.Context, options ...Option) (*ddl, *executor) { o(opt) } - id := uuid.New().String() + var id string var manager owner.Manager var schemaVerSyncer schemaver.Syncer var serverStateSyncer serverstate.Syncer var deadLockCkr util.DeadTableLockChecker if etcdCli := opt.EtcdCli; etcdCli == nil { + id = uuid.New().String() // The etcdCli is nil if the store is localstore which is only used for testing. // So we use mockOwnerManager and memSyncer. manager = owner.NewMockManager(ctx, id, opt.Store, DDLOwnerKey) schemaVerSyncer = schemaver.NewMemSyncer() serverStateSyncer = serverstate.NewMemSyncer() } else { - manager = owner.NewOwnerManager(ctx, etcdCli, ddlPrompt, id, DDLOwnerKey) + id = globalOwnerManager.ID() + manager = globalOwnerManager.OwnerManager() schemaVerSyncer = schemaver.NewEtcdSyncer(etcdCli, id) serverStateSyncer = serverstate.NewEtcdSyncer(etcdCli, util.ServerGlobalState) deadLockCkr = util.NewDeadTableLockChecker(etcdCli) @@ -1002,8 +1005,14 @@ func (d *ddl) close() { startTime := time.Now() d.cancel() + failpoint.InjectCall("afterDDLCloseCancel") d.wg.Wait() - d.ownerManager.Cancel() + // when run with real-tikv, the lifecycle of ownerManager is managed by globalOwnerManager, + // when run with uni-store BreakCampaignLoop is same as Close. + // hope we can unify it after refactor to let some components only start once. + if d.ownerManager != nil { + d.ownerManager.BreakCampaignLoop() + } d.schemaVerSyncer.Close() // d.delRangeMgr using sessions from d.sessPool. @@ -1300,7 +1309,7 @@ func get2JobsFromTable(sess *sess.Session) (*model.Job, *model.Job, error) { } // cancelRunningJob cancel a DDL job that is in the concurrent state. -func cancelRunningJob(_ *sess.Session, job *model.Job, +func cancelRunningJob(job *model.Job, byWho model.AdminCommandOperator) (err error) { // These states can't be cancelled. if job.IsDone() || job.IsSynced() { @@ -1321,7 +1330,7 @@ func cancelRunningJob(_ *sess.Session, job *model.Job, } // pauseRunningJob check and pause the running Job -func pauseRunningJob(_ *sess.Session, job *model.Job, +func pauseRunningJob(job *model.Job, byWho model.AdminCommandOperator) (err error) { if job.IsPausing() || job.IsPaused() { return dbterror.ErrPausedDDLJob.GenWithStackByArgs(job.ID) @@ -1340,7 +1349,7 @@ func pauseRunningJob(_ *sess.Session, job *model.Job, } // resumePausedJob check and resume the Paused Job -func resumePausedJob(_ *sess.Session, job *model.Job, +func resumePausedJob(job *model.Job, byWho model.AdminCommandOperator) (err error) { if !job.IsResumable() { errMsg := fmt.Sprintf("job has not been paused, job state:%s, schema state:%s", @@ -1362,7 +1371,7 @@ func resumePausedJob(_ *sess.Session, job *model.Job, // processJobs command on the Job according to the process func processJobs( ctx context.Context, - process func(*sess.Session, *model.Job, model.AdminCommandOperator) (err error), + process func(*model.Job, model.AdminCommandOperator) (err error), sessCtx sessionctx.Context, ids []int64, byWho model.AdminCommandOperator, @@ -1409,7 +1418,7 @@ func processJobs( } delete(jobMap, job.ID) - err = process(ns, job, byWho) + err = process(job, byWho) if err != nil { jobErrs[i] = err continue @@ -1481,7 +1490,7 @@ func ResumeJobsBySystem(se sessionctx.Context, ids []int64) (errs []error, err e // pprocessAllJobs processes all the jobs in the job table, 100 jobs at a time in case of high memory usage. func processAllJobs( ctx context.Context, - process func(*sess.Session, *model.Job, model.AdminCommandOperator) (err error), + process func(*model.Job, model.AdminCommandOperator) (err error), se sessionctx.Context, byWho model.AdminCommandOperator, ) (map[int64]error, error) { @@ -1509,7 +1518,7 @@ func processAllJobs( } for _, job := range jobs { - err = process(ns, job, byWho) + err = process(job, byWho) if err != nil { jobErrs[job.ID] = err continue diff --git a/pkg/ddl/ddl_test.go b/pkg/ddl/ddl_test.go index edf9970d415c4..23e6fd2ecd36e 100644 --- a/pkg/ddl/ddl_test.go +++ b/pkg/ddl/ddl_test.go @@ -52,11 +52,6 @@ type DDLForTest interface { RemoveReorgCtx(id int64) } -// IsReorgCanceled exports for testing. -func (rc *reorgCtx) IsReorgCanceled() bool { - return rc.isReorgCanceled() -} - // NewReorgCtx exports for testing. func (d *ddl) NewReorgCtx(jobID int64, rowCount int64) *reorgCtx { return d.newReorgCtx(jobID, rowCount) diff --git a/pkg/ddl/delete_range.go b/pkg/ddl/delete_range.go index f4c558e53ae82..486db3fd336d1 100644 --- a/pkg/ddl/delete_range.go +++ b/pkg/ddl/delete_range.go @@ -327,13 +327,24 @@ func insertJobIntoDeleteRangeTable(ctx context.Context, wrapper DelRangeExecWrap // always delete the table range, even when it's a partitioned table where // it may contain global index regions. return errors.Trace(doBatchDeleteTablesRange(ctx, wrapper, job.ID, []int64{tableID}, ea, "truncate table: table ID")) - case model.ActionDropTablePartition, model.ActionReorganizePartition, - model.ActionRemovePartitioning, model.ActionAlterTablePartitioning: + case model.ActionDropTablePartition: args, err := model.GetFinishedTablePartitionArgs(job) if err != nil { return errors.Trace(err) } - return errors.Trace(doBatchDeleteTablesRange(ctx, wrapper, job.ID, args.OldPhysicalTblIDs, ea, "reorganize/drop partition: physical table ID(s)")) + return errors.Trace(doBatchDeleteTablesRange(ctx, wrapper, job.ID, args.OldPhysicalTblIDs, ea, "drop partition: physical table ID(s)")) + case model.ActionReorganizePartition, model.ActionRemovePartitioning, model.ActionAlterTablePartitioning: + // Delete dropped partitions, as well as replaced global indexes. + args, err := model.GetFinishedTablePartitionArgs(job) + if err != nil { + return errors.Trace(err) + } + for _, idx := range args.OldGlobalIndexes { + if err := doBatchDeleteIndiceRange(ctx, wrapper, job.ID, idx.TableID, []int64{idx.IndexID}, ea, "reorganize partition, replaced global indexes"); err != nil { + return errors.Trace(err) + } + } + return errors.Trace(doBatchDeleteTablesRange(ctx, wrapper, job.ID, args.OldPhysicalTblIDs, ea, "reorganize partition: physical table ID(s)")) case model.ActionTruncateTablePartition: args, err := model.GetTruncateTableArgs(job) if err != nil { diff --git a/pkg/ddl/executor.go b/pkg/ddl/executor.go index 0a3c0ceb846ad..7f678c2c33724 100644 --- a/pkg/ddl/executor.go +++ b/pkg/ddl/executor.go @@ -2005,20 +2005,14 @@ func (e *executor) multiSchemaChange(ctx sessionctx.Context, ti ast.Ident, info Type: model.ActionMultiSchemaChange, BinlogInfo: &model.HistoryInfo{}, MultiSchemaInfo: info, - ReorgMeta: nil, CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, InvolvingSchemaInfo: involvingSchemaInfo, SQLMode: ctx.GetSessionVars().SQLMode, } - if containsDistTaskSubJob(subJobs) { - job.ReorgMeta, err = newReorgMetaFromVariables(job, ctx) - if err != nil { - return err - } - } else { - job.ReorgMeta = NewDDLReorgMeta(ctx) + err = initJobReorgMetaFromVariables(job, ctx) + if err != nil { + return errors.Trace(err) } - err = checkMultiSchemaInfo(info, t) if err != nil { return errors.Trace(err) @@ -2027,16 +2021,6 @@ func (e *executor) multiSchemaChange(ctx sessionctx.Context, ti ast.Ident, info return e.DoDDLJob(ctx, job) } -func containsDistTaskSubJob(subJobs []*model.SubJob) bool { - for _, sub := range subJobs { - if sub.Type == model.ActionAddIndex || - sub.Type == model.ActionAddPrimaryKey { - return true - } - } - return false -} - func (e *executor) RebaseAutoID(ctx sessionctx.Context, ident ast.Ident, newBase int64, tp autoid.AllocatorType, force bool) error { schema, t, err := e.getSchemaAndTableByIdent(ident) if err != nil { @@ -2451,10 +2435,13 @@ func (e *executor) AlterTablePartitioning(ctx sessionctx.Context, ident ast.Iden TableName: t.Meta().Name.L, Type: model.ActionAlterTablePartitioning, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: NewDDLReorgMeta(ctx), CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, SQLMode: ctx.GetSessionVars().SQLMode, } + err = initJobReorgMetaFromVariables(job, ctx) + if err != nil { + return err + } args := &model.TablePartitionArgs{ PartNames: partNames, @@ -2517,10 +2504,13 @@ func (e *executor) ReorganizePartitions(ctx sessionctx.Context, ident ast.Ident, TableName: t.Meta().Name.L, Type: model.ActionReorganizePartition, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: NewDDLReorgMeta(ctx), CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, SQLMode: ctx.GetSessionVars().SQLMode, } + err = initJobReorgMetaFromVariables(job, ctx) + if err != nil { + return errors.Trace(err) + } args := &model.TablePartitionArgs{ PartNames: partNames, PartInfo: partInfo, @@ -2583,10 +2573,13 @@ func (e *executor) RemovePartitioning(ctx sessionctx.Context, ident ast.Ident, s TableName: meta.Name.L, Type: model.ActionRemovePartitioning, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: NewDDLReorgMeta(ctx), CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, SQLMode: ctx.GetSessionVars().SQLMode, } + err = initJobReorgMetaFromVariables(job, ctx) + if err != nil { + return errors.Trace(err) + } args := &model.TablePartitionArgs{ PartNames: partNames, PartInfo: partInfo, @@ -3385,10 +3378,13 @@ func (e *executor) RenameColumn(ctx sessionctx.Context, ident ast.Ident, spec *a TableName: tbl.Meta().Name.L, Type: model.ActionModifyColumn, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: NewDDLReorgMeta(ctx), CDCWriteSource: ctx.GetSessionVars().CDCWriteSource, SQLMode: ctx.GetSessionVars().SQLMode, } + err = initJobReorgMetaFromVariables(job, ctx) + if err != nil { + return err + } args := &model.ModifyColumnArgs{ Column: newCol, @@ -4070,6 +4066,9 @@ var systemTables = map[string]struct{}{ } func isUndroppableTable(schema, table string) bool { + if schema == "workload_schema" { + return true + } if schema != mysql.SystemDB { return false } @@ -4645,11 +4644,10 @@ func (e *executor) CreatePrimaryKey(ctx sessionctx.Context, ti ast.Ident, indexN OpType: model.OpAddIndex, } - reorgMeta, err := newReorgMetaFromVariables(job, ctx) + err = initJobReorgMetaFromVariables(job, ctx) if err != nil { return err } - job.ReorgMeta = reorgMeta err = e.doDDLJob2(ctx, job, args) return errors.Trace(err) @@ -4758,10 +4756,7 @@ func (e *executor) createVectorIndex(ctx sessionctx.Context, ti ast.Ident, index return errors.Trace(err) } - job, err := buildAddIndexJobWithoutTypeAndArgs(ctx, schema, t) - if err != nil { - return errors.Trace(err) - } + job := buildAddIndexJobWithoutTypeAndArgs(ctx, schema, t) job.Version = model.GetJobVerInUse() job.Type = model.ActionAddVectorIndex indexPartSpecifications[0].Expr = nil @@ -4788,8 +4783,7 @@ func (e *executor) createVectorIndex(ctx sessionctx.Context, ti ast.Ident, index return errors.Trace(err) } -func buildAddIndexJobWithoutTypeAndArgs(ctx sessionctx.Context, schema *model.DBInfo, t table.Table) (*model.Job, error) { - tzName, tzOffset := ddlutil.GetTimeZone(ctx) +func buildAddIndexJobWithoutTypeAndArgs(ctx sessionctx.Context, schema *model.DBInfo, t table.Table) *model.Job { charset, collate := ctx.GetSessionVars().GetCharsetInfo() job := &model.Job{ SchemaID: schema.ID, @@ -4797,23 +4791,12 @@ func buildAddIndexJobWithoutTypeAndArgs(ctx sessionctx.Context, schema *model.DB SchemaName: schema.Name.L, TableName: t.Meta().Name.L, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: &model.DDLReorgMeta{ - SQLMode: ctx.GetSessionVars().SQLMode, - Warnings: make(map[errors.ErrorID]*terror.Error), - WarningsCount: make(map[errors.ErrorID]int64), - Location: &model.TimeZoneLocation{Name: tzName, Offset: tzOffset}, - }, - Priority: ctx.GetSessionVars().DDLReorgPriority, - Charset: charset, - Collate: collate, - SQLMode: ctx.GetSessionVars().SQLMode, - } - reorgMeta, err := newReorgMetaFromVariables(job, ctx) - if err != nil { - return nil, errors.Trace(err) + Priority: ctx.GetSessionVars().DDLReorgPriority, + Charset: charset, + Collate: collate, + SQLMode: ctx.GetSessionVars().SQLMode, } - job.ReorgMeta = reorgMeta - return job, nil + return job } func (e *executor) CreateIndex(ctx sessionctx.Context, stmt *ast.CreateIndexStmt) error { @@ -4907,15 +4890,17 @@ func (e *executor) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast // global is set to 'false' is just there to be backwards compatible, // to avoid unmarshal issues, it is now part of indexOption. global := false - job, err := buildAddIndexJobWithoutTypeAndArgs(ctx, schema, t) - if err != nil { - return errors.Trace(err) - } + job := buildAddIndexJobWithoutTypeAndArgs(ctx, schema, t) job.Version = model.GetJobVerInUse() job.Type = model.ActionAddIndex job.CDCWriteSource = ctx.GetSessionVars().CDCWriteSource + err = initJobReorgMetaFromVariables(job, ctx) + if err != nil { + return errors.Trace(err) + } + args := &model.ModifyIndexArgs{ IndexArgs: []*model.IndexArg{{ Unique: unique, @@ -4937,44 +4922,81 @@ func (e *executor) createIndex(ctx sessionctx.Context, ti ast.Ident, keyType ast return errors.Trace(err) } -func newReorgMetaFromVariables(job *model.Job, sctx sessionctx.Context) (*model.DDLReorgMeta, error) { - reorgMeta := NewDDLReorgMeta(sctx) - reorgMeta.IsDistReorg = variable.EnableDistTask.Load() - reorgMeta.IsFastReorg = variable.EnableFastReorg.Load() - reorgMeta.TargetScope = variable.ServiceScope.Load() - if sv, ok := sctx.GetSessionVars().GetSystemVar(variable.TiDBDDLReorgWorkerCount); ok { - reorgMeta.Concurrency = variable.TidbOptInt(sv, 0) +func initJobReorgMetaFromVariables(job *model.Job, sctx sessionctx.Context) error { + m := NewDDLReorgMeta(sctx) + setReorgParam := func() { + if sv, ok := sctx.GetSessionVars().GetSystemVar(variable.TiDBDDLReorgWorkerCount); ok { + m.SetConcurrency(variable.TidbOptInt(sv, 0)) + } + if sv, ok := sctx.GetSessionVars().GetSystemVar(variable.TiDBDDLReorgBatchSize); ok { + m.SetBatchSize(variable.TidbOptInt(sv, 0)) + } + m.SetMaxWriteSpeed(int(variable.DDLReorgMaxWriteSpeed.Load())) } - if sv, ok := sctx.GetSessionVars().GetSystemVar(variable.TiDBDDLReorgBatchSize); ok { - reorgMeta.BatchSize = variable.TidbOptInt(sv, 0) + setDistTaskParam := func() error { + m.IsDistReorg = variable.EnableDistTask.Load() + m.IsFastReorg = variable.EnableFastReorg.Load() + m.TargetScope = variable.ServiceScope.Load() + if hasSysDB(job) { + if m.IsDistReorg { + logutil.DDLLogger().Info("cannot use distributed task execution on system DB", + zap.Stringer("job", job)) + } + m.IsDistReorg = false + m.IsFastReorg = false + failpoint.Inject("reorgMetaRecordFastReorgDisabled", func(_ failpoint.Value) { + LastReorgMetaFastReorgDisabled = true + }) + } + if m.IsDistReorg && !m.IsFastReorg { + return dbterror.ErrUnsupportedDistTask + } + return nil } - if reorgMeta.IsDistReorg && !reorgMeta.IsFastReorg { - return nil, dbterror.ErrUnsupportedDistTask - } - if hasSysDB(job) { - if reorgMeta.IsDistReorg { - logutil.DDLLogger().Info("cannot use distributed task execution on system DB", - zap.Stringer("job", job)) + switch job.Type { + case model.ActionAddIndex, model.ActionAddPrimaryKey: + setReorgParam() + err := setDistTaskParam() + if err != nil { + return err } - reorgMeta.IsDistReorg = false - reorgMeta.IsFastReorg = false - failpoint.Inject("reorgMetaRecordFastReorgDisabled", func(_ failpoint.Value) { - LastReorgMetaFastReorgDisabled = true - }) + case model.ActionReorganizePartition, + model.ActionRemovePartitioning, + model.ActionAlterTablePartitioning, + model.ActionModifyColumn: + setReorgParam() + case model.ActionMultiSchemaChange: + for _, sub := range job.MultiSchemaInfo.SubJobs { + switch sub.Type { + case model.ActionAddIndex, model.ActionAddPrimaryKey: + setReorgParam() + err := setDistTaskParam() + if err != nil { + return err + } + case model.ActionReorganizePartition, + model.ActionRemovePartitioning, + model.ActionAlterTablePartitioning, + model.ActionModifyColumn: + setReorgParam() + } + } + default: + return nil } - + job.ReorgMeta = m logutil.DDLLogger().Info("initialize reorg meta", zap.String("jobSchema", job.SchemaName), zap.String("jobTable", job.TableName), zap.Stringer("jobType", job.Type), - zap.Bool("enableDistTask", reorgMeta.IsDistReorg), - zap.Bool("enableFastReorg", reorgMeta.IsFastReorg), - zap.String("targetScope", reorgMeta.TargetScope), - zap.Int("concurrency", reorgMeta.Concurrency), - zap.Int("batchSize", reorgMeta.BatchSize), + zap.Bool("enableDistTask", m.IsDistReorg), + zap.Bool("enableFastReorg", m.IsFastReorg), + zap.String("targetScope", m.TargetScope), + zap.Int("concurrency", m.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter()))), + zap.Int("batchSize", m.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize()))), ) - return reorgMeta, nil + return nil } // LastReorgMetaFastReorgDisabled is used for test. @@ -6069,7 +6091,7 @@ func (e *executor) DropResourceGroup(ctx sessionctx.Context, stmt *ast.DropResou if checker == nil { return errors.New("miss privilege checker") } - user, matched := checker.MatchUserResourceGroupName(groupName.L) + user, matched := checker.MatchUserResourceGroupName(ctx.GetRestrictedSQLExecutor(), groupName.L) if matched { err = errors.Errorf("user [%s] depends on the resource group to drop", user) return err @@ -6565,8 +6587,15 @@ func (e *executor) DoDDLJobWrapper(ctx sessionctx.Context, jobW *JobWrapper) (re } }) - // worker should restart to continue handling tasks in limitJobCh, and send back through jobW.err - result := <-jobW.ResultCh[0] + var result jobSubmitResult + select { + case <-e.ctx.Done(): + logutil.DDLLogger().Info("DoDDLJob will quit because context done") + return e.ctx.Err() + case res := <-jobW.ResultCh[0]: + // worker should restart to continue handling tasks in limitJobCh, and send back through jobW.err + result = res + } // job.ID must be allocated after previous channel receive returns nil. jobID, err := result.jobID, result.err defer e.delJobDoneCh(jobID) @@ -6636,7 +6665,7 @@ func (e *executor) DoDDLJobWrapper(ctx sessionctx.Context, jobW *JobWrapper) (re ticker = updateTickerInterval(ticker, 10*e.lease, ddlAction, i) case <-e.ctx.Done(): logutil.DDLLogger().Info("DoDDLJob will quit because context done") - return context.Canceled + return e.ctx.Err() } // If the connection being killed, we need to CANCEL the DDL job. diff --git a/pkg/ddl/executor_test.go b/pkg/ddl/executor_test.go index ce4b1ed586efe..f0ff7fefe40f4 100644 --- a/pkg/ddl/executor_test.go +++ b/pkg/ddl/executor_test.go @@ -211,7 +211,7 @@ func TestCreateDropCreateTable(t *testing.T) { var fpErr error var createTable bool - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.Type == model.ActionDropTable && job.SchemaState == model.StateNone && !createTable { fpErr = failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/schemaver/mockOwnerCheckAllVersionSlow", fmt.Sprintf("return(%d)", job.ID)) wg.Add(1) @@ -223,7 +223,7 @@ func TestCreateDropCreateTable(t *testing.T) { } }) tk.MustExec("drop table t;") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") wg.Wait() require.True(t, createTable) diff --git a/pkg/ddl/export_test.go b/pkg/ddl/export_test.go index e815a3c6d1b9a..4585bcf297d6f 100644 --- a/pkg/ddl/export_test.go +++ b/pkg/ddl/export_test.go @@ -16,6 +16,7 @@ package ddl_test import ( "context" + "sync" "time" "github.com/ngaut/pools" @@ -41,14 +42,16 @@ func FetchChunk4Test(copCtx copr.CopContext, tbl table.PhysicalTable, startKey, return ctx, nil }, 8, 8, 0) sessPool := session.NewSessionPool(resPool) - srcChkPool := make(chan *chunk.Chunk, 10) - for i := 0; i < 10; i++ { - srcChkPool <- chunk.NewChunkWithCapacity(copCtx.GetBase().FieldTypes, batchSize) + srcChkPool := &sync.Pool{ + New: func() any { + return chunk.NewChunkWithCapacity(copCtx.GetBase().FieldTypes, + batchSize) + }, } opCtx, cancel := ddl.NewLocalOperatorCtx(context.Background(), 1) defer cancel() src := testutil.NewOperatorTestSource(ddl.TableScanTask{ID: 1, Start: startKey, End: endKey}) - scanOp := ddl.NewTableScanOperator(opCtx, sessPool, copCtx, srcChkPool, 1, nil, 0) + scanOp := ddl.NewTableScanOperator(opCtx, sessPool, copCtx, srcChkPool, 1, nil, 0, nil) sink := testutil.NewOperatorTestSink[ddl.IndexRecordChunk]() operator.Compose[ddl.TableScanTask](src, scanOp) diff --git a/pkg/ddl/fail_test.go b/pkg/ddl/fail_test.go index 2781b974247a3..a4f3cdfc13815 100644 --- a/pkg/ddl/fail_test.go +++ b/pkg/ddl/fail_test.go @@ -39,7 +39,7 @@ func TestFailBeforeDecodeArgs(t *testing.T) { first := true stateCnt := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { // It can be other schema states except failed schema state. // This schema state can only appear once. if job.SchemaState == model.StateWriteOnly { diff --git a/pkg/ddl/foreign_key_test.go b/pkg/ddl/foreign_key_test.go index dc3364dcf4dbb..a4db227b3f903 100644 --- a/pkg/ddl/foreign_key_test.go +++ b/pkg/ddl/foreign_key_test.go @@ -134,7 +134,7 @@ func TestForeignKey(t *testing.T) { var mu sync.Mutex checkOK := false var hookErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.State != model.JobStateDone { return } @@ -171,7 +171,7 @@ func TestForeignKey(t *testing.T) { checkOK = false mu.Unlock() // fix data race pr/#9491 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.State != model.JobStateDone { return } @@ -199,7 +199,7 @@ func TestForeignKey(t *testing.T) { mu.Unlock() require.NoError(t, hErr) require.True(t, ok) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") tk := testkit.NewTestKit(t, store) jobID := testDropTable(tk, t, dbInfo.Name.L, tblInfo.Name.L, dom) @@ -224,7 +224,7 @@ func TestTruncateOrDropTableWithForeignKeyReferred2(t *testing.T) { var wg sync.WaitGroup var truncateErr, dropErr error testTruncate := true - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateNone { return } @@ -275,7 +275,7 @@ func TestDropIndexNeededInForeignKey2(t *testing.T) { var wg sync.WaitGroup var dropErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StatePublic || job.Type != model.ActionDropIndex { return } @@ -309,7 +309,7 @@ func TestDropDatabaseWithForeignKeyReferred2(t *testing.T) { tk.MustExec("create database test2") var wg sync.WaitGroup var dropErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StateNone { return } @@ -345,7 +345,7 @@ func TestAddForeignKey2(t *testing.T) { tk.MustExec("create table t2 (id int key, b int, index(b));") var wg sync.WaitGroup var addErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState != model.StatePublic || job.Type != model.ActionDropIndex { return } @@ -380,7 +380,7 @@ func TestAddForeignKey3(t *testing.T) { var insertErrs []error var deleteErrs []error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type != model.ActionAddForeignKey { return } @@ -417,7 +417,7 @@ func TestForeignKeyInWriteOnlyMode(t *testing.T) { tkDDL.MustExec("insert into parent values(1)") var notExistErrs []error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionCreateTable && job.TableName == "child" { if job.SchemaState == model.StateDeleteOnly { // tk with the latest schema will insert data into child @@ -436,7 +436,7 @@ func TestForeignKeyInWriteOnlyMode(t *testing.T) { }) tkDDL.MustExec("create table child (id int, pid int, index idx_pid(pid), foreign key (pid) references parent(id) on delete cascade);") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") for _, err := range notExistErrs { require.Error(t, err) diff --git a/pkg/ddl/index.go b/pkg/ddl/index.go index 0a733715625d5..c51888b17dfd5 100644 --- a/pkg/ddl/index.go +++ b/pkg/ddl/index.go @@ -21,7 +21,6 @@ import ( "encoding/hex" "encoding/json" "fmt" - "math" "os" "slices" "strings" @@ -70,6 +69,7 @@ import ( "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/dbterror" "github.com/pingcap/tidb/pkg/util/generatedexpr" + "github.com/pingcap/tidb/pkg/util/intest" tidblogutil "github.com/pingcap/tidb/pkg/util/logutil" decoder "github.com/pingcap/tidb/pkg/util/rowDecoder" "github.com/pingcap/tidb/pkg/util/size" @@ -1119,6 +1119,7 @@ SwitchIndexState: func checkIfTableReorgWorkCanSkip( store kv.Storage, + sessCtx sessionctx.Context, tbl table.Table, job *model.Job, ) bool { @@ -1126,21 +1127,30 @@ func checkIfTableReorgWorkCanSkip( // Reorg work has begun. return false } + txn, err := sessCtx.Txn(false) + validTxn := err == nil && txn != nil && txn.Valid() + intest.Assert(validTxn) + if !validTxn { + logutil.DDLLogger().Warn("check if table is empty failed", zap.Error(err)) + return false + } + startTS := txn.StartTS() ctx := NewReorgContext() ctx.resourceGroupName = job.ReorgMeta.ResourceGroupName ctx.setDDLLabelForTopSQL(job.Query) - return checkIfTableIsEmpty(ctx, store, tbl) + return checkIfTableIsEmpty(ctx, store, tbl, startTS) } func checkIfTableIsEmpty( ctx *ReorgContext, store kv.Storage, tbl table.Table, + startTS uint64, ) bool { if pTbl, ok := tbl.(table.PartitionedTable); ok { for _, pid := range pTbl.GetAllPartitionIDs() { pTbl := pTbl.GetPartition(pid) - if !checkIfPhysicalTableIsEmpty(ctx, store, pTbl) { + if !checkIfPhysicalTableIsEmpty(ctx, store, pTbl, startTS) { return false } } @@ -1148,15 +1158,17 @@ func checkIfTableIsEmpty( } //nolint:forcetypeassert plainTbl := tbl.(table.PhysicalTable) - return checkIfPhysicalTableIsEmpty(ctx, store, plainTbl) + return checkIfPhysicalTableIsEmpty(ctx, store, plainTbl, startTS) } func checkIfPhysicalTableIsEmpty( ctx *ReorgContext, store kv.Storage, tbl table.PhysicalTable, + startTS uint64, ) bool { - hasRecord, err := ExistsTableRow(ctx, store, math.MaxInt64, tbl) + hasRecord, err := existsTableRow(ctx, store, tbl, startTS) + intest.Assert(err == nil) if err != nil { logutil.DDLLogger().Info("check if table is empty failed", zap.Error(err)) return false @@ -1166,6 +1178,7 @@ func checkIfPhysicalTableIsEmpty( func checkIfTempIndexReorgWorkCanSkip( store kv.Storage, + sessCtx sessionctx.Context, tbl table.Table, allIndexInfos []*model.IndexInfo, job *model.Job, @@ -1179,6 +1192,14 @@ func checkIfTempIndexReorgWorkCanSkip( // Reorg work has begun. return false } + txn, err := sessCtx.Txn(false) + validTxn := err == nil && txn != nil && txn.Valid() + intest.Assert(validTxn) + if !validTxn { + logutil.DDLLogger().Warn("check if temp index is empty failed", zap.Error(err)) + return false + } + startTS := txn.StartTS() ctx := NewReorgContext() ctx.resourceGroupName = job.ReorgMeta.ResourceGroupName ctx.setDDLLabelForTopSQL(job.Query) @@ -1190,7 +1211,7 @@ func checkIfTempIndexReorgWorkCanSkip( globalIdxIDs = append(globalIdxIDs, idxInfo.ID) } } - return checkIfTempIndexIsEmpty(ctx, store, tbl, firstIdxID, lastIdxID, globalIdxIDs) + return checkIfTempIndexIsEmpty(ctx, store, tbl, firstIdxID, lastIdxID, globalIdxIDs, startTS) } func checkIfTempIndexIsEmpty( @@ -1199,22 +1220,23 @@ func checkIfTempIndexIsEmpty( tbl table.Table, firstIdxID, lastIdxID int64, globalIdxIDs []int64, + startTS uint64, ) bool { tblMetaID := tbl.Meta().ID if pTbl, ok := tbl.(table.PartitionedTable); ok { for _, pid := range pTbl.GetAllPartitionIDs() { - if !checkIfTempIndexIsEmptyForPhysicalTable(ctx, store, pid, firstIdxID, lastIdxID) { + if !checkIfTempIndexIsEmptyForPhysicalTable(ctx, store, pid, firstIdxID, lastIdxID, startTS) { return false } } for _, globalIdxID := range globalIdxIDs { - if !checkIfTempIndexIsEmptyForPhysicalTable(ctx, store, tblMetaID, globalIdxID, globalIdxID) { + if !checkIfTempIndexIsEmptyForPhysicalTable(ctx, store, tblMetaID, globalIdxID, globalIdxID, startTS) { return false } } return true } - return checkIfTempIndexIsEmptyForPhysicalTable(ctx, store, tblMetaID, firstIdxID, lastIdxID) + return checkIfTempIndexIsEmptyForPhysicalTable(ctx, store, tblMetaID, firstIdxID, lastIdxID, startTS) } func checkIfTempIndexIsEmptyForPhysicalTable( @@ -1222,15 +1244,17 @@ func checkIfTempIndexIsEmptyForPhysicalTable( store kv.Storage, pid int64, firstIdxID, lastIdxID int64, + startTS uint64, ) bool { start, end := encodeTempIndexRange(pid, firstIdxID, lastIdxID) foundKey := false idxPrefix := tablecodec.GenTableIndexPrefix(pid) - err := iterateSnapshotKeys(ctx, store, kv.PriorityLow, idxPrefix, math.MaxUint64, start, end, + err := iterateSnapshotKeys(ctx, store, kv.PriorityLow, idxPrefix, startTS, start, end, func(_ kv.Handle, _ kv.Key, _ []byte) (more bool, err error) { foundKey = true return false, nil }) + intest.Assert(err == nil) if err != nil { logutil.DDLLogger().Info("check if temp index is empty failed", zap.Error(err)) return false @@ -1274,7 +1298,7 @@ func pickBackfillType(job *model.Job) (model.ReorgType, error) { func loadCloudStorageURI(w *worker, job *model.Job) { jc := w.jobContext(job.ID, job.ReorgMeta) jc.cloudStorageURI = variable.CloudStorageURI.Load() - job.ReorgMeta.UseCloudStorage = len(jc.cloudStorageURI) > 0 + job.ReorgMeta.UseCloudStorage = len(jc.cloudStorageURI) > 0 && job.ReorgMeta.IsDistReorg } func doReorgWorkForCreateIndexMultiSchema(w *worker, jobCtx *jobContext, job *model.Job, @@ -1306,7 +1330,7 @@ func doReorgWorkForCreateIndex( return false, ver, err } if !reorgTp.NeedMergeProcess() { - skipReorg := checkIfTableReorgWorkCanSkip(w.store, tbl, job) + skipReorg := checkIfTableReorgWorkCanSkip(w.store, w.sess.Session(), tbl, job) if skipReorg { logutil.DDLLogger().Info("table is empty, skipping reorg work", zap.Int64("jobID", job.ID), @@ -1317,7 +1341,7 @@ func doReorgWorkForCreateIndex( } switch allIndexInfos[0].BackfillState { case model.BackfillStateRunning: - skipReorg := checkIfTableReorgWorkCanSkip(w.store, tbl, job) + skipReorg := checkIfTableReorgWorkCanSkip(w.store, w.sess.Session(), tbl, job) if !skipReorg { logutil.DDLLogger().Info("index backfill state running", zap.Int64("job ID", job.ID), zap.String("table", tbl.Meta().Name.O), @@ -1337,6 +1361,7 @@ func doReorgWorkForCreateIndex( return false, ver, errors.Trace(err) } } else { + failpoint.InjectCall("afterCheckTableReorgCanSkip") logutil.DDLLogger().Info("table is empty, skipping reorg work", zap.Int64("jobID", job.ID), zap.String("table", tbl.Meta().Name.O)) @@ -1352,6 +1377,7 @@ func doReorgWorkForCreateIndex( MockDMLExecutionStateBeforeMerge() } }) + failpoint.InjectCall("BeforeBackfillMerge") logutil.DDLLogger().Info("index backfill state ready to merge", zap.Int64("job ID", job.ID), zap.String("table", tbl.Meta().Name.O), @@ -1366,13 +1392,14 @@ func doReorgWorkForCreateIndex( ver, err = updateVersionAndTableInfo(jobCtx, job, tbl.Meta(), true) return false, ver, errors.Trace(err) case model.BackfillStateMerging: - skipReorg := checkIfTempIndexReorgWorkCanSkip(w.store, tbl, allIndexInfos, job) + skipReorg := checkIfTempIndexReorgWorkCanSkip(w.store, w.sess.Session(), tbl, allIndexInfos, job) if !skipReorg { done, ver, err = runReorgJobAndHandleErr(w, jobCtx, job, tbl, allIndexInfos, true) if !done { return false, ver, err } } else { + failpoint.InjectCall("afterCheckTempIndexReorgCanSkip") logutil.DDLLogger().Info("temp index is empty, skipping reorg work", zap.Int64("jobID", job.ID), zap.String("table", tbl.Meta().Name.O)) @@ -2024,14 +2051,6 @@ func (w *addIndexTxnWorker) checkHandleExists(idxInfo *model.IndexInfo, key kv.K if hasBeenBackFilled { return nil } - if idxInfo.Global { - // 'handle' comes from reading directly from a partition, without partition id, - // so we can only compare the handle part of the key. - if ph, ok := h.(kv.PartitionHandle); ok && ph.Handle.Equal(handle) { - // table row has been back-filled already, OK to add the index entry - return nil - } - } return ddlutil.GenKeyExistsErr(key, value, idxInfo, tblInfo) } @@ -2369,7 +2388,7 @@ func (w *worker) addTableIndex( // TODO: Support typeAddIndexMergeTmpWorker. if reorgInfo.ReorgMeta.IsDistReorg && !reorgInfo.mergingTmpIdx { if reorgInfo.ReorgMeta.ReorgTp == model.ReorgTypeLitMerge { - err := w.executeDistTask(t, reorgInfo) + err := w.executeDistTask(ctx, t, reorgInfo) if err != nil { return err } @@ -2436,7 +2455,7 @@ func checkDuplicateForUniqueIndex(ctx context.Context, t table.Table, reorgInfo ctx := tidblogutil.WithCategory(ctx, "ddl-ingest") if bc == nil { bc, err = ingest.LitBackCtxMgr.Register( - ctx, reorgInfo.ID, indexInfo.Unique, nil, discovery, reorgInfo.ReorgMeta.ResourceGroupName, 1, reorgInfo.RealStartTS) + ctx, reorgInfo.ID, indexInfo.Unique, nil, discovery, reorgInfo.ReorgMeta.ResourceGroupName, 1, 0, reorgInfo.RealStartTS) if err != nil { return err } @@ -2450,7 +2469,7 @@ func checkDuplicateForUniqueIndex(ctx context.Context, t table.Table, reorgInfo return nil } -func (w *worker) executeDistTask(t table.Table, reorgInfo *reorgInfo) error { +func (w *worker) executeDistTask(stepCtx context.Context, t table.Table, reorgInfo *reorgInfo) error { if reorgInfo.mergingTmpIdx { return errors.New("do not support merge index") } @@ -2501,7 +2520,7 @@ func (w *worker) executeDistTask(t table.Table, reorgInfo *reorgInfo) error { return err } err = handle.WaitTaskDoneOrPaused(ctx, task.ID) - if err := w.isReorgRunnable(reorgInfo.Job.ID, true); err != nil { + if err := w.isReorgRunnable(stepCtx, true); err != nil { if dbterror.ErrPausedDDLJob.Equal(err) { logutil.DDLLogger().Warn("job paused by user", zap.Error(err)) return dbterror.ErrPausedDDLJob.GenWithStackByArgs(reorgInfo.Job.ID) @@ -2538,7 +2557,7 @@ func (w *worker) executeDistTask(t table.Table, reorgInfo *reorgInfo) error { defer close(done) err := submitAndWaitTask(ctx, taskKey, taskType, concurrency, reorgInfo.ReorgMeta.TargetScope, metaData) failpoint.InjectCall("pauseAfterDistTaskFinished") - if err := w.isReorgRunnable(reorgInfo.Job.ID, true); err != nil { + if err := w.isReorgRunnable(stepCtx, true); err != nil { if dbterror.ErrPausedDDLJob.Equal(err) { logutil.DDLLogger().Warn("job paused by user", zap.Error(err)) return dbterror.ErrPausedDDLJob.GenWithStackByArgs(reorgInfo.Job.ID) @@ -2559,7 +2578,7 @@ func (w *worker) executeDistTask(t table.Table, reorgInfo *reorgInfo) error { w.updateDistTaskRowCount(taskKey, reorgInfo.Job.ID) return nil case <-checkFinishTk.C: - if err = w.isReorgRunnable(reorgInfo.Job.ID, true); err != nil { + if err = w.isReorgRunnable(stepCtx, true); err != nil { if dbterror.ErrPausedDDLJob.Equal(err) { if err = handle.PauseTask(w.workCtx, taskKey); err != nil { logutil.DDLLogger().Error("pause task error", zap.String("task_key", taskKey), zap.Error(err)) diff --git a/pkg/ddl/index_change_test.go b/pkg/ddl/index_change_test.go index c65f3e5105cbc..3b4490c500de7 100644 --- a/pkg/ddl/index_change_test.go +++ b/pkg/ddl/index_change_test.go @@ -51,7 +51,7 @@ func TestIndexChange(t *testing.T) { writeOnlyTable table.Table publicTable table.Table ) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.Type != model.ActionAddIndex || job.TableName != "t" { return } @@ -96,7 +96,7 @@ func TestIndexChange(t *testing.T) { prevState = model.StateNone var noneTable table.Table - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { jobID.Store(job.ID) if job.SchemaState == prevState { return diff --git a/pkg/ddl/index_modify_test.go b/pkg/ddl/index_modify_test.go index b38d05fbffbd5..bf497f2fc86d7 100644 --- a/pkg/ddl/index_modify_test.go +++ b/pkg/ddl/index_modify_test.go @@ -1400,7 +1400,7 @@ func TestAddVectorIndexRollback(t *testing.T) { times++ } } - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", onJobUpdatedExportedFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", onJobUpdatedExportedFunc) tk.MustGetErrMsg(addIdxSQL, "[ddl:8214]Cancelled DDL job") require.NoError(t, checkErr) @@ -1408,7 +1408,7 @@ func TestAddVectorIndexRollback(t *testing.T) { checkRollbackInfo(model.JobStateRollbackDone) // Case3: test get error message from tiflash - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/ddl/MockCheckVectorIndexProcess", `return(-1)`) tk.MustContainErrMsg(addIdxSQL, "[ddl:9014]TiFlash backfill index failed: mock a check error") checkRollbackInfo(model.JobStateRollbackDone) @@ -1422,3 +1422,29 @@ func TestAddVectorIndexRollback(t *testing.T) { testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/MockCheckVectorIndexProcess") } + +func TestInsertDuplicateBeforeIndexMerge(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("set @@global.tidb_ddl_enable_fast_reorg = 1") + tk2.MustExec("set @@global.tidb_enable_dist_task=0") + + tk.MustExec("use test") + tk2.MustExec("use test") + + // Test issue 57414. + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/BeforeBackfillMerge", func() { + tk2.MustExec("insert ignore into t values (1, 2), (1, 2) on duplicate key update col1 = 0, col2 = 0") + }) + + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (col1 int, col2 int, unique index i1(col2) /*T![global_index] GLOBAL */) PARTITION BY HASH (col1) PARTITIONS 2") + tk.MustExec("alter table t add unique index i2(col1, col2)") + tk.MustExec("admin check table t") + + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (col1 int, col2 int, unique index i1(col1, col2)) PARTITION BY HASH (col1) PARTITIONS 2") + tk.MustExec("alter table t add unique index i2(col2) /*T![global_index] GLOBAL */") + tk.MustExec("admin check table t") +} diff --git a/pkg/ddl/ingest/backend.go b/pkg/ddl/ingest/backend.go index f02ffdbfeb815..89c3795da3048 100644 --- a/pkg/ddl/ingest/backend.go +++ b/pkg/ddl/ingest/backend.go @@ -229,7 +229,10 @@ func (bc *litBackendCtx) Flush(ctx context.Context, mode FlushMode) (flushed, im newTS, err = mgr.refreshTSAndUpdateCP() if err == nil { for _, ei := range bc.engines { - ei.openedEngine.SetTS(newTS) + err = bc.backend.SetTSAfterResetEngine(ei.uuid, newTS) + if err != nil { + return false, false, err + } } } } diff --git a/pkg/ddl/ingest/backend_mgr.go b/pkg/ddl/ingest/backend_mgr.go index 81c29617ae0c3..048f883e4ceef 100644 --- a/pkg/ddl/ingest/backend_mgr.go +++ b/pkg/ddl/ingest/backend_mgr.go @@ -51,6 +51,7 @@ type BackendCtxMgr interface { pdSvcDiscovery pd.ServiceDiscovery, resourceGroupName string, importConc int, + maxWriteSpeed int, initTS uint64, ) (BackendCtx, error) Unregister(jobID int64) @@ -118,6 +119,7 @@ func (m *litBackendCtxMgr) Register( pdSvcDiscovery pd.ServiceDiscovery, resourceGroupName string, concurrency int, + maxWriteSpeed int, initTS uint64, ) (BackendCtx, error) { bc, exist := m.Load(jobID) @@ -136,7 +138,7 @@ func (m *litBackendCtxMgr) Register( logutil.Logger(ctx).Error(LitErrCreateDirFail, zap.Error(err)) return nil, err } - cfg, err := genConfig(ctx, sortPath, m.memRoot, hasUnique, resourceGroupName, concurrency) + cfg, err := genConfig(ctx, sortPath, m.memRoot, hasUnique, resourceGroupName, concurrency, maxWriteSpeed) if err != nil { logutil.Logger(ctx).Warn(LitWarnConfigError, zap.Int64("job ID", jobID), zap.Error(err)) return nil, err diff --git a/pkg/ddl/ingest/config.go b/pkg/ddl/ingest/config.go index 58686c1d918c2..a97cb81d9cd03 100644 --- a/pkg/ddl/ingest/config.go +++ b/pkg/ddl/ingest/config.go @@ -44,6 +44,7 @@ func genConfig( unique bool, resourceGroup string, concurrency int, + maxWriteSpeed int, ) (*local.BackendConfig, error) { cfg := &local.BackendConfig{ LocalStoreDir: jobSortPath, @@ -68,6 +69,7 @@ func genConfig( PausePDSchedulerScope: lightning.PausePDSchedulerScopeTable, TaskType: kvutil.ExplicitTypeDDL, DisableAutomaticCompactions: true, + StoreWriteBWLimit: maxWriteSpeed, } // Each backend will build a single dir in lightning dir. if ImporterRangeConcurrencyForTest != nil { diff --git a/pkg/ddl/ingest/env.go b/pkg/ddl/ingest/env.go index fda7e76720319..ff259dc099399 100644 --- a/pkg/ddl/ingest/env.go +++ b/pkg/ddl/ingest/env.go @@ -56,10 +56,10 @@ const defaultMemoryQuota = 2 * size.GB func InitGlobalLightningEnv(path string) (ok bool) { log.SetAppLogger(logutil.DDLIngestLogger()) globalCfg := config.GetGlobalConfig() - if globalCfg.Store != "tikv" { + if globalCfg.Store != config.StoreTypeTiKV { logutil.DDLIngestLogger().Warn(LitWarnEnvInitFail, zap.String("storage limitation", "only support TiKV storage"), - zap.String("current storage", globalCfg.Store), + zap.Stringer("current storage", globalCfg.Store), zap.Bool("lightning is initialized", LitInitialized)) return false } diff --git a/pkg/ddl/ingest/integration_test.go b/pkg/ddl/ingest/integration_test.go index ec16a8fc52d0f..5f75579d450c3 100644 --- a/pkg/ddl/ingest/integration_test.go +++ b/pkg/ddl/ingest/integration_test.go @@ -44,7 +44,7 @@ func TestAddIndexIngestGeneratedColumns(t *testing.T) { require.Len(t, rows, n) for i := 0; i < n; i++ { //nolint: forcetypeassert - jobTp := rows[i][3].(string) + jobTp := rows[i][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) } } @@ -99,7 +99,7 @@ func TestIngestError(t *testing.T) { tk.MustExec("admin check table t;") rows := tk.MustQuery("admin show ddl jobs 1;").Rows() //nolint: forcetypeassert - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) tk.MustExec("drop table t;") @@ -115,7 +115,7 @@ func TestIngestError(t *testing.T) { tk.MustExec("admin check table t;") rows = tk.MustQuery("admin show ddl jobs 1;").Rows() //nolint: forcetypeassert - jobTp = rows[0][3].(string) + jobTp = rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) } @@ -181,7 +181,7 @@ func TestAddIndexIngestCancel(t *testing.T) { tk.MustExec("create table t (a int, b int);") tk.MustExec("insert into t (a, b) values (1, 1), (2, 2), (3, 3);") cancelled := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if cancelled { return } @@ -201,7 +201,7 @@ func TestAddIndexIngestCancel(t *testing.T) { }) tk.MustGetErrCode("alter table t add index idx(b);", errno.ErrCancelledDDLJob) require.True(t, cancelled) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") ok, err := ingest.LitBackCtxMgr.CheckMoreTasksAvailable() require.NoError(t, err) require.True(t, ok) @@ -250,7 +250,7 @@ func TestAddIndexCancelOnNoneState(t *testing.T) { tk.MustExec("insert into t values(1, 1, 1);") first := true - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState == model.StateNone && first { _, err := tkCancel.Exec(fmt.Sprintf("admin cancel ddl jobs %d", job.ID)) assert.NoError(t, err) @@ -508,7 +508,7 @@ func TestAddGlobalIndexInIngestWithUpdate(t *testing.T) { tk.MustExec("insert into t (a, b) values (1, 1), (2, 2), (3, 3)") var i atomic.Int32 i.Store(3) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", 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)) diff --git a/pkg/ddl/ingest/mock.go b/pkg/ddl/ingest/mock.go index 59dcb167fdfec..88b50ad099255 100644 --- a/pkg/ddl/ingest/mock.go +++ b/pkg/ddl/ingest/mock.go @@ -57,7 +57,7 @@ func (m *MockBackendCtxMgr) CheckMoreTasksAvailable() (bool, error) { // Register implements BackendCtxMgr.Register interface. func (m *MockBackendCtxMgr) Register(ctx context.Context, jobID int64, unique bool, etcdClient *clientv3.Client, - pdSvcDiscovery pd.ServiceDiscovery, resourceGroupName string, importConc int, initTS uint64) (BackendCtx, error) { + pdSvcDiscovery pd.ServiceDiscovery, resourceGroupName string, importConc int, maxWriteSpeed int, initTS uint64) (BackendCtx, error) { logutil.DDLIngestLogger().Info("mock backend mgr register", zap.Int64("jobID", jobID)) if mockCtx, ok := m.runningJobs[jobID]; ok { return mockCtx, nil diff --git a/pkg/ddl/integration_test.go b/pkg/ddl/integration_test.go index fe7337c7a1104..53944422f1c43 100644 --- a/pkg/ddl/integration_test.go +++ b/pkg/ddl/integration_test.go @@ -28,7 +28,7 @@ func TestDDLStatementsBackFill(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test;") needReorg := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == model.StateWriteReorganization { needReorg = true } diff --git a/pkg/ddl/job_scheduler.go b/pkg/ddl/job_scheduler.go index 26779237a83ca..310fdedd5606a 100644 --- a/pkg/ddl/job_scheduler.go +++ b/pkg/ddl/job_scheduler.go @@ -552,7 +552,7 @@ func (s *jobScheduler) getJobRunCtx(jobID int64, traceInfo *model.TraceInfo) *jo // transitOneJobStepAndWaitSync runs one step of the DDL job, persist it and // waits for other TiDB node to synchronize. func (s *jobScheduler) transitOneJobStepAndWaitSync(wk *worker, jobCtx *jobContext, job *model.Job) error { - failpoint.InjectCall("beforeRunOneJobStep") + failpoint.InjectCall("beforeTransitOneJobStepAndWaitSync") ownerID := s.ownerManager.ID() // suppose we failed to sync version last time, we need to check and sync it // before run to maintain the 2-version invariant. @@ -596,7 +596,7 @@ func (s *jobScheduler) transitOneJobStepAndWaitSync(wk *worker, jobCtx *jobConte } }) - failpoint.InjectCall("beforeWaitSchemaChanged", job, schemaVer) + failpoint.InjectCall("beforeWaitSchemaSynced", job, schemaVer) // Here means the job enters another state (delete only, write only, public, etc...) or is cancelled. // If the job is done or still running or rolling back, we will wait 2 * lease time or util MDL synced to guarantee other servers to update // the newest schema. @@ -606,7 +606,7 @@ func (s *jobScheduler) transitOneJobStepAndWaitSync(wk *worker, jobCtx *jobConte s.cleanMDLInfo(job, ownerID) jobCtx.removeUnSynced(job.ID) - failpoint.InjectCall("onJobUpdated", job) + failpoint.InjectCall("afterWaitSchemaSynced", job) return nil } diff --git a/pkg/ddl/job_submitter.go b/pkg/ddl/job_submitter.go index 04c5e6455f127..7c41669f3c670 100644 --- a/pkg/ddl/job_submitter.go +++ b/pkg/ddl/job_submitter.go @@ -324,7 +324,7 @@ func (s *JobSubmitter) addBatchDDLJobs2Table(jobWs []*JobWrapper) error { setJobStateToQueueing(job) if s.serverStateSyncer.IsUpgradingState() && !hasSysDB(job) { - if err = pauseRunningJob(sess.NewSession(se), job, model.AdminCommandBySystem); err != nil { + if err = pauseRunningJob(job, model.AdminCommandBySystem); err != nil { logutil.DDLUpgradingLogger().Warn("pause user DDL by system failed", zap.Stringer("job", job), zap.Error(err)) jobW.cacheErr = err continue diff --git a/pkg/ddl/job_submitter_test.go b/pkg/ddl/job_submitter_test.go index e3ed815a8aaa7..da514314d1a6d 100644 --- a/pkg/ddl/job_submitter_test.go +++ b/pkg/ddl/job_submitter_test.go @@ -581,3 +581,17 @@ func TestGenGIDAndInsertJobsWithRetryOnErr(t *testing.T) { require.True(t, ok) require.Equal(t, newGID-1, jobs[0].TableID) } + +func TestSubmitJobAfterDDLIsClosed(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t, mockstore.WithStoreType(mockstore.EmbedUnistore)) + tk := testkit.NewTestKit(t, store) + + var ddlErr error + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterDDLCloseCancel", func() { + ddlErr = tk.ExecToErr("create database test2;") + }) + err := dom.DDL().Stop() + require.NoError(t, err) + require.Error(t, ddlErr) + require.Equal(t, "context canceled", ddlErr.Error()) +} diff --git a/pkg/ddl/job_worker.go b/pkg/ddl/job_worker.go index 925e37594dce8..260eca7be4b5d 100644 --- a/pkg/ddl/job_worker.go +++ b/pkg/ddl/job_worker.go @@ -563,13 +563,13 @@ func (w *worker) transitOneJobStep( }) return 0, w.handleJobDone(jobCtx, job) } - failpoint.InjectCall("onJobRunBefore", job) + failpoint.InjectCall("beforeRunOneJobStep", job) // If running job meets error, we will save this error in job Error and retry // later if the job is not cancelled. schemaVer, updateRawArgs, runJobErr := w.runOneJobStep(jobCtx, job, sysTblMgr) - failpoint.InjectCall("onJobRunAfter", job) + failpoint.InjectCall("afterRunOneJobStep", job) if job.IsCancelled() { defer jobCtx.unlockSchemaVersion(job.ID) @@ -859,16 +859,27 @@ func (w *worker) runOneJobStep( logutil.DDLLogger().Info("job is paused", zap.Int64("job_id", job.ID), zap.Stringer("state", latestJob.State)) - cancelStep(dbterror.ErrPausedDDLJob) + cancelStep(dbterror.ErrPausedDDLJob.FastGenByArgs(job.ID)) return case model.JobStateDone, model.JobStateSynced: return + case model.JobStateRunning: + if latestJob.IsAlterable() { + job.ReorgMeta.SetConcurrency(latestJob.ReorgMeta.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter()))) + job.ReorgMeta.SetBatchSize(latestJob.ReorgMeta.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize()))) + job.ReorgMeta.SetMaxWriteSpeed(latestJob.ReorgMeta.GetMaxWriteSpeedOrDefault()) + } } } } }) } } + // When upgrading from a version where the ReorgMeta fields did not exist in the DDL job information, + // the unmarshalled job will have a nil value for the ReorgMeta field. + if w.tp == addIdxWorker && job.ReorgMeta == nil { + job.ReorgMeta = &model.DDLReorgMeta{} + } prevState := job.State @@ -883,7 +894,7 @@ func (w *worker) runOneJobStep( case model.ActionModifySchemaCharsetAndCollate: ver, err = onModifySchemaCharsetAndCollate(jobCtx, job) case model.ActionDropSchema: - ver, err = onDropSchema(jobCtx, job) + ver, err = w.onDropSchema(jobCtx, job) case model.ActionRecoverSchema: ver, err = w.onRecoverSchema(jobCtx, job) case model.ActionModifySchemaDefaultPlacement: diff --git a/pkg/ddl/job_worker_test.go b/pkg/ddl/job_worker_test.go index 5d64cd3577206..d99e3f44b3fa0 100644 --- a/pkg/ddl/job_worker_test.go +++ b/pkg/ddl/job_worker_test.go @@ -252,27 +252,3 @@ func TestJobNeedGC(t *testing.T) { }}} require.True(t, ddl.JobNeedGC(job)) } - -func TestUsingReorgCtx(t *testing.T) { - _, domain := testkit.CreateMockStoreAndDomainWithSchemaLease(t, testLease) - d := domain.DDL() - - wg := util.WaitGroupWrapper{} - wg.Run(func() { - jobID := int64(1) - for i := 0; i < 500; i++ { - d.(ddl.DDLForTest).NewReorgCtx(jobID, 0) - d.(ddl.DDLForTest).GetReorgCtx(jobID).IsReorgCanceled() - d.(ddl.DDLForTest).RemoveReorgCtx(jobID) - } - }) - wg.Run(func() { - jobID := int64(1) - for i := 0; i < 500; i++ { - d.(ddl.DDLForTest).NewReorgCtx(jobID, 0) - d.(ddl.DDLForTest).GetReorgCtx(jobID).IsReorgCanceled() - d.(ddl.DDLForTest).RemoveReorgCtx(jobID) - } - }) - wg.Wait() -} diff --git a/pkg/ddl/main_test.go b/pkg/ddl/main_test.go index 75ffa1cd3f8a0..e741f53bf78a6 100644 --- a/pkg/ddl/main_test.go +++ b/pkg/ddl/main_test.go @@ -53,7 +53,7 @@ func TestMain(m *testing.M) { conf.Experimental.AllowsExpressionIndex = true }) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true, nil) if err != nil { _, _ = fmt.Fprintf(os.Stderr, "ddl: infosync.GlobalInfoSyncerInit: %v\n", err) os.Exit(1) diff --git a/pkg/ddl/modify_column.go b/pkg/ddl/modify_column.go index fadcc8bd4723b..8de8adced1733 100644 --- a/pkg/ddl/modify_column.go +++ b/pkg/ddl/modify_column.go @@ -975,11 +975,14 @@ func GetModifiableColumnJob( TableName: t.Meta().Name.L, Type: model.ActionModifyColumn, BinlogInfo: &model.HistoryInfo{}, - ReorgMeta: NewDDLReorgMeta(sctx), CtxVars: []any{needChangeColData}, CDCWriteSource: sctx.GetSessionVars().CDCWriteSource, SQLMode: sctx.GetSessionVars().SQLMode, } + err = initJobReorgMetaFromVariables(job, sctx) + if err != nil { + return nil, errors.Trace(err) + } args := &model.ModifyColumnArgs{ Column: newCol.ColumnInfo, diff --git a/pkg/ddl/modify_column_test.go b/pkg/ddl/modify_column_test.go index 8721e988193b7..977c02829836f 100644 --- a/pkg/ddl/modify_column_test.go +++ b/pkg/ddl/modify_column_test.go @@ -77,7 +77,7 @@ func TestModifyColumnReorgInfo(t *testing.T) { ctx := mock.NewContext() ctx.Store = store times := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID || checkErr != nil || job.SchemaState != model.StateWriteReorganization { return } @@ -197,7 +197,7 @@ func TestModifyColumnNullToNotNull(t *testing.T) { tk1.MustExec("delete from t1") once := sync.Once{} var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID { return } @@ -212,7 +212,7 @@ func TestModifyColumnNullToNotNull(t *testing.T) { // Check insert error when column has PreventNullInsertFlag. tk1.MustExec("delete from t1") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID { return } @@ -249,7 +249,7 @@ func TestModifyColumnNullToNotNullWithChangingVal(t *testing.T) { tk1.MustExec("delete from t1") once := sync.Once{} var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID { return } @@ -264,7 +264,7 @@ func TestModifyColumnNullToNotNullWithChangingVal(t *testing.T) { // Check insert error when column has PreventNullInsertFlag. tk1.MustExec("delete from t1") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID { return } diff --git a/pkg/ddl/multi_schema_change.go b/pkg/ddl/multi_schema_change.go index d5009c0e81b66..cbbb60ad347c2 100644 --- a/pkg/ddl/multi_schema_change.go +++ b/pkg/ddl/multi_schema_change.go @@ -194,7 +194,6 @@ func appendToSubJobs(m *model.MultiSchemaInfo, jobW *JobWrapper) error { Revertible: true, CtxVars: jobW.CtxVars, ReorgTp: reorgTp, - UseCloud: false, }) return nil } diff --git a/pkg/ddl/multi_schema_change_test.go b/pkg/ddl/multi_schema_change_test.go index aa61da5243c1b..8bae5ed1c2abd 100644 --- a/pkg/ddl/multi_schema_change_test.go +++ b/pkg/ddl/multi_schema_change_test.go @@ -47,10 +47,10 @@ func TestMultiSchemaChangeAddColumnsCancelled(t *testing.T) { assertMultiSchema(t, job, 3) return job.MultiSchemaInfo.SubJobs[1].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) sql := "alter table t add column b int default 2, add column c int default 3, add column d int default 4;" tk.MustGetErrCode(sql, errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") hook.MustCancelDone(t) tk.MustQuery("select * from t;").Check(testkit.Rows("1")) } @@ -93,9 +93,9 @@ func TestMultiSchemaChangeDropColumnsCancelled(t *testing.T) { assertMultiSchema(t, job, 3) return job.MultiSchemaInfo.SubJobs[1].SchemaState == model.StateDeleteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustExec("alter table t drop column b, drop column a, drop column d;") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") hook.MustCancelFailed(t) tk.MustQuery("select * from t;").Check(testkit.Rows("3")) @@ -111,9 +111,9 @@ func TestMultiSchemaChangeDropColumnsCancelled(t *testing.T) { assertMultiSchema(t, job, 3) return job.MultiSchemaInfo.SubJobs[1].SchemaState == model.StatePublic }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustGetErrCode("alter table t drop column b, drop column a, drop column d;", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") hook.MustCancelDone(t) tk.MustQuery("select * from t;").Check(testkit.Rows("1 2 3 4")) } @@ -135,7 +135,7 @@ func TestMultiSchemaChangeDropIndexedColumnsCancelled(t *testing.T) { assertMultiSchema(t, job, 3) return job.MultiSchemaInfo.SubJobs[1].SchemaState == model.StateDeleteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustExec("alter table t drop column b, drop column a, drop column d;") hook.MustCancelFailed(t) tk.MustQuery("select * from t;").Check(testkit.Rows("3")) @@ -211,9 +211,9 @@ func TestMultiSchemaChangeRenameColumns(t *testing.T) { assertMultiSchema(t, job, 2) return job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustGetErrCode("alter table t add column c int default 3, rename column b to d;", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") tk.MustQuery("select b from t").Check(testkit.Rows("2")) tk.MustGetErrCode("select d from t", errno.ErrBadField) @@ -221,7 +221,7 @@ func TestMultiSchemaChangeRenameColumns(t *testing.T) { tk.MustExec("drop table if exists t") tk.MustExec("create table t (a int default 1, b int default 2)") tk.MustExec("insert into t values ()") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionMultiSchemaChange, job.Type) if job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateWriteReorganization { rs, _ := tk.Exec("select b from t") @@ -229,7 +229,7 @@ func TestMultiSchemaChangeRenameColumns(t *testing.T) { } }) tk.MustExec("alter table t add column c int default 3, rename column b to d;") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") tk.MustQuery("select d from t").Check(testkit.Rows("2")) tk.MustGetErrCode("select b from t", errno.ErrBadField) } @@ -280,16 +280,16 @@ func TestMultiSchemaChangeAlterColumns(t *testing.T) { assertMultiSchema(t, job, 2) return job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustGetErrCode("alter table t add column c int default 3, alter column b set default 3;", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") tk.MustExec("insert into t values ()") tk.MustQuery("select * from t").Check(testkit.Rows("1 2")) // Test dml stmts when do alter tk.MustExec("drop table if exists t") tk.MustExec("create table t (a int default 1, b int default 2)") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionMultiSchemaChange, job.Type) if job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateWriteOnly { tk2 := testkit.NewTestKit(t, store) @@ -348,9 +348,9 @@ func TestMultiSchemaChangeChangeColumns(t *testing.T) { assertMultiSchema(t, job, 2) return job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustGetErrCode("alter table t add column c int default 3, change column b d bigint default 4;", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") tk.MustQuery("select b from t").Check(testkit.Rows("2")) tk.MustGetErrCode("select d from t", errno.ErrBadField) } @@ -372,11 +372,11 @@ func TestMultiSchemaChangeAddIndexesCancelled(t *testing.T) { assertMultiSchema(t, job, 1) return job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", cancelHook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", cancelHook.OnJobUpdated) tk.MustGetErrCode("alter table t "+ "add index t(a, b), add index t1(a), "+ "add index t2(a), add index t3(a, b);", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") cancelHook.MustCancelDone(t) tk.MustQuery("show index from t;").Check(testkit.Rows( /* no index */ )) tk.MustQuery("select * from t;").Check(testkit.Rows("1 2 3")) @@ -394,10 +394,10 @@ func TestMultiSchemaChangeAddIndexesCancelled(t *testing.T) { assertMultiSchema(t, job, 1) return job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StatePublic }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", cancelHook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", cancelHook.OnJobUpdated) tk.MustExec("alter table t add index t(a, b), add index t1(a), " + "add index t2(a), add index t3(a, b);") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") cancelHook.MustCancelFailed(t) tk.MustQuery("select * from t use index(t, t1, t2, t3);").Check(testkit.Rows("1 2 3")) tk.MustExec("admin check table t;") @@ -417,9 +417,9 @@ func TestMultiSchemaChangeDropIndexesCancelled(t *testing.T) { assertMultiSchema(t, job, 3) return job.MultiSchemaInfo.SubJobs[1].SchemaState == model.StateDeleteOnly }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustExec("alter table t drop index a, drop index b, drop index idx;") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") hook.MustCancelFailed(t) tk.MustGetErrCode("select * from t use index (a);", errno.ErrKeyDoesNotExist) tk.MustGetErrCode("select * from t use index (b);", errno.ErrKeyDoesNotExist) @@ -435,9 +435,9 @@ func TestMultiSchemaChangeDropIndexesCancelled(t *testing.T) { assertMultiSchema(t, job, 3) return job.MultiSchemaInfo.SubJobs[1].SchemaState == model.StatePublic }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustGetErrCode("alter table t drop index a, drop index b, drop index idx;", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") hook.MustCancelDone(t) tk.MustQuery("select * from t use index (a);").Check(testkit.Rows()) tk.MustQuery("select * from t use index (b);").Check(testkit.Rows()) @@ -506,9 +506,9 @@ func TestMultiSchemaChangeRenameIndexes(t *testing.T) { assertMultiSchema(t, job, 2) return job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) tk.MustGetErrCode("alter table t add column c int default 3, rename index t to t1;", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") tk.MustQuery("select * from t use index (t);").Check(testkit.Rows("1 2")) tk.MustGetErrCode("select * from t use index (t1);", errno.ErrKeyDoesNotExist) } @@ -528,10 +528,10 @@ func TestMultiSchemaChangeModifyColumnsCancelled(t *testing.T) { assertMultiSchema(t, job, 3) return job.MultiSchemaInfo.SubJobs[2].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", hook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", hook.OnJobUpdated) sql := "alter table t modify column a tinyint, modify column b bigint, modify column c char(20);" tk.MustGetErrCode(sql, errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") hook.MustCancelDone(t) tk.MustQuery("select * from t;").Check(testkit.Rows("1 2 3")) tk.MustQuery("select * from t use index (i1, i2, i3);").Check(testkit.Rows("1 2 3")) @@ -576,7 +576,7 @@ func TestMultiSchemaChangeAlterIndex(t *testing.T) { tk.MustExec("create table t (a int, b int, index i1(a, b), index i2(b));") tk.MustExec("insert into t values (1, 2);") var checked bool - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.MultiSchemaInfo == nil { return } @@ -589,7 +589,7 @@ func TestMultiSchemaChangeAlterIndex(t *testing.T) { } }) tk.MustExec("alter table t alter index i1 invisible, modify column a tinyint, alter index i2 invisible;") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") require.True(t, checked) tk.MustGetErrCode("select * from t use index (i1);", errno.ErrKeyDoesNotExist) tk.MustGetErrCode("select * from t use index (i2);", errno.ErrKeyDoesNotExist) @@ -611,12 +611,12 @@ func TestMultiSchemaChangeMixCancelled(t *testing.T) { len(job.MultiSchemaInfo.SubJobs) > 8 && job.MultiSchemaInfo.SubJobs[8].SchemaState == model.StateWriteReorganization }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", cancelHook.OnJobUpdated) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", cancelHook.OnJobUpdated) tk.MustGetErrCode("alter table t add column d int default 4, add index i3(c), "+ "drop column a, drop column if exists z, add column if not exists e int default 5, "+ "drop index i2, add column f int default 6, drop column b, drop index i1, add column if not exists g int;", errno.ErrCancelledDDLJob) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") cancelHook.MustCancelDone(t) tk.MustQuery("select * from t;").Check(testkit.Rows("1 2 3")) tk.MustQuery("select * from t use index(i1, i2);").Check(testkit.Rows("1 2 3")) @@ -632,7 +632,7 @@ func TestMultiSchemaChangeAdminShowDDLJobs(t *testing.T) { tk.MustExec("create table t (a int, b int, c int)") tk.MustExec("insert into t values (1, 2, 3)") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionMultiSchemaChange, job.Type) if job.MultiSchemaInfo.SubJobs[0].SchemaState == model.StateDeleteOnly { newTk := testkit.NewTestKit(t, store) @@ -641,9 +641,9 @@ func TestMultiSchemaChangeAdminShowDDLJobs(t *testing.T) { assert.Equal(t, 3, len(rows)) assert.Equal(t, "test", rows[1][1]) assert.Equal(t, "t", rows[1][2]) - assert.Equal(t, "add index /* subjob */ /* txn-merge */", rows[1][3]) + assert.Equal(t, "add index /* subjob */", rows[1][3]) assert.Equal(t, "delete only", rows[1][4]) - assert.Equal(t, "running", rows[1][len(rows[1])-1]) + assert.Equal(t, "running", rows[1][len(rows[1])-2]) assert.True(t, len(rows[1][8].(string)) > 0) assert.True(t, len(rows[1][9].(string)) > 0) assert.True(t, len(rows[1][10].(string)) > 0) @@ -667,7 +667,7 @@ func TestMultiSchemaChangeWithExpressionIndex(t *testing.T) { tk.MustQuery("select * from t;").Check(testkit.Rows("1 2", "2 1")) var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr != nil { return } @@ -684,7 +684,7 @@ func TestMultiSchemaChangeWithExpressionIndex(t *testing.T) { }) tk.MustExec("alter table t add column c int default 10, add index idx1((a + b)), add unique index idx2((a + b));") require.NoError(t, checkErr) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") tk.MustExec("drop table if exists t;") tk.MustExec("create table t (a int, b int);") @@ -715,7 +715,7 @@ func TestMultiSchemaChangeSchemaVersion(t *testing.T) { schemaVerMap := map[int64]struct{}{} - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeWaitSchemaChanged", func(_ *model.Job, schemaVer int64) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeWaitSchemaSynced", func(_ *model.Job, schemaVer int64) { if schemaVer != 0 { // No same return schemaVer during multi-schema change _, ok := schemaVerMap[schemaVer] @@ -741,7 +741,7 @@ func TestMultiSchemaChangeMixedWithUpdate(t *testing.T) { "'2020-01-01 10:00:00', 'wer', '10:00:00', 2.1, 12, 'qwer', 12, 'asdf');") var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if checkErr != nil { return } diff --git a/pkg/ddl/mv_index_test.go b/pkg/ddl/mv_index_test.go index cc633cbfa49ea..672da6382f31c 100644 --- a/pkg/ddl/mv_index_test.go +++ b/pkg/ddl/mv_index_test.go @@ -46,7 +46,7 @@ func TestMultiValuedIndexOnlineDDL(t *testing.T) { internalTK.MustExec("use test") n := 100 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { internalTK.MustExec(fmt.Sprintf("insert into t values (%d, '[%d, %d, %d]')", n, n, n+1, n+2)) internalTK.MustExec(fmt.Sprintf("delete from t where pk = %d", n-4)) internalTK.MustExec(fmt.Sprintf("update t set a = '[%d, %d, %d]' where pk = %d", n-3, n-2, n+1000, n-3)) @@ -55,7 +55,7 @@ func TestMultiValuedIndexOnlineDDL(t *testing.T) { tk.MustExec("alter table t add index idx((cast(a as signed array)))") tk.MustExec("admin check table t") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") tk.MustExec("drop table if exists t;") tk.MustExec("create table t (pk int primary key, a json);") diff --git a/pkg/ddl/notifier/BUILD.bazel b/pkg/ddl/notifier/BUILD.bazel index 434017bd9bae2..29ac7a6724fda 100644 --- a/pkg/ddl/notifier/BUILD.bazel +++ b/pkg/ddl/notifier/BUILD.bazel @@ -15,6 +15,7 @@ go_library( "//pkg/kv", "//pkg/meta/model", "//pkg/owner", + "//pkg/parser/model", "//pkg/sessionctx", "//pkg/util", "//pkg/util/intest", diff --git a/pkg/ddl/notifier/events.go b/pkg/ddl/notifier/events.go index 69f5966c52582..f3e6845978b3d 100644 --- a/pkg/ddl/notifier/events.go +++ b/pkg/ddl/notifier/events.go @@ -20,6 +20,7 @@ import ( "strings" "github.com/pingcap/tidb/pkg/meta/model" + pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/util/intest" ) @@ -426,15 +427,79 @@ func NewFlashbackClusterEvent() *SchemaChangeEvent { } } +// NewDropSchemaEvent creates a schema change event whose type is ActionDropSchema. +func NewDropSchemaEvent(dbInfo *model.DBInfo, tables []*model.TableInfo) *SchemaChangeEvent { + miniTables := make([]*MiniTableInfoForSchemaEvent, len(tables)) + for i, table := range tables { + miniTables[i] = &MiniTableInfoForSchemaEvent{ + ID: table.ID, + Name: table.Name, + } + if table.Partition != nil { + partLen := len(table.Partition.Definitions) + miniTables[i].Partitions = make([]*MiniPartitionInfoForSchemaEvent, partLen) + for j, part := range table.Partition.Definitions { + miniTables[i].Partitions[j] = &MiniPartitionInfoForSchemaEvent{ + ID: part.ID, + Name: part.Name, + } + } + } + } + return &SchemaChangeEvent{ + inner: &jsonSchemaChangeEvent{ + Tp: model.ActionDropSchema, + MiniDBInfo: &MiniDBInfoForSchemaEvent{ + ID: dbInfo.ID, + Name: dbInfo.Name, + Tables: miniTables, + }, + }, + } +} + +// GetDropSchemaInfo returns the database info and tables of the SchemaChangeEvent whose type is ActionDropSchema. +func (s *SchemaChangeEvent) GetDropSchemaInfo() (miniDBInfo *MiniDBInfoForSchemaEvent) { + intest.Assert(s.inner.Tp == model.ActionDropSchema) + return s.inner.MiniDBInfo +} + +// MiniDBInfoForSchemaEvent is a mini version of DBInfo for DropSchemaEvent only. +type MiniDBInfoForSchemaEvent struct { + ID int64 `json:"id"` + Name pmodel.CIStr `json:"name"` + Tables []*MiniTableInfoForSchemaEvent `json:"tables,omitempty"` +} + +// MiniTableInfoForSchemaEvent is a mini version of TableInfo for DropSchemaEvent only. +// Note: Usually we encourage to use TableInfo instead of this mini version, but for +// DropSchemaEvent, it's more efficient to use this mini version. +// So please do not use this mini version in other places. +type MiniTableInfoForSchemaEvent struct { + ID int64 `json:"id"` + Name pmodel.CIStr `json:"name"` + Partitions []*MiniPartitionInfoForSchemaEvent `json:"partitions,omitempty"` +} + +// MiniPartitionInfoForSchemaEvent is a mini version of PartitionInfo for DropSchemaEvent only. +// Note: Usually we encourage to use PartitionInfo instead of this mini version, but for +// DropSchemaEvent, it's more efficient to use this mini version. +// So please do not use this mini version in other places. +type MiniPartitionInfoForSchemaEvent struct { + ID int64 `json:"id"` + Name pmodel.CIStr `json:"name"` +} + // jsonSchemaChangeEvent is used by SchemaChangeEvent when needed to (un)marshal data, // we want to hide the details to subscribers, so SchemaChangeEvent contain this struct. type jsonSchemaChangeEvent struct { - TableInfo *model.TableInfo `json:"table_info,omitempty"` - OldTableInfo *model.TableInfo `json:"old_table_info,omitempty"` - AddedPartInfo *model.PartitionInfo `json:"added_partition_info,omitempty"` - DroppedPartInfo *model.PartitionInfo `json:"dropped_partition_info,omitempty"` - Columns []*model.ColumnInfo `json:"columns,omitempty"` - Indexes []*model.IndexInfo `json:"indexes,omitempty"` + MiniDBInfo *MiniDBInfoForSchemaEvent `json:"mini_db_info,omitempty"` + TableInfo *model.TableInfo `json:"table_info,omitempty"` + OldTableInfo *model.TableInfo `json:"old_table_info,omitempty"` + AddedPartInfo *model.PartitionInfo `json:"added_partition_info,omitempty"` + DroppedPartInfo *model.PartitionInfo `json:"dropped_partition_info,omitempty"` + Columns []*model.ColumnInfo `json:"columns,omitempty"` + Indexes []*model.IndexInfo `json:"indexes,omitempty"` // OldTableID4Partition is used to store the table ID when a table transitions from being partitioned to non-partitioned, // or vice versa. OldTableID4Partition int64 `json:"old_table_id_for_partition,omitempty"` diff --git a/pkg/ddl/notifier/testkit_test.go b/pkg/ddl/notifier/testkit_test.go index 7c83212e0e248..aa3ee816960dc 100644 --- a/pkg/ddl/notifier/testkit_test.go +++ b/pkg/ddl/notifier/testkit_test.go @@ -254,11 +254,12 @@ func TestPubSub(t *testing.T) { tk.MustExec("alter table t add index(b)") tk.MustExec("create table t1(a int, b int key, FOREIGN KEY (b) REFERENCES t(b) ON DELETE CASCADE);") // ActionCreateTable with foreign key tk.MustExec("alter table t1 add column c int, add index idx_a(a)") // ActionAddColumn + tk.MustExec("drop database test") // ActionDropSchema require.Eventually(t, func() bool { eventsLock.Lock() defer eventsLock.Unlock() - return len(events) == 17 + return len(events) == 18 }, 5*time.Second, 500*time.Millisecond) tps := make([]model.ActionType, len(events)) @@ -283,6 +284,7 @@ func TestPubSub(t *testing.T) { model.ActionCreateTable, model.ActionAddColumn, model.ActionAddIndex, + model.ActionDropSchema, }, tps) } diff --git a/pkg/ddl/owner_mgr.go b/pkg/ddl/owner_mgr.go new file mode 100644 index 0000000000000..ca5c5aba89040 --- /dev/null +++ b/pkg/ddl/owner_mgr.go @@ -0,0 +1,97 @@ +// Copyright 2024 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" + + "github.com/google/uuid" + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/owner" + storepkg "github.com/pingcap/tidb/pkg/store" + "github.com/pingcap/tidb/pkg/util/logutil" + clientv3 "go.etcd.io/etcd/client/v3" + "go.uber.org/zap" +) + +var globalOwnerManager = &ownerManager{} + +// StartOwnerManager starts a global DDL owner manager. +func StartOwnerManager(ctx context.Context, store kv.Storage) error { + return globalOwnerManager.Start(ctx, store) +} + +// CloseOwnerManager closes the global DDL owner manager. +func CloseOwnerManager() { + globalOwnerManager.Close() +} + +// ownerManager is used to manage lifecycle of a global DDL owner manager which +// we only want it to init session once, to avoid DDL owner change after upgrade. +type ownerManager struct { + etcdCli *clientv3.Client + id string + ownerMgr owner.Manager + started bool +} + +// Start starts the TiDBInstance. +func (om *ownerManager) Start(ctx context.Context, store kv.Storage) error { + // BR might start domain multiple times, we need to avoid it. when BR have refactored + // this part, we can remove this. + if om.started { + return nil + } + if config.GetGlobalConfig().Store != config.StoreTypeTiKV { + return nil + } + cli, err := storepkg.NewEtcdCli(store) + if err != nil { + return errors.Trace(err) + } + failpoint.InjectCall("injectEtcdClient", &cli) + if cli == nil { + return errors.New("etcd client is nil, maybe the server is not started with PD") + } + om.id = uuid.New().String() + om.etcdCli = cli + om.ownerMgr = owner.NewOwnerManager(ctx, om.etcdCli, Prompt, om.id, DDLOwnerKey) + om.started = true + return nil +} + +// Close closes the TiDBInstance. +func (om *ownerManager) Close() { + if om.ownerMgr != nil { + om.ownerMgr.Close() + } + if om.etcdCli != nil { + if err := om.etcdCli.Close(); err != nil { + logutil.BgLogger().Error("close etcd client failed", zap.Error(err)) + } + } + om.started = false +} + +func (om *ownerManager) ID() string { + return om.id +} + +func (om *ownerManager) OwnerManager() owner.Manager { + return om.ownerMgr +} diff --git a/pkg/ddl/owner_mgr_test.go b/pkg/ddl/owner_mgr_test.go new file mode 100644 index 0000000000000..8a111fdcaf706 --- /dev/null +++ b/pkg/ddl/owner_mgr_test.go @@ -0,0 +1,57 @@ +// Copyright 2024 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" + "testing" + + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/stretchr/testify/require" + clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/tests/v3/integration" +) + +func TestOwnerManager(t *testing.T) { + bak := config.GetGlobalConfig().Store + t.Cleanup(func() { + config.GetGlobalConfig().Store = bak + globalOwnerManager = &ownerManager{} + }) + config.GetGlobalConfig().Store = config.StoreTypeUniStore + globalOwnerManager = &ownerManager{} + ctx := context.Background() + require.NoError(t, StartOwnerManager(ctx, nil)) + require.Nil(t, globalOwnerManager.etcdCli) + require.Nil(t, globalOwnerManager.ownerMgr) + require.Empty(t, globalOwnerManager.id) + CloseOwnerManager() + + integration.BeforeTestExternal(t) + cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}) + defer cluster.Terminate(t) + cli := cluster.RandClient() + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/injectEtcdClient", func(cliP **clientv3.Client) { + *cliP = cli + }) + config.GetGlobalConfig().Store = config.StoreTypeTiKV + require.NoError(t, StartOwnerManager(ctx, nil)) + require.Same(t, cli, globalOwnerManager.etcdCli) + require.NotEmpty(t, globalOwnerManager.id) + require.NotNil(t, globalOwnerManager.ownerMgr) + CloseOwnerManager() + cluster.TakeClient(0) +} diff --git a/pkg/ddl/partition.go b/pkg/ddl/partition.go index 6a9befbf8e8aa..580acf932b7a4 100644 --- a/pkg/ddl/partition.go +++ b/pkg/ddl/partition.go @@ -47,7 +47,6 @@ import ( 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/parser/terror" field_types "github.com/pingcap/tidb/pkg/parser/types" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" @@ -159,17 +158,12 @@ func (w *worker) onAddTablePartition(jobCtx *jobContext, job *model.Job) (ver in } } - bundles, err := alterTablePartitionBundles(jobCtx.metaMut, tblInfo, tblInfo.Partition.AddingDefinitions) + _, err = alterTablePartitionBundles(jobCtx.metaMut, tblInfo, tblInfo.Partition.AddingDefinitions) if err != nil { job.State = model.JobStateCancelled return ver, errors.Trace(err) } - if err = infosync.PutRuleBundlesWithDefaultRetry(context.TODO(), bundles); err != nil { - job.State = model.JobStateCancelled - return ver, errors.Wrapf(err, "failed to notify PD the placement rules") - } - ids := getIDs([]*model.TableInfo{tblInfo}) for _, p := range tblInfo.Partition.AddingDefinitions { ids = append(ids, p.ID) @@ -270,33 +264,52 @@ func alterTableLabelRule(schemaName string, meta *model.TableInfo, ids []int64) return false, nil } -func alterTablePartitionBundles(t *meta.Mutator, tblInfo *model.TableInfo, addingDefinitions []model.PartitionDefinition) ([]*placement.Bundle, error) { - var bundles []*placement.Bundle +func alterTablePartitionBundles(t *meta.Mutator, tblInfo *model.TableInfo, addDefs []model.PartitionDefinition) (bool, error) { + // We want to achieve: + // - before we do any reorganization/write to new partitions/global indexes that the placement rules are in-place + // - not removing any placement rules for removed partitions + // So we will: + // 1) First write the new bundles including both new and old partitions, + // EXCEPT if the old partition is in fact a table, then skip that partition + // 2) Then overwrite the bundles with the final partitioning scheme (second call in onReorg/ - // tblInfo do not include added partitions, so we should add them first tblInfo = tblInfo.Clone() - p := *tblInfo.Partition - p.Definitions = append([]model.PartitionDefinition{}, p.Definitions...) - p.Definitions = append(tblInfo.Partition.Definitions, addingDefinitions...) - tblInfo.Partition = &p + p := tblInfo.Partition + if p != nil { + // if partitioning a non-partitioned table, we will first change the metadata, + // so the table looks like a partitioned table, with the first/only partition having + // the same partition ID as the table, so we can access the table as a single partition. + // But in this case we should not add a bundle rule for the same range + // both as table and partition. + if p.Definitions[0].ID != tblInfo.ID { + // prepend with existing partitions + addDefs = append(p.Definitions, addDefs...) + } + p.Definitions = addDefs + } // bundle for table should be recomputed because it includes some default configs for partitions tblBundle, err := placement.NewTableBundle(t, tblInfo) if err != nil { - return nil, errors.Trace(err) + return false, errors.Trace(err) } + var bundles []*placement.Bundle if tblBundle != nil { bundles = append(bundles, tblBundle) } - partitionBundles, err := placement.NewPartitionListBundles(t, addingDefinitions) + partitionBundles, err := placement.NewPartitionListBundles(t, addDefs) if err != nil { - return nil, errors.Trace(err) + return false, errors.Trace(err) } bundles = append(bundles, partitionBundles...) - return bundles, nil + + if len(bundles) > 0 { + return true, infosync.PutRuleBundlesWithDefaultRetry(context.TODO(), bundles) + } + return false, nil } // When drop/truncate a partition, we should still keep the dropped partition's placement settings to avoid unnecessary region schedules. @@ -336,20 +349,16 @@ func updateAddingPartitionInfo(partitionInfo *model.PartitionInfo, tblInfo *mode tblInfo.Partition.AddingDefinitions = append(tblInfo.Partition.AddingDefinitions, newDefs...) } -// rollbackAddingPartitionInfo remove the `addingDefinitions` in the tableInfo. -func rollbackAddingPartitionInfo(tblInfo *model.TableInfo) ([]int64, []string, []*placement.Bundle) { +// removePartitionAddingDefinitionsFromTableInfo remove the `addingDefinitions` in the tableInfo. +func removePartitionAddingDefinitionsFromTableInfo(tblInfo *model.TableInfo) ([]int64, []string) { physicalTableIDs := make([]int64, 0, len(tblInfo.Partition.AddingDefinitions)) partNames := make([]string, 0, len(tblInfo.Partition.AddingDefinitions)) - rollbackBundles := make([]*placement.Bundle, 0, len(tblInfo.Partition.AddingDefinitions)) for _, one := range tblInfo.Partition.AddingDefinitions { physicalTableIDs = append(physicalTableIDs, one.ID) partNames = append(partNames, one.Name.L) - if one.PlacementPolicyRef != nil { - rollbackBundles = append(rollbackBundles, placement.NewBundle(one.ID)) - } } tblInfo.Partition.AddingDefinitions = nil - return physicalTableIDs, partNames, rollbackBundles + return physicalTableIDs, partNames } // checkAddPartitionValue check add Partition Values, @@ -1037,7 +1046,7 @@ func generatePartitionDefinitionsFromInterval(ctx expression.BuildContext, partO return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("INTERVAL partitioning, currently requires FIRST and LAST partitions to be defined") } switch partOptions.Interval.IntervalExpr.TimeUnit { - case ast.TimeUnitInvalid, ast.TimeUnitYear, ast.TimeUnitQuarter, ast.TimeUnitMonth, ast.TimeUnitWeek, ast.TimeUnitDay, ast.TimeUnitHour, ast.TimeUnitDayMinute, ast.TimeUnitSecond: + case ast.TimeUnitInvalid, ast.TimeUnitYear, ast.TimeUnitQuarter, ast.TimeUnitMonth, ast.TimeUnitWeek, ast.TimeUnitDay, ast.TimeUnitHour, ast.TimeUnitMinute, ast.TimeUnitSecond: default: return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("INTERVAL partitioning, only supports YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE and SECOND as time unit") } @@ -2035,12 +2044,11 @@ func CheckDropTablePartition(meta *model.TableInfo, partLowerNames []string) err return nil } -// updateDroppingPartitionInfo move dropping partitions to DroppingDefinitions, and return partitionIDs -func updateDroppingPartitionInfo(tblInfo *model.TableInfo, partLowerNames []string) []int64 { +// updateDroppingPartitionInfo move dropping partitions to DroppingDefinitions +func updateDroppingPartitionInfo(tblInfo *model.TableInfo, partLowerNames []string) { oldDefs := tblInfo.Partition.Definitions newDefs := make([]model.PartitionDefinition, 0, len(oldDefs)-len(partLowerNames)) droppingDefs := make([]model.PartitionDefinition, 0, len(partLowerNames)) - pids := make([]int64, 0, len(partLowerNames)) // consider using a map to probe partLowerNames if too many partLowerNames for i := range oldDefs { @@ -2052,7 +2060,6 @@ func updateDroppingPartitionInfo(tblInfo *model.TableInfo, partLowerNames []stri } } if found { - pids = append(pids, oldDefs[i].ID) droppingDefs = append(droppingDefs, oldDefs[i]) } else { newDefs = append(newDefs, oldDefs[i]) @@ -2061,7 +2068,6 @@ func updateDroppingPartitionInfo(tblInfo *model.TableInfo, partLowerNames []stri tblInfo.Partition.Definitions = newDefs tblInfo.Partition.DroppingDefinitions = droppingDefs - return pids } func getPartitionDef(tblInfo *model.TableInfo, partName string) (index int, def *model.PartitionDefinition, _ error) { @@ -2105,34 +2111,6 @@ func getTableInfoWithDroppingPartitions(t *model.TableInfo) *model.TableInfo { return nt } -// getTableInfoWithOriginalPartitions builds oldTableInfo including truncating partitions, only used by onTruncateTablePartition. -func getTableInfoWithOriginalPartitions(t *model.TableInfo, oldIDs []int64, newIDs []int64) *model.TableInfo { - nt := t.Clone() - np := nt.Partition - - // reconstruct original definitions - for _, oldDef := range np.DroppingDefinitions { - var newID int64 - for i := range newIDs { - if oldDef.ID == oldIDs[i] { - newID = newIDs[i] - break - } - } - for i := range np.Definitions { - newDef := &np.Definitions[i] - if newDef.ID == newID { - newDef.ID = oldDef.ID - break - } - } - } - - np.DroppingDefinitions = nil - np.NewPartitionIDs = nil - return nt -} - func dropLabelRules(ctx context.Context, schemaName, tableName string, partNames []string) error { deleteRules := make([]string, 0, len(partNames)) for _, partName := range partNames { @@ -2147,7 +2125,10 @@ func dropLabelRules(ctx context.Context, schemaName, tableName string, partNames // It will drop newly created partitions that has not yet been used, including cleaning // up label rules and bundles as well as changed indexes due to global flag. func (w *worker) rollbackLikeDropPartition(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { - args := jobCtx.jobArgs.(*model.TablePartitionArgs) + args, err := model.GetTablePartitionArgs(job) + if err != nil { + return ver, errors.Trace(err) + } partInfo := args.PartInfo metaMut := jobCtx.metaMut tblInfo, err := GetTableInfoAndCancelFaultJob(metaMut, job, job.SchemaID) @@ -2155,12 +2136,10 @@ func (w *worker) rollbackLikeDropPartition(jobCtx *jobContext, job *model.Job) ( return ver, errors.Trace(err) } tblInfo.Partition.DroppingDefinitions = nil - physicalTableIDs, pNames, rollbackBundles := rollbackAddingPartitionInfo(tblInfo) - err = infosync.PutRuleBundlesWithDefaultRetry(context.TODO(), rollbackBundles) - if err != nil { - job.State = model.JobStateCancelled - return ver, errors.Wrapf(err, "failed to notify PD the placement rules") - } + // Collect table/partition ids to clean up, through args.OldPhysicalTblIDs + // GC will later also drop matching Placement bundles. + // If we delete them now, it could lead to non-compliant placement or failure during flashback + physicalTableIDs, pNames := removePartitionAddingDefinitionsFromTableInfo(tblInfo) // TODO: Will this drop LabelRules for existing partitions, if the new partitions have the same name? err = dropLabelRules(w.ctx, job.SchemaName, tblInfo.Name.L, pNames) if err != nil { @@ -2175,7 +2154,9 @@ func (w *worker) rollbackLikeDropPartition(jobCtx *jobContext, job *model.Job) ( if partInfo.Type != pmodel.PartitionTypeNone { // ALTER TABLE ... PARTITION BY // Also remove anything with the new table id - physicalTableIDs = append(physicalTableIDs, partInfo.NewTableID) + if partInfo.NewTableID != 0 { + physicalTableIDs = append(physicalTableIDs, partInfo.NewTableID) + } // Reset if it was normal table before if tblInfo.Partition.Type == pmodel.PartitionTypeNone || tblInfo.Partition.DDLType == pmodel.PartitionTypeNone { @@ -2185,33 +2166,43 @@ func (w *worker) rollbackLikeDropPartition(jobCtx *jobContext, job *model.Job) ( var dropIndices []*model.IndexInfo for _, indexInfo := range tblInfo.Indices { - if indexInfo.Unique && - indexInfo.State == model.StateDeleteReorganization && - tblInfo.Partition.DDLState == model.StateDeleteReorganization { + if indexInfo.State == model.StateWriteOnly { dropIndices = append(dropIndices, indexInfo) } } + var deleteIndices []model.TableIDIndexID for _, indexInfo := range dropIndices { DropIndexColumnFlag(tblInfo, indexInfo) RemoveDependentHiddenColumns(tblInfo, indexInfo) removeIndexInfo(tblInfo, indexInfo) + if indexInfo.Global { + deleteIndices = append(deleteIndices, model.TableIDIndexID{TableID: tblInfo.ID, IndexID: indexInfo.ID}) + } + // All other indexes has only been applied to new partitions, that is deleted in whole, + // including indexes. } if tblInfo.Partition != nil { tblInfo.Partition.ClearReorgIntermediateInfo() } + _, err = alterTablePartitionBundles(metaMut, tblInfo, nil) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Wrapf(err, "failed to notify PD the placement rules") + } ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) if err != nil { return ver, errors.Trace(err) } job.FinishTableJob(model.JobStateRollbackDone, model.StateNone, ver, tblInfo) args.OldPhysicalTblIDs = physicalTableIDs + args.OldGlobalIndexes = deleteIndices job.FillFinishedArgs(args) return ver, nil } // onDropTablePartition deletes old partition meta. -// States: +// States in reverse order: // StateNone // // Old partitions are queued to be deleted (delete_range), global index up-to-date @@ -2254,7 +2245,6 @@ func (w *worker) onDropTablePartition(jobCtx *jobContext, job *model.Job) (ver i return ver, errors.Trace(err) } - var physicalTableIDs []int64 switch job.SchemaState { case model.StatePublic: // Here we mark the partitions to be dropped, so they are not read or written @@ -2266,7 +2256,7 @@ func (w *worker) onDropTablePartition(jobCtx *jobContext, job *model.Job) (ver i // Reason, see https://github.com/pingcap/tidb/issues/55888 // Only mark the partitions as to be dropped, so they are not used, but not yet removed. originalDefs := tblInfo.Partition.Definitions - physicalTableIDs = updateDroppingPartitionInfo(tblInfo, partNames) + updateDroppingPartitionInfo(tblInfo, partNames) tblInfo.Partition.Definitions = originalDefs job.SchemaState = model.StateWriteOnly tblInfo.Partition.DDLState = job.SchemaState @@ -2277,7 +2267,7 @@ func (w *worker) onDropTablePartition(jobCtx *jobContext, job *model.Job) (ver i // Since the previous state do not use the dropping partitions, // we can now actually remove them, allowing to write into the overlapping range // of the higher range partition or LIST default partition. - physicalTableIDs = updateDroppingPartitionInfo(tblInfo, partNames) + updateDroppingPartitionInfo(tblInfo, partNames) err = dropLabelRules(jobCtx.stepCtx, job.SchemaName, tblInfo.Name.L, partNames) if err != nil { // TODO: Add failpoint error/cancel injection and test failure/rollback and cancellation! @@ -2327,60 +2317,16 @@ func (w *worker) onDropTablePartition(jobCtx *jobContext, job *model.Job) (ver i tblInfo.Partition.DDLState = job.SchemaState ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) case model.StateDeleteReorganization: - oldTblInfo := getTableInfoWithDroppingPartitions(tblInfo) - physicalTableIDs = getPartitionIDsFromDefinitions(tblInfo.Partition.DroppingDefinitions) - tbl, err := getTable(jobCtx.getAutoIDRequirement(), job.SchemaID, oldTblInfo) - if err != nil { - return ver, errors.Trace(err) - } - dbInfo, err := metaMut.GetDatabase(job.SchemaID) - if err != nil { - return ver, errors.Trace(err) - } - // If table has global indexes, we need reorg to clean up them. - if pt, ok := tbl.(table.PartitionedTable); ok && hasGlobalIndex(tblInfo) { - // Build elements for compatible with modify column type. elements will not be used when reorganizing. - elements := make([]*meta.Element, 0, len(tblInfo.Indices)) - for _, idxInfo := range tblInfo.Indices { - if idxInfo.Global { - elements = append(elements, &meta.Element{ID: idxInfo.ID, TypeKey: meta.IndexElementKey}) - } - } - sctx, err1 := w.sessPool.Get() - if err1 != nil { - return ver, err1 - } - defer w.sessPool.Put(sctx) - rh := newReorgHandler(sess.NewSession(sctx)) - reorgInfo, err := getReorgInfoFromPartitions(jobCtx.oldDDLCtx.jobContext(job.ID, job.ReorgMeta), jobCtx, rh, job, dbInfo, pt, physicalTableIDs, elements) - - if err != nil || reorgInfo.first { - // If we run reorg firstly, we should update the job snapshot version - // and then run the reorg next time. - return ver, errors.Trace(err) - } - err = w.runReorgJob(reorgInfo, tbl.Meta(), func() (dropIndexErr error) { - defer tidbutil.Recover(metrics.LabelDDL, "onDropTablePartition", - func() { - dropIndexErr = dbterror.ErrCancelledDDLJob.GenWithStack("drop partition panic") - }, false) - return w.cleanupGlobalIndexes(pt, physicalTableIDs, reorgInfo) - }) - if err != nil { - if dbterror.ErrWaitReorgTimeout.Equal(err) { - // if timeout, we should return, check for the owner and re-wait job done. - return ver, nil - } - if dbterror.ErrPausedDDLJob.Equal(err) { - // if ErrPausedDDLJob, we should return, check for the owner and re-wait job done. - return ver, nil - } + physicalTableIDs := getPartitionIDsFromDefinitions(tblInfo.Partition.DroppingDefinitions) + if hasGlobalIndex(tblInfo) { + oldTblInfo := getTableInfoWithDroppingPartitions(tblInfo) + var done bool + done, err = w.cleanGlobalIndexEntriesFromDroppedPartitions(jobCtx, job, oldTblInfo, physicalTableIDs) + if err != nil || !done { return ver, errors.Trace(err) } } - if tblInfo.TiFlashReplica != nil { - removeTiFlashAvailablePartitionIDs(tblInfo, physicalTableIDs) - } + removeTiFlashAvailablePartitionIDs(tblInfo, physicalTableIDs) droppedDefs := tblInfo.Partition.DroppingDefinitions tblInfo.Partition.DroppingDefinitions = nil job.SchemaState = model.StateNone @@ -2412,6 +2358,9 @@ func (w *worker) onDropTablePartition(jobCtx *jobContext, job *model.Job) (ver i } func removeTiFlashAvailablePartitionIDs(tblInfo *model.TableInfo, pids []int64) { + if tblInfo.TiFlashReplica == nil { + return + } // Remove the partitions ids := tblInfo.TiFlashReplica.AvailablePartitionIDs // Rarely called, so OK to take some time, to make it easy @@ -2428,210 +2377,255 @@ func removeTiFlashAvailablePartitionIDs(tblInfo *model.TableInfo, pids []int64) tblInfo.TiFlashReplica.AvailablePartitionIDs = ids } +func replaceTruncatePartitions(job *model.Job, t *meta.Mutator, tblInfo *model.TableInfo, oldIDs, newIDs []int64) ([]model.PartitionDefinition, []model.PartitionDefinition, error) { + oldDefinitions := make([]model.PartitionDefinition, 0, len(oldIDs)) + newDefinitions := make([]model.PartitionDefinition, 0, len(oldIDs)) + pi := tblInfo.Partition + for i, id := range oldIDs { + for defIdx := range pi.Definitions { + // use a reference to actually set the new ID! + def := &pi.Definitions[defIdx] + if id == def.ID { + oldDefinitions = append(oldDefinitions, def.Clone()) + def.ID = newIDs[i] + // Shallow copy, since we do not need to replace them. + newDefinitions = append(newDefinitions, *def) + break + } + } + } + + if err := clearTruncatePartitionTiflashStatus(tblInfo, newDefinitions, oldIDs); err != nil { + return nil, nil, err + } + + if err := updateTruncatePartitionLabelRules(job, t, oldDefinitions, newDefinitions, tblInfo, oldIDs); err != nil { + return nil, nil, err + } + return oldDefinitions, newDefinitions, nil +} + +func (w *worker) cleanGlobalIndexEntriesFromDroppedPartitions(jobCtx *jobContext, job *model.Job, tblInfo *model.TableInfo, oldIDs []int64) (bool, error) { + tbl, err := getTable(jobCtx.getAutoIDRequirement(), job.SchemaID, tblInfo) + if err != nil { + return false, errors.Trace(err) + } + dbInfo, err := jobCtx.metaMut.GetDatabase(job.SchemaID) + if err != nil { + return false, errors.Trace(err) + } + pt, ok := tbl.(table.PartitionedTable) + if !ok { + return false, dbterror.ErrInvalidDDLState.GenWithStackByArgs("partition", job.SchemaState) + } + + elements := make([]*meta.Element, 0, len(tblInfo.Indices)) + for _, idxInfo := range tblInfo.Indices { + if idxInfo.Global { + elements = append(elements, &meta.Element{ID: idxInfo.ID, TypeKey: meta.IndexElementKey}) + } + } + if len(elements) == 0 { + return true, nil + } + sctx, err1 := w.sessPool.Get() + if err1 != nil { + return false, err1 + } + defer w.sessPool.Put(sctx) + rh := newReorgHandler(sess.NewSession(sctx)) + reorgInfo, err := getReorgInfoFromPartitions(jobCtx.oldDDLCtx.jobContext(job.ID, job.ReorgMeta), jobCtx, rh, job, dbInfo, pt, oldIDs, elements) + + if err != nil || reorgInfo.first { + // If we run reorg firstly, we should update the job snapshot version + // and then run the reorg next time. + return false, errors.Trace(err) + } + err = w.runReorgJob(reorgInfo, tbl.Meta(), func() (dropIndexErr error) { + defer tidbutil.Recover(metrics.LabelDDL, "onDropTablePartition", + func() { + dropIndexErr = dbterror.ErrCancelledDDLJob.GenWithStack("drop partition panic") + }, false) + return w.cleanupGlobalIndexes(pt, oldIDs, reorgInfo) + }) + if err != nil { + if dbterror.ErrWaitReorgTimeout.Equal(err) { + // if timeout, we should return, check for the owner and re-wait job done. + return false, nil + } + if dbterror.ErrPausedDDLJob.Equal(err) { + // if ErrPausedDDLJob, we should return, check for the owner and re-wait job done. + return false, nil + } + return false, errors.Trace(err) + } + return true, nil +} + // onTruncateTablePartition truncates old partition meta. +// +// # StateNone +// +// Unaware of DDL. +// +// # StateWriteOnly +// +// Still sees and uses the old partition, but should filter out index reads of +// global index which has ids from pi.NewPartitionIDs. +// Allow duplicate key errors even if one cannot access the global index entry by reading! +// This state is not really needed if there are no global indexes, but used for consistency. +// +// # StateDeleteOnly +// +// Sees new partition, but should filter out index reads of global index which +// has ids from pi.DroppingDefinitions. +// Allow duplicate key errors even if one cannot access the global index entry by reading! +// +// # StateDeleteReorganization +// +// Now no other session has access to the old partition, +// but there are global index entries left pointing to the old partition, +// so they should be filtered out (see pi.DroppingDefinitions) and on write (insert/update) +// the old partition's row should be deleted and the global index key allowed +// to be overwritten. +// During this time the old partition is read and removing matching entries in +// smaller batches. +// This state is not really needed if there are no global indexes, but used for consistency. +// +// # StatePublic +// +// DDL done. func (w *worker) onTruncateTablePartition(jobCtx *jobContext, job *model.Job) (int64, error) { var ver int64 + canCancel := false + if job.SchemaState == model.StatePublic { + canCancel = true + } args, err := model.GetTruncateTableArgs(job) if err != nil { - job.State = model.JobStateCancelled + if canCancel { + job.State = model.JobStateCancelled + } return ver, errors.Trace(err) } jobCtx.jobArgs = args oldIDs, newIDs := args.OldPartitionIDs, args.NewPartitionIDs if len(oldIDs) != len(newIDs) { - job.State = model.JobStateCancelled + if canCancel { + job.State = model.JobStateCancelled + } return ver, errors.Trace(errors.New("len(oldIDs) must be the same as len(newIDs)")) } - metaMut := jobCtx.metaMut - tblInfo, err := GetTableInfoAndCancelFaultJob(metaMut, job, job.SchemaID) + tblInfo, err := GetTableInfoAndCancelFaultJob(jobCtx.metaMut, job, job.SchemaID) if err != nil { + if canCancel { + job.State = model.JobStateCancelled + } return ver, errors.Trace(err) } pi := tblInfo.GetPartitionInfo() if pi == nil { + if canCancel { + job.State = model.JobStateCancelled + } return ver, errors.Trace(dbterror.ErrPartitionMgmtOnNonpartitioned) } - if !hasGlobalIndex(tblInfo) { - oldPartitions := make([]model.PartitionDefinition, 0, len(oldIDs)) - newPartitions := make([]model.PartitionDefinition, 0, len(oldIDs)) - for k, oldID := range oldIDs { - for i := 0; i < len(pi.Definitions); i++ { - def := &pi.Definitions[i] - if def.ID == oldID { - oldPartitions = append(oldPartitions, def.Clone()) - def.ID = newIDs[k] - // Shallow copy only use the def.ID in event handle. - newPartitions = append(newPartitions, *def) - break - } - } - } - if len(newPartitions) == 0 { - job.State = model.JobStateCancelled - return ver, table.ErrUnknownPartition.GenWithStackByArgs(fmt.Sprintf("pid:%v", oldIDs), tblInfo.Name.O) - } + if job.IsRollingback() { + return convertTruncateTablePartitionJob2RollbackJob(jobCtx, job, dbterror.ErrCancelledDDLJob, tblInfo) + } - if err = clearTruncatePartitionTiflashStatus(tblInfo, newPartitions, oldIDs); err != nil { + failpoint.Inject("truncatePartCancel1", func(val failpoint.Value) { + if val.(bool) { job.State = model.JobStateCancelled - return ver, err + err = errors.New("Injected error by truncatePartCancel1") + failpoint.Return(ver, err) } + }) - if err = updateTruncatePartitionLabelRules(job, jobCtx.metaMut, oldPartitions, newPartitions, tblInfo, oldIDs); err != nil { - job.State = model.JobStateCancelled - return ver, err - } + var oldDefinitions []model.PartitionDefinition + var newDefinitions []model.PartitionDefinition - preSplitAndScatter(w.sess.Context, jobCtx.store, tblInfo, newPartitions) + switch job.SchemaState { + case model.StatePublic: + // This work as a flag to ignore Global Index entries from the new partitions! + // Used in IDsInDDLToIgnore() for filtering new partitions from + // the global index + pi.NewPartitionIDs = newIDs[:] + pi.DDLAction = model.ActionTruncateTablePartition - args.ShouldUpdateAffectedPartitions = true - ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) - if err != nil { - return ver, errors.Trace(err) - } - truncatePartitionEvent := notifier.NewTruncatePartitionEvent( - tblInfo, - &model.PartitionInfo{Definitions: newPartitions}, - &model.PartitionInfo{Definitions: oldPartitions}, - ) - err = asyncNotifyEvent(jobCtx, truncatePartitionEvent, job, noSubJob, w.sess) + job.SchemaState = model.StateWriteOnly + pi.DDLState = job.SchemaState + return updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + case model.StateWriteOnly: + // We can still rollback here, since we have not yet started to write to the new partitions! + oldDefinitions, newDefinitions, err = replaceTruncatePartitions(job, jobCtx.metaMut, tblInfo, oldIDs, newIDs) if err != nil { return ver, errors.Trace(err) } - - // Finish this job. - job.FinishTableJob(model.JobStateDone, model.StateNone, ver, tblInfo) - // A background job will be created to delete old partition data. - job.FillFinishedArgs(&model.TruncateTableArgs{ - OldPartitionIDs: oldIDs, - }) - - return ver, err - } - - // When table has global index, public->deleteOnly->deleteReorg->none schema changes should be handled. - switch job.SchemaState { - case model.StatePublic: - // Step1: generate new partition ids - truncatingDefinitions := make([]model.PartitionDefinition, 0, len(oldIDs)) - for i, oldID := range oldIDs { - for j := 0; j < len(pi.Definitions); j++ { - def := &pi.Definitions[j] - if def.ID == oldID { - truncatingDefinitions = append(truncatingDefinitions, def.Clone()) - def.ID = newIDs[i] - break - } + preSplitAndScatter(w.sess.Context, jobCtx.store, tblInfo, newDefinitions) + failpoint.Inject("truncatePartFail1", func(val failpoint.Value) { + if val.(bool) { + job.ErrorCount += variable.GetDDLErrorCountLimit() / 2 + err = errors.New("Injected error by truncatePartFail1") + failpoint.Return(ver, err) } - } - pi.DroppingDefinitions = truncatingDefinitions - pi.NewPartitionIDs = newIDs[:] - + }) + // This work as a flag to ignore Global Index entries from the old partitions! + // Used in IDsInDDLToIgnore() for filtering old partitions from + // the global index + pi.DroppingDefinitions = oldDefinitions + // And we don't need to filter for new partitions any longer job.SchemaState = model.StateDeleteOnly pi.DDLState = job.SchemaState - pi.DDLAction = job.Type - ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + return updateVersionAndTableInfo(jobCtx, job, tblInfo, true) case model.StateDeleteOnly: - // This state is not a real 'DeleteOnly' state, because tidb does not maintaining the state check in partitionDefinition. - // Insert this state to confirm all servers can not see the old partitions when reorg is running, - // so that no new data will be inserted into old partitions when reorganizing. + // Now we don't see the old partitions, but other sessions may still use them. + // So to keep the Global Index consistent, we will still keep it up-to-date with + // the old partitions, as well as the new partitions. + // Also ensures that no writes will happen after GC in DeleteRanges. + job.SchemaState = model.StateDeleteReorganization pi.DDLState = job.SchemaState - ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + return updateVersionAndTableInfo(jobCtx, job, tblInfo, true) case model.StateDeleteReorganization: - // Step2: clear global index rows. - physicalTableIDs := oldIDs - oldTblInfo := getTableInfoWithOriginalPartitions(tblInfo, oldIDs, newIDs) + // Now the old partitions are no longer accessible, but they are still referenced in + // the global indexes (although allowed to be overwritten). + // So time to clear them. - tbl, err := getTable(jobCtx.getAutoIDRequirement(), job.SchemaID, oldTblInfo) - if err != nil { - return ver, errors.Trace(err) - } - dbInfo, err := metaMut.GetDatabase(job.SchemaID) - if err != nil { + var done bool + done, err = w.cleanGlobalIndexEntriesFromDroppedPartitions(jobCtx, job, tblInfo, oldIDs) + if err != nil || !done { return ver, errors.Trace(err) } - // If table has global indexes, we need reorg to clean up them. - if pt, ok := tbl.(table.PartitionedTable); ok && hasGlobalIndex(tblInfo) { - // Build elements for compatible with modify column type. elements will not be used when reorganizing. - elements := make([]*meta.Element, 0, len(tblInfo.Indices)) - for _, idxInfo := range tblInfo.Indices { - if idxInfo.Global { - elements = append(elements, &meta.Element{ID: idxInfo.ID, TypeKey: meta.IndexElementKey}) - } - } - sctx, err1 := w.sessPool.Get() - if err1 != nil { - return ver, err1 - } - defer w.sessPool.Put(sctx) - rh := newReorgHandler(sess.NewSession(sctx)) - reorgInfo, err := getReorgInfoFromPartitions(jobCtx.oldDDLCtx.jobContext(job.ID, job.ReorgMeta), jobCtx, rh, job, dbInfo, pt, physicalTableIDs, elements) - - if err != nil || reorgInfo.first { - // If we run reorg firstly, we should update the job snapshot version - // and then run the reorg next time. - return ver, errors.Trace(err) - } - err = w.runReorgJob(reorgInfo, tbl.Meta(), func() (dropIndexErr error) { - defer tidbutil.Recover(metrics.LabelDDL, "onDropTablePartition", - func() { - dropIndexErr = dbterror.ErrCancelledDDLJob.GenWithStack("drop partition panic") - }, false) - return w.cleanupGlobalIndexes(pt, physicalTableIDs, reorgInfo) - }) - if err != nil { - if dbterror.ErrWaitReorgTimeout.Equal(err) { - // if timeout, we should return, check for the owner and re-wait job done. - return ver, nil - } - return ver, errors.Trace(err) - } - } - - // Step3: generate new partition ids and finish rest works - oldPartitions := make([]model.PartitionDefinition, 0, len(oldIDs)) - newPartitions := make([]model.PartitionDefinition, 0, len(oldIDs)) - for _, oldDef := range pi.DroppingDefinitions { - var newID int64 - for i := range oldIDs { - if oldDef.ID == oldIDs[i] { - newID = newIDs[i] - break - } - } - for i := 0; i < len(pi.Definitions); i++ { - def := &pi.Definitions[i] - if newID == def.ID { - oldPartitions = append(oldPartitions, oldDef.Clone()) - newPartitions = append(newPartitions, def.Clone()) - break - } + failpoint.Inject("truncatePartFail2", func(val failpoint.Value) { + if val.(bool) { + job.ErrorCount += variable.GetDDLErrorCountLimit() / 2 + err = errors.New("Injected error by truncatePartFail2") + failpoint.Return(ver, err) } + }) + // For the truncatePartitionEvent + oldDefinitions = pi.DroppingDefinitions + newDefinitions = make([]model.PartitionDefinition, 0, len(oldIDs)) + for i, def := range oldDefinitions { + newDef := def.Clone() + newDef.ID = newIDs[i] + newDefinitions = append(newDefinitions, newDef) } - if len(newPartitions) == 0 { - job.State = model.JobStateCancelled - return ver, table.ErrUnknownPartition.GenWithStackByArgs(fmt.Sprintf("pid:%v", oldIDs), tblInfo.Name.O) - } - - if err = clearTruncatePartitionTiflashStatus(tblInfo, newPartitions, oldIDs); err != nil { - job.State = model.JobStateCancelled - return ver, err - } - - if err = updateTruncatePartitionLabelRules(job, jobCtx.metaMut, oldPartitions, newPartitions, tblInfo, oldIDs); err != nil { - job.State = model.JobStateCancelled - return ver, err - } - - // Step4: clear DroppingDefinitions and finish job. - tblInfo.Partition.DroppingDefinitions = nil - tblInfo.Partition.NewPartitionIDs = nil - tblInfo.Partition.DDLAction = model.ActionNone - tblInfo.Partition.DDLState = model.StateNone - preSplitAndScatter(w.sess.Context, jobCtx.store, tblInfo, newPartitions) + pi.DroppingDefinitions = nil + pi.NewPartitionIDs = nil + pi.DDLState = model.StateNone + pi.DDLAction = model.ActionNone + failpoint.Inject("truncatePartFail3", func(val failpoint.Value) { + if val.(bool) { + job.ErrorCount += variable.GetDDLErrorCountLimit() / 2 + err = errors.New("Injected error by truncatePartFail3") + failpoint.Return(ver, err) + } + }) // used by ApplyDiff in updateSchemaVersion args.ShouldUpdateAffectedPartitions = true ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) @@ -2640,14 +2634,13 @@ func (w *worker) onTruncateTablePartition(jobCtx *jobContext, job *model.Job) (i } truncatePartitionEvent := notifier.NewTruncatePartitionEvent( tblInfo, - &model.PartitionInfo{Definitions: newPartitions}, - &model.PartitionInfo{Definitions: oldPartitions}, + &model.PartitionInfo{Definitions: newDefinitions}, + &model.PartitionInfo{Definitions: oldDefinitions}, ) err = asyncNotifyEvent(jobCtx, truncatePartitionEvent, job, noSubJob, w.sess) if err != nil { return ver, errors.Trace(err) } - // Finish this job. job.FinishTableJob(model.JobStateDone, model.StateNone, ver, tblInfo) // A background job will be created to delete old partition data. @@ -2655,9 +2648,8 @@ func (w *worker) onTruncateTablePartition(jobCtx *jobContext, job *model.Job) (i OldPartitionIDs: oldIDs, }) default: - err = dbterror.ErrInvalidDDLState.GenWithStackByArgs("partition", job.SchemaState) + return ver, dbterror.ErrInvalidDDLState.GenWithStackByArgs("partition", job.SchemaState) } - return ver, errors.Trace(err) } @@ -2687,7 +2679,6 @@ func updateTruncatePartitionLabelRules(job *model.Job, t *meta.Mutator, oldParti tableBundle, err := placement.NewTableBundle(t, tblInfo) if err != nil { - job.State = model.JobStateCancelled return errors.Trace(err) } @@ -2699,7 +2690,6 @@ func updateTruncatePartitionLabelRules(job *model.Job, t *meta.Mutator, oldParti // These placements groups will be deleted after GC keepDroppedBundles, err := droppedPartitionBundles(t, tblInfo, oldPartitions) if err != nil { - job.State = model.JobStateCancelled return errors.Trace(err) } bundles = append(bundles, keepDroppedBundles...) @@ -3043,9 +3033,6 @@ func (w *worker) onExchangeTablePartition(jobCtx *jobContext, job *model.Job) (v } func getNewGlobal(partInfo *model.PartitionInfo, idx *model.IndexInfo) bool { - if len(partInfo.DDLUpdateIndexes) == 0 { - return idx.Global - } for _, newIdx := range partInfo.DDLUpdateIndexes { if strings.EqualFold(idx.Name.L, newIdx.IndexName) { return newIdx.Global @@ -3054,36 +3041,29 @@ func getNewGlobal(partInfo *model.PartitionInfo, idx *model.IndexInfo) bool { return idx.Global } -func getReorgPartitionInfo(t *meta.Mutator, job *model.Job, args *model.TablePartitionArgs) (*model.TableInfo, []string, *model.PartitionInfo, []model.PartitionDefinition, []model.PartitionDefinition, error) { +func getReorgPartitionInfo(t *meta.Mutator, job *model.Job, args *model.TablePartitionArgs) (*model.TableInfo, []string, *model.PartitionInfo, error) { schemaID := job.SchemaID tblInfo, err := GetTableInfoAndCancelFaultJob(t, job, schemaID) if err != nil { - return nil, nil, nil, nil, nil, errors.Trace(err) + return nil, nil, nil, errors.Trace(err) } partNames, partInfo := args.PartNames, args.PartInfo - var addingDefs, droppingDefs []model.PartitionDefinition - if tblInfo.Partition != nil { - addingDefs = tblInfo.Partition.AddingDefinitions - droppingDefs = tblInfo.Partition.DroppingDefinitions - tblInfo.Partition.NewTableID = partInfo.NewTableID - tblInfo.Partition.DDLType = partInfo.Type - tblInfo.Partition.DDLExpr = partInfo.Expr - tblInfo.Partition.DDLColumns = partInfo.Columns - } else { - tblInfo.Partition = getPartitionInfoTypeNone() - tblInfo.Partition.NewTableID = partInfo.NewTableID - tblInfo.Partition.Definitions[0].ID = tblInfo.ID - tblInfo.Partition.DDLType = partInfo.Type - tblInfo.Partition.DDLExpr = partInfo.Expr - tblInfo.Partition.DDLColumns = partInfo.Columns - } - if len(addingDefs) == 0 { - addingDefs = []model.PartitionDefinition{} - } - if len(droppingDefs) == 0 { - droppingDefs = []model.PartitionDefinition{} + if job.SchemaState == model.StateNone { + if tblInfo.Partition != nil { + tblInfo.Partition.NewTableID = partInfo.NewTableID + tblInfo.Partition.DDLType = partInfo.Type + tblInfo.Partition.DDLExpr = partInfo.Expr + tblInfo.Partition.DDLColumns = partInfo.Columns + } else { + tblInfo.Partition = getPartitionInfoTypeNone() + tblInfo.Partition.NewTableID = partInfo.NewTableID + tblInfo.Partition.Definitions[0].ID = tblInfo.ID + tblInfo.Partition.DDLType = partInfo.Type + tblInfo.Partition.DDLExpr = partInfo.Expr + tblInfo.Partition.DDLColumns = partInfo.Columns + } } - return tblInfo, partNames, partInfo, droppingDefs, addingDefs, nil + return tblInfo, partNames, partInfo, nil } // onReorganizePartition reorganized the partitioning of a table including its indexes. @@ -3105,8 +3085,9 @@ func getReorgPartitionInfo(t *meta.Mutator, job *model.Job, args *model.TablePar // // job.SchemaState goes through the following SchemaState(s): // StateNone -> StateDeleteOnly -> StateWriteOnly -> StateWriteReorganization -// -> StateDeleteOrganization -> StatePublic +// -> StateDeleteOrganization -> StatePublic -> Done // There are more details embedded in the implementation, but the high level changes are: +// // StateNone -> StateDeleteOnly: // // Various checks and validations. @@ -3132,13 +3113,20 @@ func getReorgPartitionInfo(t *meta.Mutator, job *model.Job, args *model.TablePar // and if new unique indexes are added, it also updates them with the rest of data from // the non-touched partitions. // For indexes that are to be replaced with new ones (old/new global index), -// mark the old indexes as StateDeleteReorganization and new ones as StatePublic +// mark the old indexes as StateWriteOnly and new ones as StatePublic // Finally make the table visible with the new partition definitions. // I.e. in this state clients will read from the old set of partitions, -// and will read the new set of partitions in StateDeleteReorganization. +// and next state will read the new set of partitions in StateDeleteReorganization. // // StateDeleteOrganization -> StatePublic: // +// Now we mark all replaced (old) indexes as StateDeleteOnly +// in case DeleteRange would be called directly after the DDL, +// this way there will be no orphan records inserted after DeleteRanges +// has cleaned up the old partitions and old global indexes. +// +// StatePublic -> Done: +// // Now all heavy lifting is done, and we just need to finalize and drop things, while still doing // double writes, since previous state sees the old partitions/indexes. // Remove the old indexes and old partitions from the TableInfo. @@ -3147,10 +3135,13 @@ func getReorgPartitionInfo(t *meta.Mutator, job *model.Job, args *model.TablePar // if ALTER TABLE t PARTITION BY/REMOVE PARTITIONING: // Recreate the table with the new TableID, by DropTableOrView+CreateTableOrView // -// StatePublic: +// Done: // // Everything now looks as it should, no memory of old partitions/indexes, -// and no more double writing, since the previous state is only reading the new partitions/indexes. +// and no more double writing, since the previous state is only using the new partitions/indexes. +// +// Note: Special handling is also required in tables.newPartitionedTable(), +// to get per partition indexes in the right state. func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { args, err := model.GetTablePartitionArgs(job) if err != nil { @@ -3160,14 +3151,10 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver jobCtx.jobArgs = args // Handle the rolling back job if job.IsRollingback() { - ver, err := w.rollbackLikeDropPartition(jobCtx, job) - if err != nil { - return ver, errors.Trace(err) - } - return ver, nil + return w.rollbackLikeDropPartition(jobCtx, job) } - tblInfo, partNames, partInfo, _, addingDefinitions, err := getReorgPartitionInfo(jobCtx.metaMut, job, args) + tblInfo, partNames, partInfo, err := getReorgPartitionInfo(jobCtx.metaMut, job, args) if err != nil { return ver, err } @@ -3182,6 +3169,7 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver // The partInfo may have been checked against an older schema version for example. // If the check is done here, it does not need to be repeated, since no other // DDL on the same table can be run concurrently. + tblInfo.Partition.DDLAction = job.Type num := len(partInfo.Definitions) - len(partNames) + len(tblInfo.Partition.Definitions) err = checkAddPartitionTooManyPartitions(uint64(num)) if err != nil { @@ -3227,7 +3215,7 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver // move the adding definition into tableInfo. updateAddingPartitionInfo(partInfo, tblInfo) orgDefs := tblInfo.Partition.Definitions - _ = updateDroppingPartitionInfo(tblInfo, partNames) + updateDroppingPartitionInfo(tblInfo, partNames) // Reset original partitions, and keep DroppedDefinitions tblInfo.Partition.Definitions = orgDefs @@ -3262,39 +3250,33 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver if err != nil { return ver, errors.Trace(err) } - if !inAllPartitionColumns { - // Currently only support Explicit Global indexes. - if !newGlobal { - job.State = model.JobStateCancelled - return ver, dbterror.ErrGlobalIndexNotExplicitlySet.GenWithStackByArgs(index.Name.O) - } - // Duplicate the unique indexes with new index ids. - // If previously was Global or will be Global: - // it must be recreated with new index ID - // TODO: Could we allow that session in StateWriteReorganization, when StateDeleteReorganization - // has started, may not find changes through the global index that sessions in StateDeleteReorganization made? - // If so, then we could avoid copying the full Global Index if it has not changed from LOCAL! - // It might be possible to use the new, not yet public partitions to access those rows?! - // Just that it would not work with explicit partition select SELECT FROM t PARTITION (p,...) - newIndex := index.Clone() - newIndex.State = model.StateDeleteOnly - newIndex.ID = AllocateIndexID(tblInfo) - newIndex.Global = true - tblInfo.Indices = append(tblInfo.Indices, newIndex) - } else { - if newGlobal { - // TODO: For the future loosen this restriction and allow global indexes for unique keys also including all partitioning columns - return ver, dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs(fmt.Sprintf("PARTITION BY, index '%v' is unique and contains all partitioning columns, but has Global Index set", index.Name.O)) - } - if index.Global { - // Index was previously Global, now it needs to be duplicated and become a local index. - newIndex := index.Clone() - newIndex.State = model.StateDeleteOnly - newIndex.ID = AllocateIndexID(tblInfo) - newIndex.Global = false - tblInfo.Indices = append(tblInfo.Indices, newIndex) - } + // Currently only support Explicit Global indexes. + if !inAllPartitionColumns && !newGlobal { + job.State = model.JobStateCancelled + return ver, dbterror.ErrGlobalIndexNotExplicitlySet.GenWithStackByArgs(index.Name.O) + } + if !index.Global && !newGlobal { + // still local index, no need to duplicate index. + continue } + if tblInfo.Partition.DDLChangedIndex == nil { + tblInfo.Partition.DDLChangedIndex = make(map[int64]bool) + } + // Duplicate the unique indexes with new index ids. + // If previously was Global or will be Global: + // it must be recreated with new index ID + // TODO: Could we allow that session in StateWriteReorganization, when StateDeleteReorganization + // has started, may not find changes through the global index that sessions in StateDeleteReorganization made? + // If so, then we could avoid copying the full Global Index if it has not changed from LOCAL! + // It might be possible to use the new, not yet public partitions to access those rows?! + // Just that it would not work with explicit partition select SELECT FROM t PARTITION (p,...) + newIndex := index.Clone() + newIndex.State = model.StateDeleteOnly + newIndex.ID = AllocateIndexID(tblInfo) + tblInfo.Partition.DDLChangedIndex[index.ID] = false + tblInfo.Partition.DDLChangedIndex[newIndex.ID] = true + newIndex.Global = newGlobal + tblInfo.Indices = append(tblInfo.Indices, newIndex) } failpoint.Inject("reorgPartCancel1", func(val failpoint.Value) { if val.(bool) { @@ -3315,7 +3297,7 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver // In the next step, StateDeleteOnly, wait to verify the TiFlash replicas are OK } - bundles, err := alterTablePartitionBundles(metaMut, tblInfo, tblInfo.Partition.AddingDefinitions) + changed, err := alterTablePartitionBundles(metaMut, tblInfo, tblInfo.Partition.AddingDefinitions) if err != nil { if !changesMade { job.State = model.JobStateCancelled @@ -3323,23 +3305,13 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver } return rollbackReorganizePartitionWithErr(jobCtx, job, err) } - - if len(bundles) > 0 { - if err = infosync.PutRuleBundlesWithDefaultRetry(context.TODO(), bundles); err != nil { - if !changesMade { - job.State = model.JobStateCancelled - return ver, errors.Wrapf(err, "failed to notify PD the placement rules") - } - return rollbackReorganizePartitionWithErr(jobCtx, job, err) - } - changesMade = true - } + changesMade = changesMade || changed ids := getIDs([]*model.TableInfo{tblInfo}) for _, p := range tblInfo.Partition.AddingDefinitions { ids = append(ids, p.ID) } - changed, err := alterTableLabelRule(job.SchemaName, tblInfo, ids) + changed, err = alterTableLabelRule(job.SchemaName, tblInfo, ids) changesMade = changesMade || changed if err != nil { if !changesMade { @@ -3365,7 +3337,6 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver metrics.GetBackfillProgressByLabel(metrics.LblReorgPartition, job.SchemaName, tblInfo.Name.String()).Set(0.1 / float64(math.MaxUint64)) job.SchemaState = model.StateDeleteOnly tblInfo.Partition.DDLState = job.SchemaState - tblInfo.Partition.DDLAction = job.Type ver, err = updateVersionAndTableInfoWithCheck(jobCtx, job, tblInfo, true) if err != nil { return ver, errors.Trace(err) @@ -3402,7 +3373,7 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver // For available state, the new added partition should wait its replica to // be finished, otherwise the query to this partition will be blocked. count := tblInfo.TiFlashReplica.Count - needRetry, err := checkPartitionReplica(count, addingDefinitions, jobCtx) + needRetry, err := checkPartitionReplica(count, tblInfo.Partition.AddingDefinitions, jobCtx) if err != nil { return rollbackReorganizePartitionWithErr(jobCtx, job, err) } @@ -3416,7 +3387,7 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver // When TiFlash Replica is ready, we must move them into `AvailablePartitionIDs`. // Since onUpdateFlashReplicaStatus cannot see the partitions yet (not public) - for _, d := range addingDefinitions { + for _, d := range tblInfo.Partition.AddingDefinitions { tblInfo.TiFlashReplica.AvailablePartitionIDs = append(tblInfo.TiFlashReplica.AvailablePartitionIDs, d.ID) } } @@ -3487,26 +3458,18 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver if !index.Unique { continue } - switch index.State { - case model.StateWriteReorganization: + isNew, ok := tblInfo.Partition.DDLChangedIndex[index.ID] + if !ok { + continue + } + if isNew { // Newly created index, replacing old unique/global index index.State = model.StatePublic - case model.StatePublic: - if index.Global { - // Mark the old global index as non-readable, and to be dropped - index.State = model.StateDeleteReorganization - } else { - inAllPartitionColumns, err := checkPartitionKeysConstraint(partInfo, index.Columns, tblInfo) - if err != nil { - return rollbackReorganizePartitionWithErr(jobCtx, job, err) - } - if !inAllPartitionColumns { - // Mark the old unique index as non-readable, and to be dropped, - // since it is replaced by a global index - index.State = model.StateDeleteReorganization - } - } + continue } + // Old index, should not be visible any longer, + // but needs to be kept up-to-date in case rollback happens. + index.State = model.StateWriteOnly } firstPartIdx, lastPartIdx, idMap, err2 := getReplacedPartitionIDs(partNames, tblInfo.Partition) if err2 != nil { @@ -3539,6 +3502,37 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) case model.StateDeleteReorganization: + // Need to have one more state before completing, due to: + // - DeleteRanges could possibly start directly after DDL causing + // inserts during previous state (DeleteReorg) could insert after the cleanup + // leaving data in dropped partitions/indexes that will not be cleaned up again. + // - Updates in previous state (DeleteReorg) could have duplicate errors, if the row + // was deleted or updated in after finish (so here we need to have DeleteOnly index state! + // And we cannot rollback in this state! + + // Stop double writing to the indexes, only do Deletes! + // so that previous could do inserts, we do delete and allow second insert for + // previous state clients! + for _, index := range tblInfo.Indices { + isNew, ok := tblInfo.Partition.DDLChangedIndex[index.ID] + if !ok || isNew { + continue + } + // Old index, should not be visible any longer, + // but needs to be deleted, in case previous state clients inserts. + index.State = model.StateDeleteOnly + } + failpoint.Inject("reorgPartFail3", func(val failpoint.Value) { + if val.(bool) { + job.ErrorCount += variable.GetDDLErrorCountLimit() / 2 + failpoint.Return(ver, errors.New("Injected error by reorgPartFail3")) + } + }) + job.SchemaState = model.StatePublic + tblInfo.Partition.DDLState = job.SchemaState + ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + + case model.StatePublic: // Drop the droppingDefinitions and finish the DDL // This state is needed for the case where client A sees the schema // with version of StateWriteReorg and would not see updates of @@ -3563,7 +3557,7 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver var dropIndices []*model.IndexInfo for _, indexInfo := range tblInfo.Indices { - if indexInfo.Unique && indexInfo.State == model.StateDeleteReorganization { + if indexInfo.Unique && indexInfo.State == model.StateDeleteOnly { // Drop the old unique (possible global) index, see onDropIndex indexInfo.State = model.StateNone DropIndexColumnFlag(tblInfo, indexInfo) @@ -3571,13 +3565,18 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver dropIndices = append(dropIndices, indexInfo) } } + // Local indexes is not an issue, since they will be gone with the dropped + // partitions, but replaced global indexes should be checked! for _, indexInfo := range dropIndices { removeIndexInfo(tblInfo, indexInfo) + if indexInfo.Global { + args.OldGlobalIndexes = append(args.OldGlobalIndexes, model.TableIDIndexID{TableID: tblInfo.ID, IndexID: indexInfo.ID}) + } } - failpoint.Inject("reorgPartFail3", func(val failpoint.Value) { + failpoint.Inject("reorgPartFail4", func(val failpoint.Value) { if val.(bool) { job.ErrorCount += variable.GetDDLErrorCountLimit() / 2 - failpoint.Return(ver, errors.New("Injected error by reorgPartFail3")) + failpoint.Return(ver, errors.New("Injected error by reorgPartFail4")) } }) var oldTblID int64 @@ -3586,7 +3585,6 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver // REMOVE PARTITIONING // Storing the old table ID, used for updating statistics. oldTblID = tblInfo.ID - // TODO: Handle bundles? // TODO: Add concurrent test! // TODO: Will this result in big gaps? // TODO: How to carrie over AUTO_INCREMENT etc.? @@ -3600,7 +3598,7 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver return ver, errors.Trace(err) } tblInfo.ID = partInfo.NewTableID - if partInfo.DDLType != pmodel.PartitionTypeNone { + if oldTblID != physicalTableIDs[0] { // if partitioned before, then also add the old table ID, // otherwise it will be the already included first partition physicalTableIDs = append(physicalTableIDs, oldTblID) @@ -3611,12 +3609,6 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver // ALTER TABLE ... PARTITION BY tblInfo.Partition.ClearReorgIntermediateInfo() } - failpoint.Inject("reorgPartFail4", func(val failpoint.Value) { - if val.(bool) { - job.ErrorCount += variable.GetDDLErrorCountLimit() / 2 - failpoint.Return(ver, errors.New("Injected error by reorgPartFail4")) - } - }) err = metaMut.GetAutoIDAccessors(job.SchemaID, tblInfo.ID).Put(autoIDs) if err != nil { return ver, errors.Trace(err) @@ -3626,14 +3618,25 @@ func (w *worker) onReorganizePartition(jobCtx *jobContext, job *model.Job) (ver return ver, errors.Trace(err) } } + + // We need to update the Placement rule bundles with the final partitions. + _, err = alterTablePartitionBundles(metaMut, tblInfo, nil) + if err != nil { + return ver, err + } + failpoint.Inject("reorgPartFail5", func(val failpoint.Value) { if val.(bool) { job.ErrorCount += variable.GetDDLErrorCountLimit() / 2 failpoint.Return(ver, errors.New("Injected error by reorgPartFail5")) } }) + failpoint.Inject("updateVersionAndTableInfoErrInStateDeleteReorganization", func() { + failpoint.Return(ver, errors.New("Injected error in StateDeleteReorganization")) + }) args.OldPhysicalTblIDs = physicalTableIDs args.NewPartitionIDs = newIDs + job.SchemaState = model.StateNone ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) if err != nil { return ver, errors.Trace(err) @@ -3706,16 +3709,49 @@ func doPartitionReorgWork(w *worker, jobCtx *jobContext, job *model.Job, tbl tab } defer w.sessPool.Put(sctx) rh := newReorgHandler(sess.NewSession(sctx)) - indices := make([]*model.IndexInfo, 0, len(tbl.Meta().Indices)) - for _, index := range tbl.Meta().Indices { - if index.Global && index.State == model.StatePublic { - // Skip old global indexes, but rebuild all other indexes - continue + reorgTblInfo := tbl.Meta().Clone() + var elements []*meta.Element + isClustered := tbl.Meta().PKIsHandle || tbl.Meta().IsCommonHandle + if isClustered { + indices := make([]*model.IndexInfo, 0, len(tbl.Meta().Indices)) + for _, index := range tbl.Meta().Indices { + if isNew, ok := tbl.Meta().GetPartitionInfo().DDLChangedIndex[index.ID]; ok && !isNew { + // Skip old replaced indexes, but rebuild all other indexes + continue + } + indices = append(indices, index) } - indices = append(indices, index) + elements = BuildElements(tbl.Meta().Columns[0], indices) + } else { + // Non-clustered tables needs to generate new _tidb_rowid for each row, since + // there might be duplicates due to EXCHANGE PARTITION. + // That means that we can not first copy all table records and then + // recreate all indexes, since we cannot determine if a table record + // has been copied or not, since its _tidb_rowid handle has been recreated + // in the new partition. + // So we will read a batch of records from one partition at a time, + // do a BatchGet for all the record keys in the new partitions, + // to see if any of the records is already there with the same handle/_tidb_rowid + // which means they were double written and does not need to be copied. + // use AddRecord for all non-matching records. + // TODO: if there is an issue where we will retry the same batch and we have committed + // backfilled records and indexes without committing the updated reorgInfo start/end key, + // then the DDL can fail due to duplicate key. + reorgTblInfo.Indices = reorgTblInfo.Indices[:0] + for _, index := range tbl.Meta().Indices { + if isNew, ok := tbl.Meta().GetPartitionInfo().DDLChangedIndex[index.ID]; ok && !isNew { + // Skip old replaced indexes, but rebuild all other indexes + continue + } + reorgTblInfo.Indices = append(reorgTblInfo.Indices, index) + } + elements = BuildElements(tbl.Meta().Columns[0], reorgTblInfo.Indices) + } + reorgTbl, err := getTable(jobCtx.getAutoIDRequirement(), job.SchemaID, reorgTblInfo) + if err != nil { + return false, ver, errors.Trace(err) } - elements := BuildElements(tbl.Meta().Columns[0], indices) - partTbl, ok := tbl.(table.PartitionedTable) + partTbl, ok := reorgTbl.(table.PartitionedTable) if !ok { return false, ver, dbterror.ErrUnsupportedReorganizePartition.GenWithStackByArgs() } @@ -3724,12 +3760,12 @@ func doPartitionReorgWork(w *worker, jobCtx *jobContext, job *model.Job, tbl tab return false, ver, errors.Trace(err) } reorgInfo, err := getReorgInfoFromPartitions(jobCtx.oldDDLCtx.jobContext(job.ID, job.ReorgMeta), jobCtx, rh, job, dbInfo, partTbl, physTblIDs, elements) - err = w.runReorgJob(reorgInfo, tbl.Meta(), func() (reorgErr error) { + err = w.runReorgJob(reorgInfo, reorgTbl.Meta(), func() (reorgErr error) { defer tidbutil.Recover(metrics.LabelDDL, "doPartitionReorgWork", func() { reorgErr = dbterror.ErrCancelledDDLJob.GenWithStack("reorganize partition for table `%v` panic", tbl.Meta().Name) }, false) - return w.reorgPartitionDataAndIndex(jobCtx.stepCtx, tbl, reorgInfo) + return w.reorgPartitionDataAndIndex(jobCtx.stepCtx, reorgTbl, reorgInfo) }) if err != nil { if dbterror.ErrPausedDDLJob.Equal(err) { @@ -3748,6 +3784,7 @@ func doPartitionReorgWork(w *worker, jobCtx *jobContext, job *model.Job, tbl tab zap.Stringer("job", job), zap.Error(err1)) } logutil.DDLLogger().Warn("reorg partition job failed, convert job to rollback", zap.Stringer("job", job), zap.Error(err)) + // TODO: Test and verify that this returns an error on the ALTER TABLE session. ver, err = rollbackReorganizePartitionWithErr(jobCtx, job, err) return false, ver, errors.Trace(err) } @@ -3756,6 +3793,7 @@ func doPartitionReorgWork(w *worker, jobCtx *jobContext, job *model.Job, tbl tab type reorgPartitionWorker struct { *backfillCtx + records int // Static allocated to limit memory allocations rowRecords []*rowRecord rowDecoder *decoder.RowDecoder @@ -3763,6 +3801,15 @@ type reorgPartitionWorker struct { writeColOffsetMap map[int64]int maxOffset int reorgedTbl table.PartitionedTable + // Only used for non-clustered tables, since we need to re-generate _tidb_rowid, + // and check if the old _tidb_rowid was already written or not. + // If the old _tidb_rowid already exists, then the row is already backfilled (double written) + // and can be skipped. Otherwise, we will insert it and generate index entries. + rows [][]types.Datum + // The original _tidb_rowids, used to check if already backfilled (double written). + oldKeys []kv.Key + // partition ids of the new rows + newPids []int64 } func newReorgPartitionWorker(i int, t table.PhysicalTable, decodeColMap map[int64]decoder.Column, reorgInfo *reorgInfo, jc *ReorgContext) (*reorgPartitionWorker, error) { @@ -3815,43 +3862,66 @@ func (w *reorgPartitionWorker) BackfillData(handleRange reorgBackfillTask) (task } txn.SetOption(kv.ResourceGroupName, w.jobContext.resourceGroupName) - rowRecords, nextKey, taskDone, err := w.fetchRowColVals(txn, handleRange) + nextKey, taskDone, err := w.fetchRowColVals(txn, handleRange) if err != nil { return errors.Trace(err) } taskCtx.nextKey = nextKey taskCtx.done = taskDone - warningsMap := make(map[errors.ErrorID]*terror.Error) - warningsCountMap := make(map[errors.ErrorID]int64) - for _, prr := range rowRecords { - taskCtx.scanCount++ + isClustered := w.reorgedTbl.Meta().IsCommonHandle || w.reorgedTbl.Meta().PKIsHandle + if !isClustered { + // non-clustered table, we need to replace the _tidb_rowid handles since + // there may be duplicates across different partitions, due to EXCHANGE PARTITION. + // Meaning we need to check here if a record was double written to the new partition, + // i.e. concurrently written by StateWriteOnly or StateWriteReorganization. + // and we should skip it. + var found map[string][]byte + if len(w.oldKeys) > 0 { + // we must check if old IDs already been written, + // i.e. double written by StateWriteOnly or StateWriteReorganization. + // The good thing is that we can then also skip the index generation for that row and we don't need to + // check if duplicate index entries was already copied either! + // TODO: while waiting for BatchGet to check for duplicate, do another round of reads in parallel? + found, err = txn.BatchGet(ctx, w.oldKeys) + if err != nil { + return errors.Trace(err) + } + } + + for i := 0; i < w.records; i++ { + taskCtx.scanCount++ + if len(w.oldKeys) > 0 { + if _, ok := found[string(w.oldKeys[i])]; ok { + // Alredy filled + continue + } + tbl := w.reorgedTbl.GetPartition(w.newPids[i]) + if tbl == nil { + return dbterror.ErrUnsupportedReorganizePartition.GenWithStackByArgs() + } + // TODO: is this looking up each index entry at a time or in an optimistic way and only checks + // at commit time? + // AddRecord will assign a new _tidb_rowid, since we don't provide one. + _, err = tbl.AddRecord(w.tblCtx, txn, w.rows[i]) + if err != nil { + return errors.Trace(err) + } + taskCtx.addedCount++ + } + } + return nil + } + // Clustered table, use tried implementation + for _, prr := range w.rowRecords { + taskCtx.scanCount++ err = txn.Set(prr.key, prr.vals) if err != nil { return errors.Trace(err) } taskCtx.addedCount++ - if prr.warning != nil { - if _, ok := warningsCountMap[prr.warning.ID()]; ok { - warningsCountMap[prr.warning.ID()]++ - } else { - warningsCountMap[prr.warning.ID()] = 1 - warningsMap[prr.warning.ID()] = prr.warning - } - } - // TODO: Future optimization: also write the indexes here? - // What if the transaction limit is just enough for a single row, without index? - // Hmm, how could that be in the first place? - // For now, implement the batch-txn w.addTableIndex, - // since it already exists and is in use } - - // Collect the warnings. - taskCtx.warnings, taskCtx.warningsCount = warningsMap, warningsCountMap - - // also add the index entries here? And make sure they are not added somewhere else - return nil }) logSlowOperations(time.Since(oprStartTime), "BackfillData", 3000) @@ -3859,15 +3929,24 @@ func (w *reorgPartitionWorker) BackfillData(handleRange reorgBackfillTask) (task return } -func (w *reorgPartitionWorker) fetchRowColVals(txn kv.Transaction, taskRange reorgBackfillTask) ([]*rowRecord, kv.Key, bool, error) { +func (w *reorgPartitionWorker) fetchRowColVals(txn kv.Transaction, taskRange reorgBackfillTask) (kv.Key, bool, error) { w.rowRecords = w.rowRecords[:0] + w.records = 0 + isClustered := w.reorgedTbl.Meta().IsCommonHandle || w.reorgedTbl.Meta().PKIsHandle + if !isClustered { + if cap(w.rows) < w.batchCnt { + w.rows = make([][]types.Datum, w.batchCnt) + } + } + w.oldKeys = w.oldKeys[:0] + w.newPids = w.newPids[:0] startTime := time.Now() // taskDone means that the added handle is out of taskRange.endHandle. taskDone := false sysTZ := w.loc - tmpRow := make([]types.Datum, w.maxOffset+1) + tmpRow := make([]types.Datum, len(w.reorgedTbl.Cols())) var lastAccessedHandle kv.Key oprStartTime := startTime err := iterateSnapshotKeys(w.jobContext, w.ddlCtx.store, taskRange.priority, w.table.RecordPrefix(), txn.StartTS(), taskRange.startKey, taskRange.endKey, @@ -3878,7 +3957,7 @@ func (w *reorgPartitionWorker) fetchRowColVals(txn kv.Transaction, taskRange reo taskDone = recordKey.Cmp(taskRange.endKey) >= 0 - if taskDone || len(w.rowRecords) >= w.batchCnt { + if taskDone || w.records >= w.batchCnt { return false, nil } @@ -3887,47 +3966,52 @@ func (w *reorgPartitionWorker) fetchRowColVals(txn kv.Transaction, taskRange reo return false, errors.Trace(err) } - // Set the partitioning columns and calculate which partition to write to - for colID, offset := range w.writeColOffsetMap { - d, ok := w.rowMap[colID] - if !ok { - return false, dbterror.ErrUnsupportedReorganizePartition.GenWithStackByArgs() + if isClustered { + // Set all partitioning columns and calculate which partition to write to + for colID, offset := range w.writeColOffsetMap { + d, ok := w.rowMap[colID] + if !ok { + return false, dbterror.ErrUnsupportedReorganizePartition.GenWithStackByArgs() + } + tmpRow[offset] = d + } + } else { + // _tidb_rowid needs to be regenerated, due to EXCHANGE PARTITION, meaning we cannot + // delay the index generation, but need to check if the current _tidb_rowid already exists + // in the new partition or not, before we write the newly generated one. + // and later in the caller of this function write both Record and all indexes + + // Set all columns and calculate which partition to write to + // We will later copy the row, so use all writable columns + for _, col := range w.reorgedTbl.WritableCols() { + d, ok := w.rowMap[col.ID] + if !ok { + return false, dbterror.ErrUnsupportedReorganizePartition.GenWithStackByArgs() + } + tmpRow[col.Offset] = d } - tmpRow[offset] = d } p, err := w.reorgedTbl.GetPartitionByRow(w.exprCtx.GetEvalCtx(), tmpRow) if err != nil { return false, errors.Trace(err) } - var newKey kv.Key - if w.reorgedTbl.Meta().PKIsHandle || w.reorgedTbl.Meta().IsCommonHandle { - pid := p.GetPhysicalID() - newKey = tablecodec.EncodeTablePrefix(pid) - newKey = append(newKey, recordKey[len(newKey):]...) + if isClustered { + newKey := tablecodec.EncodeTablePrefix(p.GetPhysicalID()) + newKey = append(newKey, recordKey[tablecodec.TableSplitKeyLen:]...) + w.rowRecords = append(w.rowRecords, &rowRecord{key: newKey, vals: rawRow}) + w.records++ } else { - // Non-clustered table / not unique _tidb_rowid for the whole table - // Generate new _tidb_rowid if exists. - // Due to EXCHANGE PARTITION, the existing _tidb_rowid may collide between partitions! - if reserved, ok := w.tblCtx.GetReservedRowIDAlloc(); ok && reserved.Exhausted() { - // TODO: Which autoid allocator to use? - ids := uint64(max(1, w.batchCnt-len(w.rowRecords))) - // Keep using the original table's allocator - var baseRowID, maxRowID int64 - baseRowID, maxRowID, err = tables.AllocHandleIDs(w.ctx, w.tblCtx, w.reorgedTbl, ids) - if err != nil { - return false, errors.Trace(err) - } - reserved.Reset(baseRowID, maxRowID) + if cap(w.rows[w.records]) < len(tmpRow) { + w.rows[w.records] = make([]types.Datum, len(tmpRow)) } - recordID, err := tables.AllocHandle(w.ctx, w.tblCtx, w.reorgedTbl) - if err != nil { - return false, errors.Trace(err) - } - newKey = tablecodec.EncodeRecordKey(p.RecordPrefix(), recordID) + copy(w.rows[w.records], tmpRow) + w.newPids = append(w.newPids, p.GetPhysicalID()) + + oldKey := tablecodec.EncodeTablePrefix(p.GetPhysicalID()) + oldKey = append(oldKey, recordKey[tablecodec.TableSplitKeyLen:]...) + w.oldKeys = append(w.oldKeys, oldKey) + w.records++ } - w.rowRecords = append(w.rowRecords, &rowRecord{ - key: newKey, vals: rawRow, - }) w.cleanRowMap() lastAccessedHandle = recordKey @@ -3938,7 +4022,7 @@ func (w *reorgPartitionWorker) fetchRowColVals(txn kv.Transaction, taskRange reo return true, nil }) - if len(w.rowRecords) == 0 { + if w.records == 0 { taskDone = true } @@ -3946,7 +4030,7 @@ func (w *reorgPartitionWorker) fetchRowColVals(txn kv.Transaction, taskRange reo zap.Uint64("txnStartTS", txn.StartTS()), zap.Stringer("taskRange", &taskRange), zap.Duration("takeTime", time.Since(startTime))) - return w.rowRecords, getNextHandleKey(taskRange, taskDone, lastAccessedHandle), taskDone, errors.Trace(err) + return getNextHandleKey(taskRange, taskDone, lastAccessedHandle), taskDone, errors.Trace(err) } func (w *reorgPartitionWorker) cleanRowMap() { @@ -3981,8 +4065,11 @@ func (w *worker) reorgPartitionDataAndIndex( // - Transactions on different TiDB nodes/domains may see different states of the table/partitions // - We cannot have multiple partition ids for a unique index entry. + isClustered := t.Meta().PKIsHandle || t.Meta().IsCommonHandle + // Copy the data from the DroppingDefinitions to the AddingDefinitions if bytes.Equal(reorgInfo.currElement.TypeKey, meta.ColumnElementKey) { + // if non-clustered table it will also create its indexes! err = w.updatePhysicalTableRow(ctx, t, reorgInfo) if err != nil { return errors.Trace(err) @@ -4042,9 +4129,13 @@ func (w *worker) reorgPartitionDataAndIndex( pi := t.Meta().GetPartitionInfo() if _, err = findNextPartitionID(reorgInfo.PhysicalTableID, pi.AddingDefinitions); err == nil { // Now build all the indexes in the new partitions - err = w.addTableIndex(ctx, t, reorgInfo) - if err != nil { - return errors.Trace(err) + // apart from non-clustered index tables, where new partitions already + // created its indexes together with the table records. + if isClustered { + err = w.addTableIndex(ctx, t, reorgInfo) + if err != nil { + return errors.Trace(err) + } } // All indexes are up-to-date for new partitions, // now we only need to add the existing non-touched partitions diff --git a/pkg/ddl/partition_test.go b/pkg/ddl/partition_test.go index 160572096db4b..c06f454fa454b 100644 --- a/pkg/ddl/partition_test.go +++ b/pkg/ddl/partition_test.go @@ -178,7 +178,7 @@ func TestReorganizePartitionRollback(t *testing.T) { defer close(wait) ddlDone := make(chan error) defer close(ddlDone) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionReorganizePartition && job.SchemaState == model.StateWriteReorganization { <-wait <-wait @@ -223,7 +223,7 @@ func TestReorganizePartitionRollback(t *testing.T) { // check job rollback finished rows := tk.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])-1]) + require.Equal(t, "rollback done", rows[0][len(rows[0])-2]) // check table meta after rollback tk.MustQuery("show create table t1").Check(testkit.Rows("t1 CREATE TABLE `t1` (\n" + @@ -250,3 +250,27 @@ func TestReorganizePartitionRollback(t *testing.T) { // test then add index should success tk.MustExec("alter table t1 add index idx_kc (k, c)") } + +func TestUpdateDuringAddColumn(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1 (c1 int, c2 int) partition by hash (c1) partitions 16") + tk.MustExec("insert t1 values (1, 1), (2, 2)") + tk.MustExec("create table t2 (c1 int, c2 int) partition by hash (c1) partitions 16") + tk.MustExec("insert t2 values (1, 3), (2, 5)") + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { + if job.SchemaState == model.StateWriteOnly { + tk2.MustExec("update t1, t2 set t1.c1 = 8, t2.c2 = 10 where t1.c2 = t2.c1") + tk2.MustQuery("select * from t1").Sort().Check(testkit.Rows("8 1", "8 2")) + tk2.MustQuery("select * from t2").Sort().Check(testkit.Rows("1 10", "2 10")) + } + }) + + tk.MustExec("alter table t1 add column c3 bigint default 9") + + tk.MustQuery("select * from t1").Sort().Check(testkit.Rows("8 1 9", "8 2 9")) +} diff --git a/pkg/ddl/placement_policy.go b/pkg/ddl/placement_policy.go index 17cc680d68825..deb93dad26211 100644 --- a/pkg/ddl/placement_policy.go +++ b/pkg/ddl/placement_policy.go @@ -458,7 +458,7 @@ func CheckPlacementPolicyNotInUseFromMeta(t *meta.Mutator, policy *model.PolicyI return dbterror.ErrPlacementPolicyInUse.GenWithStackByArgs(policy.Name) } - tables, err := t.ListTables(dbInfo.ID) + tables, err := t.ListTables(context.Background(), dbInfo.ID) if err != nil { return err } diff --git a/pkg/ddl/placement_policy_test.go b/pkg/ddl/placement_policy_test.go index 20ed4212aa532..2987d8f121dc5 100644 --- a/pkg/ddl/placement_policy_test.go +++ b/pkg/ddl/placement_policy_test.go @@ -40,6 +40,7 @@ import ( "github.com/pingcap/tidb/pkg/testkit/external" "github.com/pingcap/tidb/pkg/testkit/testfailpoint" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client/http" ) type bundleCheck struct { @@ -187,7 +188,7 @@ func testPlacementPolicy(t *testing.T) { tk.MustExec("drop placement policy if exists x") var policyID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if policyID != 0 { return } @@ -983,7 +984,7 @@ func testGetPolicyDependency(storage kv.Storage, name string) []int64 { return err } for _, db := range dbs { - tbls, err := t.ListTables(db.ID) + tbls, err := t.ListTables(context.Background(), db.ID) if err != nil { return err } @@ -1669,6 +1670,17 @@ func TestAlterTablePartitionPlacement(t *testing.T) { "(PARTITION `p0` VALUES LESS THAN (100),\n" + " PARTITION `p1` VALUES LESS THAN (1000))")) checkExistTableBundlesInPD(t, dom, "test", "tp") + + tk.MustExec(`alter table tp reorganize partition p1 into (partition p1 values less than (750) placement policy p1, partition p2 values less than (1500) placement policy p0)`) + tk.MustQuery("show create table tp").Check(testkit.Rows("" + + "tp CREATE TABLE `tp` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`p0` */\n" + + "PARTITION BY RANGE (`id`)\n" + + "(PARTITION `p0` VALUES LESS THAN (100),\n" + + " PARTITION `p1` VALUES LESS THAN (750) /*T![placement] PLACEMENT POLICY=`p1` */,\n" + + " PARTITION `p2` VALUES LESS THAN (1500) /*T![placement] PLACEMENT POLICY=`p0` */)")) + checkExistTableBundlesInPD(t, dom, "test", "tp") } func TestAddPartitionWithPlacement(t *testing.T) { @@ -1956,6 +1968,7 @@ func TestTruncateTablePartitionWithPlacement(t *testing.T) { " PARTITION `p1` VALUES LESS THAN (1000) /*T![placement] PLACEMENT POLICY=`p2` */,\n" + " PARTITION `p2` VALUES LESS THAN (10000) /*T![placement] PLACEMENT POLICY=`p3` */,\n" + " PARTITION `p3` VALUES LESS THAN (100000))")) + dom.Reload() checkExistTableBundlesInPD(t, dom, "test", "tp") checkWaitingGCPartitionBundlesInPD(t, dom, checkOldPartitions) @@ -2401,3 +2414,406 @@ func TestRecoverTableWithPlacementPolicy(t *testing.T) { " PARTITION `p2` VALUES LESS THAN (10000))")) checkExistTableBundlesInPD(t, dom, "test", "tp3") } + +func getChangedBundles(oldBundle, newBundle []*placement.Bundle) (retOld, retNew []*placement.Bundle) { +OldLoop: + for i := range oldBundle { + for j := range newBundle { + if oldBundle[i].ID == newBundle[j].ID { + continue OldLoop + } + } + retOld = append(retOld, oldBundle[i]) + } +NewLoop: + for i := range newBundle { + for j := range oldBundle { + if oldBundle[j].ID == newBundle[i].ID { + continue NewLoop + } + } + retNew = append(retNew, newBundle[i]) + } + return retOld, retNew +} + +func TestAlterPartitioningWithPlacementPolicy(t *testing.T) { + util.EmulatorGCDisable() + store, do := testkit.CreateMockStoreAndDomain(t) + gcWorker, err := gcworker.NewMockGCWorker(store) + require.NoError(t, err) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + + tk.MustExec("create placement policy pp1 primary_region='r1' regions='r1,r2'") + tk.MustExec("create placement policy pp2 primary_region='r2' regions='r1,r2'") + + tk.MustExec(`CREATE TABLE t1 (id INT)`) + tk.MustExec(`INSERT INTO t1 values (1),(2),(100),(150),(200),(213)`) + tk.MustExec(`ALTER TABLE t1 placement policy pp1`) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + origBundles, err := infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + tk.MustExec(`ALTER TABLE t1 PARTITION BY HASH (id) PARTITIONS 3`) + bundlesBeforeGC, err := infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err := infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + oldBundles, newBundles := getChangedBundles(origBundles, bundlesBeforeGC) + require.Len(t, newBundles, 1) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + require.Len(t, oldBundles, 1) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */\n" + + "PARTITION BY HASH (`id`) PARTITIONS 3")) + checkExistTableBundlesInPD(t, do, "test", "t1") + + origBundles = bundlesAfterGC + tk.MustExec(`ALTER TABLE t1 ADD PARTITION (PARTITION p3 placement policy 'pp2')`) + bundlesBeforeGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + oldBundles, newBundles = getChangedBundles(origBundles, bundlesBeforeGC) + // One new partition level bundle + require.Len(t, newBundles, 1) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + // No old bundles removed + require.Len(t, oldBundles, 0) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */\n" + + "PARTITION BY HASH (`id`)\n" + + "(PARTITION `p0`,\n" + + " PARTITION `p1`,\n" + + " PARTITION `p2`,\n" + + " PARTITION `p3` /*T![placement] PLACEMENT POLICY=`pp2` */)")) + checkExistTableBundlesInPD(t, do, "test", "t1") + + origBundles = bundlesAfterGC + tk.MustExec(`ALTER TABLE t1 REMOVE PARTITIONING`) + bundlesBeforeGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + oldBundles, newBundles = getChangedBundles(origBundles, bundlesBeforeGC) + // One table level bundle, due to new table id. + require.Len(t, newBundles, 1) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + // One table level due to new table id and one partition level policy removed + require.Len(t, oldBundles, 2) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */")) + checkExistTableBundlesInPD(t, do, "test", "t1") + + origBundles = bundlesAfterGC + tk.MustExec(`ALTER TABLE t1 PARTITION BY RANGE (id) (partition p1 values less than (100) placement policy pp2,partition p2 values less than (maxvalue))`) + bundlesBeforeGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + oldBundles, newBundles = getChangedBundles(origBundles, bundlesBeforeGC) + // One new bundle for the new table ID and one for the partition specific + require.Len(t, newBundles, 2) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + // Only one old table level bundle + require.Len(t, oldBundles, 1) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */\n" + + "PARTITION BY RANGE (`id`)\n" + + "(PARTITION `p1` VALUES LESS THAN (100) /*T![placement] PLACEMENT POLICY=`pp2` */,\n" + + " PARTITION `p2` VALUES LESS THAN (MAXVALUE))")) + checkExistTableBundlesInPD(t, do, "test", "t1") + + origBundles = bundlesAfterGC + tk.MustExec(`ALTER TABLE t1 REORGANIZE PARTITION p2 into (partition p2 values less than (200) placement policy pp1,partition pMax values less than (maxvalue) placement policy 'pp2')`) + bundlesBeforeGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + // REORGANIZE keeps the table id, but the internal rules may change + oldBundles, newBundles = getChangedBundles(origBundles, bundlesBeforeGC) + // Two new partition level bundles + require.Len(t, newBundles, 2) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + // No change in table ID and the reorganized partition did not have a partition level policy. + require.Len(t, oldBundles, 0) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */\n" + + "PARTITION BY RANGE (`id`)\n" + + "(PARTITION `p1` VALUES LESS THAN (100) /*T![placement] PLACEMENT POLICY=`pp2` */,\n" + + " PARTITION `p2` VALUES LESS THAN (200) /*T![placement] PLACEMENT POLICY=`pp1` */,\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE) /*T![placement] PLACEMENT POLICY=`pp2` */)")) + checkExistTableBundlesInPD(t, do, "test", "t1") + + origBundles = bundlesAfterGC + tk.MustExec(`ALTER TABLE t1 TRUNCATE PARTITION pMax`) + bundlesBeforeGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + oldBundles, newBundles = getChangedBundles(origBundles, bundlesBeforeGC) + // One new partition level bundle + require.Len(t, newBundles, 1) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + // One old partition level bundle + require.Len(t, oldBundles, 1) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */\n" + + "PARTITION BY RANGE (`id`)\n" + + "(PARTITION `p1` VALUES LESS THAN (100) /*T![placement] PLACEMENT POLICY=`pp2` */,\n" + + " PARTITION `p2` VALUES LESS THAN (200) /*T![placement] PLACEMENT POLICY=`pp1` */,\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE) /*T![placement] PLACEMENT POLICY=`pp2` */)")) + checkExistTableBundlesInPD(t, do, "test", "t1") + + origBundles = bundlesAfterGC + tk.MustExec(`ALTER TABLE t1 DROP PARTITION p1,pMax`) + bundlesBeforeGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + oldBundles, newBundles = getChangedBundles(origBundles, bundlesBeforeGC) + // No new partition level bundles + require.Len(t, newBundles, 0) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + // Two dropped partition level bundles. + require.Len(t, oldBundles, 2) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */\n" + + "PARTITION BY RANGE (`id`)\n" + + "(PARTITION `p2` VALUES LESS THAN (200) /*T![placement] PLACEMENT POLICY=`pp1` */)")) + checkExistTableBundlesInPD(t, do, "test", "t1") + + origBundles = bundlesAfterGC + tk.MustExec(`ALTER TABLE t1 ADD PARTITION (PARTITION pMax VALUES LESS THAN (MAXVALUE) placement policy 'pp2')`) + bundlesBeforeGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + bundlesAfterGC, err = infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + oldBundles, newBundles = getChangedBundles(origBundles, bundlesBeforeGC) + // One new partition level bundles + require.Len(t, newBundles, 1) + require.Len(t, oldBundles, 0) + oldBundles, newBundles = getChangedBundles(bundlesBeforeGC, bundlesAfterGC) + require.Len(t, newBundles, 0) + // No change in table ID. + require.Len(t, oldBundles, 0) + tk.MustQuery("show create table t1").Check(testkit.Rows("" + + "t1 CREATE TABLE `t1` (\n" + + " `id` int(11) DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![placement] PLACEMENT POLICY=`pp1` */\n" + + "PARTITION BY RANGE (`id`)\n" + + "(PARTITION `p2` VALUES LESS THAN (200) /*T![placement] PLACEMENT POLICY=`pp1` */,\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE) /*T![placement] PLACEMENT POLICY=`pp2` */)")) + checkExistTableBundlesInPD(t, do, "test", "t1") +} + +func TestCheckBundle(t *testing.T) { + type tc struct { + bundle *placement.Bundle + success bool + } + testCases := []tc{ + { + bundle: &placement.Bundle{ + ID: "TiDB_DDL_1", + Index: 1, + Override: false, + Rules: []*pd.Rule{ + { + GroupID: "TiDB_DDL_1", + ID: "TiDB_DDL_1", + Override: false, + StartKeyHex: "F0", + EndKeyHex: "F2", + Role: pd.Leader, + }, + { + GroupID: "TiDB_DDL_1", + ID: "TiDB_DDL_1", + Override: false, + StartKeyHex: "01", + EndKeyHex: "02", + Role: pd.Leader, + }, + }, + }, + success: true, + }, + { + // What issue #55705 looked like, i.e. both partition and table had the same range. + bundle: &placement.Bundle{ + ID: "TiDB_DDL_112", + Index: 40, + Override: true, + Rules: []*pd.Rule{ + { + GroupID: "TiDB_DDL_112", + ID: "table_rule_112_0", + Index: 40, + StartKeyHex: "7480000000000000ff7000000000000000f8", + EndKeyHex: "7480000000000000ff7100000000000000f8", + Role: "leader", + }, + { + GroupID: "TiDB_DDL_112", + ID: "table_rule_112_1", + Index: 40, + StartKeyHex: "7480000000000000ff7000000000000000f8", + EndKeyHex: "7480000000000000ff7100000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "table_rule_112_2", + Index: 40, + StartKeyHex: "7480000000000000ff7000000000000000f8", + EndKeyHex: "7480000000000000ff7100000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_112_0", + Index: 80, + StartKeyHex: "7480000000000000ff7000000000000000f8", + EndKeyHex: "7480000000000000ff7100000000000000f8", + Role: "leader", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_112_1", + Index: 80, + StartKeyHex: "7480000000000000ff7000000000000000f8", + EndKeyHex: "7480000000000000ff7100000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_112_2", + Index: 80, + StartKeyHex: "7480000000000000ff7000000000000000f8", + EndKeyHex: "7480000000000000ff7100000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_115_0", + Index: 80, + StartKeyHex: "7480000000000000ff7300000000000000f8", + EndKeyHex: "7480000000000000ff7400000000000000f8", + Role: "leader", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_115_1", + Index: 80, + StartKeyHex: "7480000000000000ff7300000000000000f8", + EndKeyHex: "7480000000000000ff7400000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_115_2", + Index: 80, + StartKeyHex: "7480000000000000ff7300000000000000f8", + EndKeyHex: "7480000000000000ff7400000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_116_0", + Index: 80, + StartKeyHex: "7480000000000000ff7400000000000000f8", + EndKeyHex: "7480000000000000ff7500000000000000f8", + Role: "leader", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_116_1", + Index: 80, + StartKeyHex: "7480000000000000ff7400000000000000f8", + EndKeyHex: "7480000000000000ff7500000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_116_2", + Index: 80, + StartKeyHex: "7480000000000000ff7400000000000000f8", + EndKeyHex: "7480000000000000ff7500000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_117_0", + Index: 80, + StartKeyHex: "7480000000000000ff7500000000000000f8", + EndKeyHex: "7480000000000000ff7600000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_117_1", + Index: 80, + StartKeyHex: "7480000000000000ff7500000000000000f8", + EndKeyHex: "7480000000000000ff7600000000000000f8", + Role: "voter", + }, + { + GroupID: "TiDB_DDL_112", + ID: "partition_rule_117_2", + Index: 80, + StartKeyHex: "7480000000000000ff7500000000000000f8", + EndKeyHex: "7480000000000000ff7600000000000000f8", + Role: "voter", + }, + }, + }, + success: false, + }, + } + + for _, test := range testCases { + err := infosync.CheckBundle(test.bundle) + if test.success { + require.NoError(t, err) + } else { + require.Error(t, err) + } + } +} diff --git a/pkg/ddl/reorg.go b/pkg/ddl/reorg.go index fa9caab3c3ff7..ed7e28852c52d 100644 --- a/pkg/ddl/reorg.go +++ b/pkg/ddl/reorg.go @@ -74,7 +74,6 @@ type reorgCtx struct { doneCh chan reorgFnResult // rowCount is used to simulate a job's row count. rowCount int64 - jobState model.JobState mu struct { sync.Mutex @@ -257,8 +256,9 @@ func reorgTypeFlagsWithSQLMode(mode mysql.SQLMode) types.Flags { func reorgErrLevelsWithSQLMode(mode mysql.SQLMode) errctx.LevelMap { return errctx.LevelMap{ - errctx.ErrGroupTruncate: errctx.ResolveErrLevel(false, !mode.HasStrictMode()), - errctx.ErrGroupBadNull: errctx.ResolveErrLevel(false, !mode.HasStrictMode()), + 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(), @@ -274,20 +274,6 @@ func reorgTimeZoneWithTzLoc(tzLoc *model.TimeZoneLocation) (*time.Location, erro return tzLoc.GetLocation() } -func (rc *reorgCtx) notifyJobState(state model.JobState) { - atomic.StoreInt32((*int32)(&rc.jobState), int32(state)) -} - -func (rc *reorgCtx) isReorgCanceled() bool { - s := atomic.LoadInt32((*int32)(&rc.jobState)) - return int32(model.JobStateCancelled) == s || int32(model.JobStateCancelling) == s -} - -func (rc *reorgCtx) isReorgPaused() bool { - s := atomic.LoadInt32((*int32)(&rc.jobState)) - return int32(model.JobStatePaused) == s || int32(model.JobStatePausing) == s -} - func (rc *reorgCtx) setRowCount(count int64) { atomic.StoreInt64(&rc.rowCount, count) } @@ -565,28 +551,14 @@ func getTableTotalCount(w *worker, tblInfo *model.TableInfo) int64 { return rows[0].GetInt64(0) } -func (dc *ddlCtx) isReorgCancelled(jobID int64) bool { - return dc.getReorgCtx(jobID).isReorgCanceled() -} -func (dc *ddlCtx) isReorgPaused(jobID int64) bool { - return dc.getReorgCtx(jobID).isReorgPaused() -} - -func (dc *ddlCtx) isReorgRunnable(jobID int64, isDistReorg bool) error { +func (dc *ddlCtx) isReorgRunnable(ctx context.Context, isDistReorg bool) error { if dc.ctx.Err() != nil { // Worker is closed. So it can't do the reorganization. return dbterror.ErrInvalidWorker.GenWithStack("worker is closed") } - // TODO(lance6716): check ctx.Err? - if dc.isReorgCancelled(jobID) { - // Job is cancelled. So it can't be done. - return dbterror.ErrCancelledDDLJob - } - - if dc.isReorgPaused(jobID) { - logutil.DDLLogger().Warn("job paused by user", zap.String("ID", dc.uuid)) - return dbterror.ErrPausedDDLJob.GenWithStackByArgs(jobID) + if ctx.Err() != nil { + return context.Cause(ctx) } // If isDistReorg is true, we needn't check if it is owner. @@ -766,22 +738,19 @@ func GetTableMaxHandle(ctx *ReorgContext, store kv.Storage, startTS uint64, tbl return kv.IntHandle(row.GetInt64(0)), false, nil } -// ExistsTableRow checks if there is at least one row in the specified table. +// existsTableRow checks if there is at least one row in the specified table. // In case of an error during the operation, it returns false along with the error. -func ExistsTableRow(ctx *ReorgContext, store kv.Storage, startTS uint64, tbl table.PhysicalTable) (bool, error) { - handleCols := buildHandleCols(tbl) - result, err := buildOneRowTableScan(ctx, store, startTS, tbl, handleCols, 1, false) - if err != nil { - return false, errors.Trace(err) - } - defer terror.Call(result.Close) - - chk := chunk.New(getColumnsTypes(handleCols), 1, 1) - err = result.Next(ctx.ddlJobCtx, chk) +func existsTableRow(ctx *ReorgContext, store kv.Storage, tbl table.PhysicalTable, startTS uint64) (bool, error) { + found := false + err := iterateSnapshotKeys(ctx, store, kv.PriorityLow, tbl.RecordPrefix(), startTS, nil, nil, + func(_ kv.Handle, _ kv.Key, _ []byte) (bool, error) { + found = true + return false, nil + }) if err != nil { return false, errors.Trace(err) } - return chk.NumRows() != 0, nil + return found, nil } func buildHandleCols(tbl table.PhysicalTable) []*model.ColumnInfo { @@ -931,8 +900,8 @@ func getReorgInfo(ctx *ReorgContext, jobCtx *jobContext, rh *reorgHandler, job * zap.String("startKey", hex.EncodeToString(start)), zap.String("endKey", hex.EncodeToString(end))) - failpoint.Inject("errorUpdateReorgHandle", func() (*reorgInfo, error) { - return &info, errors.New("occur an error when update reorg handle") + failpoint.Inject("errorUpdateReorgHandle", func() { + failpoint.Return(&info, errors.New("occur an error when update reorg handle")) }) err = rh.InitDDLReorgHandle(job, start, end, pid, elements[0]) if err != nil { diff --git a/pkg/ddl/repair_table_test.go b/pkg/ddl/repair_table_test.go index 4d074db2ce889..f6b7cebdb4da9 100644 --- a/pkg/ddl/repair_table_test.go +++ b/pkg/ddl/repair_table_test.go @@ -102,7 +102,7 @@ func TestRepairTable(t *testing.T) { originTableInfo, _ := domainutil.RepairInfo.GetRepairedTableInfoByTableName("test", "origin") var repairErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type != model.ActionRepairTable { return } diff --git a/pkg/ddl/rollingback.go b/pkg/ddl/rollingback.go index 18a18a91d3058..9bb45a2a1239f 100644 --- a/pkg/ddl/rollingback.go +++ b/pkg/ddl/rollingback.go @@ -316,6 +316,41 @@ func rollingbackExchangeTablePartition(jobCtx *jobContext, job *model.Job) (ver return ver, errors.Trace(err) } +func rollingbackTruncateTablePartition(jobCtx *jobContext, job *model.Job) (ver int64, err error) { + tblInfo, err := GetTableInfoAndCancelFaultJob(jobCtx.metaMut, job, job.SchemaID) + if err != nil { + return ver, errors.Trace(err) + } + + return convertTruncateTablePartitionJob2RollbackJob(jobCtx, job, dbterror.ErrCancelledDDLJob, tblInfo) +} + +func convertTruncateTablePartitionJob2RollbackJob(jobCtx *jobContext, job *model.Job, otherwiseErr error, tblInfo *model.TableInfo) (ver int64, err error) { + if !job.IsRollbackable() { + // Only Original state and StateWrite can be rolled back, otherwise new partitions + // may have been used and new data would get lost. + // So we must continue to roll forward! + job.State = model.JobStateRunning + return ver, nil + } + pi := tblInfo.Partition + if len(pi.NewPartitionIDs) != 0 || pi.DDLAction != model.ActionNone || pi.DDLState != model.StateNone { + // Rollback the changes, note that no new partitions has been used yet! + // so only metadata rollback and we can cancel the DDL + tblInfo.Partition.NewPartitionIDs = nil + tblInfo.Partition.DDLAction = model.ActionNone + tblInfo.Partition.DDLState = model.StateNone + ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) + if err != nil { + return ver, errors.Trace(err) + } + return ver, nil + } + // No change yet, just cancel the job. + job.State = model.JobStateCancelled + return ver, errors.Trace(otherwiseErr) +} + func convertAddTablePartitionJob2RollbackJob(jobCtx *jobContext, job *model.Job, otherwiseErr error, tblInfo *model.TableInfo) (ver int64, err error) { addingDefinitions := tblInfo.Partition.AddingDefinitions partNames := make([]string, 0, len(addingDefinitions)) @@ -331,8 +366,6 @@ func convertAddTablePartitionJob2RollbackJob(jobCtx *jobContext, job *model.Job, if err != nil { return ver, errors.Trace(err) } - tblInfo.Partition.DDLState = model.StateNone - tblInfo.Partition.DDLAction = model.ActionNone job.State = model.JobStateRollingback return ver, errors.Trace(otherwiseErr) } @@ -343,6 +376,11 @@ func onRollbackReorganizePartition(jobCtx *jobContext, job *model.Job) (ver int6 job.State = model.JobStateCancelled return ver, errors.Trace(err) } + if job.SchemaState == model.StatePublic { + // We started to destroy the old indexes, so we can no longer rollback! + job.State = model.JobStateRunning + return ver, nil + } jobCtx.jobArgs = args return rollbackReorganizePartitionWithErr(jobCtx, job, dbterror.ErrCancelledDDLJob) @@ -371,51 +409,25 @@ func convertReorgPartitionJob2RollbackJob(jobCtx *jobContext, job *model.Job, ot partNames = append(partNames, pd.Name.L) } var dropIndices []*model.IndexInfo - // When Global Index is duplicated to a non Global, we later need - // to know if if it was Global before (marked to be dropped) or not. - globalToUniqueDupMap := make(map[string]int64) for _, indexInfo := range tblInfo.Indices { if !indexInfo.Unique { continue } - switch indexInfo.State { - case model.StateWriteReorganization, model.StateDeleteOnly, - model.StateWriteOnly: - dropIndices = append(dropIndices, indexInfo) - case model.StateDeleteReorganization: - if pi.DDLState != model.StateDeleteReorganization { - continue - } - // Old index marked to be dropped, rollback by making it public again - indexInfo.State = model.StatePublic - if indexInfo.Global { - if id, ok := globalToUniqueDupMap[indexInfo.Name.L]; ok { - return ver, errors.NewNoStackErrorf("Duplicate global index names '%s', %d != %d", indexInfo.Name.O, indexInfo.ID, id) - } - globalToUniqueDupMap[indexInfo.Name.L] = indexInfo.ID - } - case model.StatePublic: - if pi.DDLState != model.StateDeleteReorganization { - continue + isNew, ok := pi.DDLChangedIndex[indexInfo.ID] + if !ok { + // non-changed index + continue + } + if !isNew { + if pi.DDLState == model.StateDeleteReorganization { + // Revert the non-public state + indexInfo.State = model.StatePublic } - // We cannot drop the index here, we need to wait until - // the next schema version - // i.e. rollback in rollbackLikeDropPartition - // New index that became public in this state, - // mark it to be dropped in next schema version - if indexInfo.Global { - indexInfo.State = model.StateDeleteReorganization + } else { + if pi.DDLState == model.StateDeleteReorganization { + indexInfo.State = model.StateWriteOnly } else { - // How to know if this index was created as a duplicate or not? - if id, ok := globalToUniqueDupMap[indexInfo.Name.L]; ok { - // The original index - if id >= indexInfo.ID { - return ver, errors.NewNoStackErrorf("Indexes in wrong order during rollback, '%s', %d >= %d", indexInfo.Name.O, id, indexInfo.ID) - } - indexInfo.State = model.StateDeleteReorganization - } else { - globalToUniqueDupMap[indexInfo.Name.L] = indexInfo.ID - } + dropIndices = append(dropIndices, indexInfo) } } } @@ -466,16 +478,26 @@ func convertReorgPartitionJob2RollbackJob(jobCtx *jobContext, job *model.Job, ot return ver, errors.Trace(errors.New("Internal error, failed to find original partition definitions")) } pi.Definitions = newDefs - pi.Num = uint64(len(pi.Definitions)) } else { + // Move back to StateWriteReorganization, i.e. use the original table + // (non-partitioned or differently partitioned) as the main table to use. + // Otherwise, the Type does not match the expression. pi.Type, pi.DDLType = pi.DDLType, pi.Type pi.Expr, pi.DDLExpr = pi.DDLExpr, pi.Expr pi.Columns, pi.DDLColumns = pi.DDLColumns, pi.Columns pi.Definitions = pi.DroppingDefinitions } + pi.Num = uint64(len(pi.Definitions)) + // We should move back one state, since there might be other sessions seeing the new partitions. + job.SchemaState = model.StateWriteReorganization + pi.DDLState = job.SchemaState } - args := jobCtx.jobArgs.(*model.TablePartitionArgs) + args, err := model.GetTablePartitionArgs(job) + if err != nil { + job.State = model.JobStateCancelled + return ver, errors.Trace(err) + } args.PartNames = partNames job.FillArgs(args) ver, err = updateVersionAndTableInfo(jobCtx, job, tblInfo, true) @@ -612,8 +634,10 @@ func convertJob2RollbackJob(w *worker, jobCtx *jobContext, job *model.Job) (ver ver, err = rollingbackTruncateTable(jobCtx, job) case model.ActionModifyColumn: ver, err = rollingbackModifyColumn(jobCtx, job) - case model.ActionDropForeignKey, model.ActionTruncateTablePartition: + case model.ActionDropForeignKey: ver, err = cancelOnlyNotHandledJob(job, model.StatePublic) + case model.ActionTruncateTablePartition: + ver, err = rollingbackTruncateTablePartition(jobCtx, job) case model.ActionRebaseAutoID, model.ActionShardRowID, model.ActionAddForeignKey, model.ActionRenameTable, model.ActionRenameTables, model.ActionModifyTableCharsetAndCollate, diff --git a/pkg/ddl/rollingback_test.go b/pkg/ddl/rollingback_test.go index a6fe116e5a55a..e6419c433b306 100644 --- a/pkg/ddl/rollingback_test.go +++ b/pkg/ddl/rollingback_test.go @@ -56,7 +56,7 @@ func TestCancelAddIndexJobError(t *testing.T) { jobID atomic.Int64 res sqlexec.RecordSet ) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.TableID != tbl.Meta().ID { return } diff --git a/pkg/ddl/sanity_check.go b/pkg/ddl/sanity_check.go index 19e4be7f82f99..9c876c5606ecf 100644 --- a/pkg/ddl/sanity_check.go +++ b/pkg/ddl/sanity_check.go @@ -46,7 +46,7 @@ func (e *executor) checkDeleteRangeCnt(job *model.Job) { panic(err) } if actualCnt != expectedCnt { - panic(fmt.Sprintf("expect delete range count %d, actual count %d", expectedCnt, actualCnt)) + panic(fmt.Sprintf("expect delete range count %d, actual count %d for job type '%s'", expectedCnt, actualCnt, job.Type.String())) } } @@ -110,7 +110,7 @@ func expectedDeleteRangeCnt(ctx delRangeCntCtx, job *model.Job) (int, error) { if err != nil { return 0, errors.Trace(err) } - return len(args.OldPhysicalTblIDs), nil + return len(args.OldPhysicalTblIDs) + len(args.OldGlobalIndexes), nil case model.ActionAddIndex, model.ActionAddPrimaryKey: args, err := model.GetFinishedModifyIndexArgs(job) if err != nil { diff --git a/pkg/ddl/schema.go b/pkg/ddl/schema.go index 250b213859595..083b48a9390b7 100644 --- a/pkg/ddl/schema.go +++ b/pkg/ddl/schema.go @@ -20,6 +20,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/ddl/label" + "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" @@ -153,7 +154,7 @@ func onModifySchemaDefaultPlacement(jobCtx *jobContext, job *model.Job) (ver int return ver, nil } -func onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { +func (w *worker) onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { metaMut := jobCtx.metaMut dbInfo, err := checkSchemaExistAndCancelNotExistJob(metaMut, job) if err != nil { @@ -179,7 +180,7 @@ func onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { return ver, errors.Trace(err) } var tables []*model.TableInfo - tables, err = metaMut.ListTables(job.SchemaID) + tables, err = metaMut.ListTables(jobCtx.stepCtx, job.SchemaID) if err != nil { return ver, errors.Trace(err) } @@ -204,7 +205,7 @@ func onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { case model.StateDeleteOnly: dbInfo.State = model.StateNone var tables []*model.TableInfo - tables, err = metaMut.ListTables(job.SchemaID) + tables, err = metaMut.ListTables(jobCtx.stepCtx, job.SchemaID) if err != nil { return ver, errors.Trace(err) } @@ -218,6 +219,23 @@ func onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _ error) { break } + // Split tables into multiple jobs to avoid too big records in the notifier. + const tooManyTablesThreshold = 100000 + tablesPerJob := 100 + if len(tables) > tooManyTablesThreshold { + tablesPerJob = 500 + } + for i := 0; i < len(tables); i += tablesPerJob { + end := i + tablesPerJob + if end > len(tables) { + end = len(tables) + } + dropSchemaEvent := notifier.NewDropSchemaEvent(dbInfo, tables[i:end]) + err = asyncNotifyEvent(jobCtx, dropSchemaEvent, job, int64(i/tablesPerJob), w.sess) + if err != nil { + return ver, errors.Trace(err) + } + } // Finish this job. job.FillFinishedArgs(&model.DropSchemaArgs{ AllDroppedTableIDs: getIDs(tables), @@ -276,7 +294,7 @@ func (w *worker) onRecoverSchema(jobCtx *jobContext, job *model.Job) (ver int64, sid := recoverSchemaInfo.DBInfo.ID snap := w.store.GetSnapshot(kv.NewVersion(recoverSchemaInfo.SnapshotTS)) snapMeta := meta.NewReader(snap) - tables, err2 := snapMeta.ListTables(sid) + tables, err2 := snapMeta.ListTables(jobCtx.stepCtx, sid) if err2 != nil { job.State = model.JobStateCancelled return ver, errors.Trace(err2) diff --git a/pkg/ddl/schema_version.go b/pkg/ddl/schema_version.go index bbd823b7953de..3b206bb60ac79 100644 --- a/pkg/ddl/schema_version.go +++ b/pkg/ddl/schema_version.go @@ -221,7 +221,7 @@ func SetSchemaDiffForReorganizePartition(diff *model.SchemaDiff, job *model.Job, func SetSchemaDiffForPartitionModify(diff *model.SchemaDiff, job *model.Job, jobCtx *jobContext) { diff.TableID = job.TableID diff.OldTableID = job.TableID - if job.SchemaState == model.StateDeleteReorganization { + if job.SchemaState == model.StateNone { args := jobCtx.jobArgs.(*model.TablePartitionArgs) partInfo := args.PartInfo // Final part, new table id is assigned diff --git a/pkg/ddl/schemaver/BUILD.bazel b/pkg/ddl/schemaver/BUILD.bazel index db28e7939d2b7..eae7a867057cf 100644 --- a/pkg/ddl/schemaver/BUILD.bazel +++ b/pkg/ddl/schemaver/BUILD.bazel @@ -36,20 +36,15 @@ go_test( flaky = True, shard_count = 5, deps = [ - "//pkg/ddl", "//pkg/ddl/util", "//pkg/domain/infosync", - "//pkg/infoschema", "//pkg/parser/terror", - "//pkg/session", "//pkg/sessionctx/variable", - "//pkg/store/mockstore", "//pkg/util", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@io_etcd_go_etcd_api_v3//mvccpb", - "@io_etcd_go_etcd_client_v3//:client", "@io_etcd_go_etcd_server_v3//etcdserver", "@io_etcd_go_etcd_tests_v3//integration", "@org_golang_google_grpc//codes", diff --git a/pkg/ddl/schemaver/syncer_test.go b/pkg/ddl/schemaver/syncer_test.go index 1e8e285cb1f4e..a62bd24250b13 100644 --- a/pkg/ddl/schemaver/syncer_test.go +++ b/pkg/ddl/schemaver/syncer_test.go @@ -23,18 +23,13 @@ import ( "time" "github.com/pingcap/errors" - . "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/ddl/schemaver" util2 "github.com/pingcap/tidb/pkg/ddl/util" - "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/parser/terror" - "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx/variable" - "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" "go.etcd.io/etcd/api/v3/mvccpb" - clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/server/v3/etcdserver" "go.etcd.io/etcd/tests/v3/integration" "google.golang.org/grpc/codes" @@ -42,7 +37,6 @@ import ( ) const minInterval = 10 * time.Nanosecond // It's used to test timeout. -const testLease = 5 * time.Millisecond func TestSyncerSimple(t *testing.T) { variable.EnableMDL.Store(false) @@ -57,59 +51,31 @@ func TestSyncerSimple(t *testing.T) { schemaver.CheckVersFirstWaitTime = origin }() - store, err := mockstore.NewMockStore() - require.NoError(t, err) - defer func() { require.NoError(t, store.Close()) }() - domain, err := session.GetDomain(store) - require.NoError(t, err) - cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}) defer cluster.Terminate(t) cli := cluster.RandClient() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - ic := infoschema.NewCache(nil, 2) - ic.Insert(infoschema.MockInfoSchemaWithSchemaVer(nil, 0), 0) - d, _ := NewDDL( - ctx, - WithEtcdClient(cli), - WithStore(store), - WithLease(testLease), - WithInfoCache(ic), - WithSchemaLoader(domain), - ) - go func() { - require.NoError(t, d.OwnerManager().CampaignOwner()) + syncers := make([]schemaver.Syncer, 0, 2) + for i := 0; i < 2; i++ { + id := strconv.Itoa(i + 1) + schemaVerSyncer := schemaver.NewEtcdSyncer(cli, id) + require.NoError(t, schemaVerSyncer.Init(ctx)) + syncers = append(syncers, schemaVerSyncer) + } + defer func() { + for _, syncer := range syncers { + syncer.Close() + } }() - defer d.OwnerManager().Cancel() - - // for init function - require.NoError(t, d.SchemaSyncer().Init(ctx)) - resp, err := cli.Get(ctx, util2.DDLAllSchemaVersions, clientv3.WithPrefix()) - require.NoError(t, err) - - defer d.SchemaSyncer().Close() - - key := util2.DDLAllSchemaVersions + "/" + d.OwnerManager().ID() - checkRespKV(t, 1, key, schemaver.InitialVersion, resp.Kvs...) - - ic2 := infoschema.NewCache(nil, 2) - ic2.Insert(infoschema.MockInfoSchemaWithSchemaVer(nil, 0), 0) - d1, _ := NewDDL( - ctx, - WithEtcdClient(cli), - WithStore(store), - WithLease(testLease), - WithInfoCache(ic2), - WithSchemaLoader(domain), - ) - go func() { - require.NoError(t, d1.OwnerManager().CampaignOwner()) - }() - defer d1.OwnerManager().Cancel() - require.NoError(t, d1.SchemaSyncer().Init(ctx)) - defer d.SchemaSyncer().Close() + for i := range syncers { + id := strconv.Itoa(i + 1) + key := util2.DDLAllSchemaVersions + "/" + id + resp, err := cli.Get(ctx, key) + require.NoError(t, err) + checkRespKV(t, 1, key, schemaver.InitialVersion, resp.Kvs...) + } // for watchCh var wg util.WaitGroupWrapper @@ -117,7 +83,7 @@ func TestSyncerSimple(t *testing.T) { var checkErr string wg.Run(func() { select { - case resp := <-d.SchemaSyncer().GlobalVersionCh(): + case resp := <-syncers[0].GlobalVersionCh(): if len(resp.Events) < 1 { checkErr = "get chan events count less than 1" return @@ -130,7 +96,7 @@ func TestSyncerSimple(t *testing.T) { }) // for update latestSchemaVersion - require.NoError(t, d.SchemaSyncer().OwnerUpdateGlobalVersion(ctx, currentVer)) + require.NoError(t, syncers[0].OwnerUpdateGlobalVersion(ctx, currentVer)) wg.Wait() @@ -138,34 +104,35 @@ func TestSyncerSimple(t *testing.T) { // for CheckAllVersions childCtx, cancel := context.WithTimeout(ctx, 200*time.Millisecond) - require.Error(t, d.SchemaSyncer().WaitVersionSynced(childCtx, 0, currentVer)) + require.Error(t, syncers[0].WaitVersionSynced(childCtx, 0, currentVer)) cancel() // for UpdateSelfVersion - require.NoError(t, d.SchemaSyncer().UpdateSelfVersion(context.Background(), 0, currentVer)) - require.NoError(t, d1.SchemaSyncer().UpdateSelfVersion(context.Background(), 0, currentVer)) + require.NoError(t, syncers[0].UpdateSelfVersion(context.Background(), 0, currentVer)) + require.NoError(t, syncers[1].UpdateSelfVersion(context.Background(), 0, currentVer)) childCtx, cancel = context.WithTimeout(ctx, minInterval) defer cancel() - err = d1.SchemaSyncer().UpdateSelfVersion(childCtx, 0, currentVer) + err := syncers[1].UpdateSelfVersion(childCtx, 0, currentVer) require.True(t, isTimeoutError(err)) // for CheckAllVersions - require.NoError(t, d.SchemaSyncer().WaitVersionSynced(context.Background(), 0, currentVer-1)) - require.NoError(t, d.SchemaSyncer().WaitVersionSynced(context.Background(), 0, currentVer)) + require.NoError(t, syncers[0].WaitVersionSynced(context.Background(), 0, currentVer-1)) + require.NoError(t, syncers[0].WaitVersionSynced(context.Background(), 0, currentVer)) childCtx, cancel = context.WithTimeout(ctx, minInterval) defer cancel() - err = d.SchemaSyncer().WaitVersionSynced(childCtx, 0, currentVer) + err = syncers[0].WaitVersionSynced(childCtx, 0, currentVer) require.True(t, isTimeoutError(err)) // for Close - resp, err = cli.Get(context.Background(), key) + key := util2.DDLAllSchemaVersions + "/1" + resp, err := cli.Get(context.Background(), key) require.NoError(t, err) currVer := fmt.Sprintf("%v", currentVer) checkRespKV(t, 1, key, currVer, resp.Kvs...) - d.SchemaSyncer().Close() + syncers[0].Close() resp, err = cli.Get(context.Background(), key) require.NoError(t, err) require.Len(t, resp.Kvs, 0) diff --git a/pkg/ddl/serverstate/BUILD.bazel b/pkg/ddl/serverstate/BUILD.bazel index 9c983d8036b30..e9e1cf420e802 100644 --- a/pkg/ddl/serverstate/BUILD.bazel +++ b/pkg/ddl/serverstate/BUILD.bazel @@ -30,13 +30,9 @@ go_test( flaky = True, deps = [ ":serverstate", - "//pkg/ddl", "//pkg/ddl/schemaver", "//pkg/ddl/util", - "//pkg/infoschema", - "//pkg/session", "//pkg/sessionctx/variable", - "//pkg/store/mockstore", "//pkg/util", "@com_github_stretchr_testify//require", "@io_etcd_go_etcd_api_v3//mvccpb", diff --git a/pkg/ddl/serverstate/syncer_test.go b/pkg/ddl/serverstate/syncer_test.go index 0c24430ce6bc9..a6c181f2754b5 100644 --- a/pkg/ddl/serverstate/syncer_test.go +++ b/pkg/ddl/serverstate/syncer_test.go @@ -20,14 +20,10 @@ import ( "testing" "time" - . "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/ddl/schemaver" "github.com/pingcap/tidb/pkg/ddl/serverstate" util2 "github.com/pingcap/tidb/pkg/ddl/util" - "github.com/pingcap/tidb/pkg/infoschema" - "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx/variable" - "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" "go.etcd.io/etcd/api/v3/mvccpb" @@ -59,42 +55,23 @@ func TestStateSyncerSimple(t *testing.T) { schemaver.CheckVersFirstWaitTime = origin }() - store, err := mockstore.NewMockStore() - require.NoError(t, err) - defer func() { require.NoError(t, store.Close()) }() - domain, err := session.GetDomain(store) - require.NoError(t, err) - cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}) defer cluster.Terminate(t) cli := cluster.RandClient() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - ic := infoschema.NewCache(nil, 2) - ic.Insert(infoschema.MockInfoSchemaWithSchemaVer(nil, 0), 0) - d, _ := NewDDL( - ctx, - WithEtcdClient(cli), - WithStore(store), - WithLease(5*time.Millisecond), - WithInfoCache(ic), - WithSchemaLoader(domain), - ) var wg util.WaitGroupWrapper - wg.Run(func() { - require.NoError(t, d.OwnerManager().CampaignOwner()) - }) - defer d.OwnerManager().Cancel() + serverStateSyncer := serverstate.NewEtcdSyncer(cli, util2.ServerGlobalState) // TODO: We can remove it when we call it in newDDL. - require.NoError(t, d.StateSyncer().Init(ctx)) + require.NoError(t, serverStateSyncer.Init(ctx)) // for GetGlobalState // for the initial state stateInfo := &serverstate.StateInfo{State: serverstate.StateNormalRunning} - respState, err := d.StateSyncer().GetGlobalState(ctx) + respState, err := serverStateSyncer.GetGlobalState(ctx) require.Nil(t, err) require.Equal(t, stateInfo, respState) - require.False(t, d.StateSyncer().IsUpgradingState()) + require.False(t, serverStateSyncer.IsUpgradingState()) // for watchCh var checkErr string stateInfo.State = serverstate.StateUpgrading @@ -102,25 +79,25 @@ func TestStateSyncerSimple(t *testing.T) { require.Nil(t, err) checkValue := func() { select { - case resp := <-d.StateSyncer().WatchChan(): + case resp := <-serverStateSyncer.WatchChan(): if len(resp.Events) < 1 { checkErr = "get chan events count less than 1" return } checkRespKV(t, 1, util2.ServerGlobalState, string(stateInfoByte), resp.Events[0].Kv) if stateInfo.State == serverstate.StateUpgrading { - require.False(t, d.StateSyncer().IsUpgradingState()) + require.False(t, serverStateSyncer.IsUpgradingState()) } else { - require.True(t, d.StateSyncer().IsUpgradingState()) + require.True(t, serverStateSyncer.IsUpgradingState()) } // for GetGlobalState - respState, err := d.StateSyncer().GetGlobalState(ctx) + respState, err := serverStateSyncer.GetGlobalState(ctx) require.Nil(t, err) require.Equal(t, stateInfo, respState) if stateInfo.State == serverstate.StateUpgrading { - require.True(t, d.StateSyncer().IsUpgradingState()) + require.True(t, serverStateSyncer.IsUpgradingState()) } else { - require.False(t, d.StateSyncer().IsUpgradingState()) + require.False(t, serverStateSyncer.IsUpgradingState()) } case <-time.After(3 * time.Second): checkErr = "get update state failed" @@ -131,7 +108,7 @@ func TestStateSyncerSimple(t *testing.T) { // for update UpdateGlobalState // for StateUpgrading wg.Run(checkValue) - require.NoError(t, d.StateSyncer().UpdateGlobalState(ctx, &serverstate.StateInfo{State: serverstate.StateUpgrading})) + require.NoError(t, serverStateSyncer.UpdateGlobalState(ctx, &serverstate.StateInfo{State: serverstate.StateUpgrading})) wg.Wait() require.Equal(t, "", checkErr) // for StateNormalRunning @@ -139,7 +116,7 @@ func TestStateSyncerSimple(t *testing.T) { stateInfoByte, err = stateInfo.Marshal() require.Nil(t, err) wg.Run(checkValue) - require.NoError(t, d.StateSyncer().UpdateGlobalState(ctx, &serverstate.StateInfo{State: serverstate.StateNormalRunning})) + require.NoError(t, serverStateSyncer.UpdateGlobalState(ctx, &serverstate.StateInfo{State: serverstate.StateNormalRunning})) wg.Wait() require.Equal(t, "", checkErr) } diff --git a/pkg/ddl/stat_test.go b/pkg/ddl/stat_test.go index 5f3f36f304869..2ecf4c44d9422 100644 --- a/pkg/ddl/stat_test.go +++ b/pkg/ddl/stat_test.go @@ -106,7 +106,7 @@ func TestIssue42268(t *testing.T) { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if tbl.Meta().ID != job.TableID { return } diff --git a/pkg/ddl/table.go b/pkg/ddl/table.go index 469e446ab68d1..e4306fa437193 100644 --- a/pkg/ddl/table.go +++ b/pkg/ddl/table.go @@ -1239,7 +1239,7 @@ func checkConstraintNamesNotExists(t *meta.Mutator, schemaID int64, constraints if len(constraints) == 0 { return nil } - tbInfos, err := t.ListTables(schemaID) + tbInfos, err := t.ListTables(context.Background(), schemaID) if err != nil { return err } diff --git a/pkg/ddl/table_modify_test.go b/pkg/ddl/table_modify_test.go index 8787085e4e17d..b6f97998ddf13 100644 --- a/pkg/ddl/table_modify_test.go +++ b/pkg/ddl/table_modify_test.go @@ -129,7 +129,7 @@ func TestConcurrentLockTables(t *testing.T) { func testParallelExecSQL(t *testing.T, store kv.Storage, sql1, sql2 string, se1, se2 sessiontypes.Session, f func(t *testing.T, err1, err2 error)) { times := 0 ctx := context.Background() - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if times != 0 { return } @@ -148,7 +148,7 @@ func testParallelExecSQL(t *testing.T, store kv.Storage, sql1, sql2 string, se1, } times++ }) - defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") var wg util.WaitGroupWrapper var err1 error diff --git a/pkg/ddl/table_split_test.go b/pkg/ddl/table_split_test.go index 7ee9ebec021c4..b47b6939988f0 100644 --- a/pkg/ddl/table_split_test.go +++ b/pkg/ddl/table_split_test.go @@ -97,6 +97,10 @@ func TestScatterRegion(t *testing.T) { tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("table")) tk.MustExec("set @@tidb_scatter_region = 'global';") tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("global")) + tk.MustExec("set @@tidb_scatter_region = 'TABLE';") + tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("table")) + tk.MustExec("set @@tidb_scatter_region = 'GLOBAL';") + tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("global")) tk.MustExec("set @@tidb_scatter_region = '';") tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("")) @@ -111,13 +115,34 @@ func TestScatterRegion(t *testing.T) { tk.MustQuery("select @@global.tidb_scatter_region;").Check(testkit.Rows("global")) tk.MustExec("set global tidb_scatter_region = '';") tk.MustQuery("select @@global.tidb_scatter_region;").Check(testkit.Rows("")) + tk2 = testkit.NewTestKit(t, store) + tk2.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("")) + + tk.MustExec("set global tidb_scatter_region = 'TABLE';") + tk.MustQuery("select @@global.tidb_scatter_region;").Check(testkit.Rows("table")) + tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("")) + tk2 = testkit.NewTestKit(t, store) + tk2.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("table")) + + tk.MustExec("set global tidb_scatter_region = 'GLOBAL';") + tk.MustQuery("select @@global.tidb_scatter_region;").Check(testkit.Rows("global")) + tk.MustExec("set global tidb_scatter_region = '';") + tk.MustQuery("select @@global.tidb_scatter_region;").Check(testkit.Rows("")) err := tk.ExecToErr("set @@tidb_scatter_region = 'test';") require.ErrorContains(t, err, "invalid value for 'test', it should be either '', 'table' or 'global'") + err = tk.ExecToErr("set @@tidb_scatter_region = 'te st';") + require.ErrorContains(t, err, "invalid value for 'te st', it should be either '', 'table' or 'global'") err = tk.ExecToErr("set @@tidb_scatter_region = '1';") require.ErrorContains(t, err, "invalid value for '1', it should be either '', 'table' or 'global'") err = tk.ExecToErr("set @@tidb_scatter_region = 0;") require.ErrorContains(t, err, "invalid value for '0', it should be either '', 'table' or 'global'") + + tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("")) + tk.MustExec("set @@tidb_scatter_region = 'TaBlE';") + tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("table")) + tk.MustExec("set @@tidb_scatter_region = 'gLoBaL';") + tk.MustQuery("select @@tidb_scatter_region;").Check(testkit.Rows("global")) } type kvStore interface { diff --git a/pkg/ddl/table_test.go b/pkg/ddl/table_test.go index 1446127b42c37..0e94d623f51db 100644 --- a/pkg/ddl/table_test.go +++ b/pkg/ddl/table_test.go @@ -652,7 +652,7 @@ func TestRenameTableIntermediateState(t *testing.T) { for _, tc := range testCases { runInsert := false var jobID int64 = 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.ID <= finishedJobID { // The job has been done, OnJobUpdated may be invoked later asynchronously. // We should skip the done job. @@ -720,7 +720,7 @@ func TestCreateSameTableOrDBOnOwnerChange(t *testing.T) { ) enableWaitSubmit.Store(true) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func() { time.Sleep(300 * time.Millisecond) }) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeTransitOneJobStepAndWaitSync", func() { time.Sleep(300 * time.Millisecond) }) // create and wait all jobs are submitted to tidb_ddl_job before they are run. // we are creating same table/database, only the first will success. var wg util.WaitGroupWrapper @@ -776,7 +776,7 @@ func TestDropTableAccessibleInInfoSchema(t *testing.T) { tkDDL.MustExec("create table t (id int key)") var errs []error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionDropTable && job.TableName == "t" { if job.SchemaState == model.StateDeleteOnly || job.SchemaState == model.StateWriteOnly { _, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) @@ -786,7 +786,7 @@ func TestDropTableAccessibleInInfoSchema(t *testing.T) { }) tkDDL.MustExec("drop table t") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") for _, err := range errs { require.NoError(t, err) } diff --git a/pkg/ddl/tests/adminpause/pause_cancel_test.go b/pkg/ddl/tests/adminpause/pause_cancel_test.go index d3391455aecb4..b9445dc5b4f6c 100644 --- a/pkg/ddl/tests/adminpause/pause_cancel_test.go +++ b/pkg/ddl/tests/adminpause/pause_cancel_test.go @@ -126,7 +126,7 @@ func pauseAndCancelStmt(t *testing.T, stmtKit *testkit.TestKit, adminCommandKit stmtKit.MustExec(prepareStmt) } - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", pauseFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", pauseFunc) isPaused.Store(false) isCancelled.Store(false) @@ -146,7 +146,7 @@ func pauseAndCancelStmt(t *testing.T, stmtKit *testkit.TestKit, adminCommandKit } // Release the hook, so that we could run the `rollbackStmts` successfully. - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRefreshJob") for _, rollbackStmt := range stmtCase.rollbackStmts { diff --git a/pkg/ddl/tests/adminpause/pause_negative_test.go b/pkg/ddl/tests/adminpause/pause_negative_test.go index 06274690c3e34..84912af85f2f1 100644 --- a/pkg/ddl/tests/adminpause/pause_negative_test.go +++ b/pkg/ddl/tests/adminpause/pause_negative_test.go @@ -48,7 +48,7 @@ func TestPauseOnWriteConflict(t *testing.T) { jobID := atomic.NewInt64(0) // Test when pause cannot be retried and adding index succeeds. - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { adminMutex.Lock() if job.Type == model.ActionAddIndex && job.State == model.JobStateRunning && job.SchemaState == model.StateWriteReorganization { @@ -70,7 +70,7 @@ func TestPauseOnWriteConflict(t *testing.T) { var cancelRS []sqlexec.RecordSet var cancelErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { adminMutex.Lock() if job.Type == model.ActionAddIndex && job.State == model.JobStateRunning && job.SchemaState == model.StateWriteReorganization { @@ -110,7 +110,7 @@ func TestPauseFailedOnCommit(t *testing.T) { var adminMutex sync.RWMutex // Test when pause cannot be retried and adding index succeeds. - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { adminMutex.Lock() if job.Type == model.ActionAddIndex && job.State == model.JobStateRunning && job.SchemaState == model.StateWriteReorganization { diff --git a/pkg/ddl/tests/adminpause/pause_resume_test.go b/pkg/ddl/tests/adminpause/pause_resume_test.go index 13d44812630dd..d23e6a05b0910 100644 --- a/pkg/ddl/tests/adminpause/pause_resume_test.go +++ b/pkg/ddl/tests/adminpause/pause_resume_test.go @@ -157,7 +157,7 @@ func pauseResumeAndCancel(t *testing.T, stmtKit *testkit.TestKit, adminCommandKi stmtKit.MustExec(prepareStmt) } - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", resumeFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", resumeFunc) Logger.Debug("pauseResumeAndCancel: statement execute", zap.String("DDL Statement", stmtCase.stmt)) if stmtCase.isJobPausable { @@ -165,7 +165,7 @@ func pauseResumeAndCancel(t *testing.T, stmtKit *testkit.TestKit, adminCommandKi testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeLoadAndDeliverJobs", func() { cancelFunc() }) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", pauseFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", pauseFunc) stmtKit.MustGetErrCode(stmtCase.stmt, errno.ErrCancelledDDLJob) testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeLoadAndDeliverJobs") @@ -173,7 +173,7 @@ func pauseResumeAndCancel(t *testing.T, stmtKit *testkit.TestKit, adminCommandKi verifyCancelResult(t, adminCommandKit) } else { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", pauseFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", pauseFunc) stmtKit.MustExec(stmtCase.stmt) Logger.Info("pauseResumeAndCancel: statement execution should finish successfully.") @@ -187,7 +187,7 @@ func pauseResumeAndCancel(t *testing.T, stmtKit *testkit.TestKit, adminCommandKi verifyPauseResult(t, adminCommandKit) verifyResumeResult(t, adminCommandKit) } else { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", pauseFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", pauseFunc) stmtKit.MustExec(stmtCase.stmt) require.False(t, isPaused) @@ -196,8 +196,8 @@ func pauseResumeAndCancel(t *testing.T, stmtKit *testkit.TestKit, adminCommandKi } // Should not affect the 'stmtCase.rollbackStmts' - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") // Statement in `stmtCase` will be finished successfully all the way, need to roll it back. for _, rollbackStmt := range stmtCase.rollbackStmts { diff --git a/pkg/ddl/tests/fastcreatetable/fastcreatetable_test.go b/pkg/ddl/tests/fastcreatetable/fastcreatetable_test.go index 62515f380fedf..31feb9e489814 100644 --- a/pkg/ddl/tests/fastcreatetable/fastcreatetable_test.go +++ b/pkg/ddl/tests/fastcreatetable/fastcreatetable_test.go @@ -39,7 +39,7 @@ func TestSwitchFastCreateTable(t *testing.T) { conn := server.CreateMockConn(t, sv) tk := testkit.NewTestKitWithSession(t, store, conn.Context().Session) - tk.MustQuery("show global variables like 'tidb_enable_fast_create_table'").Check(testkit.Rows("tidb_enable_fast_create_table OFF")) + tk.MustQuery("show global variables like 'tidb_enable_fast_create_table'").Check(testkit.Rows("tidb_enable_fast_create_table ON")) tk.MustExec("create database db1;") tk.MustExec("create database db2;") diff --git a/pkg/ddl/tests/indexmerge/BUILD.bazel b/pkg/ddl/tests/indexmerge/BUILD.bazel index ad5186396e2ca..9b9580df9f293 100644 --- a/pkg/ddl/tests/indexmerge/BUILD.bazel +++ b/pkg/ddl/tests/indexmerge/BUILD.bazel @@ -9,7 +9,7 @@ go_test( ], flaky = True, race = "on", - shard_count = 21, + shard_count = 23, deps = [ "//pkg/config", "//pkg/ddl", diff --git a/pkg/ddl/tests/indexmerge/merge_test.go b/pkg/ddl/tests/indexmerge/merge_test.go index c808dd79cb18b..414986fb0b43a 100644 --- a/pkg/ddl/tests/indexmerge/merge_test.go +++ b/pkg/ddl/tests/indexmerge/merge_test.go @@ -47,7 +47,7 @@ func TestAddIndexMergeProcess(t *testing.T) { var checkErr error var runDML, backfillDone bool - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if !runDML && job.Type == model.ActionAddIndex && job.SchemaState == model.StateWriteReorganization { idx := testutil.FindIdxInfo(dom, "test", "t", "idx") if idx == nil || idx.BackfillState != model.BackfillStateRunning { @@ -64,7 +64,7 @@ func TestAddIndexMergeProcess(t *testing.T) { } }) tk.MustExec("alter table t add index idx(c1);") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") require.True(t, backfillDone) require.True(t, runDML) require.NoError(t, checkErr) @@ -89,7 +89,7 @@ func TestAddPrimaryKeyMergeProcess(t *testing.T) { var runDML, backfillDone bool // only trigger reload when schema version changed testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/domain/disableOnTickReload", "return(true)") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeWaitSchemaChanged", func(job *model.Job, _ int64) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeWaitSchemaSynced", func(job *model.Job, _ int64) { if !runDML && job.Type == model.ActionAddPrimaryKey && job.SchemaState == model.StateWriteReorganization { idx := testutil.FindIdxInfo(dom, "test", "t", "primary") if idx == nil || idx.BackfillState != model.BackfillStateRunning || job.SnapshotVer == 0 { @@ -130,7 +130,7 @@ func TestAddIndexMergeVersionIndexValue(t *testing.T) { var checkErr error var runDML bool var tblID, idxID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if !runDML && job.Type == model.ActionAddIndex && job.SchemaState == model.StateWriteReorganization { idx := testutil.FindIdxInfo(dom, "test", "t", "idx") if idx == nil || idx.BackfillState != model.BackfillStateReadyToMerge { @@ -143,7 +143,7 @@ func TestAddIndexMergeVersionIndexValue(t *testing.T) { } }) tk.MustExec("alter table t add unique index idx(c1);") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") require.True(t, runDML) require.NoError(t, checkErr) tk.MustExec("admin check table t;") @@ -179,7 +179,7 @@ func TestAddIndexMergeIndexUntouchedValue(t *testing.T) { var checkErrs []error var runInsert bool var runUpdate bool - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.Type != model.ActionAddIndex || job.SchemaState != model.StateWriteReorganization { return } @@ -209,7 +209,7 @@ func TestAddIndexMergeIndexUntouchedValue(t *testing.T) { } }) tk.MustExec("alter table t add index idx(c);") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") require.True(t, runUpdate) for _, err := range checkErrs { require.NoError(t, err) @@ -243,7 +243,7 @@ func TestCreateUniqueIndexKeyExist(t *testing.T) { // If waitReorg timeout, the worker may enter writeReorg more than 2 times. reorgTime := 0 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() { return } @@ -305,7 +305,7 @@ func TestAddIndexMergeIndexUpdateOnDeleteOnly(t *testing.T) { tk.MustExec("set @@global.tidb_txn_assertion_level = 'STRICT';") var checkErrs []error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.SchemaState == model.StateDeleteOnly { for _, sql := range updateSQLs { _, err := tk2.Exec(sql) @@ -316,7 +316,7 @@ func TestAddIndexMergeIndexUpdateOnDeleteOnly(t *testing.T) { } }) tk.MustExec("alter table t add index idx(b);") - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") for _, err := range checkErrs { require.NoError(t, err) } @@ -334,7 +334,7 @@ func TestAddIndexMergeDeleteUniqueOnWriteOnly(t *testing.T) { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() { return } @@ -386,7 +386,7 @@ func TestAddIndexMergeDoubleDelete(t *testing.T) { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() { return } @@ -433,7 +433,7 @@ func TestAddIndexMergeConflictWithPessimistic(t *testing.T) { runPessimisticTxn := false afterPessDML := make(chan struct{}, 1) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if t.Failed() { return } @@ -473,7 +473,7 @@ func TestAddIndexMergeConflictWithPessimistic(t *testing.T) { <-afterPessDML tk2.MustExec("rollback;") <-afterCommit - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") tk.MustExec("admin check table t;") tk.MustQuery("select * from t;").Check(testkit.Rows("1 2")) } @@ -488,7 +488,7 @@ func TestAddIndexMergeInsertOnMerging(t *testing.T) { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() { return } @@ -560,7 +560,7 @@ func TestAddIndexMergeInsertToDeletedTempIndex(t *testing.T) { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() { return } @@ -599,7 +599,7 @@ func TestAddIndexMergeReplaceDelete(t *testing.T) { // Don't skip merging temp index, otherwise MockDMLExecutionMerging will not execute. testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/ddl/skipReorgWorkForTempIndex", "return(false)") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() { return } @@ -635,7 +635,7 @@ func TestAddIndexMergeDeleteDifferentHandle(t *testing.T) { tk1.MustExec("use test") runDML := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() || runDML { return } @@ -676,7 +676,7 @@ func TestAddIndexDecodeTempIndexCommonHandle(t *testing.T) { tk1.MustExec("use test") runDML := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() || runDML { return } @@ -709,7 +709,7 @@ func TestAddIndexInsertIgnoreOnBackfill(t *testing.T) { tk1.MustExec("use test") runDML := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() || runDML { return } @@ -741,7 +741,7 @@ func TestAddIndexMultipleDelete(t *testing.T) { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if t.Failed() { return } @@ -778,7 +778,7 @@ func TestAddIndexDuplicateAndWriteConflict(t *testing.T) { tk1.MustExec("use test") var runCancel bool - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { if t.Failed() || runCancel { return } @@ -811,7 +811,7 @@ func TestAddIndexUpdateUntouchedValues(t *testing.T) { tk1.MustExec("use test") var runDML bool - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { if t.Failed() || runDML { return } @@ -840,7 +840,7 @@ func TestAddUniqueIndexFalsePositiveDuplicate(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") - tk.MustExec(`create table t(a bigint DEFAULT '-13202', + tk.MustExec(`create table t(a bigint DEFAULT '-13202', b varchar(221) NOT NULL DEFAULT 'dup', unique key exist_idx(b), PRIMARY KEY (a));`) @@ -857,3 +857,77 @@ func TestAddUniqueIndexFalsePositiveDuplicate(t *testing.T) { tk.MustExec("alter table t add unique index idx(b);") tk.MustExec("admin check table t;") } + +func TestAddIndexSkipReorgCheck(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int);") + + skipTableReorg := false + skipTempIdxReorg := false + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterCheckTableReorgCanSkip", func() { + skipTableReorg = true + }) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterCheckTempIndexReorgCanSkip", func() { + skipTempIdxReorg = true + }) + tk.MustExec("alter table t add index idx1(a);") + require.True(t, skipTableReorg) + require.True(t, skipTempIdxReorg) + + skipTableReorg = false + skipTempIdxReorg = false + tk.MustExec("insert into t values (1);") + tk.MustExec("alter table t add index idx2(a);") + require.False(t, skipTableReorg) + require.True(t, skipTempIdxReorg) + + skipTableReorg = false + skipTempIdxReorg = false + var runDML bool + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { + if t.Failed() || runDML { + return + } + switch job.SchemaState { + case model.StateWriteReorganization: + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + tk2.MustExec("insert into t values (2);") + runDML = true + } + }) + tk.MustExec("alter table t add index idx3(a);") + require.False(t, skipTableReorg) + require.False(t, skipTempIdxReorg) + tk.MustQuery("select * from t;").Check(testkit.Rows("1", "2")) + tk.MustExec("admin check table t;") +} + +func TestAddIndexInsertAfterReorgSkipCheck(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t (a int);") + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterCheckTableReorgCanSkip", func() { + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + tk2.MustExec("insert into t values (1);") + }) + tk.MustExec("alter table t add index idx(a);") + tk.MustQuery("select * from t;").Check(testkit.Rows("1")) + tk.MustExec("admin check table t;") + err := failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/afterCheckTableReorgCanSkip") + require.NoError(t, err) + + tk.MustExec("truncate table t;") + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterCheckTempIndexReorgCanSkip", func() { + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + tk2.MustExec("insert into t values (2);") + }) + tk.MustExec("alter table t add index idx2(a);") + tk.MustQuery("select * from t;").Check(testkit.Rows("2")) + tk.MustExec("admin check table t;") +} diff --git a/pkg/ddl/tests/metadatalock/BUILD.bazel b/pkg/ddl/tests/metadatalock/BUILD.bazel index bc8fc8a444520..e0439b0fea460 100644 --- a/pkg/ddl/tests/metadatalock/BUILD.bazel +++ b/pkg/ddl/tests/metadatalock/BUILD.bazel @@ -8,16 +8,18 @@ go_test( "mdl_test.go", ], flaky = True, - shard_count = 36, + shard_count = 37, deps = [ "//pkg/config", "//pkg/ddl", "//pkg/ddl/ingest/testutil", "//pkg/errno", + "//pkg/meta/model", "//pkg/server", "//pkg/testkit", "//pkg/testkit/testfailpoint", "//pkg/testkit/testsetup", + "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", ], diff --git a/pkg/ddl/tests/metadatalock/mdl_test.go b/pkg/ddl/tests/metadatalock/mdl_test.go index 262cb745e7a63..5a041e3b16bba 100644 --- a/pkg/ddl/tests/metadatalock/mdl_test.go +++ b/pkg/ddl/tests/metadatalock/mdl_test.go @@ -15,13 +15,17 @@ package metadatalocktest import ( + "context" "fmt" "sync" "testing" "time" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/ddl" ingesttestutil "github.com/pingcap/tidb/pkg/ddl/ingest/testutil" mysql "github.com/pingcap/tidb/pkg/errno" + "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/server" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testfailpoint" @@ -997,6 +1001,83 @@ func TestMDLPreparePlanCacheExecute2(t *testing.T) { tk.MustExec("admin check table t") } +// TestMDLPreparePlanCacheExecuteInsert makes sure the insert statement handle the schema correctly in plan cache. +func TestMDLPreparePlanCacheExecuteInsert(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + defer ingesttestutil.InjectMockBackendMgr(t, store)() + + 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 primary key, b int);") + tk.MustExec("create table t2(a int);") + tk.MustExec("insert into t values(1, 1), (2, 2), (3, 3), (4, 4);") + + tk.MustExec(`prepare insert_stmt from 'insert into t values (?, ?)'`) + tk.MustExec(`set @a=4, @b=4;`) + + ch := make(chan struct{}) + + first := true + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { + switch job.SchemaState { + case model.StateWriteReorganization: + tbl, _ := dom.InfoSchema().TableByID(context.Background(), job.TableID) + idx := tbl.Meta().FindIndexByName("idx") + switch idx.BackfillState { + case model.BackfillStateRunning: + if first { + // generate plan, cache it, and make some row change to make + // sure backfill state 'merging' is not skipped. + tk.MustExec(`begin`) + tk.MustExec(`delete from t where a = 4;`) + tk.MustExec(`execute insert_stmt using @a, @b;`) + tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("0")) + tk.MustExec(`commit`) + + tk.MustExec("begin") + // Activate txn. + tk.MustExec("select * from t2") + first = false + return + } + } + } + }) + + ddl.MockDMLExecutionMerging = func() { + tk.MustExec(`delete from t where a = 4;`) + // we must generate a new plan here, because the schema has changed since + // the last plan was generated. + tk.MustExec(`execute insert_stmt using @a, @b;`) + tk.MustQuery("select @@last_plan_from_cache;").Check(testkit.Rows("0")) + tk.MustExec("commit") + } + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDMLExecutionMerging", "1*return(true)->return(false)")) + + var wg sync.WaitGroup + wg.Add(1) + go func() { + <-ch + tkDDL.MustExec("alter table test.t add index idx(a);") + wg.Done() + }() + + ch <- struct{}{} + wg.Wait() + + tk.MustExec("admin check table t") +} + func TestMDLDisable2Enable(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) sv := server.CreateMockServer(t, store) diff --git a/pkg/ddl/tests/partition/BUILD.bazel b/pkg/ddl/tests/partition/BUILD.bazel index 7f65dece9dc1e..477577df5752b 100644 --- a/pkg/ddl/tests/partition/BUILD.bazel +++ b/pkg/ddl/tests/partition/BUILD.bazel @@ -5,6 +5,7 @@ go_test( timeout = "short", srcs = [ "db_partition_test.go", + "error_injection_test.go", "main_test.go", "multi_domain_test.go", "placement_test.go", @@ -17,8 +18,11 @@ go_test( "//pkg/ddl", "//pkg/ddl/logutil", "//pkg/ddl/testutil", + "//pkg/ddl/util", "//pkg/domain", + "//pkg/domain/infosync", "//pkg/errno", + "//pkg/expression", "//pkg/kv", "//pkg/meta/model", "//pkg/parser/ast", @@ -29,6 +33,7 @@ go_test( "//pkg/sessionctx", "//pkg/sessionctx/variable", "//pkg/sessiontxn", + "//pkg/store/gcworker", "//pkg/store/mockstore", "//pkg/table", "//pkg/table/tables", diff --git a/pkg/ddl/tests/partition/db_partition_test.go b/pkg/ddl/tests/partition/db_partition_test.go index 6d4c5f6fd3d5c..ddf7e18d91f7d 100644 --- a/pkg/ddl/tests/partition/db_partition_test.go +++ b/pkg/ddl/tests/partition/db_partition_test.go @@ -1336,14 +1336,32 @@ func TestGlobalIndexInsertInDropPartition(t *testing.T) { partition p3 values less than (30) );`) tk.MustExec("alter table test_global add unique index idx_b (b) global") - tk.MustExec("insert into test_global values (1, 1, 1), (8, 8, 8), (11, 11, 11), (12, 12, 12);") + tk.MustExec("insert into test_global values (1, 1, 1), (2, 2, 2), (11, 11, 11), (12, 12, 12)") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + doneMap := make(map[model.SchemaState]struct{}) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionDropTablePartition, job.Type) - if job.SchemaState == model.StateDeleteOnly { - tk2 := testkit.NewTestKit(t, store) - tk2.MustExec("use test") - tk2.MustExec("insert into test_global values (9, 9, 9)") + if _, ok := doneMap[job.SchemaState]; ok { + return + } + doneMap[job.SchemaState] = struct{}{} + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use test") + switch job.SchemaState { + case model.StatePublic: + tk2.MustExec("insert into test_global values (3, 3, 3)") + tk2.MustExec("insert into test_global values (13, 13, 13)") + case model.StateWriteOnly: + tk2.MustContainErrMsg("insert into test_global values (4, 4, 4)", "[table:1526]Table has no partition for value matching a partition being dropped, 'p1'") + tk2.MustExec("insert into test_global values (14, 14, 14)") + case model.StateDeleteOnly: + tk2.MustExec("insert into test_global values (5, 5, 5)") + tk2.MustExec("insert into test_global values (15, 15, 15)") + case model.StateDeleteReorganization: + tk2.MustExec("insert into test_global values (6, 6, 6)") + tk2.MustExec("insert into test_global values (16, 16, 16)") + default: + require.Fail(t, "invalid schema state '%s'", job.SchemaState.String()) } }) @@ -1352,7 +1370,7 @@ func TestGlobalIndexInsertInDropPartition(t *testing.T) { tk1.MustExec("alter table test_global drop partition p1") tk.MustExec("analyze table test_global") - tk.MustQuery("select * from test_global use index(idx_b) order by a").Check(testkit.Rows("9 9 9", "11 11 11", "12 12 12")) + tk.MustQuery("select * from test_global use index(idx_b) order by a").Check(testkit.Rows("5 5 5", "6 6 6", "11 11 11", "12 12 12", "13 13 13", "14 14 14", "15 15 15", "16 16 16")) } func TestGlobalIndexUpdateInDropPartition(t *testing.T) { @@ -1369,7 +1387,7 @@ func TestGlobalIndexUpdateInDropPartition(t *testing.T) { tk.MustExec("alter table test_global add unique index idx_b (b) global") tk.MustExec("insert into test_global values (1, 1, 1), (8, 8, 8), (11, 11, 11), (12, 12, 12);") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionDropTablePartition, job.Type) if job.SchemaState == model.StateDeleteOnly { tk2 := testkit.NewTestKit(t, store) @@ -1429,6 +1447,15 @@ func TestTruncatePartitionWithGlobalIndex(t *testing.T) { time.Sleep(10 * time.Millisecond) } } + waitFor(4, "write only") + tkTmp := testkit.NewTestKit(t, store) + tkTmp.MustExec(`begin`) + tkTmp.MustExec("use test") + tkTmp.MustQuery(`select count(*) from test_global`).Check(testkit.Rows("5")) + tk2.MustExec(`rollback`) + tk2.MustExec(`begin`) + tk2.MustExec(`insert into test_global values (5,5,5)`) + tkTmp.MustExec(`rollback`) waitFor(4, "delete only") tk3 := testkit.NewTestKit(t, store) tk3.MustExec(`begin`) @@ -1437,16 +1464,21 @@ func TestTruncatePartitionWithGlobalIndex(t *testing.T) { tk3.MustQuery(`explain format='brief' select c from test_global use index(idx_c) where c = 15`).CheckContain("Point_Get") tk3.MustQuery(`select b from test_global use index(idx_b) where b = 15`).Check(testkit.Rows()) tk3.MustQuery(`select c from test_global use index(idx_c) where c = 15`).Check(testkit.Rows()) - // Here it will fail with - // the partition is not in public. err := tk3.ExecToErr(`insert into test_global values (15,15,15)`) require.Error(t, err) - require.ErrorContains(t, err, "the partition is in not in public") + require.ErrorContains(t, err, "[kv:1062]Duplicate entry '15' for key 'test_global.idx_b'") tk2.MustExec(`commit`) + waitFor(4, "delete reorganization") + tk2.MustQuery(`select b from test_global use index(idx_b) where b = 15`).Check(testkit.Rows()) + tk2.MustQuery(`select c from test_global use index(idx_c) where c = 15`).Check(testkit.Rows()) + err = tk2.ExecToErr(`insert into test_global values (15,15,15)`) + require.NoError(t, err) + tk2.MustExec(`begin`) tk3.MustExec(`commit`) + tk.MustExec(`commit`) <-syncChan result := tk.MustQuery("select * from test_global;") - result.Sort().Check(testkit.Rows(`1 1 1`, `2 2 2`, `5 5 5`)) + result.Sort().Check(testkit.Rows(`1 1 1`, `15 15 15`, `2 2 2`, `5 5 5`)) tt = external.GetTableByName(t, tk, "test", "test_global") idxInfo := tt.Meta().FindIndexByName("idx_b") @@ -1481,18 +1513,18 @@ func TestGlobalIndexUpdateInTruncatePartition(t *testing.T) { tk.MustExec("insert into test_global values (1, 1, 1), (8, 8, 8), (11, 11, 11), (12, 12, 12);") tk.MustExec("analyze table test_global") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionTruncateTablePartition, job.Type) if job.SchemaState == model.StateDeleteOnly { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") err := tk1.ExecToErr("update test_global set a = 2 where a = 11") - assert.NotNil(t, err) + assert.NoError(t, err) } }) tk.MustExec("alter table test_global truncate partition p1") - tk.MustQuery("select * from test_global use index(idx_b) order by a").Check(testkit.Rows("11 11 11", "12 12 12")) + tk.MustQuery("select * from test_global use index(idx_b) order by a").Check(testkit.Rows("2 11 11", "12 12 12")) } func TestGlobalIndexUpdateInTruncatePartition4Hash(t *testing.T) { @@ -1509,13 +1541,13 @@ func TestGlobalIndexUpdateInTruncatePartition4Hash(t *testing.T) { tk.MustExec("analyze table test_global") var err error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionTruncateTablePartition, job.Type) if job.SchemaState == model.StateDeleteOnly { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") err = tk1.ExecToErr("update test_global set a = 1 where a = 12") - assert.NotNil(t, err) + assert.NoError(t, err) } }) @@ -1537,7 +1569,7 @@ func TestGlobalIndexReaderAndIndexLookUpInTruncatePartition(t *testing.T) { tk.MustExec("insert into test_global values (1, 1, 1), (8, 8, 8), (11, 11, 11), (12, 12, 12);") tk.MustExec("analyze table test_global") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionTruncateTablePartition, job.Type) if job.SchemaState == model.StateDeleteOnly { tk1 := testkit.NewTestKit(t, store) @@ -1571,13 +1603,13 @@ func TestGlobalIndexInsertInTruncatePartition(t *testing.T) { tk.MustExec("analyze table test_global") var err error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionTruncateTablePartition, job.Type) if job.SchemaState == model.StateDeleteOnly { tk1 := testkit.NewTestKit(t, store) tk1.MustExec("use test") err = tk1.ExecToErr("insert into test_global values(2, 2, 2)") - assert.NotNil(t, err) + assert.NoError(t, err) } }) @@ -1599,7 +1631,7 @@ func TestGlobalIndexReaderInDropPartition(t *testing.T) { tk.MustExec("insert into test_global values (1, 1, 1), (8, 8, 8), (11, 11, 11), (12, 12, 12);") var indexScanResult *testkit.Result - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionDropTablePartition, job.Type) if job.SchemaState == model.StateDeleteOnly { tk1 := testkit.NewTestKit(t, store) @@ -1629,7 +1661,7 @@ func TestGlobalIndexLookUpInDropPartition(t *testing.T) { tk.MustExec("insert into test_global values (1, 1, 1), (8, 8, 8), (11, 11, 11), (12, 12, 12);") var indexLookupResult *testkit.Result - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { assert.Equal(t, model.ActionDropTablePartition, job.Type) if job.SchemaState == model.StateDeleteOnly { tk1 := testkit.NewTestKit(t, store) @@ -2024,7 +2056,7 @@ func TestExchangePartitionHook(t *testing.T) { tk.MustExec(`insert into pt values (0), (4), (7)`) tk.MustExec("insert into nt values (1)") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.Type == model.ActionExchangeTablePartition && job.SchemaState != model.StateNone { tkCancel.MustExec("use test") tkCancel.MustGetErrCode("insert into nt values (5)", errno.ErrRowDoesNotMatchGivenPartitionSet) @@ -2672,14 +2704,14 @@ func TestTruncatePartitionMultipleTimes(t *testing.T) { partition p0 values less than (10), partition p1 values less than (maxvalue));`) injected := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionTruncateTablePartition && job.SnapshotVer == 0 && !injected { injected = true time.Sleep(30 * time.Millisecond) } }) var errCount atomic.Int32 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.Type == model.ActionTruncateTablePartition && job.Error != nil { errCount.Add(1) } @@ -2870,7 +2902,7 @@ func TestIssue40135Ver2(t *testing.T) { var checkErr error var wg sync.WaitGroup wg.Add(1) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.SchemaState == model.StateDeleteOnly { tk3.MustExec("delete from t40135 where a = 1") } @@ -3154,10 +3186,10 @@ func TestRemovePartitioningAutoIDs(t *testing.T) { tk3.MustExec(`COMMIT`) tk3.MustQuery(`select _tidb_rowid, a, b from t`).Sort().Check(testkit.Rows( "13 11 11", "14 2 2", "15 12 12", "17 16 18", - "19 18 4", "21 20 5", "23 22 6", "25 24 7", "30 29 9")) + "19 18 4", "21 20 5", "23 22 6", "25 24 7", "29 28 9")) tk2.MustQuery(`select _tidb_rowid, a, b from t`).Sort().Check(testkit.Rows( "13 11 11", "14 2 2", "15 12 12", "17 16 18", - "19 18 4", "23 22 6", "27 26 8", "32 31 10")) + "19 18 4", "23 22 6", "27 26 8", "31 30 10")) waitFor(4, "t", "write reorganization") tk3.MustExec(`BEGIN`) @@ -3167,28 +3199,66 @@ func TestRemovePartitioningAutoIDs(t *testing.T) { tk3.MustExec(`insert into t values (null, 23)`) tk2.MustExec(`COMMIT`) - /* - waitFor(4, "t", "delete reorganization") - tk2.MustExec(`BEGIN`) - tk2.MustExec(`insert into t values (null, 24)`) + waitFor(4, "t", "delete reorganization") + tk2.MustExec(`BEGIN`) + tk2.MustExec(`insert into t values (null, 24)`) - tk3.MustExec(`insert into t values (null, 25)`) - tk2.MustExec(`insert into t values (null, 26)`) - */ + tk3.MustExec(`insert into t values (null, 25)`) + tk2.MustExec(`insert into t values (null, 26)`) tk3.MustExec(`COMMIT`) + tk2.MustQuery(`select _tidb_rowid, a, b from t`).Sort().Check(testkit.Rows( + "27 26 8", + "30012 12 12", + "30013 18 4", + "30014 24 7", + "30015 16 18", + "30016 22 6", + "30017 28 9", + "30018 11 11", + "30019 2 2", + "30020 20 5", + "31 30 10", + "35 34 22", + "39 38 24", + "43 42 26")) tk3.MustQuery(`select _tidb_rowid, a, b from t`).Sort().Check(testkit.Rows( - "13 11 11", "14 2 2", "15 12 12", "17 16 18", - "19 18 4", "21 20 5", "23 22 6", "25 24 7", "27 26 8", "30 29 9", - "32 31 10", "35 34 21", "38 37 22", "41 40 23")) - - //waitFor(4, "t", "public") - //tk2.MustExec(`commit`) - // TODO: Investigate and fix, but it is also related to https://github.com/pingcap/tidb/issues/46904 - require.ErrorContains(t, <-alterChan, "[kv:1062]Duplicate entry '31' for key 't.PRIMARY'") + "27 26 8", + "30012 12 12", + "30013 18 4", + "30014 24 7", + "30015 16 18", + "30016 22 6", + "30017 28 9", + "30018 11 11", + "30019 2 2", + "30020 20 5", + "31 30 10", + "33 32 21", + "35 34 22", + "37 36 23", + "41 40 25")) + + waitFor(4, "t", "public") + tk2.MustExec(`commit`) tk3.MustQuery(`select _tidb_rowid, a, b from t`).Sort().Check(testkit.Rows( - "13 11 11", "14 2 2", "15 12 12", "17 16 18", - "19 18 4", "21 20 5", "23 22 6", "25 24 7", "27 26 8", "30 29 9", - "32 31 10", "35 34 21", "38 37 22", "41 40 23")) + "27 26 8", + "30012 12 12", + "30013 18 4", + "30014 24 7", + "30015 16 18", + "30016 22 6", + "30017 28 9", + "30018 11 11", + "30019 2 2", + "30020 20 5", + "31 30 10", + "33 32 21", + "35 34 22", + "37 36 23", + "39 38 24", + "41 40 25", + "43 42 26")) + require.NoError(t, <-alterChan) } func TestAlterLastIntervalPartition(t *testing.T) { @@ -3655,3 +3725,26 @@ func checkGlobalAndPK(t *testing.T, tk *testkit.TestKit, name string, indexes in require.True(t, idxInfo.Primary) } } + +func TestTruncateNumberOfPhases(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 varchar(255)) partition by hash(a) partitions 3`) + ctx := tk.Session() + dom := domain.GetDomain(ctx) + dom.Reload() + schemaVersion := dom.InfoSchema().SchemaMetaVersion() + tk.MustExec(`insert into t values (1,1),(2,2),(3,3)`) + tk.MustExec(`alter table t truncate partition p1`) + dom.Reload() + // Without global index, truncate partition could be a single state change + require.Equal(t, int64(4), dom.InfoSchema().SchemaMetaVersion()-schemaVersion) + tk.MustExec(`drop table t`) + tk.MustExec(`create table t (a int primary key , b varchar(255), unique key (b) global) partition by hash(a) partitions 3`) + schemaVersion = dom.InfoSchema().SchemaMetaVersion() + tk.MustExec(`insert into t values (1,1),(2,2),(3,3)`) + tk.MustExec(`alter table t truncate partition p1`) + dom.Reload() + require.Equal(t, int64(4), dom.InfoSchema().SchemaMetaVersion()-schemaVersion) +} diff --git a/pkg/ddl/tests/partition/error_injection_test.go b/pkg/ddl/tests/partition/error_injection_test.go new file mode 100644 index 0000000000000..dac8aca75e5bd --- /dev/null +++ b/pkg/ddl/tests/partition/error_injection_test.go @@ -0,0 +1,211 @@ +// Copyright 2024 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 partition + +import ( + "testing" + + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/ddl" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/external" + "github.com/stretchr/testify/require" +) + +type InjectedTest struct { + Name string + Recoverable bool + Rollback bool +} + +type FailureTest struct { + FailpointPrefix string + Tests []InjectedTest +} + +var truncateTests = FailureTest{ + FailpointPrefix: "truncatePart", + Tests: []InjectedTest{ + { + Name: "Cancel1", + Recoverable: false, + Rollback: true, + }, + { + Name: "Fail1", + Recoverable: true, + Rollback: true, + }, + { + Name: "Fail2", + Recoverable: true, + Rollback: false, + }, + { + Name: "Fail3", + Recoverable: true, + Rollback: false, + }, + }, +} + +func TestTruncatePartitionListFailuresWithGlobalIndex(t *testing.T) { + create := `create table t (a int unsigned primary key nonclustered global, b int not null, c varchar(255), unique index (c) global) partition by list(b) ( + partition p0 values in (1,2,3), + partition p1 values in (4,5,6), + partition p2 values in (7,8,9))` + alter := `alter table t truncate partition p0,p2` + beforeDML := []string{ + `insert into t values (1,1,1),(2,2,2),(4,4,4),(8,8,8),(9,9,9),(6,6,6)`, + `update t set a = 7, b = 7, c = 7 where a = 1`, + `update t set b = 3, c = 3 where c = 4`, + `delete from t where a = 8`, + `delete from t where b = 2`, + } + beforeResult := testkit.Rows("4 3 3", "6 6 6", "7 7 7", "9 9 9") + afterDML := []string{ + `insert into t values (1,1,1),(5,5,5),(8,8,8)`, + `update t set a = 2, b = 2, c = 2 where a = 1`, + `update t set a = 1, b = 1, c = 1 where c = 6`, + `update t set a = 6, b = 6 where a = 9`, + `delete from t where a = 5`, + `delete from t where b = 3`, + } + afterResult := testkit.Rows("1 1 1", "2 2 2", "6 6 9", "7 7 7", "8 8 8") + afterRecover := testkit.Rows("1 1 1", "2 2 2", "8 8 8") + testDDLWithInjectedErrors(t, truncateTests, create, alter, beforeDML, beforeResult, afterDML, afterResult, afterRecover, "Cancel2") +} + +func TestTruncatePartitionListFailures(t *testing.T) { + create := `create table t (a int unsigned primary key, b int not null, c varchar(255)) partition by list(a) ( + partition p0 values in (1,2,3), + partition p1 values in (4,5,6), + partition p2 values in (7,8,9))` + alter := `alter table t truncate partition p0,p2` + beforeDML := []string{ + `insert into t values (1,1,1),(2,2,2),(4,4,4),(8,8,8),(9,9,9),(6,6,6)`, + `update t set a = 7, b = 7, c = 7 where a = 1`, + `update t set b = 3, c = 3, a = 3 where c = 4`, + `delete from t where a = 8`, + `delete from t where b = 2`, + } + beforeResult := testkit.Rows("3 3 3", "6 6 6", "7 7 7", "9 9 9") + afterDML := []string{ + `insert into t values (1,1,1),(5,5,5),(8,8,8)`, + `update t set a = 2, b = 2, c = 2 where a = 1`, + `update t set a = 1, b = 1, c = 1 where c = 6`, + `update t set a = 6, b = 6, c = 6 where a = 9`, + `delete from t where a = 5`, + `delete from t where b = 3`, + } + afterResult := testkit.Rows("1 1 1", "2 2 2", "6 6 6", "7 7 7", "8 8 8") + afterRecover := testkit.Rows("1 1 1", "2 2 2", "8 8 8") + testDDLWithInjectedErrors(t, truncateTests, create, alter, beforeDML, beforeResult, afterDML, afterResult, afterRecover, "Fail1", "Fail2", "Fail3") +} + +func testDDLWithInjectedErrors(t *testing.T, tests FailureTest, createSQL, alterSQL string, beforeDML []string, beforeResult [][]any, afterDML []string, afterRollback, afterRecover [][]any, skipTests ...string) { +TEST: + for _, test := range tests.Tests { + for _, skip := range skipTests { + if test.Name == skip { + continue TEST + } + } + if test.Recoverable { + runOneTest(t, test, true, tests.FailpointPrefix, createSQL, alterSQL, beforeDML, beforeResult, afterDML, afterRecover) + } + if test.Rollback { + runOneTest(t, test, false, tests.FailpointPrefix, createSQL, alterSQL, beforeDML, beforeResult, afterDML, afterRollback) + } + } +} + +func runOneTest(t *testing.T, test InjectedTest, recoverable bool, failpointName, createSQL, alterSQL string, beforeDML []string, beforeResult [][]any, afterDML []string, afterResult [][]any) { + name := failpointName + test.Name + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set tidb_enable_global_index=true") + defer func() { + tk.MustExec("set tidb_enable_global_index=default") + }() + oldWaitTimeWhenErrorOccurred := ddl.WaitTimeWhenErrorOccurred + defer func() { + ddl.WaitTimeWhenErrorOccurred = oldWaitTimeWhenErrorOccurred + }() + ddl.WaitTimeWhenErrorOccurred = 0 + tk.MustExec(createSQL) + for _, sql := range beforeDML { + tk.MustExec(sql + ` /* ` + name + ` */`) + } + tk.MustQuery(`select * from t /* ` + name + ` */`).Sort().Check(beforeResult) + tOrg := external.GetTableByName(t, tk, "test", "t") + idxIDs := make([]int64, 0, len(tOrg.Meta().Indices)) + for _, idx := range tOrg.Meta().Indices { + idxIDs = append(idxIDs, idx.ID) + } + pids := make([]int64, 0, len(tOrg.Meta().Partition.Definitions)) + for _, def := range tOrg.Meta().Partition.Definitions { + pids = append(pids, def.ID) + } + oldCreate := tk.MustQuery(`show create table t`).Rows() + fullName := "github.com/pingcap/tidb/pkg/ddl/" + name + term := "return(true)" + if recoverable { + // test that it should handle recover/retry on error + term = "1*return(true)" + } + require.NoError(t, failpoint.Enable(fullName, term)) + err := tk.ExecToErr(alterSQL + " /* " + name + " */") + require.NoError(t, failpoint.Disable(fullName)) + tt := external.GetTableByName(t, tk, "test", "t") + pi := tt.Meta().Partition + if recoverable { + require.NoError(t, err) + equal := true + for i, pid := range pids { + equal = equal && pid == pi.Definitions[i].ID + } + require.False(t, equal, name) + return + } + require.Error(t, err, "failpoint "+name) + require.ErrorContains(t, err, "Injected error by "+name) + tk.MustQuery(`show create table t /* ` + name + ` */`).Check(oldCreate) + require.Equal(t, len(tOrg.Meta().Partition.Definitions), len(pi.Definitions), name) + require.Equal(t, 0, len(pi.AddingDefinitions), name) + require.Equal(t, 0, len(pi.DroppingDefinitions), name) + require.Equal(t, 0, len(pi.NewPartitionIDs), name) + require.Equal(t, len(tOrg.Meta().Indices), len(tt.Meta().Indices), name) + for i := range tOrg.Meta().Indices { + require.Equal(t, idxIDs[i], tt.Meta().Indices[i].ID, name) + } + for i, pid := range pids { + require.Equal(t, pid, tt.Meta().Partition.Definitions[i].ID, name) + } + tk.MustExec(`admin check table t /* ` + name + ` */`) + tk.MustExec(`update t set b = 7 where a = 9 /* ` + name + ` */`) + for _, sql := range afterDML { + tk.MustExec(sql + " /* " + name + " */") + } + tk.MustQuery(`select * from t /* ` + name + ` */`).Sort().Check(afterResult) + tk.MustExec(`drop table t /* ` + name + ` */`) + // TODO: Check no rows on new partitions + // TODO: Check TiFlash replicas + // TODO: Check Label rules + // TODO: Check bundles + // TODO: Check autoIDs + // TODO: Check delete_range tables, so no delete request for old partitions in failed alters! +} diff --git a/pkg/ddl/tests/partition/multi_domain_test.go b/pkg/ddl/tests/partition/multi_domain_test.go index 0c08263dd8832..60d2985b19891 100644 --- a/pkg/ddl/tests/partition/multi_domain_test.go +++ b/pkg/ddl/tests/partition/multi_domain_test.go @@ -15,13 +15,23 @@ package partition import ( + "context" + "encoding/hex" + "fmt" + "math" "testing" "time" - "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" + pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/session" + "github.com/pingcap/tidb/pkg/sessiontxn" + "github.com/pingcap/tidb/pkg/store/gcworker" + "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/stretchr/testify/require" "go.uber.org/zap" @@ -43,14 +53,11 @@ func TestMultiSchemaReorganizePartitionIssue56819(t *testing.T) { tkO.MustQuery(`select * from t where b = "4"`).Sort().Check(testkit.Rows("4 4")) } } - postFn := func(tkO *testkit.TestKit) { - // nothing - } - runMultiSchemaTest(t, createSQL, alterSQL, initFn, postFn, loopFn) + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) } func TestMultiSchemaDropRangePartition(t *testing.T) { - createSQL := `create table t (a int primary key, b varchar(255)) partition by range (a) (partition p0 values less than (100), partition p1 values less than (200))` + createSQL := `create table t (a int primary key, b varchar(255), unique key (b) global, unique key (b,a) global, unique key (b,a)) partition by range (a) (partition p0 values less than (100), partition p1 values less than (200))` initFn := func(tkO *testkit.TestKit) { tkO.MustExec(`insert into t values (1,1),(2,2),(101,101),(102,102)`) } @@ -65,39 +72,42 @@ func TestMultiSchemaDropRangePartition(t *testing.T) { // tkO see non-readable/non-writable p0 partition, and should try to read from p1 // in case there is something written to overlapping p1 tkO.MustContainErrMsg(`insert into t values (1,1)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") - tkNO.MustContainErrMsg(`insert into t values (1,1)`, "[kv:1062]Duplicate entry '1' for key 't.PRIMARY'") - tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") - tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") + tkNO.MustContainErrMsg(`insert into t values (1,1)`, "[kv:1062]Duplicate entry '1' for key 't.") + tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") + tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2")) tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("101 101", "102 102")) case "delete only": // tkNO see non-readable/non-writable p0 partition, and should try to read from p1 // in case there is something written to overlapping p1 // tkO is not aware of p0. - tkO.MustExec(`insert into t values (1,2)`) - tkNO.MustContainErrMsg(`insert into t values (1,2)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") - tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") - tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") - tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) + tkO.MustExec(`insert into t values (1,20)`) + tkNO.MustContainErrMsg(`insert into t values (1,20)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") + tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") + tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) // Original row should not be seen in StateWriteOnly tkNO.MustQuery(`select * from t partition (p0)`).Sort().Check(testkit.Rows()) tkNO.MustContainErrMsg(`select * from t partition (pNonExisting)`, "[table:1735]Unknown partition 'pnonexisting' in table 't'") - tkNO.MustQuery(`select * from t partition (p1)`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) - tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) - tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) - tkNO.MustQuery(`select * from t where a = 1`).Sort().Check(testkit.Rows("1 2")) - tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("1 2")) - tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("1 2")) - tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 2")) - - tkNO.MustQuery(`select * from t where b = 2`).Sort().Check(testkit.Rows("1 2")) + tkNO.MustQuery(`select * from t partition (p1)`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) + tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) + tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) + tkNO.MustQuery(`select * from t where a = 1`).Sort().Check(testkit.Rows("1 20")) + tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("1 20")) + tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("1 20")) + tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 20")) + + tkNO.MustQuery(`select * from t where b = 20`).Sort().Check(testkit.Rows("1 20")) // TODO: Test update and delete! // TODO: test key, hash and list partition without default partition :) tkNO.MustQuery(`show create table t`).Check(testkit.Rows("" + "t CREATE TABLE `t` (\n" + " `a` int(11) NOT NULL,\n" + " `b` varchar(255) DEFAULT NULL,\n" + - " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `b` (`b`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_2` (`b`,`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_3` (`b`,`a`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + "PARTITION BY RANGE (`a`)\n" + "(PARTITION `p0` VALUES LESS THAN (100),\n" + @@ -106,7 +116,10 @@ func TestMultiSchemaDropRangePartition(t *testing.T) { "t CREATE TABLE `t` (\n" + " `a` int(11) NOT NULL,\n" + " `b` varchar(255) DEFAULT NULL,\n" + - " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `b` (`b`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_2` (`b`,`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_3` (`b`,`a`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + "PARTITION BY RANGE (`a`)\n" + "(PARTITION `p1` VALUES LESS THAN (200))")) @@ -118,11 +131,11 @@ func TestMultiSchemaDropRangePartition(t *testing.T) { require.Failf(t, "unhandled schema state '%s'", schemaState) } } - runMultiSchemaTest(t, createSQL, alterSQL, initFn, func(kit *testkit.TestKit) {}, loopFn) + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) } func TestMultiSchemaDropListDefaultPartition(t *testing.T) { - createSQL := `create table t (a int primary key, b varchar(255)) partition by list (a) (partition p0 values in (1,2,3), partition p1 values in (100,101,102,DEFAULT))` + createSQL := `create table t (a int primary key, b varchar(255), unique key (b) global, unique key (b,a) global, unique key (b,a)) partition by list (a) (partition p0 values in (1,2,3), partition p1 values in (100,101,102,DEFAULT))` initFn := func(tkO *testkit.TestKit) { tkO.MustExec(`insert into t values (1,1),(2,2),(101,101),(102,102)`) } @@ -137,32 +150,32 @@ func TestMultiSchemaDropListDefaultPartition(t *testing.T) { // tkO see non-readable/non-writable p0 partition, and should try to read from p1 // in case there is something written to overlapping p1 tkO.MustContainErrMsg(`insert into t values (1,1)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") - tkNO.MustContainErrMsg(`insert into t values (1,1)`, "[kv:1062]Duplicate entry '1' for key 't.PRIMARY'") - tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") - tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") + tkNO.MustContainErrMsg(`insert into t values (1,1)`, "[kv:1062]Duplicate entry '1' for key 't.") + tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") + tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2")) tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("101 101", "102 102")) case "delete only": // tkNO see non-readable/non-writable p0 partition, and should try to read from p1 // in case there is something written to overlapping p1 // tkO is not aware of p0. - tkO.MustExec(`insert into t values (1,2)`) - tkNO.MustContainErrMsg(`insert into t values (1,2)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") - tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") - tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.PRIMARY'") - tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) + tkO.MustExec(`insert into t values (1,20)`) + tkNO.MustContainErrMsg(`insert into t values (1,20)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") + tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") + tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.") + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) // Original row should not be seen in StateWriteOnly tkNO.MustQuery(`select * from t partition (p0)`).Sort().Check(testkit.Rows()) tkNO.MustContainErrMsg(`select * from t partition (pNonExisting)`, "[table:1735]Unknown partition 'pnonexisting' in table 't'") - tkNO.MustQuery(`select * from t partition (p1)`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) - tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) - tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 2", "101 101", "102 102")) - tkNO.MustQuery(`select * from t where a = 1`).Sort().Check(testkit.Rows("1 2")) - tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("1 2")) - tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("1 2")) - tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 2")) - - tkNO.MustQuery(`select * from t where b = 2`).Sort().Check(testkit.Rows("1 2")) + tkNO.MustQuery(`select * from t partition (p1)`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) + tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) + tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 20", "101 101", "102 102")) + tkNO.MustQuery(`select * from t where a = 1`).Sort().Check(testkit.Rows("1 20")) + tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("1 20")) + tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("1 20")) + tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 20")) + + tkNO.MustQuery(`select * from t where b = 20`).Sort().Check(testkit.Rows("1 20")) // TODO: Test update and delete! // TODO: test key, hash and list partition without default partition :) // Should we see the partition or not?!? @@ -170,7 +183,10 @@ func TestMultiSchemaDropListDefaultPartition(t *testing.T) { "t CREATE TABLE `t` (\n" + " `a` int(11) NOT NULL,\n" + " `b` varchar(255) DEFAULT NULL,\n" + - " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `b` (`b`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_2` (`b`,`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_3` (`b`,`a`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + "PARTITION BY LIST (`a`)\n" + "(PARTITION `p0` VALUES IN (1,2,3),\n" + @@ -179,7 +195,10 @@ func TestMultiSchemaDropListDefaultPartition(t *testing.T) { "t CREATE TABLE `t` (\n" + " `a` int(11) NOT NULL,\n" + " `b` varchar(255) DEFAULT NULL,\n" + - " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `b` (`b`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_2` (`b`,`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_3` (`b`,`a`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + "PARTITION BY LIST (`a`)\n" + "(PARTITION `p1` VALUES IN (100,101,102,DEFAULT))")) @@ -191,11 +210,11 @@ func TestMultiSchemaDropListDefaultPartition(t *testing.T) { require.Failf(t, "unhandled schema state '%s'", schemaState) } } - runMultiSchemaTest(t, createSQL, alterSQL, initFn, func(kit *testkit.TestKit) {}, loopFn) + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) } func TestMultiSchemaDropListColumnsDefaultPartition(t *testing.T) { - createSQL := `create table t (a int, b varchar(255), c varchar (255), primary key (a,b)) partition by list columns (a,b) (partition p0 values in ((1,"1"),(2,"2"),(3,"3")), partition p1 values in ((100,"100"),(101,"101"),(102,"102"),DEFAULT))` + createSQL := `create table t (a int, b varchar(255), c varchar (255), primary key (a,b), unique key (a) global, unique key (b,a) global, unique key (c) global, unique key (b,a)) partition by list columns (a,b) (partition p0 values in ((1,"1"),(2,"2"),(3,"3")), partition p1 values in ((100,"100"),(101,"101"),(102,"102"),DEFAULT))` initFn := func(tkO *testkit.TestKit) { tkO.MustExec(`insert into t values (1,1,1),(2,2,2),(101,101,101),(102,102,102)`) } @@ -210,34 +229,36 @@ func TestMultiSchemaDropListColumnsDefaultPartition(t *testing.T) { // tkO see non-readable/non-writable p0 partition, and should try to read from p1 // in case there is something written to overlapping p1 tkO.MustContainErrMsg(`insert into t values (1,1,1)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") - tkNO.MustContainErrMsg(`insert into t values (1,1,1)`, "[kv:1062]Duplicate entry '1-1' for key 't.PRIMARY'") - tkO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101-101' for key 't.PRIMARY'") - tkNO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101-101' for key 't.PRIMARY'") + tkNO.MustContainErrMsg(`insert into t values (1,1,1)`, "[kv:1062]Duplicate entry '1' for key 't.a_2'") + tkO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.a_2'") + tkNO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.a_2'") tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1 1", "101 101 101", "102 102 102", "2 2 2")) tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("101 101 101", "102 102 102")) case "delete only": // tkNO see non-readable/non-writable p0 partition, and should try to read from p1 // in case there is something written to overlapping p1 // tkO is not aware of p0. - tkO.MustExec(`insert into t values (1,1,2)`) - tkNO.MustContainErrMsg(`insert into t values (1,1,2)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") - tkO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101-101' for key 't.PRIMARY'") - tkNO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101-101' for key 't.PRIMARY'") - tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1 2", "101 101 101", "102 102 102")) + tkO.MustExec(`insert into t values (3,3,3)`) + tkO.MustContainErrMsg(`insert into t values (1,1,2)`, "[kv:1062]Duplicate entry '1' for key 't.a_2") + tkNO.MustContainErrMsg(`insert into t values (3,3,3)`, "[table:1526]Table has no partition for value matching a partition being dropped, 'p0'") + tkO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.a_2'") + tkNO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.a_2'") + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("101 101 101", "102 102 102", "3 3 3")) + tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("101 101 101", "102 102 102", "3 3 3")) // Original row should not be seen in StateWriteOnly tkNO.MustQuery(`select * from t partition (p0)`).Sort().Check(testkit.Rows()) tkNO.MustContainErrMsg(`select * from t partition (pNonExisting)`, "[table:1735]Unknown partition 'pnonexisting' in table 't'") - tkNO.MustQuery(`select * from t partition (p1)`).Sort().Check(testkit.Rows("1 1 2", "101 101 101", "102 102 102")) - tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 1 2", "101 101 101", "102 102 102")) - tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 1 2", "101 101 101", "102 102 102")) - tkNO.MustQuery(`select * from t where a = 1`).Sort().Check(testkit.Rows("1 1 2")) - tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("1 1 2")) - tkNO.MustQuery(`select * from t where a in (1,2,3) or b in ("1","2")`).Sort().Check(testkit.Rows("1 1 2")) - tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("1 1 2")) - tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 1 2")) - - tkNO.MustQuery(`select * from t where c = "2"`).Sort().Check(testkit.Rows("1 1 2")) - tkNO.MustQuery(`select * from t where b = "1"`).Sort().Check(testkit.Rows("1 1 2")) + tkNO.MustQuery(`select * from t partition (p1)`).Sort().Check(testkit.Rows("101 101 101", "102 102 102", "3 3 3")) + tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("101 101 101", "102 102 102", "3 3 3")) + tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("101 101 101", "102 102 102", "3 3 3")) + tkNO.MustQuery(`select * from t where a = 3`).Sort().Check(testkit.Rows("3 3 3")) + tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("3 3 3")) + tkNO.MustQuery(`select * from t where a in (1,2,3) or b in ("1","2")`).Sort().Check(testkit.Rows("3 3 3")) + tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("3 3 3")) + tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("3 3 3")) + + tkNO.MustQuery(`select * from t where c = "2"`).Sort().Check(testkit.Rows("2 2 2")) + tkNO.MustQuery(`select * from t where b = "3"`).Sort().Check(testkit.Rows("3 3 3")) // TODO: Test update and delete! // TODO: test key, hash and list partition without default partition :) // Should we see the partition or not?!? @@ -246,7 +267,11 @@ func TestMultiSchemaDropListColumnsDefaultPartition(t *testing.T) { " `a` int(11) NOT NULL,\n" + " `b` varchar(255) NOT NULL,\n" + " `c` varchar(255) DEFAULT NULL,\n" + - " PRIMARY KEY (`a`,`b`) /*T![clustered_index] CLUSTERED */\n" + + " PRIMARY KEY (`a`,`b`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `a_2` (`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b` (`b`,`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `c` (`c`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_2` (`b`,`a`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + "PARTITION BY LIST COLUMNS(`a`,`b`)\n" + "(PARTITION `p0` VALUES IN ((1,'1'),(2,'2'),(3,'3')),\n" + @@ -256,7 +281,11 @@ func TestMultiSchemaDropListColumnsDefaultPartition(t *testing.T) { " `a` int(11) NOT NULL,\n" + " `b` varchar(255) NOT NULL,\n" + " `c` varchar(255) DEFAULT NULL,\n" + - " PRIMARY KEY (`a`,`b`) /*T![clustered_index] CLUSTERED */\n" + + " PRIMARY KEY (`a`,`b`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `a_2` (`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b` (`b`,`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `c` (`c`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `b_2` (`b`,`a`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + "PARTITION BY LIST COLUMNS(`a`,`b`)\n" + "(PARTITION `p1` VALUES IN ((100,'100'),(101,'101'),(102,'102'),DEFAULT))")) @@ -268,19 +297,525 @@ func TestMultiSchemaDropListColumnsDefaultPartition(t *testing.T) { require.Failf(t, "unhandled schema state '%s'", schemaState) } } - runMultiSchemaTest(t, createSQL, alterSQL, initFn, func(kit *testkit.TestKit) {}, loopFn) + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) +} + +func TestMultiSchemaReorganizePartition(t *testing.T) { + createSQL := `create table t (a int primary key, b varchar(255), unique index idx_b_global (b) global) partition by range (a) (partition p1 values less than (200), partition pMax values less than (maxvalue))` + initFn := func(tkO *testkit.TestKit) { + tkO.MustExec(`insert into t values (1,1),(2,2),(101,101),(102,102),(998,998),(999,999)`) + } + alterSQL := `alter table t reorganize partition p1 into (partition p0 values less than (100), partition p1 values less than (200))` + + testID := 4 + loopFn := func(tkO, tkNO *testkit.TestKit) { + res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) + schemaState := res.Rows()[0][0].(string) + dbgStr := ` /* ` + schemaState + ` */` + + // Check for every state + tkO.MustContainErrMsg(`insert into t values (1,2)`+dbgStr, "[kv:1062]Duplicate entry") + tkNO.MustContainErrMsg(`insert into t values (1,2)`+dbgStr, "[kv:1062]Duplicate entry") + tkO.MustContainErrMsg(`insert into t values (101,101)`+dbgStr, "[kv:1062]Duplicate entry") + tkNO.MustContainErrMsg(`insert into t values (101,101)`+dbgStr, "[kv:1062]Duplicate entry") + tkO.MustContainErrMsg(`insert into t values (999,999)`+dbgStr, "[kv:1062]Duplicate entry '999' for key 't.") + tkNO.MustContainErrMsg(`insert into t values (999,999)`+dbgStr, "[kv:1062]Duplicate entry '999' for key 't.") + tkNO.MustQuery(`select * from t where a = 1` + dbgStr).Sort().Check(testkit.Rows("1 1")) + tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3` + dbgStr).Sort().Check(testkit.Rows("1 1", "2 2")) + tkNO.MustQuery(`select * from t where a in (1,2,3)` + dbgStr).Sort().Check(testkit.Rows("1 1", "2 2")) + tkNO.MustQuery(`select * from t where b = "2"` + dbgStr).Sort().Check(testkit.Rows("2 2")) + + highID := testID + 980 + tkO.MustExec(fmt.Sprintf(`insert into t values (%d,%d)`+dbgStr, highID, highID)) + res = tkNO.MustQuery(fmt.Sprintf(`select * from t where b = "%d"`+dbgStr, highID)) + if len(res.Rows()) != 1 { + tkNO.MustQuery(fmt.Sprintf(`explain select * from t where b = "%d"`+dbgStr, highID)).Check(testkit.Rows(fmt.Sprintf("%d %d", highID, highID))) + } + res.Check(testkit.Rows(fmt.Sprintf("%d %d", highID, highID))) + + highID++ + tkNO.MustExec(fmt.Sprintf(`insert into t values (%d,%d)`+dbgStr, highID, highID)) + tkO.MustQuery(fmt.Sprintf(`select * from t where b = "%d"`+dbgStr, highID)).Check(testkit.Rows(fmt.Sprintf("%d %d", highID, highID))) + + testID++ + tkO.MustExec(fmt.Sprintf(`insert into t values (%d,%d)`+dbgStr, testID, testID)) + tkNO.MustQuery(fmt.Sprintf(`select * from t where b = "%d"`+dbgStr, testID)).Check(testkit.Rows(fmt.Sprintf("%d %d", testID, testID))) + + logutil.BgLogger().Info("inserting rows", zap.Int("testID", testID), zap.String("state", schemaState)) + + testID++ + tkNO.MustExec(fmt.Sprintf(`insert into t values (%d,%d)`+dbgStr, testID, testID)) + tkO.MustQuery(fmt.Sprintf(`select * from t where b = "%d"`+dbgStr, testID)).Check(testkit.Rows(fmt.Sprintf("%d %d", testID, testID))) + + // Test for Index, specially between WriteOnly and DeleteOnly, but better to test all states. + // if tkNO (DeleteOnly) updates a row, the new index should be deleted, but not inserted. + // It will be inserted by backfill in WriteReorganize. + // If not deleted, then there would be an orphan entry in the index! + tkO.MustExec(fmt.Sprintf(`update t set b = %d where a = %d`+dbgStr, testID+100, testID)) + tkNO.MustQuery(fmt.Sprintf(`select a, b from t where a = %d`+dbgStr, testID)).Check(testkit.Rows(fmt.Sprintf("%d %d", testID, testID+100))) + tkNO.MustQuery(fmt.Sprintf(`select a, b from t where b = "%d"`+dbgStr, testID+100)).Check(testkit.Rows(fmt.Sprintf("%d %d", testID, testID+100))) + tkNO.MustExec(fmt.Sprintf(`update t set b = %d where a = %d`+dbgStr, testID+99, testID-1)) + tkO.MustQuery(fmt.Sprintf(`select a, b from t where a = %d`+dbgStr, testID-1)).Check(testkit.Rows(fmt.Sprintf("%d %d", testID-1, testID+99))) + tkO.MustQuery(fmt.Sprintf(`select a, b from t where b = "%d"`+dbgStr, testID+99)).Check(testkit.Rows(fmt.Sprintf("%d %d", testID-1, testID+99))) + tkNO.MustExec(fmt.Sprintf(`update t set b = %d where a = %d`+dbgStr, testID, testID)) + tkO.MustExec(fmt.Sprintf(`update t set b = %d where a = %d`+dbgStr, testID-1, testID-1)) + + switch schemaState { + case model.StateDeleteOnly.String(): + // tkNO sees original table/partitions as before the DDL stated + // tkO uses the original table/partitions, but should also delete from the newly created + // Global Index, to replace the existing one. + + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2", "5 5", "6 6", "984 984", "985 985", "998 998", "999 999")) + tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2", "5 5", "6 6", "984 984", "985 985", "998 998", "999 999")) + tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2", "5 5", "6 6", "984 984", "985 985", "998 998", "999 999")) + tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 1", "2 2", "5 5", "6 6")) + case model.StateWriteOnly.String(): + // Both tkO and tkNO uses the original table/partitions, + // but tkO should also update the newly created + // Global Index, and tkNO should only delete from it. + case model.StateWriteReorganization.String(): + // Both tkO and tkNO uses the original table/partitions, + // and should also update the newly created Global Index. + case model.StateDeleteReorganization.String(): + // Both tkO now sees the new partitions, and should use the new Global Index, + // plus double write to the old one. + // tkNO uses the original table/partitions, + // and should also update the newly created Global Index. + // TODO: Test update and delete! + // TODO: test key, hash and list partition without default partition :) + tkNO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `idx_b_global` (`b`) /*T![global_index] GLOBAL */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE (`a`)\n" + + "(PARTITION `p1` VALUES LESS THAN (200),\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))")) + tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `idx_b_global` (`b`) /*T![global_index] GLOBAL */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE (`a`)\n" + + "(PARTITION `p0` VALUES LESS THAN (100),\n" + + " PARTITION `p1` VALUES LESS THAN (200),\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))")) + case model.StatePublic.String(): + // not tested, both tkO and tkNO sees same partitions + case model.StateNone.String(): + // not tested, both tkO and tkNO sees same partitions + default: + require.Failf(t, "unhandled schema state", "State '%s'", schemaState) + } + } + postFn := func(tkO *testkit.TestKit, store kv.Storage) { + tkO.MustQuery(`select * from t where b = 5`).Sort().Check(testkit.Rows("5 5")) + tkO.MustQuery(`select * from t where b = "5"`).Sort().Check(testkit.Rows("5 5")) + tkO.MustExec(`admin check table t`) + tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1", "10 10", "101 101", "102 102", "11 11", "12 12", "13 13", "14 14", "15 15", "16 16", "2 2", "5 5", "6 6", "7 7", "8 8", "9 9", "984 984", "985 985", "986 986", "987 987", "988 988", "989 989", "990 990", "991 991", "992 992", "993 993", "994 994", "995 995", "998 998", "999 999")) + tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `idx_b_global` (`b`) /*T![global_index] GLOBAL */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE (`a`)\n" + + "(PARTITION `p0` VALUES LESS THAN (100),\n" + + " PARTITION `p1` VALUES LESS THAN (200),\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))")) + } + runMultiSchemaTest(t, createSQL, alterSQL, initFn, postFn, loopFn) +} + +// Also tests for conversions of unique indexes +// 1 unique non-global - to become global +// 2 unique global - to become non-global +// 3 unique non-global - to stay non-global +// 4 unique global - to stay global +func TestMultiSchemaPartitionByGlobalIndex(t *testing.T) { + createSQL := `create table t (a int primary key nonclustered global, b varchar(255), c bigint, unique index idx_b_global (b) global, unique key idx_ba (b,a), unique key idx_ab (a,b) global, unique key idx_c_global (c) global, unique key idx_cab (c,a,b)) partition by key (a,b) partitions 3` + initFn := func(tkO *testkit.TestKit) { + tkO.MustExec(`insert into t values (1,1,1),(2,2,2),(101,101,101),(102,102,102)`) + } + alterSQL := `alter table t partition by key (b,a) partitions 5 update indexes (idx_ba global, idx_ab local)` + doneStateWriteReorganize := false + loopFn := func(tkO, tkNO *testkit.TestKit) { + res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) + schemaState := res.Rows()[0][0].(string) + switch schemaState { + case model.StateDeleteOnly.String(): + // tkNO sees original table/partitions as before the DDL stated + // tkO uses the original table/partitions, but should also delete from the newly created + // Global Index, to replace the existing one. + tkO.MustContainErrMsg(`insert into t values (1,2,3)`, "[kv:1062]Duplicate entry '2' for key 't.idx_b") + tkNO.MustContainErrMsg(`insert into t values (1,2,3)`, "[kv:1062]Duplicate entry '2' for key 't.idx_b") + tkO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b") + tkNO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b") + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1 1", "101 101 101", "102 102 102", "2 2 2")) + tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 1 1", "101 101 101", "102 102 102", "2 2 2")) + tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 1 1", "101 101 101", "102 102 102", "2 2 2")) + tkNO.MustQuery(`select * from t where a = 1`).Sort().Check(testkit.Rows("1 1 1")) + tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("1 1 1", "2 2 2")) + tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("1 1 1", "2 2 2")) + tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 1 1", "2 2 2")) + + tkNO.MustQuery(`select * from t where b = 2`).Sort().Check(testkit.Rows("2 2 2")) + tkO.MustExec(`insert into t values (3,3,3)`) + tkNO.MustExec(`insert into t values (4,4,4)`) + tkNO.MustQuery(`select * from t where a = 3`).Sort().Check(testkit.Rows("3 3 3")) + tkO.MustQuery(`select * from t where a = 4`).Sort().Check(testkit.Rows("4 4 4")) + case model.StateWriteOnly.String(): + // Both tkO and tkNO uses the original table/partitions, + // but tkO should also update the newly created + // Global Index, and tkNO should only delete from it. + tkO.MustContainErrMsg(`insert into t values (1,1,1)`, "[kv:1062]Duplicate entry '1' for key 't.idx_b") + tkNO.MustContainErrMsg(`insert into t values (1,1,1)`, "[kv:1062]Duplicate entry '1' for key 't.idx_b") + tkO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b") + tkNO.MustContainErrMsg(`insert into t values (101,101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b") + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1 1", "101 101 101", "102 102 102", "2 2 2", "3 3 3", "4 4 4")) + tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1 1", "101 101 101", "102 102 102", "2 2 2", "3 3 3", "4 4 4")) + logutil.BgLogger().Info("insert into t values (5,5,5)") + tkO.MustExec(`insert into t values (5,5,5)`) + tkNO.MustExec(`insert into t values (6,6,6)`) + tkNO.MustQuery(`select * from t where a = 5`).Sort().Check(testkit.Rows("5 5 5")) + tkO.MustQuery(`select * from t where a = 6`).Sort().Check(testkit.Rows("6 6 6")) + case model.StateWriteReorganization.String(): + // It will go through StateWriteReorg more than once. + if doneStateWriteReorganize { + break + } + doneStateWriteReorganize = true + // Both tkO and tkNO uses the original table/partitions, + // and should also update the newly created Global Index. + tkO.MustExec(`insert into t values (7,7,7)`) + tkNO.MustExec(`insert into t values (8,8,8)`) + tkNO.MustQuery(`select * from t where b = 7`).Check(testkit.Rows("7 7 7")) + tkO.MustQuery(`select * from t where b = 8`).Check(testkit.Rows("8 8 8")) + case model.StateDeleteReorganization.String(): + // Both tkO now sees the new partitions, and should use the new Global Index, + // plus double write to the old one. + // tkNO uses the original table/partitions, + // and should also update the newly created Global Index. + tkO.MustExec(`insert into t values (9,9,9)`) + tkNO.MustExec(`insert into t values (10,10,10)`) + tkNO.MustQuery(`select * from t where b = 9`).Check(testkit.Rows("9 9 9")) + tkO.MustQuery(`select * from t where b = 10`).Check(testkit.Rows("10 10 10")) + // TODO: Test update and delete! + // TODO: test key, hash and list partition without default partition :) + tkNO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " `c` bigint(20) DEFAULT NULL,\n" + + " UNIQUE KEY `idx_b_global` (`b`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `idx_ba` (`b`,`a`),\n" + + " UNIQUE KEY `idx_ab` (`a`,`b`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `idx_c_global` (`c`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `idx_cab` (`c`,`a`,`b`),\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] NONCLUSTERED */ /*T![global_index] GLOBAL */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY KEY (`a`,`b`) PARTITIONS 3")) + tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " `c` bigint(20) DEFAULT NULL,\n" + + " UNIQUE KEY `idx_cab` (`c`,`a`,`b`),\n" + + " UNIQUE KEY `idx_b_global` (`b`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `idx_ba` (`b`,`a`) /*T![global_index] GLOBAL */,\n" + + " UNIQUE KEY `idx_ab` (`a`,`b`),\n" + + " UNIQUE KEY `idx_c_global` (`c`) /*T![global_index] GLOBAL */,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] NONCLUSTERED */ /*T![global_index] GLOBAL */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY KEY (`b`,`a`) PARTITIONS 5")) + case model.StatePublic.String(): + tkO.MustExec(`insert into t values (11,11,11)`) + tkNO.MustExec(`insert into t values (12,12,12)`) + case model.StateNone.String(): + tkO.MustExec(`insert into t values (13,13,13)`) + tkNO.MustExec(`insert into t values (14,14,14)`) + tkO.MustQuery(`select * from t where b = 11`).Check(testkit.Rows("11 11 11")) + default: + require.Failf(t, "unhandled schema state '%s'", schemaState) + } + } + postFn := func(tkO *testkit.TestKit, _ kv.Storage) { + tkO.MustQuery(`select * from t where b = 5`).Check(testkit.Rows("5 5 5")) + tkO.MustExec(`admin check table t`) + tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows(""+ + "1 1 1", + "10 10 10", + "101 101 101", + "102 102 102", + "11 11 11", + "12 12 12", + "13 13 13", + "14 14 14", + "2 2 2", + "3 3 3", + "4 4 4", + "5 5 5", + "6 6 6", + "7 7 7", + "8 8 8", + "9 9 9")) + } + runMultiSchemaTest(t, createSQL, alterSQL, initFn, postFn, loopFn) +} + +// TestMultiSchemaModifyColumn to show behavior when changing a column +func TestMultiSchemaModifyColumn(t *testing.T) { + createSQL := `create table t (a int primary key, b varchar(255), unique key uk_b (b))` + initFn := func(tkO *testkit.TestKit) { + tkO.MustExec(`insert into t values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9)`) + } + alterSQL := `alter table t modify column b int unsigned not null` + loopFn := func(tkO, tkNO *testkit.TestKit) { + res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) + schemaState := res.Rows()[0][0].(string) + switch schemaState { + case model.StateDeleteOnly.String(): + // we are only interested in StateWriteReorganization + case model.StateWriteOnly.String(): + // we are only interested in StateDeleteReorganization->StatePublic + case model.StateWriteReorganization.String(): + case model.StatePublic.String(): + // tkNO sees varchar column and tkO sees int column + tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` int(10) unsigned NOT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `uk_b` (`b`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + tkNO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `uk_b` (`b`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + + tkO.MustExec(`insert into t values (10, " 09.60 ")`) + // No warning!? Same in MySQL... + tkNO.MustQuery(`show warnings`).Check(testkit.Rows()) + tkNO.MustContainErrMsg(`insert into t values (11, "09.60")`, "[kv:1062]Duplicate entry '10' for key 't._Idx$_uk_b_0'") + tkO.MustQuery(`select * from t where a = 10`).Check(testkit.Rows("10 10")) + // ?!? + tkNO.MustQuery(`select * from t where a = 10`).Check(testkit.Rows("10 ")) + // If the original b was defined as 'NOT NULL', then it would give an error: + // [table:1364]Field 'b' doesn't have a default value + + tkNO.MustExec(`insert into t values (11, " 011.50 ")`) + tkNO.MustQuery(`show warnings`).Check(testkit.Rows()) + // Anomaly, the different sessions sees different data. + // So it should be acceptable for partitioning DDLs as well. + // It may be possible to check that writes from StateWriteOnly convert 1:1 + // to the new type, and block writes otherwise. But then it would break the first tkO insert above... + tkO.MustQuery(`select * from t where a = 11`).Check(testkit.Rows("11 12")) + tkNO.MustQuery(`select * from t where a = 11`).Check(testkit.Rows("11 011.50 ")) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Greater(t, tblO.Columns[1].ID, tblNO.Columns[1].ID) + // This also means that old copies of the columns will be left in the row, until the row is updated or deleted. + // But I guess that is at least documented. + default: + require.Failf(t, "unhandled schema state '%s'", schemaState) + } + } + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) } -func runMultiSchemaTest(t *testing.T, createSQL, alterSQL string, initFn, postFn func(*testkit.TestKit), loopFn func(tO, tNO *testkit.TestKit)) { +// TestMultiSchemaDropUniqueIndex to show behavior when +// dropping a unique index +func TestMultiSchemaDropUniqueIndex(t *testing.T) { + createSQL := `create table t (a int primary key, b varchar(255), unique key uk_b (b))` + initFn := func(tkO *testkit.TestKit) { + tkO.MustExec(`insert into t values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9)`) + } + alterSQL := `alter table t drop index uk_b` + loopFn := func(tkO, tkNO *testkit.TestKit) { + res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) + schemaState := res.Rows()[0][0].(string) + switch schemaState { + case "write only": + tkNO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " UNIQUE KEY `uk_b` (`b`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + tkO.MustContainErrMsg(`insert into t values (10,1)`, "[kv:1062]Duplicate entry '1' for key 't.uk_b'") + tkNO.MustContainErrMsg(`insert into t values (10,1)`, "[kv:1062]Duplicate entry '1' for key 't.uk_b'") + case "delete only": + // Delete only from the uk_b unique index, cannot have errors + tkO.MustExec(`insert into t values (10,1)`) + tkO.MustExec(`insert into t values (11,11)`) + tkO.MustExec(`delete from t where a = 2`) + // Write only for uk_b, we cannot find anything through the index or read from the index, but still gives duplicate keys on insert/updates + // So we already have two duplicates of b = 1, but only one in the unique index uk_a, so here we cannot insert any. + tkNO.MustContainErrMsg(`insert into t values (12,1)`, "[kv:1062]Duplicate entry '1' for key 't.uk_b'") + tkNO.MustContainErrMsg(`update t set b = 1 where a = 9`, "[kv:1062]Duplicate entry '1' for key 't.uk_b'") + // Deleted from the index! + tkNO.MustExec(`insert into t values (13,2)`) + tkNO.MustContainErrMsg(`insert into t values (14,3)`, "[kv:1062]Duplicate entry '3' for key 't.uk_b'") + // b = 11 never written to the index! + tkNO.MustExec(`insert into t values (15,11)`) + tkNO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + case "delete reorganization": + tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + case "none": + tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(11) NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin")) + default: + require.Failf(t, "unhandled schema state '%s'", schemaState) + } + } + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) +} + +// TODO: Also add test for REMOVE PARTITIONING! +///* +//// TODO: complete this test, so that we test all four changes: +//1 unique non-global - to become global +//2 unique global - to become non-global +//3 unique non-global - to stay non-global +//4 unique global - to stay global +//func TestMultiSchemaPartitionByGlobalIndex(t *testing.T) { +// createSQL := `create table t (a int primary key, b varchar(255), c bigint, unique index idx_b_global (b) global, unique key idx_b (b), unique key idx_c_global (c), unique key idx_c (c)) partition by key (a,b) partitions 3` +// initFn := func(tkO *testkit.TestKit) { +// tkO.MustExec(`insert into t values (1,1),(2,2),(101,101),(102,102)`) +// } +// alterSQL := `alter table t partition by key (b,a) partitions 5` +// loopFn := func(tkO, tkNO *testkit.TestKit) { +// res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) +// schemaState := res.Rows()[0][0].(string) +// switch schemaState { +// case model.StateDeleteOnly.String(): +// // tkNO sees original table/partitions as before the DDL stated +// // tkO uses the original table/partitions, but should also delete from the newly created +// // Global Index, to replace the existing one. +// tkO.MustContainErrMsg(`insert into t values (1,2)`, "[kv:1062]Duplicate entry '2' for key 't.idx_b'") +// tkNO.MustContainErrMsg(`insert into t values (1,2)`, "[kv:1062]Duplicate entry '2' for key 't.idx_b'") +// tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b'") +// tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b'") +// tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2")) +// tkNO.MustQuery(`select * from t where a < 1000`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2")) +// tkNO.MustQuery(`select * from t where a > 0`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2")) +// tkNO.MustQuery(`select * from t where a = 1`).Sort().Check(testkit.Rows("1 1")) +// tkNO.MustQuery(`select * from t where a = 1 or a = 2 or a = 3`).Sort().Check(testkit.Rows("1 1", "2 2")) +// tkNO.MustQuery(`select * from t where a in (1,2,3)`).Sort().Check(testkit.Rows("1 1", "2 2")) +// tkNO.MustQuery(`select * from t where a < 100`).Sort().Check(testkit.Rows("1 1", "2 2")) +// +// tkNO.MustQuery(`select * from t where b = 2`).Sort().Check(testkit.Rows("2 2")) +// tkO.MustExec(`insert into t values (3,3)`) +// tkNO.MustExec(`insert into t values (4,4)`) +// tkNO.MustQuery(`select * from t where a = 3`).Sort().Check(testkit.Rows("3 3")) +// tkO.MustQuery(`select * from t where a = 4`).Sort().Check(testkit.Rows("4 4")) +// case model.StateWriteOnly.String(): +// // Both tkO and tkNO uses the original table/partitions, +// // but tkO should also update the newly created +// // Global Index, and tkNO should only delete from it. +// /* +// tkO.MustContainErrMsg(`insert into t values (1,1)`, "[kv:1062]Duplicate entry '1' for key 't.idx_b'") +// tkNO.MustContainErrMsg(`insert into t values (1,1)`, "[kv:1062]Duplicate entry '1' for key 't.idx_b'") +// tkO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b'") +// tkNO.MustContainErrMsg(`insert into t values (101,101)`, "[kv:1062]Duplicate entry '101' for key 't.idx_b'") +// tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2", "3 3", "4 4")) +// tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows("1 1", "101 101", "102 102", "2 2", "3 3", "4 4")) +// +// */ +// logutil.BgLogger().Info("insert into t values (5,5)") +// tkO.MustExec(`insert into t values (5,5)`) +// tkNO.MustExec(`insert into t values (6,6)`) +// tkNO.MustQuery(`select * from t where a = 5`).Sort().Check(testkit.Rows("5 5")) +// tkO.MustQuery(`select * from t where a = 6`).Sort().Check(testkit.Rows("6 6")) +// case model.StateWriteReorganization.String(): +// // Both tkO and tkNO uses the original table/partitions, +// // and should also update the newly created Global Index. +// tkO.MustExec(`insert into t values (7,7)`) +// tkNO.MustExec(`insert into t values (8,8)`) +// tkNO.MustQuery(`select * from t where b = 7`).Check(testkit.Rows("7 7")) +// tkO.MustQuery(`select * from t where b = 8`).Check(testkit.Rows("8 8")) +// case model.StateDeleteReorganization.String(): +// // Both tkO now sees the new partitions, and should use the new Global Index, +// // plus double write to the old one. +// // tkNO uses the original table/partitions, +// // and should also update the newly created Global Index. +// tkO.MustExec(`insert into t values (9,9)`) +// tkNO.MustExec(`insert into t values (10,10)`) +// tkNO.MustQuery(`select * from t where b = 9`).Check(testkit.Rows("9 9")) +// tkO.MustQuery(`select * from t where b = 10`).Check(testkit.Rows("10 10")) +// // TODO: Test update and delete! +// // TODO: test key, hash and list partition without default partition :) +// tkNO.MustQuery(`show create table t`).Check(testkit.Rows("" + +// "t CREATE TABLE `t` (\n" + +// " `a` int(11) NOT NULL,\n" + +// " `b` varchar(255) DEFAULT NULL,\n" + +// " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + +// " UNIQUE KEY idx_b (`b`) /*T![global_index] GLOBAL */\n" + +// ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + +// "PARTITION BY RANGE (`a`)\n" + +// "(PARTITION `p1` VALUES LESS THAN (200))")) +// tkO.MustQuery(`show create table t`).Check(testkit.Rows("" + +// "t CREATE TABLE `t` (\n" + +// " `a` int(11) NOT NULL,\n" + +// " `b` varchar(255) DEFAULT NULL,\n" + +// " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + +// " UNIQUE KEY idx_b (`b`) /*T![global_index] GLOBAL */\n" + +// ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + +// "PARTITION BY RANGE (`a`)\n" + +// "(PARTITION `p0` VALUES LESS THAN (100),\n" + +// " PARTITION `p1` VALUES LESS THAN (200))")) +// tkO.MustExec(`insert into t values (3,3)`) +// case model.StateNone.String(): +// // just to not fail :) +// default: +// require.Failf(t, "unhandled schema state '%s'", schemaState) +// } +// } +// postFn := func(tkO *testkit.TestKit) { +// tkO.MustQuery(`select * from t where b = 5`).Sort().Check(testkit.Rows("5 5")) +// tkO.MustExec(`admin check table t`) +// } +// runMultiSchemaTest(t, createSQL, alterSQL, initFn, postFn, loopFn) +//} + +func runMultiSchemaTest(t *testing.T, createSQL, alterSQL string, initFn func(*testkit.TestKit), postFn func(*testkit.TestKit, kv.Storage), loopFn func(tO, tNO *testkit.TestKit)) { + // When debugging, increase the lease, so the schema does not auto reload :) distCtx := testkit.NewDistExecutionContextWithLease(t, 2, 15*time.Second) store := distCtx.Store domOwner := distCtx.GetDomain(0) domNonOwner := distCtx.GetDomain(1) - defer func() { - domOwner.Close() - domNonOwner.Close() - store.Close() - }() if !domOwner.DDL().OwnerManager().IsOwner() { domOwner, domNonOwner = domNonOwner, domOwner @@ -303,7 +838,30 @@ func runMultiSchemaTest(t *testing.T, createSQL, alterSQL string, initFn, postFn tkDDLOwner.MustExec(createSQL) domOwner.Reload() domNonOwner.Reload() + + originalPartitions := make([]int64, 0, 2) + originalIndexIDs := make([]int64, 0, 1) + originalGlobalIndexIDs := make([]int64, 0, 1) + ctx := tkO.Session() + is := domain.GetDomain(ctx).InfoSchema() + tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + tableID := tbl.Meta().ID + if tbl.Meta().Partition != nil { + for _, def := range tbl.Meta().Partition.Definitions { + originalPartitions = append(originalPartitions, def.ID) + } + } + for _, idx := range tbl.Meta().Indices { + if idx.Global { + originalGlobalIndexIDs = append(originalGlobalIndexIDs, idx.ID) + continue + } + originalIndexIDs = append(originalIndexIDs, idx.ID) + } + initFn(tkO) + verStart := domNonOwner.InfoSchema().SchemaMetaVersion() hookChan := make(chan struct{}) hookFunc := func(job *model.Job) { @@ -312,13 +870,12 @@ func runMultiSchemaTest(t *testing.T, createSQL, alterSQL string, initFn, postFn <-hookChan logutil.BgLogger().Info("XXXXXXXXXXX Hook released", zap.String("job.State", job.State.String()), zap.String("job.SchemaStage", job.SchemaState.String())) } - failpoint.EnableCall("github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", hookFunc) - defer failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/onJobRunAfter") - alterChan := make(chan struct{}) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", hookFunc) + alterChan := make(chan error) go func() { - tkDDLOwner.MustExec(alterSQL) - logutil.BgLogger().Info("XXXXXXXXXXX drop partition done!") - alterChan <- struct{}{} + err := tkDDLOwner.ExecToErr(alterSQL) + logutil.BgLogger().Info("XXXXXXXXXXX DDL done!", zap.String("alterSQL", alterSQL)) + alterChan <- err }() // Skip the first state, since we want to compare before vs after in the loop <-hookChan @@ -331,7 +888,8 @@ func runMultiSchemaTest(t *testing.T, createSQL, alterSQL string, initFn, postFn for { select { case <-hookChan: - case <-alterChan: + case err := <-alterChan: + require.NoError(t, err) releaseHook = false logutil.BgLogger().Info("XXXXXXXXXXX release hook") break @@ -339,6 +897,7 @@ func runMultiSchemaTest(t *testing.T, createSQL, alterSQL string, initFn, postFn domOwner.Reload() if domNonOwner.InfoSchema().SchemaMetaVersion() == domOwner.InfoSchema().SchemaMetaVersion() { // looping over reorganize data/indexes + logutil.BgLogger().Info("XXXXXXXXXXX Schema Version has not changed") hookChan <- struct{}{} continue } @@ -360,5 +919,527 @@ func runMultiSchemaTest(t *testing.T, createSQL, alterSQL string, initFn, postFn hookChan <- struct{}{} } logutil.BgLogger().Info("XXXXXXXXXXX states loop done") - postFn(tkO) + // Verify that there are no KV entries for old partitions or old indexes!!! + gcWorker, err := gcworker.NewMockGCWorker(store) + require.NoError(t, err) + err = gcWorker.DeleteRanges(context.Background(), uint64(math.MaxInt64)) + require.NoError(t, err) + delRange := tkO.MustQuery(`select * from mysql.gc_delete_range_done`).Rows() + s := "" + for _, row := range delRange { + if s != "" { + s += "\n" + } + for i, col := range row { + if i != 0 { + s += " " + } + s += col.(string) + } + } + logutil.BgLogger().Info("gc_delete_range_done", zap.String("rows", s)) + tkO.MustQuery(`select * from mysql.gc_delete_range`).Check(testkit.Rows()) + ctx = tkO.Session() + is = domain.GetDomain(ctx).InfoSchema() + tbl, err = is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + newTableID := tbl.Meta().ID + if tableID != newTableID { + require.False(t, HaveEntriesForTableIndex(t, tkO, tableID, 0), "Old table id %d has still entries!", tableID) + } +GlobalLoop: + for _, globIdx := range originalGlobalIndexIDs { + for _, idx := range tbl.Meta().Indices { + if idx.ID == globIdx { + continue GlobalLoop + } + } + // Global index removed + require.False(t, HaveEntriesForTableIndex(t, tkO, tableID, globIdx), "Global index id %d for table id %d has still entries!", globIdx, tableID) + } +LocalLoop: + for _, locIdx := range originalIndexIDs { + for _, idx := range tbl.Meta().Indices { + if idx.ID == locIdx { + continue LocalLoop + } + } + // local index removed + if tbl.Meta().Partition != nil { + for _, part := range tbl.Meta().Partition.Definitions { + require.False(t, HaveEntriesForTableIndex(t, tkO, part.ID, locIdx), "Local index id %d for partition id %d has still entries!", locIdx, tableID) + } + } + } +PartitionLoop: + for _, partID := range originalPartitions { + for _, def := range tbl.Meta().Partition.Definitions { + if def.ID == partID { + continue PartitionLoop + } + } + // old partitions removed + require.False(t, HaveEntriesForTableIndex(t, tkO, partID, 0), "Reorganized partition id %d for table id %d has still entries!", partID, tableID) + } + if postFn != nil { + postFn(tkO, store) + } + // NOT deferring this, since it might hang on test failures... + domOwner.Close() + domNonOwner.Close() + store.Close() +} + +// HaveEntriesForTableIndex returns number of entries in the KV range of table+index or just the table if index is 0. +// Also checks with gc_delete_range +func HaveEntriesForTableIndex(t *testing.T, tk *testkit.TestKit, tableID, indexID int64) bool { + var start kv.Key + var end kv.Key + if indexID == 0 { + start = tablecodec.EncodeTablePrefix(tableID) + end = tablecodec.EncodeTablePrefix(tableID + 1) + } else { + start = tablecodec.EncodeTableIndexPrefix(tableID, indexID) + end = tablecodec.EncodeTableIndexPrefix(tableID, indexID+1) + } + ctx := tk.Session() + require.NoError(t, sessiontxn.NewTxn(context.Background(), ctx)) + txn, err := ctx.Txn(true) + require.NoError(t, err) + it, err := txn.Iter(start, end) + require.NoError(t, err) + defer it.Close() + count := 0 + for it.Valid() { + count++ + logutil.BgLogger().Info("HaveEntriesForTableIndex", zap.String("key", hex.EncodeToString(it.Key())), zap.String("value", hex.EncodeToString(it.Value()))) + err = it.Next() + require.NoError(t, err) + } + if count > 0 { + logutil.BgLogger().Info("HaveEntriesForTableIndex", zap.Int64("tableID", tableID), zap.Int64("indexID", indexID), zap.Int("count", count)) + return true + } + return false +} + +func TestMultiSchemaReorganizeNoPK(t *testing.T) { + createSQL := `create table t (c1 INT, c2 CHAR(255), c3 CHAR(255), c4 CHAR(255), c5 CHAR(255)) partition by range (c1) (partition p1 values less than (200), partition pMax values less than (maxvalue))` + i := 1 + initFn := func(tkO *testkit.TestKit) { + tkO.MustExec(fmt.Sprintf(`insert into t values (%d,repeat('%d', 25),repeat('%d', 25),repeat('%d', 25),repeat('%d', 25))`, i, 9786756453-i, 6821527184-i, 4185725186-i, 7483634197-i)) + i++ + tkO.MustExec(fmt.Sprintf(`insert into t values (%d,repeat('%d', 25),repeat('%d', 25),repeat('%d', 25),repeat('%d', 25))`, i, 9786756453-i, 6821527184-i, 4185725186-i, 7483634197-i)) + i++ + } + alterSQL := `alter table t reorganize partition p1 into (partition p0 values less than (100), partition p1 values less than (200))` + loopFn := func(tkO, tkNO *testkit.TestKit) { + res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) + schemaState := res.Rows()[0][0].(string) + tkO.MustExec(fmt.Sprintf(`insert into t values (%d,'%s',concat('O-', repeat('%d', 25)),repeat('%d', 25),repeat('%d', 25))`, i, schemaState, 6821527184-i, 4185725186-i, 7483634197-i)) + i++ + tkNO.MustExec(fmt.Sprintf(`insert into t values (%d,'%s',concat('NO-',repeat('%d', 25)),repeat('%d', 25),repeat('%d', 25))`, i, schemaState, 6821527184-i, 4185725186-i, 7483634197-i)) + i++ + } + postFn := func(tkO *testkit.TestKit, _ kv.Storage) { + tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows(""+ + "1 9786756452978675645297867564529786756452978675645297867564529786756452978675645297867564529786756452978675645297867564529786756452978675645297867564529786756452978675645297867564529786756452978675645297867564529786756452978675645297867564529786756452 6821527183682152718368215271836821527183682152718368215271836821527183682152718368215271836821527183682152718368215271836821527183682152718368215271836821527183682152718368215271836821527183682152718368215271836821527183682152718368215271836821527183 4185725185418572518541857251854185725185418572518541857251854185725185418572518541857251854185725185418572518541857251854185725185418572518541857251854185725185418572518541857251854185725185418572518541857251854185725185418572518541857251854185725185 7483634196748363419674836341967483634196748363419674836341967483634196748363419674836341967483634196748363419674836341967483634196748363419674836341967483634196748363419674836341967483634196748363419674836341967483634196748363419674836341967483634196", + "10 delete reorganization NO-6821527174682152717468215271746821527174682152717468215271746821527174682152717468215271746821527174682152717468215271746821527174682152717468215271746821527174682152717468215271746821527174682152717468215271746821527174682152717468215271746821527174 4185725176418572517641857251764185725176418572517641857251764185725176418572517641857251764185725176418572517641857251764185725176418572517641857251764185725176418572517641857251764185725176418572517641857251764185725176418572517641857251764185725176 7483634187748363418774836341877483634187748363418774836341877483634187748363418774836341877483634187748363418774836341877483634187748363418774836341877483634187748363418774836341877483634187748363418774836341877483634187748363418774836341877483634187", + "11 public O-6821527173682152717368215271736821527173682152717368215271736821527173682152717368215271736821527173682152717368215271736821527173682152717368215271736821527173682152717368215271736821527173682152717368215271736821527173682152717368215271736821527173 4185725175418572517541857251754185725175418572517541857251754185725175418572517541857251754185725175418572517541857251754185725175418572517541857251754185725175418572517541857251754185725175418572517541857251754185725175418572517541857251754185725175 7483634186748363418674836341867483634186748363418674836341867483634186748363418674836341867483634186748363418674836341867483634186748363418674836341867483634186748363418674836341867483634186748363418674836341867483634186748363418674836341867483634186", + "12 public NO-6821527172682152717268215271726821527172682152717268215271726821527172682152717268215271726821527172682152717268215271726821527172682152717268215271726821527172682152717268215271726821527172682152717268215271726821527172682152717268215271726821527172 4185725174418572517441857251744185725174418572517441857251744185725174418572517441857251744185725174418572517441857251744185725174418572517441857251744185725174418572517441857251744185725174418572517441857251744185725174418572517441857251744185725174 7483634185748363418574836341857483634185748363418574836341857483634185748363418574836341857483634185748363418574836341857483634185748363418574836341857483634185748363418574836341857483634185748363418574836341857483634185748363418574836341857483634185", + "13 none O-6821527171682152717168215271716821527171682152717168215271716821527171682152717168215271716821527171682152717168215271716821527171682152717168215271716821527171682152717168215271716821527171682152717168215271716821527171682152717168215271716821527171 4185725173418572517341857251734185725173418572517341857251734185725173418572517341857251734185725173418572517341857251734185725173418572517341857251734185725173418572517341857251734185725173418572517341857251734185725173418572517341857251734185725173 7483634184748363418474836341847483634184748363418474836341847483634184748363418474836341847483634184748363418474836341847483634184748363418474836341847483634184748363418474836341847483634184748363418474836341847483634184748363418474836341847483634184", + "14 none NO-6821527170682152717068215271706821527170682152717068215271706821527170682152717068215271706821527170682152717068215271706821527170682152717068215271706821527170682152717068215271706821527170682152717068215271706821527170682152717068215271706821527170 4185725172418572517241857251724185725172418572517241857251724185725172418572517241857251724185725172418572517241857251724185725172418572517241857251724185725172418572517241857251724185725172418572517241857251724185725172418572517241857251724185725172 7483634183748363418374836341837483634183748363418374836341837483634183748363418374836341837483634183748363418374836341837483634183748363418374836341837483634183748363418374836341837483634183748363418374836341837483634183748363418374836341837483634183", + "2 9786756451978675645197867564519786756451978675645197867564519786756451978675645197867564519786756451978675645197867564519786756451978675645197867564519786756451978675645197867564519786756451978675645197867564519786756451978675645197867564519786756451 6821527182682152718268215271826821527182682152718268215271826821527182682152718268215271826821527182682152718268215271826821527182682152718268215271826821527182682152718268215271826821527182682152718268215271826821527182682152718268215271826821527182 4185725184418572518441857251844185725184418572518441857251844185725184418572518441857251844185725184418572518441857251844185725184418572518441857251844185725184418572518441857251844185725184418572518441857251844185725184418572518441857251844185725184 7483634195748363419574836341957483634195748363419574836341957483634195748363419574836341957483634195748363419574836341957483634195748363419574836341957483634195748363419574836341957483634195748363419574836341957483634195748363419574836341957483634195", + "3 delete only O-6821527181682152718168215271816821527181682152718168215271816821527181682152718168215271816821527181682152718168215271816821527181682152718168215271816821527181682152718168215271816821527181682152718168215271816821527181682152718168215271816821527181 4185725183418572518341857251834185725183418572518341857251834185725183418572518341857251834185725183418572518341857251834185725183418572518341857251834185725183418572518341857251834185725183418572518341857251834185725183418572518341857251834185725183 7483634194748363419474836341947483634194748363419474836341947483634194748363419474836341947483634194748363419474836341947483634194748363419474836341947483634194748363419474836341947483634194748363419474836341947483634194748363419474836341947483634194", + "4 delete only NO-6821527180682152718068215271806821527180682152718068215271806821527180682152718068215271806821527180682152718068215271806821527180682152718068215271806821527180682152718068215271806821527180682152718068215271806821527180682152718068215271806821527180 4185725182418572518241857251824185725182418572518241857251824185725182418572518241857251824185725182418572518241857251824185725182418572518241857251824185725182418572518241857251824185725182418572518241857251824185725182418572518241857251824185725182 7483634193748363419374836341937483634193748363419374836341937483634193748363419374836341937483634193748363419374836341937483634193748363419374836341937483634193748363419374836341937483634193748363419374836341937483634193748363419374836341937483634193", + "5 write only O-6821527179682152717968215271796821527179682152717968215271796821527179682152717968215271796821527179682152717968215271796821527179682152717968215271796821527179682152717968215271796821527179682152717968215271796821527179682152717968215271796821527179 4185725181418572518141857251814185725181418572518141857251814185725181418572518141857251814185725181418572518141857251814185725181418572518141857251814185725181418572518141857251814185725181418572518141857251814185725181418572518141857251814185725181 7483634192748363419274836341927483634192748363419274836341927483634192748363419274836341927483634192748363419274836341927483634192748363419274836341927483634192748363419274836341927483634192748363419274836341927483634192748363419274836341927483634192", + "6 write only NO-6821527178682152717868215271786821527178682152717868215271786821527178682152717868215271786821527178682152717868215271786821527178682152717868215271786821527178682152717868215271786821527178682152717868215271786821527178682152717868215271786821527178 4185725180418572518041857251804185725180418572518041857251804185725180418572518041857251804185725180418572518041857251804185725180418572518041857251804185725180418572518041857251804185725180418572518041857251804185725180418572518041857251804185725180 7483634191748363419174836341917483634191748363419174836341917483634191748363419174836341917483634191748363419174836341917483634191748363419174836341917483634191748363419174836341917483634191748363419174836341917483634191748363419174836341917483634191", + "7 write reorganization O-6821527177682152717768215271776821527177682152717768215271776821527177682152717768215271776821527177682152717768215271776821527177682152717768215271776821527177682152717768215271776821527177682152717768215271776821527177682152717768215271776821527177 4185725179418572517941857251794185725179418572517941857251794185725179418572517941857251794185725179418572517941857251794185725179418572517941857251794185725179418572517941857251794185725179418572517941857251794185725179418572517941857251794185725179 7483634190748363419074836341907483634190748363419074836341907483634190748363419074836341907483634190748363419074836341907483634190748363419074836341907483634190748363419074836341907483634190748363419074836341907483634190748363419074836341907483634190", + "8 write reorganization NO-6821527176682152717668215271766821527176682152717668215271766821527176682152717668215271766821527176682152717668215271766821527176682152717668215271766821527176682152717668215271766821527176682152717668215271766821527176682152717668215271766821527176 4185725178418572517841857251784185725178418572517841857251784185725178418572517841857251784185725178418572517841857251784185725178418572517841857251784185725178418572517841857251784185725178418572517841857251784185725178418572517841857251784185725178 7483634189748363418974836341897483634189748363418974836341897483634189748363418974836341897483634189748363418974836341897483634189748363418974836341897483634189748363418974836341897483634189748363418974836341897483634189748363418974836341897483634189", + "9 delete reorganization O-6821527175682152717568215271756821527175682152717568215271756821527175682152717568215271756821527175682152717568215271756821527175682152717568215271756821527175682152717568215271756821527175682152717568215271756821527175682152717568215271756821527175 4185725177418572517741857251774185725177418572517741857251774185725177418572517741857251774185725177418572517741857251774185725177418572517741857251774185725177418572517741857251774185725177418572517741857251774185725177418572517741857251774185725177 7483634188748363418874836341887483634188748363418874836341887483634188748363418874836341887483634188748363418874836341887483634188748363418874836341887483634188748363418874836341887483634188748363418874836341887483634188748363418874836341887483634188")) + } + runMultiSchemaTest(t, createSQL, alterSQL, initFn, postFn, loopFn) +} + +// TestMultiSchemaTruncatePartitionWithGlobalIndex to show behavior when +// truncating a partition with a global index +func TestMultiSchemaTruncatePartitionWithGlobalIndex(t *testing.T) { + // TODO: Also test non-int PK, multi-column PK + createSQL := `create table t (a int primary key, b varchar(255), c varchar(255) default 'Filler', unique key uk_b (b) global) partition by hash (a) partitions 2` + initFn := func(tkO *testkit.TestKit) { + tkO.MustExec(`insert into t (a,b) values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7)`) + } + alterSQL := `alter table t truncate partition p1` + loopFn := func(tkO, tkNO *testkit.TestKit) { + res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) + schemaState := res.Rows()[0][0].(string) + logutil.BgLogger().Info("XXXXXXXXXXX loopFn", zap.String("schemaState", schemaState)) + switch schemaState { + case "write only": + // tkNO is seeing state None, so unaware of DDL + // tkO is seeing state write only, so using the old partition, + // but are aware of new ids, so should filter them from global index reads. + // Duplicate key errors (from delete only state) are allowed on insert/update, + // even if it cannot read them from the global index, due to filtering. + rows := tkNO.MustQuery(`select * from t`).Sort().Rows() + tkO.MustQuery(`select * from t`).Sort().Check(rows) + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateNone, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateWriteOnly, tblO.Partition.DDLState) + require.Equal(t, tblNO.Partition.Definitions[1].ID, tblO.Partition.Definitions[1].ID) + tkNO.MustContainErrMsg(`insert into t values (1,1,"Duplicate key")`, "[kv:1062]Duplicate entry '1' for key 't.") + tkO.MustContainErrMsg(`insert into t values (1,1,"Duplicate key")`, "[kv:1062]Duplicate entry '1' for key 't.") + case "delete only": + // tkNO is seeing state write only, so still can access the dropped partition + // tkO is seeing state delete only, so cannot see the dropped partition, + // but must still write to the shared global indexes. + // So they will get errors on the same entries in the global index. + + tkNO.MustContainErrMsg(`insert into t values (1,1,"Duplicate key")`, "[kv:1062]Duplicate entry '1' for key 't.") + tkO.MustContainErrMsg(`insert into t values (1,1,"Duplicate key")`, "[kv:1062]Duplicate entry '1' for key 't.") + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateWriteOnly, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteOnly, tblO.Partition.DDLState) + require.NotEqual(t, tblNO.Partition.Definitions[1].ID, tblO.Partition.Definitions[1].ID) + + tkNO.MustExec(`insert into t values (21,21,"OK")`) + tkNO.MustExec(`insert into t values (23,23,"OK")`) + tkO.MustContainErrMsg(`insert into t values (21,21,"Duplicate key")`, "[kv:1062]Duplicate entry '21' for key 't.") + tkO.MustContainErrMsg(`insert into t values (6,23,"Duplicate key")`, "[kv:1062]Duplicate entry '") + // Primary is not global, so here we can insert into the new partition, without + // conflicting to the old one + tkO.MustExec(`insert into t values (21,25,"OK")`) + tkO.MustExec(`insert into t values (99,99,"OK")`) + tkNO.MustContainErrMsg(`insert into t values (8,25,"Duplicate key")`, "[kv:1062]Duplicate entry '25' for key 't.uk_b'") + // type differences, cannot use index + tkNO.MustQuery(`select count(*) from t where b = 25`).Check(testkit.Rows("0")) + tkNO.MustQuery(`select b from t where b = 25`).Check(testkit.Rows()) + // PointGet should not find new partitions for StateWriteOnly + tkNO.MustQuery(`select count(*) from t where b = "25"`).Check(testkit.Rows("0")) + tkNO.MustQuery(`select b from t where b = "25"`).Check(testkit.Rows()) + tkNO.MustExec(`update t set a = 2, c = "'a' Updated" where b = "25"`) + require.Equal(t, uint64(0), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustExec(`update t set a = 2, c = "'a' Updated" where b = "25"`) + require.Equal(t, uint64(0), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + // Primary is not global, so here we can insert into the old partition, without + // conflicting to the new one + tkO.MustQuery(`select count(*) from t where a = 99`).Check(testkit.Rows("1")) + tkNO.MustExec(`insert into t values (99,27,"OK")`) + + tkO.MustQuery(`select count(*) from t where b = "23"`).Check(testkit.Rows("0")) + tkO.MustExec(`update t set a = 2, c = "'a' Updated" where b = "23"`) + require.Equal(t, uint64(0), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustQuery(`select count(*) from t where a = 23`).Check(testkit.Rows("1")) + tkNO.MustQuery(`select * from t where a = 23`).Check(testkit.Rows("23 23 OK")) + tkNO.MustExec(`update t set b = 10 where a = 23`) + require.Equal(t, uint64(1), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustExec(`update t set b = 23 where a = 23`) + require.Equal(t, uint64(1), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustContainErrMsg(`update t set b = 25 where a = 23`, "[kv:1062]Duplicate entry '25' for key 't.uk_b'") + tkO.MustExec(`update t set b = 23 where a = 25`) + require.Equal(t, uint64(0), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkO.MustContainErrMsg(`update t set b = 21 where a = 21`, "[kv:1062]Duplicate entry '21' for key 't.uk_b'") + tkO.MustContainErrMsg(`update t set b = 23 where b = "25"`, "[kv:1062]Duplicate entry '23' for key 't.uk_b'") + + tkO.MustExec(`update t set b = 29 where a = 21`) + require.Equal(t, uint64(1), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustExec(`update t set b = 25 where b = "27"`) + require.Equal(t, uint64(1), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkO.MustExec(`update t set b = 27, a = 27 where b = "29"`) + require.Equal(t, uint64(1), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows(""+ + "1 1 Filler", + "2 2 Filler", + "21 21 OK", + "23 23 OK", + "3 3 Filler", + "4 4 Filler", + "5 5 Filler", + "6 6 Filler", + "7 7 Filler", + "99 25 OK")) + tkNO.MustQuery(`select b from t order by b`).Check(testkit.Rows(""+ + "1", + "2", + "21", + "23", + "25", + "3", + "4", + "5", + "6", + "7")) + + tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows(""+ + "2 2 Filler", + "27 27 OK", + "4 4 Filler", + "6 6 Filler", + "99 99 OK")) + tkO.MustQuery(`select b from t order by b`).Check(testkit.Rows(""+ + "2", + "27", + "4", + "6", + "99")) + // TODO: Add tests for delete + case "delete reorganization": + // tkNO is seeing state delete only, so cannot see the dropped partition, + // but must still must give duplicate errors when writes to the global indexes collide + // with the dropped partitions. + // tkO is seeing state delete reorganization, so cannot see the dropped partition, + // and can ignore the dropped partitions entries in the Global Indexes, i.e. overwrite them! + rows := tkO.MustQuery(`select * from t`).Sort().Rows() + tkNO.MustQuery(`select * from t`).Sort().Check(rows) + rows = tkO.MustQuery(`select b from t order by b`).Rows() + tkNO.MustQuery(`select b from t order by b`).Check(rows) + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteOnly, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteReorganization, tblO.Partition.DDLState) + require.Equal(t, tblNO.Partition.Definitions[1].ID, tblO.Partition.Definitions[1].ID) + tkO.MustQuery(`select b from t where b = "1"`).Check(testkit.Rows()) + tkO.MustExec(`insert into t values (1,1,"OK")`) + tkO.MustQuery(`select b from t where b = "1"`).Check(testkit.Rows("1")) + tkO.MustQuery(`select b from t where b = 1`).Check(testkit.Rows("1")) + tkO.MustContainErrMsg(`insert into t values (3,1,"Duplicate")`, "[kv:1062]Duplicate entry '1' for key 't.uk_b'") + // b = 23 was inserted into the dropped partition, OK to delete + tkO.MustExec(`insert into t values (10,23,"OK")`) + tkNO.MustExec(`insert into t values (41,41,"OK")`) + tkNO.MustContainErrMsg(`insert into t values (12,25,"Duplicate key")`, "[kv:1062]Duplicate entry '25' for key 't.uk_b'") + tkNO.MustContainErrMsg(`insert into t values (25,25,"Duplicate key")`, "[kv:1062]Duplicate entry '25' for key 't.") + tkNO.MustContainErrMsg(`insert into t values (41,27,"Duplicate key")`, "[kv:1062]Duplicate entry '") + tkO.MustExec(`insert into t values (43,43,"OK")`) + tkO.MustContainErrMsg(`insert into t values (44,43,"Duplicate key")`, "[kv:1062]Duplicate entry '") + tkNO.MustContainErrMsg(`update t set b = 5 where a = 41`, "[kv:1062]Duplicate entry '5' for key 't.uk_b'") + tkNO.MustExec(`update t set a = 5 where b = "41"`) + require.Equal(t, uint64(1), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkO.MustExec(`update t set a = 7 where b = "43"`) + require.Equal(t, uint64(1), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + // This should be silently deleted / overwritten + tkO.MustExec(`update t set b = 5 where b = "43"`) + require.Equal(t, uint64(1), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkO.MustExec(`update t set b = 3 where b = 41`) + require.Equal(t, uint64(1), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + rows = tkNO.MustQuery(`select * from t`).Sort().Rows() + tkO.MustQuery(`select * from t`).Sort().Check(rows) + case "none": + tkNO.MustExec(`insert into t values (81,81,"OK")`) + tkO.MustContainErrMsg(`insert into t values (81,81,"Duplicate key")`, "[kv:1062]Duplicate entry '81' for key 't.") + tkNO.MustExec(`insert into t values (85,85,"OK")`) + tkO.MustExec(`insert into t values (87,87,"OK")`) + rows := tkNO.MustQuery(`select * from t`).Sort().Rows() + tkO.MustQuery(`select * from t`).Sort().Check(rows) + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteReorganization, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateNone, tblO.Partition.DDLState) + default: + require.Failf(t, "unhandled schema state '%s'", schemaState) + } + } + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) +} + +func TestMultiSchemaTruncatePartitionWithPKGlobal(t *testing.T) { + createSQL := `create table t (a int primary key nonclustered global, b int, c varchar(255) default 'Filler', unique key uk_b (b)) partition by hash (b) partitions 2` + initFn := func(tkO *testkit.TestKit) { + tkO.MustExec(`insert into t (a,b) values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7)`) + } + alterSQL := `alter table t truncate partition p1` + loopFn := func(tkO, tkNO *testkit.TestKit) { + res := tkO.MustQuery(`select schema_state from information_schema.DDL_JOBS where table_name = 't' order by job_id desc limit 1`) + schemaState := res.Rows()[0][0].(string) + switch schemaState { + case "write only": + // tkNO is seeing state None, so unaware of DDL + // tkO is seeing state write only, so using the old partition, + // but are aware of new ids, so should filter them from global index reads. + // Duplicate key errors (from delete only state) are allowed on insert/update, + // even if it cannot read them from the global index, due to filtering. + rows := tkNO.MustQuery(`select * from t`).Sort().Rows() + tkO.MustQuery(`select * from t`).Sort().Check(rows) + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateNone, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateWriteOnly, tblO.Partition.DDLState) + require.Equal(t, tblNO.Partition.Definitions[1].ID, tblO.Partition.Definitions[1].ID) + case "delete only": + // tkNO is seeing state write only, so still can access the dropped partition + // tkO is seeing state delete only, so cannot see the dropped partition, + // but must still write to the shared global indexes. + // So they will get errors on the same entries in the global index. + + tkNO.MustContainErrMsg(`insert into t values (1,1,"Duplicate key")`, "[kv:1062]Duplicate entry '1' for key 't.") + tkNO.MustContainErrMsg(`insert into t values (11,1,"Duplicate key")`, "[kv:1062]Duplicate entry '1' for key 't.uk_b'") + + tkO.MustQuery(`select a from t where a = 1`).Check(testkit.Rows()) + // OK! PK violation due to old partition is still accessible!!! + // Similar to when dropping a unique index, see TestMultiSchemaDropUniqueIndex + tkO.MustContainErrMsg(`insert into t values (1,1,"Duplicate key")`, "[kv:1062]Duplicate entry '1' for key 't.PRIMARY'") + // Note that PK (global) is not violated! and Unique key (b) is not global, + // and the partition is dropped, so OK to write. + tkO.MustExec(`insert into t values (11,1,"OK, non global unique index")`) + // The anomaly here is that tkNO and tkO sees different versions of the table, + // and therefore different data! + tkO.MustQuery(`select * from t where b = 1`).Check(testkit.Rows("11 1 OK, non global unique index")) + tkNO.MustQuery(`select * from t where b = 1`).Check(testkit.Rows("1 1 Filler")) + + tkO.MustExec(`insert into t values (13,13,"OK")`) + tkNO.MustExec(`insert into t values (15,13,"OK, non global unique index")`) + tkO.MustQuery(`select * from t where b = 13`).Check(testkit.Rows("13 13 OK")) + tkNO.MustQuery(`select * from t where b = 13`).Check(testkit.Rows("15 13 OK, non global unique index")) + + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateWriteOnly, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteOnly, tblO.Partition.DDLState) + require.NotEqual(t, tblNO.Partition.Definitions[1].ID, tblO.Partition.Definitions[1].ID) + + tkNO.MustExec(`insert into t values (21,21,"OK")`) + tkNO.MustExec(`insert into t values (23,23,"OK")`) + tkO.MustContainErrMsg(`insert into t values (21,21,"Duplicate key")`, "[kv:1062]Duplicate entry '21' for key 't.PRIMARY'") + tkO.MustContainErrMsg(`insert into t values (6,23,"Duplicate key")`, "[kv:1062]Duplicate entry '6' for key 't.PRIMARY'") + // Primary is global, so here we cannot insert into the new partition, without + // conflicting to the old one + tkO.MustContainErrMsg(`insert into t values (21,25,"Duplicate key")`, "[kv:1062]Duplicate entry '21' for key 't.PRIMARY'") + tkO.MustExec(`insert into t values (25,25,"OK")`) + // Should be able to insert to the new partition, with a duplicate of non-global key + tkNO.MustExec(`insert into t values (95,25,"OK, non global unique key")`) + tkNO.MustContainErrMsg(`insert into t values (25,95,"Duplicate key")`, "[kv:1062]Duplicate entry '25' for key 't.PRIMARY'") + // PointGet should not find new partitions for StateWriteOnly + tkNO.MustQuery(`select count(*) from t where a = 25`).Check(testkit.Rows("0")) + tkNO.MustQuery(`select count(*) from t where b = 25`).Check(testkit.Rows("1")) + tkNO.MustQuery(`select * from t where b = 25`).Check(testkit.Rows("95 25 OK, non global unique key")) + tkNO.MustExec(`update t set a = 17, c = "Updated" where b = 25`) + require.Equal(t, uint64(1), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + + tkO.MustQuery(`select count(*) from t where b = 23`).Check(testkit.Rows("0")) + tkO.MustExec(`update t set a = 19, c = "Updated" where b = 23`) + require.Equal(t, uint64(0), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustQuery(`select count(*) from t where a = 23`).Check(testkit.Rows("1")) + tkNO.MustQuery(`select * from t where a = 23`).Check(testkit.Rows("23 23 OK")) + tkNO.MustExec(`update t set b = 10 where a = 23`) + require.Equal(t, uint64(1), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustExec(`update t set b = 23 where a = 23`) + require.Equal(t, uint64(1), tkNO.Session().GetSessionVars().StmtCtx.AffectedRows()) + tkNO.MustContainErrMsg(`update t set b = 25 where a = 23`, "[kv:1062]Duplicate entry '25' for key 't.uk_b'") + tkO.MustExec(`update t set b = 23 where a = 25`) + require.Equal(t, uint64(1), tkO.Session().GetSessionVars().StmtCtx.AffectedRows()) + // non-global unique index + // Same state's partition: + tkO.MustContainErrMsg(`update t set b = 23 where a = 13`, "[kv:1062]Duplicate entry '23' for key 't.uk_b'") + tkNO.MustContainErrMsg(`update t set b = 23 where a = 21`, "[kv:1062]Duplicate entry '23' for key 't.uk_b'") + // Others state's partition: + tkO.MustExec(`update t set b = 21, c = "Updated" where a = 13`) + tkO.MustExec(`insert into t values (19,19, "OK")`) + tkNO.MustExec(`update t set b = 19, c = "Updated" where a = 21`) + + // PK + // Same state's partition: + tkO.MustContainErrMsg(`update t set a = 13 where b = 19`, "[kv:1062]Duplicate entry '13' for key 't.PRIMARY'") + tkNO.MustContainErrMsg(`update t set a = 7 where b = 3`, "[kv:1062]Duplicate entry '7' for key 't.PRIMARY'") + // Others state's partition: + tkO.MustContainErrMsg(`update t set a = 7 where b = 19`, "[kv:1062]Duplicate entry '7' for key 't.PRIMARY'") + tkNO.MustContainErrMsg(`update t set a = 13 where b = 13`, "[kv:1062]Duplicate entry '13' for key 't.PRIMARY'") + + tkNO.MustQuery(`select * from t`).Sort().Check(testkit.Rows(""+ + "0 0 Filler", + "1 1 Filler", + "15 13 OK, non global unique index", + "17 25 Updated", + "2 2 Filler", + "21 19 Updated", + "23 23 OK", + "3 3 Filler", + "4 4 Filler", + "5 5 Filler", + "6 6 Filler", + "7 7 Filler")) + + tkO.MustQuery(`select * from t`).Sort().Check(testkit.Rows(""+ + "0 0 Filler", + "11 1 OK, non global unique index", + "13 21 Updated", + "19 19 OK", + "2 2 Filler", + "25 23 OK", + "4 4 Filler", + "6 6 Filler")) + tkO.MustExec(`admin check table t`) + tkNO.MustExec(`admin check table t`) + // TODO: Add tests for delete as well + + case "delete reorganization": + // tkNO is seeing state delete only, so cannot see the dropped partition, + // but must still must give duplicate errors when writes to the global indexes collide + // with the dropped partitions. + // tkO is seeing state delete reorganization, so cannot see the dropped partition, + // and can ignore the dropped partitions entries in the Global Indexes, i.e. overwrite them! + rows := tkO.MustQuery(`select * from t`).Sort().Rows() + tkNO.MustQuery(`select * from t`).Sort().Check(rows) + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteOnly, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteReorganization, tblO.Partition.DDLState) + require.Equal(t, tblNO.Partition.Definitions[1].ID, tblO.Partition.Definitions[1].ID) + tkO.MustQuery(`select a, b from t where b = 1`).Check(testkit.Rows("11 1")) + tkO.MustQuery(`select b from t where a = 1`).Check(testkit.Rows()) + tkO.MustContainErrMsg(`insert into t values (3,1,"Duplicate")`, "[kv:1062]Duplicate entry '1' for key 't.uk_b'") + // Old partition should be OK to overwrite for tkO, but not tkNO! + tkO.MustExec(`insert into t values (3,3,"OK")`) + tkNO.MustContainErrMsg(`insert into t values (5,5, "Duplicate pk")`, "[kv:1062]Duplicate entry '5' for key 't.PRIMARY'") + tkO.MustExec(`update t set a = 5 where b = 3`) + tkNO.MustContainErrMsg(`update t set a = 7 where b = 3`, "[kv:1062]Duplicate entry '7' for key 't.PRIMARY'") + res := tkNO.MustQuery(`select * from t`).Sort() + res.Check(testkit.Rows(""+ + "0 0 Filler", + "11 1 OK, non global unique index", + "13 21 Updated", + "19 19 OK", + "2 2 Filler", + "25 23 OK", + "4 4 Filler", + "5 3 OK", + "6 6 Filler")) + tkO.MustQuery(`select * from t`).Sort().Check(res.Rows()) + + tkO.MustExec(`admin check table t`) + tkNO.MustExec(`admin check table t`) + case "none": + tkNO.MustExec(`insert into t values (81,81,"OK")`) + tkO.MustContainErrMsg(`insert into t values (81,81,"Duplicate key")`, "[kv:1062]Duplicate entry '81' for key 't.") + tkNO.MustExec(`insert into t values (85,85,"OK")`) + tkO.MustExec(`insert into t values (87,87,"OK")`) + rows := tkNO.MustQuery(`select * from t`).Sort().Rows() + tkO.MustQuery(`select * from t`).Sort().Check(rows) + tblNO, err := tkNO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateDeleteReorganization, tblNO.Partition.DDLState) + tblO, err := tkO.Session().GetInfoSchema().TableInfoByName(pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.Equal(t, model.StateNone, tblO.Partition.DDLState) + require.Equal(t, tblNO.Partition.Definitions[1].ID, tblO.Partition.Definitions[1].ID) + default: + require.Fail(t, "Unhandled schema state", "State: '%s'", schemaState) + } + } + runMultiSchemaTest(t, createSQL, alterSQL, initFn, nil, loopFn) } diff --git a/pkg/ddl/tests/partition/reorg_partition_test.go b/pkg/ddl/tests/partition/reorg_partition_test.go index 5bb89cd131d3f..12c20d2ac194e 100644 --- a/pkg/ddl/tests/partition/reorg_partition_test.go +++ b/pkg/ddl/tests/partition/reorg_partition_test.go @@ -18,17 +18,22 @@ import ( "context" "encoding/hex" "fmt" + "math" "strconv" "testing" "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/ddl/logutil" + "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/errno" + "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessiontxn" + "github.com/pingcap/tidb/pkg/store/gcworker" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/testkit" @@ -52,7 +57,7 @@ type allTableData struct { // assumes that tableIDs are only increasing. // To be used during failure testing of ALTER, to make sure cleanup is done. func noNewTablesAfter(t *testing.T, tk *testkit.TestKit, ctx sessionctx.Context, tbl table.Table, msg string) { - waitForGC := tk.MustQuery(`select start_key, end_key from mysql.gc_delete_range union all select start_key, end_key from mysql.gc_delete_range_done`).Rows() + waitForGC := tk.MustQuery(`select start_key, end_key, "queue" from mysql.gc_delete_range union all select start_key, end_key, "done" from mysql.gc_delete_range_done`).Rows() require.NoError(t, sessiontxn.NewTxn(context.Background(), ctx)) txn, err := ctx.Txn(true) require.NoError(t, err) @@ -62,10 +67,12 @@ func noNewTablesAfter(t *testing.T, tk *testkit.TestKit, ctx sessionctx.Context, }() // Get max tableID (if partitioned) tblID := tbl.Meta().ID + logutil.DDLLogger().Info("noNewTablesAfter", zap.Int64("Table ID", tblID)) if pt := tbl.GetPartitionedTable(); pt != nil { defs := pt.Meta().Partition.Definitions { for i := range defs { + logutil.DDLLogger().Info("noNewTablesAfter", zap.Int64("Part ID", defs[i].ID)) tblID = max(tblID, defs[i].ID) } } @@ -76,10 +83,17 @@ func noNewTablesAfter(t *testing.T, tk *testkit.TestKit, ctx sessionctx.Context, for _, rowGC := range waitForGC { logutil.DDLLogger().Info("GC", zap.String("start", fmt.Sprintf("%v", rowGC[0])), - zap.String("end", fmt.Sprintf("%v", rowGC[1]))) + zap.String("end", fmt.Sprintf("%v", rowGC[1])), + zap.String("status", fmt.Sprintf("%s", rowGC[2]))) } ROW: for it.Valid() { + foundTblID := tablecodec.DecodeTableID(it.Key()) + // There are internal table ids starting from MaxInt48 -1 and allocating decreasing ids + // Allow 0xFF of them, See JobTableID, ReorgTableID, HistoryTableID, MDLTableID + if it.Key()[0] == 't' && foundTblID >= 0xFFFFFFFFFF00 { + break + } for _, rowGC := range waitForGC { // OK if queued for range delete / GC startHex := fmt.Sprintf("%v", rowGC[0]) @@ -93,28 +107,28 @@ ROW: require.NoError(t, err) continue ROW } - logutil.DDLLogger().Info("not found in GC", - zap.String("key", keyHex), - zap.String("start", startHex), - zap.String("end", endHex)) + if keyHex < "748000f" { + logutil.DDLLogger().Error("not found in GC", + zap.String("key", keyHex), + zap.String("start", startHex), + zap.String("end", endHex)) + } } - foundTblID := tablecodec.DecodeTableID(it.Key()) - // There are internal table ids starting from MaxInt48 -1 and allocating decreasing ids - // Allow 0xFF of them, See JobTableID, ReorgTableID, HistoryTableID, MDLTableID - if it.Key()[0] == 't' && foundTblID < 0xFFFFFFFFFF00 { + if it.Key()[0] == 't' { is := sessiontxn.GetTxnManager(tk.Session()).GetTxnInfoSchema() tbl, found := is.TableByID(context.Background(), foundTblID) tblmsg := " Table ID no longer maps to a table" if found { tblmsg = fmt.Sprintf(" Table name: %s", tbl.Meta().Name.O) } - require.False(t, true, "Found table data after highest physical Table ID %d < %d (%s) "+msg+tblmsg, tblID, foundTblID, it.Key()) + decodedKey := expression.DecodeKeyFromString(ctx.GetExprCtx().GetEvalCtx().TypeCtx(), is, it.Key().String()) + require.False(t, true, "Found table data after highest physical Table ID %d < %d (%s)\n%s\n"+msg+tblmsg, tblID, foundTblID, it.Key(), decodedKey) } break } } -func getAllDataForPhysicalTable(t *testing.T, ctx sessionctx.Context, physTable table.PhysicalTable) allTableData { +func getAllDataForTableID(t *testing.T, ctx sessionctx.Context, tableID int64) allTableData { require.NoError(t, sessiontxn.NewTxn(context.Background(), ctx)) txn, err := ctx.Txn(true) require.NoError(t, err) @@ -128,8 +142,7 @@ func getAllDataForPhysicalTable(t *testing.T, ctx sessionctx.Context, physTable vals: make([][]byte, 0), tp: make([]string, 0), } - pid := physTable.GetPhysicalID() - prefix := tablecodec.EncodeTablePrefix(pid) + prefix := tablecodec.EncodeTablePrefix(tableID) it, err := txn.Iter(prefix, nil) require.NoError(t, err) for it.Valid() { @@ -141,7 +154,7 @@ func getAllDataForPhysicalTable(t *testing.T, ctx sessionctx.Context, physTable if tablecodec.IsRecordKey(it.Key()) { all.tp = append(all.tp, "Record") tblID, kv, _ := tablecodec.DecodeRecordKey(it.Key()) - require.Equal(t, pid, tblID) + require.Equal(t, tableID, tblID) vals, _ := tablecodec.DecodeValuesBytesToStrings(it.Value()) logutil.DDLLogger().Info("Record", zap.Int64("pid", tblID), @@ -186,7 +199,7 @@ func TestReorgPartitionFailures(t *testing.T) { afterResult := testkit.Rows( "1 1 1", "12 12 21", "13 13 13", "17 17 17", "18 18 18", "2 2 2", "23 23 32", "45 45 54", "5 5 5", ) - testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult, "Fail4") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) } func TestRemovePartitionFailures(t *testing.T) { @@ -211,7 +224,7 @@ func TestRemovePartitionFailures(t *testing.T) { `delete from t where b = 102`, } afterResult := testkit.Rows("1 1 1", "101 101 101", "2 2 2", "3 3 3", "4 4 4", "9 9 104") - testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult, "Fail4") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) } func TestPartitionByFailures(t *testing.T) { @@ -262,7 +275,7 @@ func TestReorganizePartitionListFailures(t *testing.T) { `delete from t where b = 3`, } afterResult := testkit.Rows("1 1 1", "2 2 2", "6 6 9", "7 7 7", "8 8 8") - testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult, "Fail4") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) } func TestPartitionByListFailures(t *testing.T) { @@ -310,7 +323,7 @@ func TestAddHashPartitionFailures(t *testing.T) { `delete from t where b = 3`, } afterResult := testkit.Rows("1 1 1", "2 2 2", "6 6 9", "7 7 7", "8 8 8") - testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult, "Fail4") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) } func TestCoalesceKeyPartitionFailures(t *testing.T) { @@ -333,36 +346,48 @@ func TestCoalesceKeyPartitionFailures(t *testing.T) { `delete from t where b = 3`, } afterResult := testkit.Rows("1 1 1", "2 2 2", "6 6 9", "7 7 7", "8 8 8") - testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult, "Fail4") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) +} + +func TestPartitionByNonPartitionedTable(t *testing.T) { + create := `create table t (a int)` + alter := `alter table t partition by range (a) (partition p0 values less than (20))` + beforeResult := testkit.Rows() + afterResult := testkit.Rows() + testReorganizePartitionFailures(t, create, alter, nil, beforeResult, nil, afterResult) } func testReorganizePartitionFailures(t *testing.T, createSQL, alterSQL string, beforeDML []string, beforeResult [][]any, afterDML []string, afterResult [][]any, skipTests ...string) { + // Skip GC emulator, we trigger it manually to also clean up PlacementBundles + util.EmulatorGCDisable() store := testkit.CreateMockStore(t) + gcWorker, err := gcworker.NewMockGCWorker(store) + require.NoError(t, err) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") - tk.MustExec("set tidb_enable_global_index=true") - defer func() { - tk.MustExec("set tidb_enable_global_index=default") - }() // Fail means we simply inject an error, and set the error count very high to see what happens // we do expect to do best effort rollback here as well! // Cancel means we set job.State = JobStateCancelled, as in no need to do more // Rollback means we do full rollback before returning error. tests := []struct { - name string - count int + name string + count int + rollForwardFrom int }{ { "Cancel", 1, + -1, }, { "Fail", 5, + 4, }, { "Rollback", 4, + -1, }, } oldWaitTimeWhenErrorOccurred := ddl.WaitTimeWhenErrorOccurred @@ -379,38 +404,84 @@ func testReorganizePartitionFailures(t *testing.T, createSQL, alterSQL string, b continue SUBTEST } } - tk.MustExec(createSQL) + suffixComment := ` /* ` + suffix + ` */` + tk.MustExec(createSQL + suffixComment) for _, sql := range beforeDML { - tk.MustExec(sql + ` /* ` + suffix + ` */`) + tk.MustExec(sql + suffixComment) } - tk.MustQuery(`select * from t /* ` + suffix + ` */`).Sort().Check(beforeResult) + tk.MustQuery(`select * from t ` + suffixComment).Sort().Check(beforeResult) tOrg := external.GetTableByName(t, tk, "test", "t") - idxID := tOrg.Meta().Indices[0].ID - oldCreate := tk.MustQuery(`show create table t`).Rows() + var idxID int64 + if len(tOrg.Meta().Indices) > 0 { + idxID = tOrg.Meta().Indices[0].ID + } + oldCreate := tk.MustQuery(`show create table t` + suffixComment).Rows() + // Run GC to clean changes in beforeDML + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + oldBundles, err := infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) name := "github.com/pingcap/tidb/pkg/ddl/reorgPart" + suffix - testfailpoint.Enable(t, name, `return(true)`) - err := tk.ExecToErr(alterSQL) - require.Error(t, err, "failpoint reorgPart"+suffix) - require.ErrorContains(t, err, "Injected error by reorgPart"+suffix) - testfailpoint.Disable(t, name) - tk.MustQuery(`show create table t /* ` + suffix + ` */`).Check(oldCreate) + term := "return(true)" + if test.rollForwardFrom > 0 && test.rollForwardFrom <= i { + term = "10*" + term + } + testfailpoint.Enable(t, name, term) + err = tk.ExecToErr(alterSQL + suffixComment) tt := external.GetTableByName(t, tk, "test", "t") partition := tt.Meta().Partition - require.Equal(t, len(tOrg.Meta().Partition.Definitions), len(partition.Definitions), suffix) - require.Equal(t, 0, len(partition.AddingDefinitions), suffix) - require.Equal(t, 0, len(partition.DroppingDefinitions), suffix) + rollback := false + if test.rollForwardFrom > 0 && test.rollForwardFrom <= i { + require.NoError(t, err) + } else { + rollback = true + require.Error(t, err, "failpoint reorgPart"+suffix) + // TODO: gracefully handle failures during WriteReorg also for nonclustered tables + // with unique indexes. + // Currently it can also do: + // Error "[kv:1062]Duplicate entry '7' for key 't.c'" does not contain "Injected error by reorgPartFail2" + //require.ErrorContains(t, err, "Injected error by reorgPart"+suffix) + tk.MustQuery(`show create table t` + suffixComment).Check(oldCreate) + if partition == nil { + require.Nil(t, tOrg.Meta().Partition, suffix) + } else { + require.Equal(t, len(tOrg.Meta().Partition.Definitions), len(partition.Definitions), suffix) + require.Equal(t, 0, len(partition.AddingDefinitions), suffix) + require.Equal(t, 0, len(partition.DroppingDefinitions), suffix) + } + noNewTablesAfter(t, tk, tk.Session(), tOrg, suffix) + } + testfailpoint.Disable(t, name) require.Equal(t, len(tOrg.Meta().Indices), len(tt.Meta().Indices), suffix) - require.Equal(t, idxID, tt.Meta().Indices[0].ID, suffix) - noNewTablesAfter(t, tk, tk.Session(), tOrg, suffix) - tk.MustExec(`admin check table t /* ` + suffix + ` */`) + if rollback && idxID != 0 { + require.Equal(t, idxID, tt.Meta().Indices[0].ID, suffix) + } + require.Nil(t, gcWorker.DeleteRanges(context.TODO(), math.MaxInt64)) + noNewTablesAfter(t, tk, tk.Session(), tt, suffix) + tk.MustExec(`admin check table t` + suffixComment) for _, sql := range afterDML { - tk.MustExec(sql + " /* " + suffix + " */") + tk.MustExec(sql + suffixComment) } - tk.MustQuery(`select * from t /* ` + suffix + ` */`).Sort().Check(afterResult) - tk.MustExec(`drop table t /* ` + suffix + ` */`) + tk.MustQuery(`select * from t` + suffixComment).Sort().Check(afterResult) + newBundles, err := infosync.GetAllRuleBundles(context.TODO()) + require.NoError(t, err) + if rollback { + for i := range newBundles { + found := false + for j := range oldBundles { + if newBundles[i].ID == oldBundles[j].ID { + require.Equal(t, oldBundles[j].String(), newBundles[i].String(), suffix) + found = true + break + } + } + require.True(t, found, "%s: New bundle not cleaned up '%s':\n%s", suffix, newBundles[i].ID, newBundles[i].String()) + } + require.Equal(t, len(oldBundles), len(newBundles), suffix) + } + tk.MustQuery(`select * from t` + suffixComment).Sort().Check(afterResult) + tk.MustExec(`drop table t` + suffixComment) // TODO: Check TiFlash replicas // TODO: Check Label rules - // TODO: Check bundles // TODO: Check autoIDs } } @@ -440,12 +511,13 @@ func TestReorgPartitionConcurrent(t *testing.T) { defer close(wait) currState := model.StateNone - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionReorganizePartition && (job.SchemaState == model.StateDeleteOnly || job.SchemaState == model.StateWriteOnly || job.SchemaState == model.StateWriteReorganization || - job.SchemaState == model.StateDeleteReorganization) && + job.SchemaState == model.StateDeleteReorganization || + job.SchemaState == model.StatePublic) && currState != job.SchemaState { currState = job.SchemaState <-wait @@ -541,6 +613,61 @@ func TestReorgPartitionConcurrent(t *testing.T) { "15 15 15", "16 16 16")) currTbl.Meta().Partition = currPart + tk.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(10) unsigned NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " `c` int(11) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " KEY `b` (`b`),\n" + + " KEY `c` (`c`,`b`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE (`a`)\n" + + "(PARTITION `p0` VALUES LESS THAN (10),\n" + + " PARTITION `p1a` VALUES LESS THAN (15),\n" + + " PARTITION `p1b` VALUES LESS THAN (20),\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))")) + wait <- true + + // StatePublic + wait <- true + tk.MustQuery(`select * from t where c between 10 and 22`).Sort().Check(testkit.Rows(""+ + "10 10 10", + "12 12b 12", + "14 14 14", + "15 15 15", + "16 16 16")) + publicInfoSchema := sessiontxn.GetTxnManager(tk.Session()).GetTxnInfoSchema() + require.Equal(t, int64(1), publicInfoSchema.SchemaMetaVersion()-deleteReorgInfoSchema.SchemaMetaVersion()) + tk.MustExec(`insert into t values (17, "17", 17)`) + oldTbl, err = deleteReorgInfoSchema.TableByName(context.Background(), pmodel.NewCIStr(schemaName), pmodel.NewCIStr("t")) + require.NoError(t, err) + partDef = oldTbl.Meta().Partition.Definitions[1] + require.Equal(t, "p1a", partDef.Name.O) + rows = getNumRowsFromPartitionDefs(t, tk, oldTbl, oldTbl.Meta().Partition.Definitions[1:2]) + require.Equal(t, 3, rows) + tk.MustQuery(`select * from t partition (p1a)`).Sort().Check(testkit.Rows("10 10 10", "12 12b 12", "14 14 14")) + currTbl, err = publicInfoSchema.TableByName(context.Background(), pmodel.NewCIStr(schemaName), pmodel.NewCIStr("t")) + require.NoError(t, err) + currPart = currTbl.Meta().Partition + currTbl.Meta().Partition = oldTbl.Meta().Partition + tk.MustQuery(`select * from t where b = "17"`).Sort().Check(testkit.Rows("17 17 17")) + tk.MustExec(`admin check table t`) + tk.MustQuery(`show create table t`).Check(testkit.Rows("" + + "t CREATE TABLE `t` (\n" + + " `a` int(10) unsigned NOT NULL,\n" + + " `b` varchar(255) DEFAULT NULL,\n" + + " `c` int(11) DEFAULT NULL,\n" + + " PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */,\n" + + " KEY `b` (`b`),\n" + + " KEY `c` (`c`,`b`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin\n" + + "PARTITION BY RANGE (`a`)\n" + + "(PARTITION `p0` VALUES LESS THAN (10),\n" + + " PARTITION `p1a` VALUES LESS THAN (15),\n" + + " PARTITION `p1b` VALUES LESS THAN (20),\n" + + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))")) + currTbl.Meta().Partition = currPart wait <- true syncOnChanged <- true // This reads the new schema (Schema update completed) @@ -549,11 +676,12 @@ func TestReorgPartitionConcurrent(t *testing.T) { "12 12b 12", "14 14 14", "15 15 15", - "16 16 16")) + "16 16 16", + "17 17 17")) tk.MustExec(`admin check table t`) newInfoSchema := sessiontxn.GetTxnManager(tk.Session()).GetTxnInfoSchema() - require.Equal(t, int64(1), newInfoSchema.SchemaMetaVersion()-deleteReorgInfoSchema.SchemaMetaVersion()) - oldTbl, err = deleteReorgInfoSchema.TableByName(context.Background(), pmodel.NewCIStr(schemaName), pmodel.NewCIStr("t")) + require.Equal(t, int64(1), newInfoSchema.SchemaMetaVersion()-publicInfoSchema.SchemaMetaVersion()) + oldTbl, err = publicInfoSchema.TableByName(context.Background(), pmodel.NewCIStr(schemaName), pmodel.NewCIStr("t")) require.NoError(t, err) partDef = oldTbl.Meta().Partition.Definitions[1] require.Equal(t, "p1a", partDef.Name.O) @@ -571,7 +699,7 @@ func TestReorgPartitionConcurrent(t *testing.T) { " PARTITION `p1a` VALUES LESS THAN (15),\n" + " PARTITION `p1b` VALUES LESS THAN (20),\n" + " PARTITION `pMax` VALUES LESS THAN (MAXVALUE))")) - newTbl, err := deleteReorgInfoSchema.TableByName(context.Background(), pmodel.NewCIStr(schemaName), pmodel.NewCIStr("t")) + newTbl, err := newInfoSchema.TableByName(context.Background(), pmodel.NewCIStr(schemaName), pmodel.NewCIStr("t")) require.NoError(t, err) newPart := newTbl.Meta().Partition newTbl.Meta().Partition = oldTbl.Meta().Partition @@ -613,7 +741,7 @@ func TestReorgPartitionFailConcurrent(t *testing.T) { // Test insert of duplicate key during copy phase injected := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionReorganizePartition && job.SchemaState == model.StateWriteReorganization && !injected { injected = true <-wait @@ -650,7 +778,7 @@ func TestReorgPartitionFailConcurrent(t *testing.T) { // Test reorg of duplicate key prevState := model.StateNone - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionReorganizePartition && job.SchemaState == model.StateWriteReorganization && job.SnapshotVer == 0 && @@ -719,7 +847,7 @@ func getNumRowsFromPartitionDefs(t *testing.T, tk *testkit.TestKit, tbl table.Ta require.NotNil(t, pt) cnt := 0 for _, def := range defs { - data := getAllDataForPhysicalTable(t, ctx, pt.GetPartition(def.ID)) + data := getAllDataForTableID(t, ctx, def.ID) require.True(t, len(data.keys) == len(data.vals)) require.True(t, len(data.keys) == len(data.tp)) for _, s := range data.tp { @@ -748,7 +876,7 @@ func TestReorgPartitionFailInject(t *testing.T) { defer close(wait) injected := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionReorganizePartition && job.SchemaState == model.StateWriteReorganization && !injected { injected = true <-wait @@ -796,10 +924,7 @@ func TestReorgPartitionRollback(t *testing.T) { ` partition p1 values less than (20),` + ` partition pMax values less than (MAXVALUE))`) tk.MustExec(`insert into t values (1,"1",1), (12,"12",21),(23,"23",32),(34,"34",43),(45,"45",54),(56,"56",65)`) - // TODO: Check that there are no additional placement rules, - // bundles, or ranges with non-completed tableIDs - // (partitions used during reorg, but was dropped) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/ddl/mockUpdateVersionAndTableInfoErr", `return(true)`) + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/ddl/mockUpdateVersionAndTableInfoErr", `return(1)`) tk.MustExecToErr("alter table t reorganize partition p1 into (partition p1a values less than (15), partition p1b values less than (20))") tk.MustExec(`admin check table t`) testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/mockUpdateVersionAndTableInfoErr") @@ -893,7 +1018,6 @@ func TestPartitionByColumnChecks(t *testing.T) { tk.MustExec(`create table kb ` + cols + ` partition by key(b) partitions 2`) tk.MustExec(`create table kf ` + cols + ` partition by key(f) partitions 2`) tk.MustExec(`create table kts ` + cols + ` partition by key(ts) partitions 2`) - // HASH/LIST/RANGE - Treats bit values as int, BIT(>=32) for HASH fails due to overflow... tk.MustExec(`create table hb ` + cols + ` partition by hash(b) partitions 2`) tk.MustExec(`insert into hb values ` + vals) tk.MustQuery(`select count(*) from hb where b = b'10'`).Check(testkit.Rows("1")) @@ -901,9 +1025,9 @@ func TestPartitionByColumnChecks(t *testing.T) { tk.MustExec(`insert into hb values ` + vals) tk.MustQuery(`select count(*) from hb where b = b'10'`).Check(testkit.Rows("2")) tk.MustExec(`create table hb32 ` + cols + ` partition by hash(b32) partitions 2`) - tk.MustContainErrMsg(`insert into hb32 values `+vals, "[types:1690]constant 2290649224 overflows int") + tk.MustExec(`insert into hb32 values ` + vals) tk.MustExec(`alter table hb32 partition by hash(b32) partitions 3`) - tk.MustContainErrMsg(`insert into hb32 values `+vals, "[types:1690]constant 2290649224 overflows int") + tk.MustExec(`insert into hb32 values ` + vals) tk.MustExec(`create table rb ` + cols + ` partition by range (b) (partition pMax values less than (MAXVALUE))`) tk.MustExec(`insert into rb values ` + vals) tk.MustExec(`alter table rb partition by range(b) (partition pMax values less than (MAXVALUE))`) @@ -917,3 +1041,157 @@ func TestPartitionByColumnChecks(t *testing.T) { tk.MustExec(`alter table rb64 partition by range(b64) (partition pMax values less than (MAXVALUE))`) tk.MustExec(`insert into rb64 values ` + vals) } + +func TestPartitionIssue56634(t *testing.T) { + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/ddl/updateVersionAndTableInfoErrInStateDeleteReorganization", `4*return(1)`) + + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (a int)") + // Changed, since StatePublic can no longer rollback! + tk.MustExec("alter table t partition by range(a) (partition p1 values less than (20))") +} + +func TestReorgPartitionFailuresPlacementPolicy(t *testing.T) { + create := `create table t (a int unsigned PRIMARY KEY, b varchar(255), c int, key (b), key (c,b))` + + ` partition by range (a) ` + + `(partition p0 values less than (10),` + + ` partition p1 values less than (20),` + + ` partition p2 values less than (30),` + + ` partition pMax values less than (MAXVALUE))` + beforeDML := []string{ + `create or replace placement policy pp1 followers=1`, + `create or replace placement policy pp2 followers=2`, + `create or replace placement policy pp3 followers=3`, + `alter table t placement policy ='pp1'`, + `alter table t partition p1 placement policy ='pp2'`, + `alter table t partition p2 placement policy ='pp3'`, + } + beforeResult := testkit.Rows() + alter := "alter table t reorganize partition p1,p2 into (partition p1 values less than (17), partition p1b values less than (24) placement policy 'pp1', partition p2 values less than (30))" + afterResult := testkit.Rows() + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, nil, afterResult) +} + +func TestRemovePartitionFailuresPlacementPolicy(t *testing.T) { + create := `create table t (a int unsigned primary key nonclustered, b int not null, c varchar(255)) partition by range(a) ( + partition p0 values less than (50), + partition p1 values less than (100), + partition p2 values less than (200))` + alter := `alter table t remove partitioning` + beforeDML := []string{ + `create or replace placement policy pp1 followers=1`, + `create or replace placement policy pp2 followers=2`, + `create or replace placement policy pp3 followers=2`, + `alter table t placement policy ='pp3'`, + `alter table t partition p1 placement policy ='pp1'`, + `alter table t partition p2 placement policy ='pp2'`, + `insert into t values (1,1,1),(2,2,2),(3,3,3),(101,101,101),(102,102,102),(103,103,103)`, + `update t set a = 11, b = "11", c = 11 where a = 1`, + `update t set b = "12", c = 12 where b = 2`, + `delete from t where a = 102`, + `delete from t where b = 103`, + } + beforeResult := testkit.Rows("101 101 101", "11 11 11", "2 12 12", "3 3 3") + afterDML := []string{ + `insert into t values (4,4,4),(5,5,5),(104,104,104)`, + `update t set a = 1, b = 1, c = 1 where a = 11`, + `update t set b = 2, c = 2 where c = 12`, + `update t set a = 9, b = 9 where a = 104`, + `delete from t where a = 5`, + `delete from t where b = 102`, + } + afterResult := testkit.Rows("1 1 1", "101 101 101", "2 2 2", "3 3 3", "4 4 4", "9 9 104") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) +} + +func TestPartitionByFailuresPlacementPolicy(t *testing.T) { + create := `create table t (a int unsigned primary key nonclustered, b int not null, c varchar(255)) partition by range(a) ( + partition p0 values less than (100), + partition p1 values less than (200))` + beforeDML := []string{ + `create or replace placement policy pp1 followers=1`, + `create or replace placement policy pp2 followers=2`, + `create or replace placement policy pp3 followers=3`, + `alter table t placement policy ='pp1'`, + `alter table t partition p0 placement policy ='pp2'`, + `insert into t values (1,1,1),(2,2,2),(3,3,3),(101,101,101),(102,102,102),(103,103,103)`, + `update t set a = 11, b = "11", c = 11 where a = 1`, + `update t set b = "12", c = 12 where b = 2`, + `delete from t where a = 102`, + `delete from t where b = 103`, + } + beforeResult := testkit.Rows("101 101 101", "11 11 11", "2 12 12", "3 3 3") + alter := "alter table t partition by range (b) (partition pNoneC values less than (150) placement policy 'pp3', partition p2 values less than (300)) update indexes (`primary` global)" + afterDML := []string{ + `insert into t values (4,4,4),(5,5,5),(104,104,104)`, + `update t set a = 1, b = 1, c = 1 where a = 11`, + `update t set b = 2, c = 2 where c = 12`, + `update t set a = 9, b = 9 where a = 104`, + `delete from t where a = 5`, + `delete from t where b = 102`, + } + afterResult := testkit.Rows("1 1 1", "101 101 101", "2 2 2", "3 3 3", "4 4 4", "9 9 104") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) +} + +func TestPartitionNonPartitionedFailuresPlacementPolicy(t *testing.T) { + create := `create table t (a int unsigned primary key nonclustered, b int not null, c varchar(255))` + beforeDML := []string{ + `create or replace placement policy pp1 followers=1`, + `create or replace placement policy pp2 followers=2`, + `alter table t placement policy ='pp1'`, + `insert into t values (1,1,1),(2,2,2),(3,3,3),(101,101,101),(102,102,102),(103,103,103)`, + `update t set a = 11, b = "11", c = 11 where a = 1`, + `update t set b = "12", c = 12 where b = 2`, + `delete from t where a = 102`, + `delete from t where b = 103`, + } + beforeResult := testkit.Rows("101 101 101", "11 11 11", "2 12 12", "3 3 3") + alter := "alter table t partition by range (b) (partition pNoneC values less than (150), partition p2 values less than (300) placement policy 'pp1') update indexes (`primary` global)" + afterDML := []string{ + `insert into t values (4,4,4),(5,5,5),(104,104,104)`, + `update t set a = 1, b = 1, c = 1 where a = 11`, + `update t set b = 2, c = 2 where c = 12`, + `update t set a = 9, b = 9 where a = 104`, + `delete from t where a = 5`, + `delete from t where b = 102`, + } + afterResult := testkit.Rows("1 1 1", "101 101 101", "2 2 2", "3 3 3", "4 4 4", "9 9 104") + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, afterDML, afterResult) +} + +func TestReorganizePartitionFailuresAddPlacementPolicy(t *testing.T) { + create := `create table t (a int unsigned primary key nonclustered, b int not null, c varchar(255)) partition by range(a) ( + partition p0 values less than (50), + partition p1 values less than (100), + partition p2 values less than (200))` + beforeDML := []string{ + `create or replace placement policy pp1 followers=1`, + `insert into t values (4,4,4),(5,5,5),(104,104,104)`, + } + beforeResult := testkit.Rows("104 104 104", "4 4 4", "5 5 5") + alter := `alter table t reorganize partition p2 into (partition p2 values less than (200), partition pMax values less than (maxvalue) placement policy pp1)` + afterResult := beforeResult + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, nil, afterResult) +} + +func TestPartitionByFailuresAddPlacementPolicyGlobalIndex(t *testing.T) { + create := `create table t (a int unsigned primary key nonclustered global, b int not null, c varchar(255), unique key (c) global) partition by range(a) ( + partition p0 values less than (50), + partition p1 values less than (100), + partition p2 values less than (200))` + beforeDML := []string{ + `create or replace placement policy pp1 followers=1`, + `create or replace placement policy pp2 followers=2`, + `alter table t placement policy pp1`, + `alter table t partition p2 placement policy pp2`, + `insert into t values (4,4,4),(50,50,50),(111,111,111),(155,155,155)`, + } + beforeResult := testkit.Rows("111 111 111", "155 155 155", "4 4 4", "50 50 50") + alter := "alter table t partition by range (a) (partition p1 values less than (150), partition pMax values less than (maxvalue) placement policy pp1) update indexes (`primary` local, `c` global)" + afterResult := beforeResult + testReorganizePartitionFailures(t, create, alter, beforeDML, beforeResult, nil, afterResult) +} diff --git a/pkg/ddl/tests/serial/main_test.go b/pkg/ddl/tests/serial/main_test.go index 660943432912b..ed48da9f0d3b5 100644 --- a/pkg/ddl/tests/serial/main_test.go +++ b/pkg/ddl/tests/serial/main_test.go @@ -57,7 +57,7 @@ func TestMain(m *testing.M) { conf.Experimental.AllowsExpressionIndex = true }) - _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) + _, err := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true, nil) if err != nil { _, _ = fmt.Fprintf(os.Stderr, "ddl: infosync.GlobalInfoSyncerInit: %v\n", err) os.Exit(1) diff --git a/pkg/ddl/tests/serial/serial_test.go b/pkg/ddl/tests/serial/serial_test.go index e4b6a38a798ce..1455073ce632c 100644 --- a/pkg/ddl/tests/serial/serial_test.go +++ b/pkg/ddl/tests/serial/serial_test.go @@ -446,7 +446,7 @@ func TestCancelAddIndexPanic(t *testing.T) { tk.MustExec("insert into t values (?, ?)", i, i) } var checkErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionAddIndex && job.State == model.JobStateRunning && job.SchemaState == model.StateWriteReorganization && job.SnapshotVer != 0 { tkCancel.MustQuery(fmt.Sprintf("admin cancel ddl jobs %d", job.ID)) } @@ -500,20 +500,20 @@ func TestRecoverTableWithTTL(t *testing.T) { tk.MustExec("create table t_recover1 (t timestamp) TTL=`t`+INTERVAL 1 DAY") tk.MustExec("drop table t_recover1") tk.MustExec("recover table t_recover1") - tk.MustQuery("show create table t_recover1").Check(testkit.Rows("t_recover1 CREATE TABLE `t_recover1` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */")) + tk.MustQuery("show create table t_recover1").Check(testkit.Rows("t_recover1 CREATE TABLE `t_recover1` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */")) // recover table with job id tk.MustExec("create table t_recover2 (t timestamp) TTL=`t`+INTERVAL 1 DAY") tk.MustExec("drop table t_recover2") jobID := getDDLJobID("t_recover2", "drop table") tk.MustExec(fmt.Sprintf("recover table BY JOB %d", jobID)) - tk.MustQuery("show create table t_recover2").Check(testkit.Rows("t_recover2 CREATE TABLE `t_recover2` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */")) + tk.MustQuery("show create table t_recover2").Check(testkit.Rows("t_recover2 CREATE TABLE `t_recover2` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */")) // flashback table tk.MustExec("create table t_recover3 (t timestamp) TTL=`t`+INTERVAL 1 DAY") tk.MustExec("drop table t_recover3") tk.MustExec("flashback table t_recover3") - tk.MustQuery("show create table t_recover3").Check(testkit.Rows("t_recover3 CREATE TABLE `t_recover3` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */")) + tk.MustQuery("show create table t_recover3").Check(testkit.Rows("t_recover3 CREATE TABLE `t_recover3` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */")) // flashback database tk.MustExec("create database if not exists test_recover2") @@ -521,8 +521,8 @@ func TestRecoverTableWithTTL(t *testing.T) { tk.MustExec("create table test_recover2.t2 (t timestamp) TTL=`t`+INTERVAL 1 DAY") tk.MustExec("drop database test_recover2") tk.MustExec("flashback database test_recover2") - tk.MustQuery("show create table test_recover2.t1").Check(testkit.Rows("t1 CREATE TABLE `t1` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */")) - tk.MustQuery("show create table test_recover2.t2").Check(testkit.Rows("t2 CREATE TABLE `t2` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */")) + tk.MustQuery("show create table test_recover2.t1").Check(testkit.Rows("t1 CREATE TABLE `t1` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */")) + tk.MustQuery("show create table test_recover2.t2").Check(testkit.Rows("t2 CREATE TABLE `t2` (\n `t` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`t` + INTERVAL 1 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */")) } func TestRecoverTableByJobID(t *testing.T) { @@ -683,7 +683,7 @@ func TestRecoverTableByJobIDFail(t *testing.T) { tk.MustExec(fmt.Sprintf(safePointSQL, timeBeforeDrop)) // set hook - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionRecoverTable { require.NoError(t, failpoint.Enable("tikvclient/mockCommitError", `return(true)`)) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockRecoverTableCommitErr", `return(true)`)) @@ -740,7 +740,7 @@ func TestRecoverTableByTableNameFail(t *testing.T) { tk.MustExec(fmt.Sprintf(safePointSQL, timeBeforeDrop)) // set hook - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionRecoverTable { require.NoError(t, failpoint.Enable("tikvclient/mockCommitError", `return(true)`)) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockRecoverTableCommitErr", `return(true)`)) @@ -812,7 +812,7 @@ func TestCanceledJobTakeTime(t *testing.T) { tk.MustExec("create table t_cjtt(a int)") once := sync.Once{} - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { once.Do(func() { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnDDL) err := kv.RunInNewTxn(ctx, store, false, func(ctx context.Context, txn kv.Transaction) error { diff --git a/pkg/ddl/tests/tiflash/ddl_tiflash_test.go b/pkg/ddl/tests/tiflash/ddl_tiflash_test.go index 32fdebd9dc124..2884f4efb3eab 100644 --- a/pkg/ddl/tests/tiflash/ddl_tiflash_test.go +++ b/pkg/ddl/tests/tiflash/ddl_tiflash_test.go @@ -411,6 +411,7 @@ func TestTiFlashFailTruncatePartition(t *testing.T) { s, teardown := createTiFlashContext(t) defer teardown() tk := testkit.NewTestKit(t, s.store) + tk.MustExec("set @@global.tidb_ddl_error_count_limit = 3") tk.MustExec("use test") tk.MustExec("drop table if exists ddltiflash") @@ -424,7 +425,7 @@ func TestTiFlashFailTruncatePartition(t *testing.T) { time.Sleep(ddl.PollTiFlashInterval * RoundToBeAvailablePartitionTable) tk.MustExec("insert into ddltiflash values(1, 'abc'), (11, 'def')") - tk.MustGetErrMsg("alter table ddltiflash truncate partition p1", "[ddl:-1]enforced error") + tk.MustGetErrMsg("alter table ddltiflash truncate partition p1", "[ddl:-1]DDL job rollback, error msg: enforced error") time.Sleep(ddl.PollTiFlashInterval * RoundToBeAvailablePartitionTable) CheckTableAvailableWithTableName(s.dom, t, 1, []string{}, "test", "ddltiflash") } @@ -1411,7 +1412,7 @@ func TestTiFlashReorgPartition(t *testing.T) { // Note that the mock TiFlash does not have any data or regions, so the wait for regions being available will fail done := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if !done && job.Type == model.ActionReorganizePartition && job.SchemaState == model.StateDeleteOnly { // Let it fail once (to check that code path) then increase the count to skip retry if job.ErrorCount > 0 { @@ -1423,7 +1424,7 @@ func TestTiFlashReorgPartition(t *testing.T) { tk.MustContainErrMsg(`alter table ddltiflash reorganize partition p0 into (partition p0 values less than (500000), partition p500k values less than (1000000))`, "[ddl] add partition wait for tiflash replica to complete") done = false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if !done && job.Type == model.ActionReorganizePartition && job.SchemaState == model.StateDeleteOnly { // Let it fail once (to check that code path) then mock the regions into the partitions if job.ErrorCount > 0 { diff --git a/pkg/ddl/tiflash_replica_test.go b/pkg/ddl/tiflash_replica_test.go index 316ad102d9b2b..09e184a99518e 100644 --- a/pkg/ddl/tiflash_replica_test.go +++ b/pkg/ddl/tiflash_replica_test.go @@ -312,7 +312,7 @@ func TestCreateTableWithLike2(t *testing.T) { tbl1 := external.GetTableByName(t, tk, "test", "t1") doneCh := make(chan error, 2) var onceChecker sync.Map - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type != model.ActionAddColumn && job.Type != model.ActionDropColumn && job.Type != model.ActionAddIndex && job.Type != model.ActionDropIndex { return @@ -375,7 +375,7 @@ func TestCreateTableWithLike2(t *testing.T) { require.NoError(t, err) }() - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") tk.MustExec("drop table if exists t1,t2;") tk.MustExec("create table t1 (a int) partition by hash(a) partitions 2;") tk.MustExec("alter table t1 set tiflash replica 3 location labels 'a','b';") diff --git a/pkg/ddl/ttl.go b/pkg/ddl/ttl.go index b5ed94e14f49a..3b1236a98ff1f 100644 --- a/pkg/ddl/ttl.go +++ b/pkg/ddl/ttl.go @@ -30,9 +30,6 @@ import ( "github.com/pingcap/tidb/pkg/util/dbterror" ) -// DefaultTTLJobInterval is the default value for ttl job interval. -const DefaultTTLJobInterval = "1h" - func onTTLInfoRemove(jobCtx *jobContext, job *model.Job) (ver int64, err error) { tblInfo, err := GetTableInfoAndCancelFaultJob(jobCtx.metaMut, job, job.SchemaID) if err != nil { @@ -195,7 +192,7 @@ func getTTLInfoInOptions(options []*ast.TableOption) (ttlInfo *model.TTLInfo, tt IntervalExprStr: intervalExpr, IntervalTimeUnit: int(op.TimeUnitValue.Unit), Enable: true, - JobInterval: DefaultTTLJobInterval, + JobInterval: model.DefaultTTLJobInterval, } case ast.TableOptionTTLEnable: ttlEnable = &op.BoolValue diff --git a/pkg/ddl/ttl_test.go b/pkg/ddl/ttl_test.go index 4d1593c0020cf..b156c697b8375 100644 --- a/pkg/ddl/ttl_test.go +++ b/pkg/ddl/ttl_test.go @@ -26,7 +26,7 @@ import ( func Test_getTTLInfoInOptions(t *testing.T) { falseValue := false trueValue := true - twentyFourHours := "24h" + twentyFiveHours := "25h" cases := []struct { options []*ast.TableOption @@ -56,7 +56,7 @@ func Test_getTTLInfoInOptions(t *testing.T) { IntervalExprStr: "5", IntervalTimeUnit: int(ast.TimeUnitYear), Enable: true, - JobInterval: DefaultTTLJobInterval, + JobInterval: model.DefaultTTLJobInterval, }, nil, nil, @@ -80,7 +80,7 @@ func Test_getTTLInfoInOptions(t *testing.T) { IntervalExprStr: "5", IntervalTimeUnit: int(ast.TimeUnitYear), Enable: false, - JobInterval: DefaultTTLJobInterval, + JobInterval: model.DefaultTTLJobInterval, }, &falseValue, nil, @@ -108,7 +108,7 @@ func Test_getTTLInfoInOptions(t *testing.T) { IntervalExprStr: "5", IntervalTimeUnit: int(ast.TimeUnitYear), Enable: true, - JobInterval: DefaultTTLJobInterval, + JobInterval: model.DefaultTTLJobInterval, }, &trueValue, nil, @@ -124,7 +124,7 @@ func Test_getTTLInfoInOptions(t *testing.T) { }, { Tp: ast.TableOptionTTLJobInterval, - StrValue: "24h", + StrValue: "25h", }, }, &model.TTLInfo{ @@ -132,10 +132,10 @@ func Test_getTTLInfoInOptions(t *testing.T) { IntervalExprStr: "5", IntervalTimeUnit: int(ast.TimeUnitYear), Enable: true, - JobInterval: "24h", + JobInterval: "25h", }, nil, - &twentyFourHours, + &twentyFiveHours, nil, }, } diff --git a/pkg/ddl/util/util.go b/pkg/ddl/util/util.go index aa11171768fbc..4a775abf4de4f 100644 --- a/pkg/ddl/util/util.go +++ b/pkg/ddl/util/util.go @@ -49,7 +49,7 @@ const ( completeDeleteMultiRangesSQL = `DELETE FROM mysql.gc_delete_range WHERE job_id = %?` updateDeleteRangeSQL = `UPDATE mysql.gc_delete_range SET start_key = %? WHERE job_id = %? AND element_id = %? AND start_key = %?` deleteDoneRecordSQL = `DELETE FROM mysql.gc_delete_range_done WHERE job_id = %? AND element_id = %?` - loadGlobalVars = `SELECT HIGH_PRIORITY variable_name, variable_value from mysql.global_variables where variable_name in (` // + nameList + ")" + loadGlobalVarsSQL = `SELECT HIGH_PRIORITY variable_name, variable_value from mysql.global_variables where variable_name in (` // + nameList + ")" // KeyOpDefaultTimeout is the default timeout for each key operation. KeyOpDefaultTimeout = 2 * time.Second // KeyOpRetryInterval is the interval between two key operations. @@ -187,20 +187,20 @@ func UpdateDeleteRange(sctx sessionctx.Context, dr DelRangeTask, newStartKey, ol func LoadDDLReorgVars(ctx context.Context, sctx sessionctx.Context) error { // close issue #21391 // variable.TiDBRowFormatVersion is used to encode the new row for column type change. - return LoadGlobalVars(ctx, sctx, []string{variable.TiDBDDLReorgWorkerCount, variable.TiDBDDLReorgBatchSize, variable.TiDBRowFormatVersion}) + return loadGlobalVars(ctx, sctx, []string{variable.TiDBDDLReorgWorkerCount, variable.TiDBDDLReorgBatchSize, variable.TiDBRowFormatVersion}) } // LoadDDLVars loads ddl variable from mysql.global_variables. func LoadDDLVars(ctx sessionctx.Context) error { - return LoadGlobalVars(context.Background(), ctx, []string{variable.TiDBDDLErrorCountLimit}) + return loadGlobalVars(context.Background(), ctx, []string{variable.TiDBDDLErrorCountLimit}) } -// LoadGlobalVars loads global variable from mysql.global_variables. -func LoadGlobalVars(ctx context.Context, sctx sessionctx.Context, varNames []string) error { +// loadGlobalVars loads global variable from mysql.global_variables. +func loadGlobalVars(ctx context.Context, sctx sessionctx.Context, varNames []string) error { ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnDDL) e := sctx.GetRestrictedSQLExecutor() var buf strings.Builder - buf.WriteString(loadGlobalVars) + buf.WriteString(loadGlobalVarsSQL) paramNames := make([]any, 0, len(varNames)) for i, name := range varNames { if i > 0 { diff --git a/pkg/distsql/BUILD.bazel b/pkg/distsql/BUILD.bazel index a3be4231a4e8f..d97f39d2ce1dd 100644 --- a/pkg/distsql/BUILD.bazel +++ b/pkg/distsql/BUILD.bazel @@ -65,7 +65,7 @@ go_test( embed = [":distsql"], flaky = True, race = "on", - shard_count = 28, + shard_count = 29, deps = [ "//pkg/distsql/context", "//pkg/errctx", diff --git a/pkg/distsql/context/context.go b/pkg/distsql/context/context.go index 9612a30f1048f..f0327326e3854 100644 --- a/pkg/distsql/context/context.go +++ b/pkg/distsql/context/context.go @@ -78,6 +78,7 @@ type DistSQLContext struct { LoadBasedReplicaReadThreshold time.Duration RunawayChecker resourcegroup.RunawayChecker TiKVClientReadTimeout uint64 + MaxExecutionTime uint64 ReplicaClosestReadThreshold int64 ConnectionID uint64 diff --git a/pkg/distsql/context/context_test.go b/pkg/distsql/context/context_test.go index 5cf8a36a2e2b5..d65f801207e85 100644 --- a/pkg/distsql/context/context_test.go +++ b/pkg/distsql/context/context_test.go @@ -84,6 +84,7 @@ func TestContextDetach(t *testing.T) { ResourceGroupName: "c", LoadBasedReplicaReadThreshold: time.Second, TiKVClientReadTimeout: 1, + MaxExecutionTime: 1, ReplicaClosestReadThreshold: 1, ConnectionID: 1, diff --git a/pkg/distsql/distsql_test.go b/pkg/distsql/distsql_test.go index 5385041b47474..02b8645938bfe 100644 --- a/pkg/distsql/distsql_test.go +++ b/pkg/distsql/distsql_test.go @@ -105,7 +105,7 @@ func TestSelectWithRuntimeStats(t *testing.T) { func TestSelectResultRuntimeStats(t *testing.T) { stmtStats := execdetails.NewRuntimeStatsColl(nil) - basic := stmtStats.GetBasicRuntimeStats(1) + basic := stmtStats.GetBasicRuntimeStats(1, true) basic.Record(time.Second, 20) s1 := &selectResultRuntimeStats{ backoffSleep: map[string]time.Duration{"RegionMiss": time.Millisecond}, @@ -119,11 +119,11 @@ func TestSelectResultRuntimeStats(t *testing.T) { s1.procKeys.Add(100) s1.procKeys.Add(200) - s2 := *s1 - stmtStats.RegisterStats(1, s1) - stmtStats.RegisterStats(1, &s2) + s2 := s1.Clone() + stmtStats.RegisterStats(1, s1.Clone()) + stmtStats.RegisterStats(1, s2) stats := stmtStats.GetRootStats(1) - expect := "time:1s, loops:1, cop_task: {num: 4, max: 1s, min: 1ms, avg: 500.5ms, p95: 1s, max_proc_keys: 200, p95_proc_keys: 200, tot_proc: 2s, tot_wait: 2s, copr_cache_hit_ratio: 0.00, max_distsql_concurrency: 15}, backoff{RegionMiss: 2ms}" + expect := "time:1s, open:0s, close:0s, loops:1, cop_task: {num: 4, max: 1s, min: 1ms, avg: 500.5ms, p95: 1s, max_proc_keys: 200, p95_proc_keys: 200, tot_proc: 2s, tot_wait: 2s, copr_cache_hit_ratio: 0.00, max_distsql_concurrency: 15}, backoff{RegionMiss: 2ms}" require.Equal(t, expect, stats.String()) // Test for idempotence. require.Equal(t, expect, stats.String()) @@ -134,7 +134,7 @@ func TestSelectResultRuntimeStats(t *testing.T) { } s1.reqStat.RecordRPCErrorStats("server_is_busy") s1.reqStat.RecordRPCErrorStats("server_is_busy") - stmtStats.RegisterStats(2, s1) + stmtStats.RegisterStats(2, s1.Clone()) stats = stmtStats.GetRootStats(2) expect = "cop_task: {num: 2, max: 1s, min: 1ms, avg: 500.5ms, p95: 1s, max_proc_keys: 200, p95_proc_keys: 200, tot_proc: 1s, tot_wait: 1s, copr_cache_hit_ratio: 0.00, max_distsql_concurrency: 15}, rpc_info:{Cop:{num_rpc:1, total_time:1s}, rpc_errors:{server_is_busy:2}}, backoff{RegionMiss: 1ms}" require.Equal(t, expect, stats.String()) diff --git a/pkg/distsql/request_builder.go b/pkg/distsql/request_builder.go index c9f63b74f48a3..fd06047eec6d3 100644 --- a/pkg/distsql/request_builder.go +++ b/pkg/distsql/request_builder.go @@ -341,6 +341,7 @@ func (builder *RequestBuilder) SetFromSessionVars(dctx *distsqlctx.DistSQLContex builder.Request.StoreBusyThreshold = dctx.LoadBasedReplicaReadThreshold builder.Request.RunawayChecker = dctx.RunawayChecker builder.Request.TiKVClientReadTimeout = dctx.TiKVClientReadTimeout + builder.Request.MaxExecutionTime = dctx.MaxExecutionTime return builder } @@ -828,6 +829,18 @@ func BuildTableRanges(tbl *model.TableInfo) ([]kv.KeyRange, error) { } ranges := make([]kv.KeyRange, 0, len(pis.Definitions)*(len(tbl.Indices)+1)+1) + // Handle global index ranges + for _, idx := range tbl.Indices { + if idx.State != model.StatePublic || !idx.Global { + continue + } + idxRanges, err := IndexRangesToKVRanges(nil, tbl.ID, idx.ID, ranger.FullRange()) + if err != nil { + return nil, err + } + ranges = idxRanges.AppendSelfTo(ranges) + } + for _, def := range pis.Definitions { rgs, err := appendRanges(tbl, def.ID) if err != nil { @@ -854,7 +867,7 @@ func appendRanges(tbl *model.TableInfo, tblID int64) ([]kv.KeyRange, error) { retRanges = kvRanges.AppendSelfTo(retRanges) for _, index := range tbl.Indices { - if index.State != model.StatePublic { + if index.State != model.StatePublic || index.Global { continue } ranges = ranger.FullRange() diff --git a/pkg/distsql/request_builder_test.go b/pkg/distsql/request_builder_test.go index 64c1c232562e6..7dbad068608dc 100644 --- a/pkg/distsql/request_builder_test.go +++ b/pkg/distsql/request_builder_test.go @@ -678,6 +678,33 @@ func TestRequestBuilderTiKVClientReadTimeout(t *testing.T) { require.Equal(t, expect, actual) } +func TestRequestBuilderMaxExecutionTime(t *testing.T) { + dctx := NewDistSQLContextForTest() + dctx.MaxExecutionTime = 100 + actual, err := (&RequestBuilder{}). + SetFromSessionVars(dctx). + Build() + require.NoError(t, err) + expect := &kv.Request{ + Tp: 0, + StartTs: 0x0, + Data: []uint8(nil), + KeyRanges: kv.NewNonPartitionedKeyRanges(nil), + Concurrency: variable.DefDistSQLScanConcurrency, + IsolationLevel: 0, + Priority: 0, + MemTracker: (*memory.Tracker)(nil), + SchemaVar: 0, + ReadReplicaScope: kv.GlobalReplicaScope, + MaxExecutionTime: 100, + ResourceGroupName: resourcegroup.DefaultResourceGroupName, + } + expect.Paging.MinPagingSize = paging.MinPagingSize + expect.Paging.MaxPagingSize = paging.MaxPagingSize + actual.ResourceGroupTagger = nil + require.Equal(t, expect, actual) +} + func TestTableRangesToKVRangesWithFbs(t *testing.T) { ranges := []*ranger.Range{ { diff --git a/pkg/disttask/framework/integrationtests/BUILD.bazel b/pkg/disttask/framework/integrationtests/BUILD.bazel index b9f8bc2d4a502..5290394c61708 100644 --- a/pkg/disttask/framework/integrationtests/BUILD.bazel +++ b/pkg/disttask/framework/integrationtests/BUILD.bazel @@ -12,18 +12,23 @@ go_test( "framework_scope_test.go", "framework_test.go", "main_test.go", + "modify_test.go", "resource_control_test.go", ], flaky = True, race = "off", - shard_count = 23, + shard_count = 22, deps = [ + "//pkg/config", + "//pkg/ddl", "//pkg/disttask/framework/handle", + "//pkg/disttask/framework/mock/execute", "//pkg/disttask/framework/proto", "//pkg/disttask/framework/scheduler", "//pkg/disttask/framework/scheduler/mock", "//pkg/disttask/framework/storage", "//pkg/disttask/framework/taskexecutor", + "//pkg/disttask/framework/taskexecutor/execute", "//pkg/disttask/framework/testutil", "//pkg/domain", "//pkg/session", @@ -32,6 +37,7 @@ go_test( "//pkg/testkit/testfailpoint", "//pkg/testkit/testsetup", "//pkg/util", + "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@io_opencensus_go//stats/view", diff --git a/pkg/disttask/framework/integrationtests/bench_test.go b/pkg/disttask/framework/integrationtests/bench_test.go index fd0b0d325b077..59f07f648642f 100644 --- a/pkg/disttask/framework/integrationtests/bench_test.go +++ b/pkg/disttask/framework/integrationtests/bench_test.go @@ -21,6 +21,8 @@ import ( "testing" "time" + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/disttask/framework/handle" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" @@ -113,11 +115,13 @@ func prepareForBenchTest(b *testing.B) { var err error store, err := d.Open("tikv://" + *testkit.WithTiKV) require.NoError(b, err) - + config.GetGlobalConfig().Store = config.StoreTypeTiKV + require.NoError(b, ddl.StartOwnerManager(context.Background(), store)) var dom *domain.Domain dom, err = session.BootstrapSession(store) defer func() { dom.Close() + ddl.CloseOwnerManager() err := store.Close() require.NoError(b, err) view.Stop() @@ -158,7 +162,7 @@ func registerTaskTypeForBench(c *testutil.TestDXFContext) { ).AnyTimes() schedulerExt.EXPECT().OnDone(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - testutil.RegisterTaskMetaWithDXFCtx(c, schedulerExt, func(ctx context.Context, subtask *proto.Subtask) error { + registerExampleTaskWithDXFCtx(c, schedulerExt, func(ctx context.Context, subtask *proto.Subtask) error { select { case <-ctx.Done(): taskManager, err := storage.GetTaskManager() diff --git a/pkg/disttask/framework/integrationtests/framework_err_handling_test.go b/pkg/disttask/framework/integrationtests/framework_err_handling_test.go index 090794766319c..31bff5cd1d1a7 100644 --- a/pkg/disttask/framework/integrationtests/framework_err_handling_test.go +++ b/pkg/disttask/framework/integrationtests/framework_err_handling_test.go @@ -24,17 +24,17 @@ import ( func TestRetryErrOnNextSubtasksBatch(t *testing.T) { c := testutil.NewTestDXFContext(t, 2, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetPlanErrSchedulerExt(c.MockCtrl, c.TestContext), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetPlanErrSchedulerExt(c.MockCtrl, c.TestContext), c.TestContext, nil) submitTaskAndCheckSuccessForBasic(c.Ctx, t, "key1", c.TestContext) } func TestPlanNotRetryableOnNextSubtasksBatchErr(t *testing.T) { c := testutil.NewTestDXFContext(t, 2, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetPlanNotRetryableErrSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetPlanNotRetryableErrSchedulerExt(c.MockCtrl), c.TestContext, nil) task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) require.Equal(t, proto.TaskStateReverted, task.State) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetStepTwoPlanNotRetryableErrSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetStepTwoPlanNotRetryableErrSchedulerExt(c.MockCtrl), c.TestContext, nil) task = testutil.SubmitAndWaitTask(c.Ctx, t, "key2", "", 1) require.Equal(t, proto.TaskStateReverted, task.State) } diff --git a/pkg/disttask/framework/integrationtests/framework_ha_test.go b/pkg/disttask/framework/integrationtests/framework_ha_test.go index 624c234d37998..8d33701a579ee 100644 --- a/pkg/disttask/framework/integrationtests/framework_ha_test.go +++ b/pkg/disttask/framework/integrationtests/framework_ha_test.go @@ -36,50 +36,50 @@ func submitTaskAndCheckSuccessForHA(ctx context.Context, t *testing.T, taskKey s } func TestHANodeRandomShutdown(t *testing.T) { - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/mockTiDBShutdown", "return()") c := testutil.NewDXFContextWithRandomNodes(t, 4, 15) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockHATestSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockHATestSchedulerExt(c.MockCtrl), c.TestContext, nil) // we keep [1, 10] nodes running, as we only have 10 subtask at stepOne keepCount := int(math.Min(float64(c.NodeCount()-1), float64(c.Rand.Intn(10)+1))) nodeNeedDown := c.GetRandNodeIDs(c.NodeCount() - keepCount) t.Logf("started %d nodes, and we keep %d nodes, nodes that need shutdown: %v", c.NodeCount(), keepCount, nodeNeedDown) - taskexecutor.MockTiDBDown = func(execID string, _ *proto.TaskBase) bool { - if _, ok := nodeNeedDown[execID]; ok { - c.AsyncShutdown(execID) - return true - } - return false - } + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/mockTiDBShutdown", + func(e taskexecutor.TaskExecutor, execID string, _ *proto.TaskBase) { + if _, ok := nodeNeedDown[execID]; ok { + c.AsyncShutdown(execID) + e.Cancel() + } + }, + ) submitTaskAndCheckSuccessForHA(c.Ctx, t, "😊", c.TestContext) } func TestHARandomShutdownInDifferentStep(t *testing.T) { - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/mockTiDBShutdown", "return()") c := testutil.NewDXFContextWithRandomNodes(t, 6, 15) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockHATestSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockHATestSchedulerExt(c.MockCtrl), c.TestContext, nil) // they might overlap, but will leave at least 2 nodes running nodeNeedDownAtStepOne := c.GetRandNodeIDs(c.NodeCount()/2 - 1) nodeNeedDownAtStepTwo := c.GetRandNodeIDs(c.NodeCount()/2 - 1) t.Logf("started %d nodes, shutdown nodes at step 1: %v, shutdown nodes at step 2: %v", c.NodeCount(), nodeNeedDownAtStepOne, nodeNeedDownAtStepTwo) - taskexecutor.MockTiDBDown = func(execID string, task *proto.TaskBase) bool { - var targetNodes map[string]struct{} - switch task.Step { - case proto.StepOne: - targetNodes = nodeNeedDownAtStepOne - case proto.StepTwo: - targetNodes = nodeNeedDownAtStepTwo - default: - return false - } - if _, ok := targetNodes[execID]; ok { - c.AsyncShutdown(execID) - return true - } - return false - } + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/mockTiDBShutdown", + func(e taskexecutor.TaskExecutor, execID string, task *proto.TaskBase) { + var targetNodes map[string]struct{} + switch task.Step { + case proto.StepOne: + targetNodes = nodeNeedDownAtStepOne + case proto.StepTwo: + targetNodes = nodeNeedDownAtStepTwo + default: + return + } + if _, ok := targetNodes[execID]; ok { + c.AsyncShutdown(execID) + e.Cancel() + } + }, + ) submitTaskAndCheckSuccessForHA(c.Ctx, t, "😊", c.TestContext) } @@ -92,7 +92,7 @@ func TestHAMultipleOwner(t *testing.T) { } require.Equal(t, prevCount+additionalOwnerCnt, c.NodeCount()) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockHATestSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockHATestSchedulerExt(c.MockCtrl), c.TestContext, nil) var wg util.WaitGroupWrapper for i := 0; i < 10; i++ { taskKey := fmt.Sprintf("key%d", i) diff --git a/pkg/disttask/framework/integrationtests/framework_pause_and_resume_test.go b/pkg/disttask/framework/integrationtests/framework_pause_and_resume_test.go index c07a731332704..c96e9f1653600 100644 --- a/pkg/disttask/framework/integrationtests/framework_pause_and_resume_test.go +++ b/pkg/disttask/framework/integrationtests/framework_pause_and_resume_test.go @@ -16,6 +16,7 @@ package integrationtests import ( "context" + "sync/atomic" "testing" "github.com/pingcap/failpoint" @@ -48,12 +49,20 @@ func CheckSubtasksState(ctx context.Context, t *testing.T, taskID int64, state p func TestFrameworkPauseAndResume(t *testing.T) { c := testutil.NewTestDXFContext(t, 3, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) // 1. schedule and pause one running task. - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/pauseTaskAfterRefreshTask", "2*return(true)") + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeRefreshTask", func(task *proto.Task) { + if counter.Add(1) <= 2 { + if task.State == proto.TaskStateRunning { + _, err := c.TaskMgr.PauseTask(c.Ctx, task.Key) + require.NoError(t, err) + } + } + }) task1 := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) require.Equal(t, proto.TaskStatePaused, task1.State) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/pauseTaskAfterRefreshTask")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeRefreshTask")) // 4 subtask scheduled. require.NoError(t, handle.ResumeTask(c.Ctx, "key1")) task1Base := testutil.WaitTaskDone(c.Ctx, t, task1.Key) @@ -67,10 +76,18 @@ func TestFrameworkPauseAndResume(t *testing.T) { require.Empty(t, errs) // 2. pause pending task. - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/pausePendingTask", "2*return(true)") + counter.Store(0) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeRefreshTask", func(task *proto.Task) { + if counter.Add(1) <= 2 { + if task.State == proto.TaskStatePending { + _, err := mgr.PauseTask(c.Ctx, task.Key) + require.NoError(t, err) + } + } + }) task2 := testutil.SubmitAndWaitTask(c.Ctx, t, "key2", "", 1) require.Equal(t, proto.TaskStatePaused, task2.State) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/pausePendingTask")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeRefreshTask")) // 4 subtask scheduled. require.NoError(t, handle.ResumeTask(c.Ctx, "key2")) task2Base := testutil.WaitTaskDone(c.Ctx, t, task2.Key) diff --git a/pkg/disttask/framework/integrationtests/framework_rollback_test.go b/pkg/disttask/framework/integrationtests/framework_rollback_test.go index 56baaaf353fa9..ea9aace94690d 100644 --- a/pkg/disttask/framework/integrationtests/framework_rollback_test.go +++ b/pkg/disttask/framework/integrationtests/framework_rollback_test.go @@ -15,6 +15,7 @@ package integrationtests import ( + "sync/atomic" "testing" "github.com/pingcap/tidb/pkg/disttask/framework/proto" @@ -25,8 +26,17 @@ import ( func TestFrameworkRollback(t *testing.T) { c := testutil.NewTestDXFContext(t, 2, 16, true) - testutil.RegisterRollbackTaskMeta(t, c.MockCtrl, testutil.GetMockRollbackSchedulerExt(c.MockCtrl), c.TestContext) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/cancelTaskAfterRefreshTask", "2*return(true)") + testutil.RegisterTaskTypeForRollback(t, c.MockCtrl, testutil.GetMockRollbackSchedulerExt(c.MockCtrl), c.TestContext) + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/afterRefreshTask", + func(task *proto.Task) { + if counter.Add(1) <= 2 { + if task.State == proto.TaskStateRunning { + require.NoError(t, c.TaskMgr.CancelTask(c.Ctx, task.ID)) + } + } + }, + ) task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) require.Equal(t, proto.TaskStateReverted, task.State) diff --git a/pkg/disttask/framework/integrationtests/framework_scope_test.go b/pkg/disttask/framework/integrationtests/framework_scope_test.go index 30f40c31cbf68..b2ca141555006 100644 --- a/pkg/disttask/framework/integrationtests/framework_scope_test.go +++ b/pkg/disttask/framework/integrationtests/framework_scope_test.go @@ -19,10 +19,10 @@ import ( "fmt" "slices" "strconv" + "sync/atomic" "testing" "time" - "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" @@ -65,7 +65,7 @@ func TestScopeBasic(t *testing.T) { nodeCnt := 3 c := testutil.NewTestDXFContext(t, nodeCnt, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, getMockBasicSchedulerExtForScope(c.MockCtrl, 3), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, getMockBasicSchedulerExtForScope(c.MockCtrl, 3), c.TestContext, nil) tk := testkit.NewTestKit(t, c.Store) // 1. all "" role. @@ -81,10 +81,15 @@ func TestScopeBasic(t *testing.T) { tk.MustQuery("select @@global.tidb_service_scope").Check(testkit.Rows("background")) tk.MustQuery("select @@tidb_service_scope").Check(testkit.Rows("background")) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh", "1*return()") - <-scheduler.TestRefreshedChan + ch := make(chan struct{}) + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh", func() { + if counter.Add(1) == 1 { + ch <- struct{}{} + } + }) + <-ch taskID = submitTaskAndCheckSuccessForScope(c.Ctx, t, "😊", nodeCnt, "background", c.TestContext) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh")) tk.MustQuery(`select role from mysql.dist_framework_meta where host=":4000"`).Check(testkit.Rows("background")) tk.MustQuery(`select role from mysql.dist_framework_meta where host=":4001"`).Check(testkit.Rows("")) @@ -94,10 +99,15 @@ func TestScopeBasic(t *testing.T) { // 3. 2 "background" role. tk.MustExec("update mysql.dist_framework_meta set role = \"background\" where host = \":4001\"") time.Sleep(5 * time.Second) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh", "1*return()") - <-scheduler.TestRefreshedChan + ch2 := make(chan struct{}) + var counter2 atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh", func() { + if counter2.Add(1) == 1 { + ch2 <- struct{}{} + } + }) + <-ch2 taskID = submitTaskAndCheckSuccessForScope(c.Ctx, t, "😆", nodeCnt, "background", c.TestContext) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh")) checkSubtaskOnNodes(c.Ctx, t, taskID, []string{":4000", ":4001"}) tk.MustQuery(`select role from mysql.dist_framework_meta where host=":4000"`).Check(testkit.Rows("background")) tk.MustQuery(`select role from mysql.dist_framework_meta where host=":4001"`).Check(testkit.Rows("background")) @@ -146,12 +156,17 @@ func runTargetScopeCase(t *testing.T, c *testutil.TestDXFContext, tk *testkit.Te for i := 0; i < len(testCase.nodeScopes); i++ { tk.MustExec(fmt.Sprintf("update mysql.dist_framework_meta set role = \"%s\" where host = \"%s\"", testCase.nodeScopes[i], c.GetNodeIDByIdx(i))) } - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh", "3*return()") - <-scheduler.TestRefreshedChan - <-scheduler.TestRefreshedChan - <-scheduler.TestRefreshedChan + ch := make(chan struct{}) + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh", func() { + if counter.Add(1) <= 3 { + ch <- struct{}{} + } + }) + <-ch + <-ch + <-ch taskID := submitTaskAndCheckSuccessForScope(c.Ctx, t, "task"+strconv.Itoa(idx), nodeCnt, testCase.scope, c.TestContext) - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/syncRefresh")) expected := make([]string, 0) for i, scope := range testCase.nodeScopes { if scope == testCase.scope { @@ -164,7 +179,7 @@ func runTargetScopeCase(t *testing.T, c *testutil.TestDXFContext, tk *testkit.Te func TestTargetScope(t *testing.T) { nodeCnt := 10 c := testutil.NewTestDXFContext(t, nodeCnt, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, getMockBasicSchedulerExtForScope(c.MockCtrl, nodeCnt), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, getMockBasicSchedulerExtForScope(c.MockCtrl, nodeCnt), c.TestContext, nil) tk := testkit.NewTestKit(t, c.Store) caseNum := 10 for i := 0; i < caseNum; i++ { diff --git a/pkg/disttask/framework/integrationtests/framework_test.go b/pkg/disttask/framework/integrationtests/framework_test.go index ef0b97463dcdf..ba2517528c503 100644 --- a/pkg/disttask/framework/integrationtests/framework_test.go +++ b/pkg/disttask/framework/integrationtests/framework_test.go @@ -18,21 +18,52 @@ import ( "context" "fmt" "math/rand" - "sync" + "sync/atomic" "testing" "time" + "github.com/pingcap/errors" "github.com/pingcap/failpoint" + mockexecute "github.com/pingcap/tidb/pkg/disttask/framework/mock/execute" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" + "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor" + "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/execute" "github.com/pingcap/tidb/pkg/disttask/framework/testutil" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testfailpoint" "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" ) +func registerExampleTaskWithDXFCtx(c *testutil.TestDXFContext, schedulerExt scheduler.Extension, runSubtaskFn func(ctx context.Context, subtask *proto.Subtask) error) { + registerExampleTask(c.T, c.MockCtrl, schedulerExt, c.TestContext, runSubtaskFn) +} + +func registerExampleTask(t testing.TB, ctrl *gomock.Controller, schedulerExt scheduler.Extension, testContext *testutil.TestContext, runSubtaskFn func(ctx context.Context, subtask *proto.Subtask) error) { + if runSubtaskFn == nil { + runSubtaskFn = getCommonSubtaskRunFn(testContext) + } + executorExt := testutil.GetCommonTaskExecutorExt(ctrl, func(task *proto.Task) (execute.StepExecutor, error) { + return testutil.GetCommonStepExecutor(ctrl, task.Step, runSubtaskFn), nil + }) + testutil.RegisterExampleTask(t, schedulerExt, executorExt, testutil.GetCommonCleanUpRoutine(ctrl)) +} + +func getCommonSubtaskRunFn(testCtx *testutil.TestContext) func(_ context.Context, subtask *proto.Subtask) error { + return func(_ context.Context, subtask *proto.Subtask) error { + switch subtask.Step { + case proto.StepOne, proto.StepTwo: + testCtx.CollectSubtask(subtask) + default: + panic("invalid step") + } + return nil + } +} + func submitTaskAndCheckSuccessForBasic(ctx context.Context, t *testing.T, taskKey string, testContext *testutil.TestContext) int64 { return submitTaskAndCheckSuccess(ctx, t, taskKey, "", testContext, map[proto.Step]int{ proto.StepOne: 3, @@ -53,7 +84,7 @@ func submitTaskAndCheckSuccess(ctx context.Context, t *testing.T, taskKey string func TestRandomOwnerChangeWithMultipleTasks(t *testing.T) { c := testutil.NewTestDXFContext(t, 5, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) var wg util.WaitGroupWrapper for i := 0; i < 10; i++ { taskKey := fmt.Sprintf("key%d", i) @@ -79,7 +110,7 @@ func TestFrameworkScaleInAndOut(t *testing.T) { t.Logf("seed: %d", seed) random := rand.New(rand.NewSource(seed)) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) var wg util.WaitGroupWrapper for i := 0; i < 12; i++ { taskKey := fmt.Sprintf("key%d", i) @@ -103,7 +134,7 @@ func TestFrameworkScaleInAndOut(t *testing.T) { func TestFrameworkWithQuery(t *testing.T) { c := testutil.NewTestDXFContext(t, 2, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) var wg util.WaitGroupWrapper wg.Run(func() { submitTaskAndCheckSuccessForBasic(c.Ctx, t, "key1", c.TestContext) @@ -127,39 +158,41 @@ func TestFrameworkWithQuery(t *testing.T) { func TestFrameworkCancelTask(t *testing.T) { c := testutil.NewTestDXFContext(t, 2, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/MockExecutorRunCancel", "1*return(1)") - task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) - require.Equal(t, proto.TaskStateReverted, task.State) -} - -func TestFrameworkSubTaskFailed(t *testing.T) { - c := testutil.NewTestDXFContext(t, 1, 16, true) - - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/MockExecutorRunErr", "1*return(true)") + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/afterRunSubtask", + func(e taskexecutor.TaskExecutor, _ *error) { + if counter.Add(1) == 1 { + require.NoError(t, c.TaskMgr.CancelTask(c.Ctx, e.GetTaskBase().ID)) + } + }, + ) task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) require.Equal(t, proto.TaskStateReverted, task.State) } func TestFrameworkSubTaskInitEnvFailed(t *testing.T) { c := testutil.NewTestDXFContext(t, 1, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/mockExecSubtaskInitEnvErr", "return()") + schedulerExt := testutil.GetMockBasicSchedulerExt(c.MockCtrl) + stepExec := mockexecute.NewMockStepExecutor(c.MockCtrl) + stepExec.EXPECT().Init(gomock.Any()).Return(errors.New("mockExecSubtaskInitEnvErr")).AnyTimes() + executorExt := testutil.GetCommonTaskExecutorExt(c.MockCtrl, func(task *proto.Task) (execute.StepExecutor, error) { + return stepExec, nil + }) + testutil.RegisterExampleTask(t, schedulerExt, executorExt, testutil.GetCommonCleanUpRoutine(c.MockCtrl)) task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) require.Equal(t, proto.TaskStateReverted, task.State) } func TestOwnerChangeWhenSchedule(t *testing.T) { c := testutil.NewTestDXFContext(t, 3, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - var once sync.Once + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + var counter atomic.Int32 require.NoError(t, failpoint.EnableCall("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockOwnerChange", func() { - once.Do(func() { + if counter.Add(1) == 1 { c.AsyncChangeOwner() time.Sleep(time.Second) - }) + } })) t.Cleanup(func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockOwnerChange")) @@ -168,11 +201,17 @@ func TestOwnerChangeWhenSchedule(t *testing.T) { } func TestGC(t *testing.T) { - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/storage/subtaskHistoryKeepSeconds", "return(1)") - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/historySubtaskTableGcInterval", "return(1)") + ch := make(chan struct{}) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/storage/subtaskHistoryKeepSeconds", func(interval *int) { + *interval = 1 + }) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/historySubtaskTableGcInterval", func(interval *time.Duration) { + *interval = 1 * time.Second + <-ch + }) c := testutil.NewTestDXFContext(t, 3, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) submitTaskAndCheckSuccessForBasic(c.Ctx, t, "😊", c.TestContext) @@ -188,7 +227,7 @@ func TestGC(t *testing.T) { return historySubTasksCnt == 4 }, 10*time.Second, 500*time.Millisecond) - scheduler.WaitTaskFinished <- struct{}{} + ch <- struct{}{} require.Eventually(t, func() bool { historySubTasksCnt, err := testutil.GetSubtasksFromHistory(c.Ctx, mgr) @@ -199,22 +238,36 @@ func TestGC(t *testing.T) { }, 10*time.Second, 500*time.Millisecond) } -func TestFrameworkSubtaskFinishedCancel(t *testing.T) { +func TestFrameworkRunSubtaskCancelOrFailed(t *testing.T) { c := testutil.NewTestDXFContext(t, 3, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/MockSubtaskFinishedCancel", "1*return(true)") - task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) - require.Equal(t, proto.TaskStateReverted, task.State) -} - -func TestFrameworkRunSubtaskCancel(t *testing.T) { - c := testutil.NewTestDXFContext(t, 3, 16, true) + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + t.Run("meet cancel on run subtask", func(t *testing.T) { + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/afterRunSubtask", + func(e taskexecutor.TaskExecutor, errP *error) { + if counter.Add(1) == 1 { + e.CancelRunningSubtask() + *errP = taskexecutor.ErrCancelSubtask + } + }, + ) + task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) + require.Equal(t, proto.TaskStateReverted, task.State) + }) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/MockRunSubtaskCancel", "1*return(true)") - task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) - require.Equal(t, proto.TaskStateReverted, task.State) + t.Run("meet some error on run subtask", func(t *testing.T) { + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/afterRunSubtask", + func(_ taskexecutor.TaskExecutor, errP *error) { + if counter.Add(1) == 1 { + *errP = errors.New("MockExecutorRunErr") + } + }, + ) + task := testutil.SubmitAndWaitTask(c.Ctx, t, "key2", "", 1) + require.Equal(t, proto.TaskStateReverted, task.State) + }) } func TestFrameworkCleanUpRoutine(t *testing.T) { @@ -224,12 +277,15 @@ func TestFrameworkCleanUpRoutine(t *testing.T) { }() scheduler.DefaultCleanUpInterval = 500 * time.Millisecond c := testutil.NewTestDXFContext(t, 3, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", "return()") + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + ch := make(chan struct{}, 1) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", func() { + ch <- struct{}{} + }) // normal submitTaskAndCheckSuccessForBasic(c.Ctx, t, "key1", c.TestContext) - <-scheduler.WaitCleanUpFinished + <-ch mgr, err := storage.GetTaskManager() require.NoError(t, err) tasks, err := mgr.GetTaskByKeyWithHistory(c.Ctx, "key1") @@ -242,7 +298,7 @@ func TestFrameworkCleanUpRoutine(t *testing.T) { // transfer err testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockTransferErr", "1*return()") submitTaskAndCheckSuccessForBasic(c.Ctx, t, "key2", c.TestContext) - <-scheduler.WaitCleanUpFinished + <-ch mgr, err = storage.GetTaskManager() require.NoError(t, err) tasks, err = mgr.GetTaskByKeyWithHistory(c.Ctx, "key1") @@ -256,8 +312,13 @@ func TestFrameworkCleanUpRoutine(t *testing.T) { func TestTaskCancelledBeforeUpdateTask(t *testing.T) { c := testutil.NewTestDXFContext(t, 1, 16, true) - testutil.RegisterTaskMeta(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/cancelBeforeUpdateTask", "1*return(true)") + registerExampleTask(t, c.MockCtrl, testutil.GetMockBasicSchedulerExt(c.MockCtrl), c.TestContext, nil) + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/cancelBeforeUpdateTask", func(taskID int64) { + if counter.Add(1) == 1 { + require.NoError(t, c.TaskMgr.CancelTask(c.Ctx, taskID)) + } + }) task := testutil.SubmitAndWaitTask(c.Ctx, t, "key1", "", 1) require.Equal(t, proto.TaskStateReverted, task.State) } diff --git a/pkg/disttask/framework/integrationtests/modify_test.go b/pkg/disttask/framework/integrationtests/modify_test.go new file mode 100644 index 0000000000000..32944d0821a8b --- /dev/null +++ b/pkg/disttask/framework/integrationtests/modify_test.go @@ -0,0 +1,224 @@ +// Copyright 2024 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 integrationtests + +import ( + "context" + "sync" + "testing" + "time" + + "github.com/pingcap/tidb/pkg/disttask/framework/handle" + "github.com/pingcap/tidb/pkg/disttask/framework/proto" + "github.com/pingcap/tidb/pkg/disttask/framework/testutil" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/stretchr/testify/require" +) + +func TestModifyTaskConcurrency(t *testing.T) { + c := testutil.NewTestDXFContext(t, 1, 16, true) + schedulerExt := testutil.GetMockSchedulerExt(c.MockCtrl, testutil.SchedulerInfo{ + AllErrorRetryable: true, + StepInfos: []testutil.StepInfo{ + {Step: proto.StepOne, SubtaskCnt: 1}, + {Step: proto.StepTwo, SubtaskCnt: 1}, + }, + }) + subtaskCh := make(chan struct{}) + registerExampleTask(t, c.MockCtrl, schedulerExt, c.TestContext, + func(ctx context.Context, subtask *proto.Subtask) error { + select { + case <-subtaskCh: + case <-ctx.Done(): + return ctx.Err() + } + return nil + }, + ) + + t.Run("modify pending task concurrency", func(t *testing.T) { + var once sync.Once + modifySyncCh := make(chan struct{}) + var theTask *proto.Task + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeGetSchedulableTasks", func() { + once.Do(func() { + task, err := handle.SubmitTask(c.Ctx, "k1", proto.TaskTypeExample, 3, "", nil) + require.NoError(t, err) + require.Equal(t, 3, task.Concurrency) + require.NoError(t, c.TaskMgr.ModifyTaskByID(c.Ctx, task.ID, &proto.ModifyParam{ + PrevState: proto.TaskStatePending, + Modifications: []proto.Modification{ + {Type: proto.ModifyConcurrency, To: 7}, + }, + })) + theTask = task + gotTask, err := c.TaskMgr.GetTaskBaseByID(c.Ctx, theTask.ID) + require.NoError(t, err) + require.Equal(t, proto.TaskStateModifying, gotTask.State) + require.Equal(t, 3, gotTask.Concurrency) + <-modifySyncCh + }) + }) + modifySyncCh <- struct{}{} + // finish subtasks + subtaskCh <- struct{}{} + subtaskCh <- struct{}{} + task2Base := testutil.WaitTaskDone(c.Ctx, t, theTask.Key) + require.Equal(t, proto.TaskStateSucceed, task2Base.State) + checkSubtaskConcurrency(t, c, theTask.ID, map[proto.Step]int{ + proto.StepOne: 7, + proto.StepTwo: 7, + }) + }) + + t.Run("modify running task concurrency at step two", func(t *testing.T) { + var once sync.Once + modifySyncCh := make(chan struct{}) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeRefreshTask", func(task *proto.Task) { + if task.State != proto.TaskStateRunning && task.Step != proto.StepTwo { + return + } + once.Do(func() { + require.NoError(t, c.TaskMgr.ModifyTaskByID(c.Ctx, task.ID, &proto.ModifyParam{ + PrevState: proto.TaskStateRunning, + Modifications: []proto.Modification{ + {Type: proto.ModifyConcurrency, To: 7}, + }, + })) + <-modifySyncCh + }) + }) + task, err := handle.SubmitTask(c.Ctx, "k2", proto.TaskTypeExample, 3, "", nil) + require.NoError(t, err) + require.Equal(t, 3, task.Concurrency) + // finish StepOne + subtaskCh <- struct{}{} + // wait task move to 'modifying' state + modifySyncCh <- struct{}{} + // wait task move back to 'running' state + require.Eventually(t, func() bool { + gotTask, err2 := c.TaskMgr.GetTaskByID(c.Ctx, task.ID) + require.NoError(t, err2) + return gotTask.State == proto.TaskStateRunning + }, 10*time.Second, 100*time.Millisecond) + // finish StepTwo + subtaskCh <- struct{}{} + task2Base := testutil.WaitTaskDone(c.Ctx, t, task.Key) + require.Equal(t, proto.TaskStateSucceed, task2Base.State) + checkSubtaskConcurrency(t, c, task.ID, map[proto.Step]int{ + proto.StepOne: 3, + proto.StepTwo: 7, + }) + }) + + t.Run("modify paused task concurrency", func(t *testing.T) { + var once sync.Once + syncCh := make(chan struct{}) + var theTask *proto.Task + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeGetSchedulableTasks", func() { + once.Do(func() { + task, err := handle.SubmitTask(c.Ctx, "k3", proto.TaskTypeExample, 3, "", nil) + require.NoError(t, err) + require.Equal(t, 3, task.Concurrency) + found, err := c.TaskMgr.PauseTask(c.Ctx, task.Key) + require.NoError(t, err) + require.True(t, found) + theTask = task + <-syncCh + }) + }) + syncCh <- struct{}{} + taskBase := testutil.WaitTaskDoneOrPaused(c.Ctx, t, theTask.Key) + require.Equal(t, proto.TaskStatePaused, taskBase.State) + require.NoError(t, c.TaskMgr.ModifyTaskByID(c.Ctx, theTask.ID, &proto.ModifyParam{ + PrevState: proto.TaskStatePaused, + Modifications: []proto.Modification{ + {Type: proto.ModifyConcurrency, To: 7}, + }, + })) + taskBase = testutil.WaitTaskDoneOrPaused(c.Ctx, t, theTask.Key) + require.Equal(t, proto.TaskStatePaused, taskBase.State) + found, err := c.TaskMgr.ResumeTask(c.Ctx, theTask.Key) + require.NoError(t, err) + require.True(t, found) + // finish subtasks + subtaskCh <- struct{}{} + subtaskCh <- struct{}{} + task2Base := testutil.WaitTaskDone(c.Ctx, t, theTask.Key) + require.Equal(t, proto.TaskStateSucceed, task2Base.State) + checkSubtaskConcurrency(t, c, theTask.ID, map[proto.Step]int{ + proto.StepOne: 7, + proto.StepTwo: 7, + }) + }) + + t.Run("modify pending task concurrency, but other owner already done it", func(t *testing.T) { + var once sync.Once + modifySyncCh := make(chan struct{}) + var theTask *proto.Task + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/beforeGetSchedulableTasks", func() { + once.Do(func() { + task, err := handle.SubmitTask(c.Ctx, "k4", proto.TaskTypeExample, 3, "", nil) + require.NoError(t, err) + require.Equal(t, 3, task.Concurrency) + require.NoError(t, c.TaskMgr.ModifyTaskByID(c.Ctx, task.ID, &proto.ModifyParam{ + PrevState: proto.TaskStatePending, + Modifications: []proto.Modification{ + {Type: proto.ModifyConcurrency, To: 7}, + }, + })) + theTask = task + gotTask, err := c.TaskMgr.GetTaskBaseByID(c.Ctx, theTask.ID) + require.NoError(t, err) + require.Equal(t, proto.TaskStateModifying, gotTask.State) + require.Equal(t, 3, gotTask.Concurrency) + }) + }) + var onceForRefresh sync.Once + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/afterRefreshTask", + func(task *proto.Task) { + onceForRefresh.Do(func() { + require.Equal(t, proto.TaskStateModifying, task.State) + taskClone := *task + taskClone.Concurrency = 7 + require.NoError(t, c.TaskMgr.ModifiedTask(c.Ctx, &taskClone)) + gotTask, err := c.TaskMgr.GetTaskBaseByID(c.Ctx, task.ID) + require.NoError(t, err) + require.Equal(t, proto.TaskStatePending, gotTask.State) + <-modifySyncCh + }) + }, + ) + modifySyncCh <- struct{}{} + // finish subtasks + subtaskCh <- struct{}{} + subtaskCh <- struct{}{} + task2Base := testutil.WaitTaskDone(c.Ctx, t, theTask.Key) + require.Equal(t, proto.TaskStateSucceed, task2Base.State) + checkSubtaskConcurrency(t, c, theTask.ID, map[proto.Step]int{ + proto.StepOne: 7, + proto.StepTwo: 7, + }) + }) +} + +func checkSubtaskConcurrency(t *testing.T, c *testutil.TestDXFContext, taskID int64, expectedStepCon map[proto.Step]int) { + for step, con := range expectedStepCon { + subtasks, err := c.TaskMgr.GetSubtasksWithHistory(c.Ctx, taskID, step) + require.NoError(t, err) + require.Len(t, subtasks, 1) + require.Equal(t, con, subtasks[0].Concurrency) + } +} diff --git a/pkg/disttask/framework/integrationtests/resource_control_test.go b/pkg/disttask/framework/integrationtests/resource_control_test.go index 4a419cc4dd912..d14130cf6d765 100644 --- a/pkg/disttask/framework/integrationtests/resource_control_test.go +++ b/pkg/disttask/framework/integrationtests/resource_control_test.go @@ -80,7 +80,7 @@ func (c *resourceCtrlCaseContext) init(subtaskCntMap map[int64]map[proto.Step]in ).AnyTimes() schedulerExt.EXPECT().OnDone(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - testutil.RegisterTaskMetaWithDXFCtx(c.TestDXFContext, schedulerExt, func(ctx context.Context, subtask *proto.Subtask) error { + registerExampleTaskWithDXFCtx(c.TestDXFContext, schedulerExt, func(ctx context.Context, subtask *proto.Subtask) error { ch := c.enterSubtask(subtask) defer c.leaveSubtask(subtask) select { diff --git a/pkg/disttask/framework/mock/execute/execute_mock.go b/pkg/disttask/framework/mock/execute/execute_mock.go index edd5af519dad1..6a21f82a08574 100644 --- a/pkg/disttask/framework/mock/execute/execute_mock.go +++ b/pkg/disttask/framework/mock/execute/execute_mock.go @@ -75,32 +75,32 @@ func (mr *MockStepExecutorMockRecorder) GetResource() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResource", reflect.TypeOf((*MockStepExecutor)(nil).GetResource)) } -// Init mocks base method. -func (m *MockStepExecutor) Init(arg0 context.Context) error { +// GetStep mocks base method. +func (m *MockStepExecutor) GetStep() proto.Step { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Init", arg0) - ret0, _ := ret[0].(error) + ret := m.ctrl.Call(m, "GetStep") + ret0, _ := ret[0].(proto.Step) return ret0 } -// Init indicates an expected call of Init. -func (mr *MockStepExecutorMockRecorder) Init(arg0 any) *gomock.Call { +// GetStep indicates an expected call of GetStep. +func (mr *MockStepExecutorMockRecorder) GetStep() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Init", reflect.TypeOf((*MockStepExecutor)(nil).Init), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStep", reflect.TypeOf((*MockStepExecutor)(nil).GetStep)) } -// OnFinished mocks base method. -func (m *MockStepExecutor) OnFinished(arg0 context.Context, arg1 *proto.Subtask) error { +// Init mocks base method. +func (m *MockStepExecutor) Init(arg0 context.Context) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "OnFinished", arg0, arg1) + ret := m.ctrl.Call(m, "Init", arg0) ret0, _ := ret[0].(error) return ret0 } -// OnFinished indicates an expected call of OnFinished. -func (mr *MockStepExecutorMockRecorder) OnFinished(arg0, arg1 any) *gomock.Call { +// Init indicates an expected call of Init. +func (mr *MockStepExecutorMockRecorder) Init(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OnFinished", reflect.TypeOf((*MockStepExecutor)(nil).OnFinished), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Init", reflect.TypeOf((*MockStepExecutor)(nil).Init), arg0) } // RealtimeSummary mocks base method. diff --git a/pkg/disttask/framework/mock/scheduler_mock.go b/pkg/disttask/framework/mock/scheduler_mock.go index 313a87ff121b7..5d614260d96e2 100644 --- a/pkg/disttask/framework/mock/scheduler_mock.go +++ b/pkg/disttask/framework/mock/scheduler_mock.go @@ -479,6 +479,20 @@ func (mr *MockTaskManagerMockRecorder) GetUsedSlotsOnNodes(arg0 any) *gomock.Cal return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsedSlotsOnNodes", reflect.TypeOf((*MockTaskManager)(nil).GetUsedSlotsOnNodes), arg0) } +// ModifiedTask mocks base method. +func (m *MockTaskManager) ModifiedTask(arg0 context.Context, arg1 *proto.Task) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ModifiedTask", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// ModifiedTask indicates an expected call of ModifiedTask. +func (mr *MockTaskManagerMockRecorder) ModifiedTask(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ModifiedTask", reflect.TypeOf((*MockTaskManager)(nil).ModifiedTask), arg0, arg1) +} + // PauseTask mocks base method. func (m *MockTaskManager) PauseTask(arg0 context.Context, arg1 string) (bool, error) { m.ctrl.T.Helper() diff --git a/pkg/disttask/framework/mock/task_executor_mock.go b/pkg/disttask/framework/mock/task_executor_mock.go index 2ecd10ab0472a..7f171e8535367 100644 --- a/pkg/disttask/framework/mock/task_executor_mock.go +++ b/pkg/disttask/framework/mock/task_executor_mock.go @@ -1,9 +1,9 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor (interfaces: TaskTable,Pool,TaskExecutor,Extension) +// Source: github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor (interfaces: TaskTable,TaskExecutor,Extension) // // Generated by this command: // -// mockgen -package mock github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor TaskTable,Pool,TaskExecutor,Extension +// mockgen -package mock github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor TaskTable,TaskExecutor,Extension // // Package mock is a generated GoMock package. @@ -194,26 +194,6 @@ func (mr *MockTaskTableMockRecorder) GetTasksInStates(arg0 any, arg1 ...any) *go return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTasksInStates", reflect.TypeOf((*MockTaskTable)(nil).GetTasksInStates), varargs...) } -// HasSubtasksInStates mocks base method. -func (m *MockTaskTable) HasSubtasksInStates(arg0 context.Context, arg1 string, arg2 int64, arg3 proto.Step, arg4 ...proto.SubtaskState) (bool, error) { - m.ctrl.T.Helper() - varargs := []any{arg0, arg1, arg2, arg3} - for _, a := range arg4 { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "HasSubtasksInStates", varargs...) - ret0, _ := ret[0].(bool) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// HasSubtasksInStates indicates an expected call of HasSubtasksInStates. -func (mr *MockTaskTableMockRecorder) HasSubtasksInStates(arg0, arg1, arg2, arg3 any, arg4 ...any) *gomock.Call { - mr.mock.ctrl.T.Helper() - varargs := append([]any{arg0, arg1, arg2, arg3}, arg4...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasSubtasksInStates", reflect.TypeOf((*MockTaskTable)(nil).HasSubtasksInStates), varargs...) -} - // InitMeta mocks base method. func (m *MockTaskTable) InitMeta(arg0 context.Context, arg1, arg2 string) error { m.ctrl.T.Helper() @@ -298,74 +278,6 @@ func (mr *MockTaskTableMockRecorder) UpdateSubtaskStateAndError(arg0, arg1, arg2 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSubtaskStateAndError", reflect.TypeOf((*MockTaskTable)(nil).UpdateSubtaskStateAndError), arg0, arg1, arg2, arg3, arg4) } -// MockPool is a mock of Pool interface. -type MockPool struct { - ctrl *gomock.Controller - recorder *MockPoolMockRecorder -} - -// MockPoolMockRecorder is the mock recorder for MockPool. -type MockPoolMockRecorder struct { - mock *MockPool -} - -// NewMockPool creates a new mock instance. -func NewMockPool(ctrl *gomock.Controller) *MockPool { - mock := &MockPool{ctrl: ctrl} - mock.recorder = &MockPoolMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockPool) EXPECT() *MockPoolMockRecorder { - return m.recorder -} - -// ISGOMOCK indicates that this struct is a gomock mock. -func (m *MockPool) ISGOMOCK() struct{} { - return struct{}{} -} - -// ReleaseAndWait mocks base method. -func (m *MockPool) ReleaseAndWait() { - m.ctrl.T.Helper() - m.ctrl.Call(m, "ReleaseAndWait") -} - -// ReleaseAndWait indicates an expected call of ReleaseAndWait. -func (mr *MockPoolMockRecorder) ReleaseAndWait() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReleaseAndWait", reflect.TypeOf((*MockPool)(nil).ReleaseAndWait)) -} - -// Run mocks base method. -func (m *MockPool) Run(arg0 func()) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Run", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// Run indicates an expected call of Run. -func (mr *MockPoolMockRecorder) Run(arg0 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Run", reflect.TypeOf((*MockPool)(nil).Run), arg0) -} - -// RunWithConcurrency mocks base method. -func (m *MockPool) RunWithConcurrency(arg0 chan func(), arg1 uint32) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RunWithConcurrency", arg0, arg1) - ret0, _ := ret[0].(error) - return ret0 -} - -// RunWithConcurrency indicates an expected call of RunWithConcurrency. -func (mr *MockPoolMockRecorder) RunWithConcurrency(arg0, arg1 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunWithConcurrency", reflect.TypeOf((*MockPool)(nil).RunWithConcurrency), arg0, arg1) -} - // MockTaskExecutor is a mock of TaskExecutor interface. type MockTaskExecutor struct { ctrl *gomock.Controller diff --git a/pkg/disttask/framework/proto/BUILD.bazel b/pkg/disttask/framework/proto/BUILD.bazel index 3c17cc47b5f20..fe35478678d68 100644 --- a/pkg/disttask/framework/proto/BUILD.bazel +++ b/pkg/disttask/framework/proto/BUILD.bazel @@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "proto", srcs = [ + "modify.go", "node.go", "step.go", "subtask.go", diff --git a/pkg/disttask/framework/proto/modify.go b/pkg/disttask/framework/proto/modify.go new file mode 100644 index 0000000000000..d81ab62d9f32c --- /dev/null +++ b/pkg/disttask/framework/proto/modify.go @@ -0,0 +1,52 @@ +// Copyright 2024 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 proto + +import "fmt" + +// ModificationType is the type of task modification. +type ModificationType string + +// String implements fmt.Stringer interface. +func (t ModificationType) String() string { + return string(t) +} + +const ( + // ModifyConcurrency is the type for modifying task concurrency. + ModifyConcurrency ModificationType = "modify_concurrency" +) + +// ModifyParam is the parameter for task modification. +type ModifyParam struct { + PrevState TaskState `json:"prev_state"` + Modifications []Modification `json:"modifications"` +} + +// String implements fmt.Stringer interface. +func (p *ModifyParam) String() string { + return fmt.Sprintf("{prev_state: %s, modifications: %v}", p.PrevState, p.Modifications) +} + +// Modification is one modification for task. +type Modification struct { + Type ModificationType `json:"type"` + To int64 `json:"to"` +} + +// String implements fmt.Stringer interface. +func (m Modification) String() string { + return fmt.Sprintf("{type: %s, to: %d}", m.Type, m.To) +} diff --git a/pkg/disttask/framework/proto/step.go b/pkg/disttask/framework/proto/step.go index d045f71423f99..8f41c686fc2dc 100644 --- a/pkg/disttask/framework/proto/step.go +++ b/pkg/disttask/framework/proto/step.go @@ -47,10 +47,11 @@ func Step2Str(t TaskType, s Step) string { return fmt.Sprintf("unknown type %s", t) } -// Steps of example task type, they can either have 1 or 2 steps. +// Steps of example task type. const ( - StepOne Step = 1 - StepTwo Step = 2 + StepOne Step = 1 + StepTwo Step = 2 + StepThree Step = 3 ) func exampleStep2Str(s Step) string { @@ -59,6 +60,8 @@ func exampleStep2Str(s Step) string { return "one" case StepTwo: return "two" + case StepThree: + return "three" default: return fmt.Sprintf("unknown step %d", s) } diff --git a/pkg/disttask/framework/proto/task.go b/pkg/disttask/framework/proto/task.go index c9378d42c7dd9..b3ca2c7d43427 100644 --- a/pkg/disttask/framework/proto/task.go +++ b/pkg/disttask/framework/proto/task.go @@ -24,14 +24,13 @@ import ( // The `failed` state is used to mean the framework cannot run the task, such as // invalid task type, scheduler init error(fatal), etc. // -// ┌────────┐ -// ┌───────────│resuming│◄────────┐ -// │ └────────┘ │ -// ┌──────┐ │ ┌───────┐ ┌──┴───┐ -// │failed│ │ ┌────────►│pausing├──────►│paused│ -// └──────┘ │ │ └───────┘ └──────┘ -// ▲ ▼ │ -// ┌──┴────┐ ┌───┴───┐ ┌────────┐ +// normal execution state transition: +// +// ┌──────┐ +// │failed│ +// └──────┘ +// ▲ +// ┌──┴────┐ ┌───────┐ ┌────────┐ // │pending├────►│running├────►│succeed │ // └──┬────┘ └──┬┬───┘ └────────┘ // │ ││ ┌─────────┐ ┌────────┐ @@ -40,6 +39,32 @@ import ( // │ ┌──────────┐ ▲ // └─────────►│cancelling├────┘ // └──────────┘ +// +// pause/resume state transition: +// as we don't know the state of the task before `paused`, so the state after +// `resuming` is always `running`. +// +// ┌───────┐ +// │pending├──┐ +// └───────┘ │ ┌───────┐ ┌──────┐ +// ├────►│pausing├──────►│paused│ +// ┌───────┐ │ └───────┘ └───┬──┘ +// │running├──┘ │ +// └───▲───┘ ┌────────┐ │ +// └────────────┤resuming│◄─────────┘ +// └────────┘ +// +// modifying state transition: +// +// ┌───────┐ +// │pending├──┐ +// └───────┘ │ +// ┌───────┐ │ ┌─────────┐ +// │running├──┼────►│modifying├────► original state +// └───────┘ │ └─────────┘ +// ┌───────┐ │ +// │paused ├──┘ +// └───────┘ const ( TaskStatePending TaskState = "pending" TaskStateRunning TaskState = "running" @@ -51,6 +76,7 @@ const ( TaskStatePausing TaskState = "pausing" TaskStatePaused TaskState = "paused" TaskStateResuming TaskState = "resuming" + TaskStateModifying TaskState = "modifying" ) type ( @@ -68,6 +94,11 @@ func (s TaskState) String() string { return string(s) } +// CanMoveToModifying checks if current state can move to 'modifying' state. +func (s TaskState) CanMoveToModifying() bool { + return s == TaskStatePending || s == TaskStateRunning || s == TaskStatePaused +} + const ( // TaskIDLabelName is the label name of task id. TaskIDLabelName = "task_id" @@ -154,8 +185,10 @@ type Task struct { // changed in below case, and framework will update the task meta in the storage. // - task switches to next step in Scheduler.OnNextSubtasksBatch // - on task cleanup, we might do some redaction on the meta. - Meta []byte - Error error + // - on task 'modifying', params inside the meta can be changed. + Meta []byte + Error error + ModifyParam ModifyParam } var ( diff --git a/pkg/disttask/framework/proto/type.go b/pkg/disttask/framework/proto/type.go index b3283dc74947b..c8137da4db34d 100644 --- a/pkg/disttask/framework/proto/type.go +++ b/pkg/disttask/framework/proto/type.go @@ -15,7 +15,7 @@ package proto const ( - // TaskTypeExample is TaskType of Example. + // TaskTypeExample is TaskType of Example, it's for test. TaskTypeExample TaskType = "Example" // ImportInto is TaskType of ImportInto. ImportInto TaskType = "ImportInto" diff --git a/pkg/disttask/framework/scheduler/BUILD.bazel b/pkg/disttask/framework/scheduler/BUILD.bazel index c9a34712b4860..69e9648967d7c 100644 --- a/pkg/disttask/framework/scheduler/BUILD.bazel +++ b/pkg/disttask/framework/scheduler/BUILD.bazel @@ -34,7 +34,6 @@ go_library( "//pkg/util/syncutil", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", - "@com_github_pingcap_log//:log", "@com_github_prometheus_client_golang//prometheus", "@org_uber_go_mock//gomock", "@org_uber_go_zap//:zap", diff --git a/pkg/disttask/framework/scheduler/balancer.go b/pkg/disttask/framework/scheduler/balancer.go index 29dda4ffb1a99..083c0f07315a1 100644 --- a/pkg/disttask/framework/scheduler/balancer.go +++ b/pkg/disttask/framework/scheduler/balancer.go @@ -19,10 +19,10 @@ import ( "time" "github.com/pingcap/errors" - "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/disttask/framework/proto" llog "github.com/pingcap/tidb/pkg/lightning/log" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) @@ -48,9 +48,9 @@ type balancer struct { } func newBalancer(param Param) *balancer { - logger := log.L() + logger := logutil.ErrVerboseLogger() if intest.InTest { - logger = log.L().With(zap.String("server-id", param.serverID)) + logger = logger.With(zap.String("server-id", param.serverID)) } return &balancer{ Param: param, diff --git a/pkg/disttask/framework/scheduler/interface.go b/pkg/disttask/framework/scheduler/interface.go index 23a3c1f1d9758..f48052f20caf3 100644 --- a/pkg/disttask/framework/scheduler/interface.go +++ b/pkg/disttask/framework/scheduler/interface.go @@ -49,10 +49,14 @@ type TaskManager interface { RevertedTask(ctx context.Context, taskID int64) error // PauseTask updated task state to pausing. PauseTask(ctx context.Context, taskKey string) (bool, error) - // PausedTask updated task state to paused. + // PausedTask updated task state to 'paused'. PausedTask(ctx context.Context, taskID int64) error // ResumedTask updated task state from resuming to running. ResumedTask(ctx context.Context, taskID int64) error + // ModifiedTask tries to update task concurrency and meta, and update state + // back to prev-state, if success, it will also update concurrency of all + // active subtasks. + ModifiedTask(ctx context.Context, task *proto.Task) error // SucceedTask updates a task to success state. SucceedTask(ctx context.Context, taskID int64) error // SwitchTaskStep switches the task to the next step and add subtasks in one diff --git a/pkg/disttask/framework/scheduler/nodes.go b/pkg/disttask/framework/scheduler/nodes.go index 7a8dc8cb401c4..d847b5e26163b 100644 --- a/pkg/disttask/framework/scheduler/nodes.go +++ b/pkg/disttask/framework/scheduler/nodes.go @@ -20,10 +20,10 @@ import ( "time" "github.com/pingcap/failpoint" - "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/disttask/framework/proto" llog "github.com/pingcap/tidb/pkg/lightning/log" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) @@ -44,9 +44,9 @@ type NodeManager struct { } func newNodeManager(serverID string) *NodeManager { - logger := log.L() + logger := logutil.ErrVerboseLogger() if intest.InTest { - logger = log.L().With(zap.String("server-id", serverID)) + logger = logger.With(zap.String("server-id", serverID)) } nm := &NodeManager{ logger: logger, @@ -130,9 +130,6 @@ func (nm *NodeManager) refreshNodesLoop(ctx context.Context, taskMgr TaskManager } } -// TestRefreshedChan is used to sync the test. -var TestRefreshedChan = make(chan struct{}) - // refreshNodes maintains the nodes managed by the framework. func (nm *NodeManager) refreshNodes(ctx context.Context, taskMgr TaskManager, slotMgr *SlotManager) { newNodes, err := taskMgr.GetAllNodes(ctx) @@ -145,14 +142,13 @@ func (nm *NodeManager) refreshNodes(ctx context.Context, taskMgr TaskManager, sl for _, node := range newNodes { if node.CPUCount > 0 { cpuCount = node.CPUCount + break } } slotMgr.updateCapacity(cpuCount) nm.nodes.Store(&newNodes) - failpoint.Inject("syncRefresh", func() { - TestRefreshedChan <- struct{}{} - }) + failpoint.InjectCall("syncRefresh") } // GetNodes returns the nodes managed by the framework. diff --git a/pkg/disttask/framework/scheduler/scheduler.go b/pkg/disttask/framework/scheduler/scheduler.go index 476339645762d..11171b7253459 100644 --- a/pkg/disttask/framework/scheduler/scheduler.go +++ b/pkg/disttask/framework/scheduler/scheduler.go @@ -23,13 +23,11 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" - "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/disttask/framework/handle" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/kv" - "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/backoff" disttaskutil "github.com/pingcap/tidb/pkg/util/disttask" @@ -69,6 +67,7 @@ type Scheduler interface { // Close closes the scheduler, should be called if Init returns nil. Close() // GetTask returns the task that the scheduler is managing. + // the task is for read only, it might be accessed by multiple goroutines GetTask() *proto.Task Extension } @@ -92,7 +91,9 @@ type BaseScheduler struct { // NewBaseScheduler creates a new BaseScheduler. func NewBaseScheduler(ctx context.Context, task *proto.Task, param Param) *BaseScheduler { - logger := log.L().With(zap.Int64("task-id", task.ID), zap.Stringer("task-type", task.Type), zap.Bool("allocated-slots", param.allocatedSlots)) + logger := logutil.ErrVerboseLogger().With(zap.Int64("task-id", task.ID), + zap.Stringer("task-type", task.Type), + zap.Bool("allocated-slots", param.allocatedSlots)) if intest.InTest { logger = logger.With(zap.String("server-id", param.serverID)) } @@ -128,6 +129,12 @@ func (s *BaseScheduler) GetTask() *proto.Task { return s.task.Load() } +// getTaskClone returns a clone of the task. +func (s *BaseScheduler) getTaskClone() *proto.Task { + clone := *s.GetTask() + return &clone +} + // refreshTaskIfNeeded fetch task state from tidb_global_task table. func (s *BaseScheduler) refreshTaskIfNeeded() error { task := s.GetTask() @@ -137,7 +144,7 @@ func (s *BaseScheduler) refreshTaskIfNeeded() error { if err != nil { return err } - // state might be changed by user to pausing/resuming/cancelling, or + // state might be changed by user to pausing/resuming/cancelling/modifying, or // in case of network partition, state/step/meta might be changed by other scheduler, // in both cases we refresh the whole task object. if newTaskBase.State != task.State || newTaskBase.Step != task.Step { @@ -165,119 +172,110 @@ func (s *BaseScheduler) scheduleTask() { s.logger.Info("schedule task exits") return case <-ticker.C: - err := s.refreshTaskIfNeeded() - if err != nil { - if errors.Cause(err) == storage.ErrTaskNotFound { - // this can happen when task is reverted/succeed, but before - // we reach here, cleanup routine move it to history. - return - } - s.logger.Error("refresh task failed", zap.Error(err)) - continue + } + + failpoint.InjectCall("beforeRefreshTask", s.GetTask()) + err := s.refreshTaskIfNeeded() + if err != nil { + if errors.Cause(err) == storage.ErrTaskNotFound { + // this can happen when task is reverted/succeed, but before + // we reach here, cleanup routine move it to history. + s.logger.Debug("task not found, might be reverted/succeed/failed") + return } - task := *s.GetTask() - // TODO: refine failpoints below. - failpoint.Inject("exitScheduler", func() { - failpoint.Return() - }) - failpoint.Inject("cancelTaskAfterRefreshTask", func(val failpoint.Value) { - if val.(bool) && task.State == proto.TaskStateRunning { - err := s.taskMgr.CancelTask(s.ctx, task.ID) - if err != nil { - s.logger.Error("cancel task failed", zap.Error(err)) - } - } - }) - - failpoint.Inject("pausePendingTask", func(val failpoint.Value) { - if val.(bool) && task.State == proto.TaskStatePending { - _, err := s.taskMgr.PauseTask(s.ctx, task.Key) - if err != nil { - s.logger.Error("pause task failed", zap.Error(err)) - } - task.State = proto.TaskStatePausing - s.task.Store(&task) - } - }) - - failpoint.Inject("pauseTaskAfterRefreshTask", func(val failpoint.Value) { - if val.(bool) && task.State == proto.TaskStateRunning { - _, err := s.taskMgr.PauseTask(s.ctx, task.Key) - if err != nil { - s.logger.Error("pause task failed", zap.Error(err)) - } - task.State = proto.TaskStatePausing - s.task.Store(&task) - } - }) - - switch task.State { - case proto.TaskStateCancelling: - err = s.onCancelling() - case proto.TaskStatePausing: - err = s.onPausing() - case proto.TaskStatePaused: - err = s.onPaused() - // close the scheduler. - if err == nil { - return - } - case proto.TaskStateResuming: - // Case with 2 nodes. - // Here is the timeline - // 1. task in pausing state. - // 2. node1 and node2 start schedulers with task in pausing state without allocatedSlots. - // 3. node1's scheduler transfer the node from pausing to paused state. - // 4. resume the task. - // 5. node2 scheduler call refreshTask and get task with resuming state. - if !s.allocatedSlots { - s.logger.Info("scheduler exit since not allocated slots", zap.Stringer("state", task.State)) - return - } - err = s.onResuming() - case proto.TaskStateReverting: - err = s.onReverting() - case proto.TaskStatePending: - err = s.onPending() - case proto.TaskStateRunning: - // Case with 2 nodes. - // Here is the timeline - // 1. task in pausing state. - // 2. node1 and node2 start schedulers with task in pausing state without allocatedSlots. - // 3. node1's scheduler transfer the node from pausing to paused state. - // 4. resume the task. - // 5. node1 start another scheduler and transfer the node from resuming to running state. - // 6. node2 scheduler call refreshTask and get task with running state. - if !s.allocatedSlots { - s.logger.Info("scheduler exit since not allocated slots", zap.Stringer("state", task.State)) - return - } - err = s.onRunning() - case proto.TaskStateSucceed, proto.TaskStateReverted, proto.TaskStateFailed: - s.onFinished() + s.logger.Error("refresh task failed", zap.Error(err)) + continue + } + failpoint.InjectCall("afterRefreshTask", s.GetTask()) + task := s.getTaskClone() + // TODO: refine failpoints below. + failpoint.Inject("exitScheduler", func() { + failpoint.Return() + }) + + switch task.State { + case proto.TaskStateCancelling: + err = s.onCancelling() + case proto.TaskStatePausing: + err = s.onPausing() + case proto.TaskStatePaused: + err = s.onPaused() + // close the scheduler. + if err == nil { return } - if err != nil { - s.logger.Info("schedule task meet err, reschedule it", zap.Error(err)) + case proto.TaskStateResuming: + // need to check allocatedSlots for the following case: + // 1. task in pausing state. + // 2. node1 and node2 start schedulers with task in pausing state without allocatedSlots. + // 3. node1's scheduler transfer the node from pausing to paused state. + // 4. resume the task. + // 5. node2 scheduler call refreshTask and get task with resuming state. + if !s.allocatedSlots { + s.logger.Info("scheduler exit since not allocated slots", zap.Stringer("state", task.State)) + return } - - failpoint.InjectCall("mockOwnerChange") + err = s.onResuming() + case proto.TaskStateReverting: + err = s.onReverting() + case proto.TaskStatePending: + // need to check allocatedSlots for the following case: + // 1. task in modifying state, node A and B start schedulers with + // task in modifying state without allocatedSlots. + // 2. node A's scheduler finished modifying, and transfer the node + // from modifying to pending state. + // 3. node B's scheduler call refreshTask and get task with pending + // state, but this scheduler has not allocated slots. + if !s.allocatedSlots { + s.logger.Info("scheduler exit since not allocated slots", zap.Stringer("state", task.State)) + return + } + err = s.onPending() + case proto.TaskStateRunning: + // need to check allocatedSlots for the following case: + // 1. task in pausing state. + // 2. node1 and node2 start schedulers with task in pausing state without allocatedSlots. + // 3. node1's scheduler transfer the node from pausing to paused state. + // 4. resume the task. + // 5. node1 start another scheduler and transfer the node from resuming to running state. + // 6. node2 scheduler call refreshTask and get task with running state. + if !s.allocatedSlots { + s.logger.Info("scheduler exit since not allocated slots", zap.Stringer("state", task.State)) + return + } + err = s.onRunning() + case proto.TaskStateModifying: + var recreateScheduler bool + recreateScheduler, err = s.onModifying() + if err == nil && recreateScheduler { + return + } + case proto.TaskStateSucceed, proto.TaskStateReverted, proto.TaskStateFailed: + s.onFinished() + return } + if err != nil { + s.logger.Info("schedule task meet err, reschedule it", zap.Error(err)) + } + + failpoint.InjectCall("mockOwnerChange") } } // handle task in cancelling state, schedule revert subtasks. func (s *BaseScheduler) onCancelling() error { task := s.GetTask() - s.logger.Info("on cancelling state", zap.Stringer("state", task.State), zap.String("step", proto.Step2Str(task.Type, task.Step))) + s.logger.Info("on cancelling state", zap.Stringer("state", task.State), + zap.String("step", proto.Step2Str(task.Type, task.Step))) return s.revertTask(errors.New(taskCancelMsg)) } // handle task in pausing state, cancel all running subtasks. func (s *BaseScheduler) onPausing() error { - task := *s.GetTask() - s.logger.Info("on pausing state", zap.Stringer("state", task.State), zap.String("step", proto.Step2Str(task.Type, task.Step))) + task := s.getTaskClone() + s.logger.Info("on pausing state", zap.Stringer("state", task.State), + zap.String("step", proto.Step2Str(task.Type, task.Step))) cntByStates, err := s.taskMgr.GetSubtaskCntGroupByStates(s.ctx, task.ID, task.Step) if err != nil { s.logger.Warn("check task failed", zap.Error(err)) @@ -294,22 +292,24 @@ func (s *BaseScheduler) onPausing() error { return err } task.State = proto.TaskStatePaused - s.task.Store(&task) + s.task.Store(task) return nil } // handle task in paused state. func (s *BaseScheduler) onPaused() error { task := s.GetTask() - s.logger.Info("on paused state", zap.Stringer("state", task.State), zap.String("step", proto.Step2Str(task.Type, task.Step))) + s.logger.Info("on paused state", zap.Stringer("state", task.State), + zap.String("step", proto.Step2Str(task.Type, task.Step))) failpoint.InjectCall("mockDMLExecutionOnPausedState") return nil } // handle task in resuming state. func (s *BaseScheduler) onResuming() error { - task := *s.GetTask() - s.logger.Info("on resuming state", zap.Stringer("state", task.State), zap.String("step", proto.Step2Str(task.Type, task.Step))) + task := s.getTaskClone() + s.logger.Info("on resuming state", zap.Stringer("state", task.State), + zap.String("step", proto.Step2Str(task.Type, task.Step))) cntByStates, err := s.taskMgr.GetSubtaskCntGroupByStates(s.ctx, task.ID, task.Step) if err != nil { s.logger.Warn("check task failed", zap.Error(err)) @@ -322,7 +322,7 @@ func (s *BaseScheduler) onResuming() error { return err } task.State = proto.TaskStateRunning - s.task.Store(&task) + s.task.Store(task) return nil } @@ -331,8 +331,9 @@ func (s *BaseScheduler) onResuming() error { // handle task in reverting state, check all revert subtasks finishes. func (s *BaseScheduler) onReverting() error { - task := *s.GetTask() - s.logger.Debug("on reverting state", zap.Stringer("state", task.State), zap.String("step", proto.Step2Str(task.Type, task.Step))) + task := s.getTaskClone() + s.logger.Debug("on reverting state", zap.Stringer("state", task.State), + zap.String("step", proto.Step2Str(task.Type, task.Step))) cntByStates, err := s.taskMgr.GetSubtaskCntGroupByStates(s.ctx, task.ID, task.Step) if err != nil { s.logger.Warn("check task failed", zap.Error(err)) @@ -340,18 +341,18 @@ func (s *BaseScheduler) onReverting() error { } runnableSubtaskCnt := cntByStates[proto.SubtaskStatePending] + cntByStates[proto.SubtaskStateRunning] if runnableSubtaskCnt == 0 { - if err = s.OnDone(s.ctx, s, &task); err != nil { + if err = s.OnDone(s.ctx, s, task); err != nil { return errors.Trace(err) } if err = s.taskMgr.RevertedTask(s.ctx, task.ID); err != nil { return errors.Trace(err) } task.State = proto.TaskStateReverted - s.task.Store(&task) + s.task.Store(task) return nil } // Wait all subtasks in this step finishes. - s.OnTick(s.ctx, &task) + s.OnTick(s.ctx, task) s.logger.Debug("on reverting state, this task keeps current state", zap.Stringer("state", task.State)) return nil } @@ -359,7 +360,8 @@ func (s *BaseScheduler) onReverting() error { // handle task in pending state, schedule subtasks. func (s *BaseScheduler) onPending() error { task := s.GetTask() - s.logger.Debug("on pending state", zap.Stringer("state", task.State), zap.String("step", proto.Step2Str(task.Type, task.Step))) + s.logger.Debug("on pending state", zap.Stringer("state", task.State), + zap.String("step", proto.Step2Str(task.Type, task.Step))) return s.switch2NextStep() } @@ -397,21 +399,50 @@ func (s *BaseScheduler) onRunning() error { return nil } +// onModifying is called when task is in modifying state. +// the first return value indicates whether the scheduler should be recreated. +func (s *BaseScheduler) onModifying() (bool, error) { + task := s.getTaskClone() + s.logger.Info("on modifying state", zap.Stringer("param", &task.ModifyParam)) + recreateScheduler := false + for _, m := range task.ModifyParam.Modifications { + if m.Type == proto.ModifyConcurrency { + if task.Concurrency == int(m.To) { + // shouldn't happen normally. + s.logger.Info("task concurrency not changed, skip", zap.Int("concurrency", task.Concurrency)) + continue + } + s.logger.Info("modify task concurrency", zap.Int("from", task.Concurrency), zap.Int64("to", m.To)) + recreateScheduler = true + task.Concurrency = int(m.To) + } else { + // will implement other modification types later. + s.logger.Warn("unsupported modification type", zap.Stringer("type", m.Type)) + } + } + if err := s.taskMgr.ModifiedTask(s.ctx, task); err != nil { + return false, errors.Trace(err) + } + task.State = task.ModifyParam.PrevState + task.ModifyParam = proto.ModifyParam{} + s.task.Store(task) + return recreateScheduler, nil +} + func (s *BaseScheduler) onFinished() { task := s.GetTask() - metrics.UpdateMetricsForFinishTask(task) s.logger.Debug("schedule task, task is finished", zap.Stringer("state", task.State)) } func (s *BaseScheduler) switch2NextStep() error { - task := *s.GetTask() + task := s.getTaskClone() nextStep := s.GetNextStep(&task.TaskBase) s.logger.Info("switch to next step", zap.String("current-step", proto.Step2Str(task.Type, task.Step)), zap.String("next-step", proto.Step2Str(task.Type, nextStep))) if nextStep == proto.StepDone { - if err := s.OnDone(s.ctx, s, &task); err != nil { + if err := s.OnDone(s.ctx, s, task); err != nil { return errors.Trace(err) } if err := s.taskMgr.SucceedTask(s.ctx, task.ID); err != nil { @@ -419,7 +450,7 @@ func (s *BaseScheduler) switch2NextStep() error { } task.Step = nextStep task.State = proto.TaskStateSucceed - s.task.Store(&task) + s.task.Store(task) return nil } @@ -435,19 +466,19 @@ func (s *BaseScheduler) switch2NextStep() error { return errors.New("no available TiDB node to dispatch subtasks") } - metas, err := s.OnNextSubtasksBatch(s.ctx, s, &task, eligibleNodes, nextStep) + metas, err := s.OnNextSubtasksBatch(s.ctx, s, task, eligibleNodes, nextStep) if err != nil { s.logger.Warn("generate part of subtasks failed", zap.Error(err)) return s.handlePlanErr(err) } - if err = s.scheduleSubTask(&task, nextStep, metas, eligibleNodes); err != nil { + if err = s.scheduleSubTask(task, nextStep, metas, eligibleNodes); err != nil { return err } task.Step = nextStep task.State = proto.TaskStateRunning // and OnNextSubtasksBatch might change meta of task. - s.task.Store(&task) + s.task.Store(task) return nil } @@ -483,9 +514,7 @@ func (s *BaseScheduler) scheduleSubTask( size += uint64(len(meta)) } - failpoint.Inject("cancelBeforeUpdateTask", func() { - _ = s.taskMgr.CancelTask(s.ctx, task.ID) - }) + failpoint.InjectCall("cancelBeforeUpdateTask", task.ID) // as other fields and generated key and index KV takes space too, we limit // the size of subtasks to 80% of the transaction limit. @@ -513,7 +542,7 @@ func (s *BaseScheduler) scheduleSubTask( } func (s *BaseScheduler) handlePlanErr(err error) error { - task := *s.GetTask() + task := s.getTaskClone() s.logger.Warn("generate plan failed", zap.Error(err), zap.Stringer("state", task.State)) if s.IsRetryableErr(err) { return err @@ -522,13 +551,13 @@ func (s *BaseScheduler) handlePlanErr(err error) error { } func (s *BaseScheduler) revertTask(taskErr error) error { - task := *s.GetTask() + task := s.getTaskClone() if err := s.taskMgr.RevertTask(s.ctx, task.ID, task.State, taskErr); err != nil { return err } task.State = proto.TaskStateReverting task.Error = taskErr - s.task.Store(&task) + s.task.Store(task) return nil } @@ -577,7 +606,8 @@ func generateTaskExecutorNodes(ctx context.Context) (serverNodes []*infosync.Ser func (s *BaseScheduler) GetPreviousSubtaskMetas(taskID int64, step proto.Step) ([][]byte, error) { previousSubtasks, err := s.taskMgr.GetAllSubtasksByStepAndState(s.ctx, taskID, step, proto.SubtaskStateSucceed) if err != nil { - s.logger.Warn("get previous succeed subtask failed", zap.String("step", proto.Step2Str(s.GetTask().Type, step))) + s.logger.Warn("get previous succeed subtask failed", + zap.String("step", proto.Step2Str(s.GetTask().Type, step))) return nil, err } previousSubtaskMetas := make([][]byte, 0, len(previousSubtasks)) diff --git a/pkg/disttask/framework/scheduler/scheduler_manager.go b/pkg/disttask/framework/scheduler/scheduler_manager.go index 186fc77702a7d..d2b553f4be2bf 100644 --- a/pkg/disttask/framework/scheduler/scheduler_manager.go +++ b/pkg/disttask/framework/scheduler/scheduler_manager.go @@ -21,12 +21,12 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" - "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/disttask/framework/handle" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/metrics" tidbutil "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/syncutil" "go.uber.org/zap" ) @@ -42,9 +42,6 @@ var ( defaultCollectMetricsInterval = 5 * time.Second ) -// WaitTaskFinished is used to sync the test. -var WaitTaskFinished = make(chan struct{}) - func (sm *Manager) getSchedulerCount() int { sm.mu.RLock() defer sm.mu.RUnlock() @@ -125,9 +122,9 @@ type Manager struct { // NewManager creates a scheduler struct. func NewManager(ctx context.Context, taskMgr TaskManager, serverID string) *Manager { - logger := log.L() + logger := logutil.ErrVerboseLogger() if intest.InTest { - logger = log.L().With(zap.String("server-id", serverID)) + logger = logger.With(zap.String("server-id", serverID)) } subCtx, cancel := context.WithCancel(ctx) slotMgr := newSlotManager() @@ -216,6 +213,7 @@ func (sm *Manager) scheduleTaskLoop() { continue } + failpoint.InjectCall("beforeGetSchedulableTasks") schedulableTasks, err := sm.getSchedulableTasks() if err != nil { continue @@ -278,15 +276,14 @@ func (sm *Manager) startSchedulers(schedulableTasks []*proto.TaskBase) error { // task of lower rank might be able to be scheduled. continue } - // reverting/cancelling/pausing + // reverting/cancelling/pausing/modifying, we don't allocate slots for them. default: allocateSlots = false sm.logger.Info("start scheduler without allocating slots", zap.Int64("task-id", task.ID), zap.Stringer("state", task.State)) } - metrics.DistTaskGauge.WithLabelValues(task.Type.String(), metrics.SchedulingStatus).Inc() - metrics.UpdateMetricsForScheduleTask(task.ID, task.Type) + metrics.UpdateMetricsForScheduleTask(task) sm.startScheduler(task, allocateSlots, reservedExecID) } return nil @@ -301,13 +298,7 @@ func (sm *Manager) failTask(id int64, currState proto.TaskState, err error) { func (sm *Manager) gcSubtaskHistoryTableLoop() { historySubtaskTableGcInterval := defaultHistorySubtaskTableGcInterval - failpoint.Inject("historySubtaskTableGcInterval", func(val failpoint.Value) { - if seconds, ok := val.(int); ok { - historySubtaskTableGcInterval = time.Second * time.Duration(seconds) - } - - <-WaitTaskFinished - }) + failpoint.InjectCall("historySubtaskTableGcInterval", &historySubtaskTableGcInterval) sm.logger.Info("subtask table gc loop start") ticker := time.NewTicker(historySubtaskTableGcInterval) @@ -386,9 +377,6 @@ func (sm *Manager) cleanupTaskLoop() { } } -// WaitCleanUpFinished is used to sync the test. -var WaitCleanUpFinished = make(chan struct{}, 1) - // doCleanupTask processes clean up routine defined by each type of tasks and cleanupMeta. // For example: // @@ -413,9 +401,7 @@ func (sm *Manager) doCleanupTask() { sm.logger.Warn("cleanup routine failed", zap.Error(err)) return } - failpoint.Inject("WaitCleanUpFinished", func() { - WaitCleanUpFinished <- struct{}{} - }) + failpoint.InjectCall("WaitCleanUpFinished") sm.logger.Info("cleanup routine success") } @@ -437,6 +423,7 @@ func (sm *Manager) cleanupFinishedTasks(tasks []*proto.Task) error { // if task doesn't register cleanup function, mark it as cleaned. cleanedTasks = append(cleanedTasks, task) } + metrics.UpdateMetricsForFinishTask(task) } if firstErr != nil { sm.logger.Warn("cleanup routine failed", zap.Error(errors.Trace(firstErr))) diff --git a/pkg/disttask/framework/scheduler/scheduler_manager_nokit_test.go b/pkg/disttask/framework/scheduler/scheduler_manager_nokit_test.go index 9380d0bd6e927..68305ff508f87 100644 --- a/pkg/disttask/framework/scheduler/scheduler_manager_nokit_test.go +++ b/pkg/disttask/framework/scheduler/scheduler_manager_nokit_test.go @@ -89,7 +89,6 @@ func TestSchedulerCleanupTask(t *testing.T) { require.True(t, ctrl.Satisfied()) // fail in transfer - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", "1*return()")) mockErr := errors.New("transfer err") taskMgr.EXPECT().GetTasksInStates( mgr.ctx, @@ -108,8 +107,6 @@ func TestSchedulerCleanupTask(t *testing.T) { taskMgr.EXPECT().TransferTasks2History(mgr.ctx, tasks).Return(nil) mgr.doCleanupTask() require.True(t, ctrl.Satisfied()) - - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished")) } func TestManagerSchedulerNotAllocateSlots(t *testing.T) { diff --git a/pkg/disttask/framework/scheduler/scheduler_nokit_test.go b/pkg/disttask/framework/scheduler/scheduler_nokit_test.go index aa0a24d0825ff..181397bf501ba 100644 --- a/pkg/disttask/framework/scheduler/scheduler_nokit_test.go +++ b/pkg/disttask/framework/scheduler/scheduler_nokit_test.go @@ -287,7 +287,7 @@ func TestSchedulerRefreshTask(t *testing.T) { // state/step not changed, no need to refresh taskMgr.EXPECT().GetTaskBaseByID(gomock.Any(), task.ID).Return(&task.TaskBase, nil) require.NoError(t, scheduler.refreshTaskIfNeeded()) - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // get task by id failed tmpTask := task @@ -295,7 +295,7 @@ func TestSchedulerRefreshTask(t *testing.T) { taskMgr.EXPECT().GetTaskBaseByID(gomock.Any(), task.ID).Return(&tmpTask.TaskBase, nil) taskMgr.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(nil, errors.New("get task by id err")) require.ErrorContains(t, scheduler.refreshTaskIfNeeded(), "get task by id err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // state changed tmpTask = task @@ -303,7 +303,7 @@ func TestSchedulerRefreshTask(t *testing.T) { taskMgr.EXPECT().GetTaskBaseByID(gomock.Any(), task.ID).Return(&tmpTask.TaskBase, nil) taskMgr.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(&tmpTask, nil) require.NoError(t, scheduler.refreshTaskIfNeeded()) - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) // step changed scheduler.task.Store(&schTask) // revert @@ -312,7 +312,7 @@ func TestSchedulerRefreshTask(t *testing.T) { taskMgr.EXPECT().GetTaskBaseByID(gomock.Any(), task.ID).Return(&tmpTask.TaskBase, nil) taskMgr.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(&tmpTask, nil) require.NoError(t, scheduler.refreshTaskIfNeeded()) - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) } @@ -354,7 +354,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { taskMgr.EXPECT().GetSubtaskCntGroupByStates(gomock.Any(), task.ID, gomock.Any()).Return(nil, nil) taskMgr.EXPECT().PausedTask(gomock.Any(), task.ID).Return(fmt.Errorf("pause err")) require.ErrorContains(t, scheduler.onPausing(), "pause err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // pause task successfully @@ -363,7 +363,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { require.NoError(t, scheduler.onPausing()) tmpTask := task tmpTask.State = proto.TaskStatePaused - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) }) @@ -373,7 +373,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { taskMgr.EXPECT().GetSubtaskCntGroupByStates(gomock.Any(), task.ID, gomock.Any()).Return(nil, nil) taskMgr.EXPECT().ResumedTask(gomock.Any(), task.ID).Return(fmt.Errorf("resume err")) require.ErrorContains(t, scheduler.onResuming(), "resume err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // resume task successfully @@ -382,7 +382,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { require.NoError(t, scheduler.onResuming()) tmpTask := task tmpTask.State = proto.TaskStateRunning - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) }) @@ -393,7 +393,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { schExt.EXPECT().OnDone(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) taskMgr.EXPECT().RevertedTask(gomock.Any(), task.ID).Return(fmt.Errorf("reverted err")) require.ErrorContains(t, scheduler.onReverting(), "reverted err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // revert task successfully @@ -403,7 +403,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { require.NoError(t, scheduler.onReverting()) tmpTask := task tmpTask.State = proto.TaskStateReverted - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) }) @@ -415,7 +415,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { Return(nil, errors.New("plan err")) schExt.EXPECT().IsRetryableErr(gomock.Any()).Return(true) require.ErrorContains(t, scheduler.switch2NextStep(), "plan err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // non-retryable plan error, but failed to revert, task state unchanged schExt.EXPECT().OnNextSubtasksBatch(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). @@ -423,7 +423,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { schExt.EXPECT().IsRetryableErr(gomock.Any()).Return(false) taskMgr.EXPECT().RevertTask(gomock.Any(), task.ID, gomock.Any(), gomock.Any()).Return(fmt.Errorf("revert err")) require.ErrorContains(t, scheduler.switch2NextStep(), "revert err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // non-retryable plan error, task state changed to reverting schExt.EXPECT().OnNextSubtasksBatch(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). @@ -434,7 +434,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { tmpTask := task tmpTask.State = proto.TaskStateReverting tmpTask.Error = fmt.Errorf("revert err") - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) // revert task back @@ -445,7 +445,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { Return(nil, nil) taskMgr.EXPECT().GetUsedSlotsOnNodes(gomock.Any()).Return(nil, fmt.Errorf("update err")) require.ErrorContains(t, scheduler.switch2NextStep(), "update err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) // switch to next step successfully schExt.EXPECT().OnNextSubtasksBatch(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). @@ -456,21 +456,21 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { tmpTask = task tmpTask.State = proto.TaskStateRunning tmpTask.Step = proto.StepOne - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) // task done, but update failed, task state unchanged schExt.EXPECT().OnDone(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) taskMgr.EXPECT().SucceedTask(gomock.Any(), task.ID).Return(fmt.Errorf("update err")) require.ErrorContains(t, scheduler.switch2NextStep(), "update err") - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) // task done successfully, task state changed schExt.EXPECT().OnDone(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) taskMgr.EXPECT().SucceedTask(gomock.Any(), task.ID).Return(nil) require.NoError(t, scheduler.switch2NextStep()) tmpTask.State = proto.TaskStateSucceed tmpTask.Step = proto.StepDone - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) }) t.Run("test revertTask", func(t *testing.T) { @@ -478,7 +478,7 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { taskMgr.EXPECT().RevertTask(gomock.Any(), task.ID, gomock.Any(), gomock.Any()).Return(fmt.Errorf("revert err")) require.ErrorContains(t, scheduler.revertTask(fmt.Errorf("task err")), "revert err") - require.Equal(t, *scheduler.GetTask(), task) + require.Equal(t, *scheduler.getTaskClone(), task) require.True(t, ctrl.Satisfied()) taskMgr.EXPECT().RevertTask(gomock.Any(), task.ID, gomock.Any(), gomock.Any()).Return(nil) @@ -486,7 +486,33 @@ func TestSchedulerMaintainTaskFields(t *testing.T) { tmpTask := task tmpTask.State = proto.TaskStateReverting tmpTask.Error = fmt.Errorf("task err") - require.Equal(t, *scheduler.GetTask(), tmpTask) + require.Equal(t, *scheduler.getTaskClone(), tmpTask) require.True(t, ctrl.Satisfied()) }) + + t.Run("test on modifying", func(t *testing.T) { + taskBefore := schTask + taskBefore.State = proto.TaskStateModifying + taskBefore.ModifyParam = proto.ModifyParam{ + PrevState: proto.TaskStateRunning, + Modifications: []proto.Modification{ + {Type: proto.ModifyConcurrency, To: 123}, + }, + } + scheduler.task.Store(&taskBefore) + taskMgr.EXPECT().ModifiedTask(gomock.Any(), gomock.Any()).Return(fmt.Errorf("modify err")) + recreateScheduler, err := scheduler.onModifying() + require.ErrorContains(t, err, "modify err") + require.False(t, recreateScheduler) + + taskMgr.EXPECT().ModifiedTask(gomock.Any(), gomock.Any()).Return(nil) + recreateScheduler, err = scheduler.onModifying() + require.NoError(t, err) + require.True(t, recreateScheduler) + expectedTask := taskBefore + expectedTask.Concurrency = 123 + expectedTask.State = proto.TaskStateRunning + expectedTask.ModifyParam = proto.ModifyParam{} + require.Equal(t, *scheduler.GetTask(), expectedTask) + }) } diff --git a/pkg/disttask/framework/storage/BUILD.bazel b/pkg/disttask/framework/storage/BUILD.bazel index d1dc457934de7..04481c4993c58 100644 --- a/pkg/disttask/framework/storage/BUILD.bazel +++ b/pkg/disttask/framework/storage/BUILD.bazel @@ -42,7 +42,7 @@ go_test( embed = [":storage"], flaky = True, race = "on", - shard_count = 22, + shard_count = 23, deps = [ "//pkg/config", "//pkg/disttask/framework/proto", @@ -53,6 +53,7 @@ go_test( "//pkg/testkit", "//pkg/testkit/testfailpoint", "//pkg/testkit/testsetup", + "//pkg/util", "//pkg/util/sqlexec", "@com_github_pingcap_errors//:errors", "@com_github_stretchr_testify//require", diff --git a/pkg/disttask/framework/storage/converter.go b/pkg/disttask/framework/storage/converter.go index b18a196c041b9..e4c140bbecbc7 100644 --- a/pkg/disttask/framework/storage/converter.go +++ b/pkg/disttask/framework/storage/converter.go @@ -15,6 +15,7 @@ package storage import ( + "encoding/json" "strconv" "time" @@ -66,6 +67,12 @@ func Row2Task(r chunk.Row) *proto.Task { task.Error = stdErr } } + if !r.IsNull(14) { + str := r.GetJSON(14).String() + if err := json.Unmarshal([]byte(str), &task.ModifyParam); err != nil { + logutil.BgLogger().Error("unmarshal task modify param", zap.Error(err)) + } + } return task } diff --git a/pkg/disttask/framework/storage/history.go b/pkg/disttask/framework/storage/history.go index 9129a002da60e..47655d05ff716 100644 --- a/pkg/disttask/framework/storage/history.go +++ b/pkg/disttask/framework/storage/history.go @@ -83,11 +83,7 @@ func (mgr *TaskManager) TransferTasks2History(ctx context.Context, tasks []*prot // GCSubtasks deletes the history subtask which is older than the given days. func (mgr *TaskManager) GCSubtasks(ctx context.Context) error { subtaskHistoryKeepSeconds := defaultSubtaskKeepDays * 24 * 60 * 60 - failpoint.Inject("subtaskHistoryKeepSeconds", func(val failpoint.Value) { - if val, ok := val.(int); ok { - subtaskHistoryKeepSeconds = val - } - }) + failpoint.InjectCall("subtaskHistoryKeepSeconds", &subtaskHistoryKeepSeconds) _, err := mgr.ExecuteSQLWithNewSession( ctx, fmt.Sprintf("DELETE FROM mysql.tidb_background_subtask_history WHERE state_update_time < UNIX_TIMESTAMP() - %d ;", subtaskHistoryKeepSeconds), diff --git a/pkg/disttask/framework/storage/table_test.go b/pkg/disttask/framework/storage/table_test.go index e047d53a30e54..13cc884163838 100644 --- a/pkg/disttask/framework/storage/table_test.go +++ b/pkg/disttask/framework/storage/table_test.go @@ -369,6 +369,7 @@ func TestGetTopUnfinishedTasks(t *testing.T) { proto.TaskStatePending, proto.TaskStatePending, proto.TaskStatePending, + proto.TaskStateModifying, } for i, state := range taskStates { taskKey := fmt.Sprintf("key/%d", i) @@ -403,17 +404,26 @@ func TestGetTopUnfinishedTasks(t *testing.T) { rs, err := sqlexec.ExecSQL(ctx, se.GetSQLExecutor(), ` select count(1) from mysql.tidb_global_task`) require.Len(t, rs, 1) - require.Equal(t, int64(12), rs[0].GetInt64(0)) + require.Equal(t, int64(13), rs[0].GetInt64(0)) return err })) + getTaskKeys := func(tasks []*proto.TaskBase) []string { + taskKeys := make([]string, 0, len(tasks)) + for _, task := range tasks { + taskKeys = append(taskKeys, task.Key) + } + return taskKeys + } tasks, err := gm.GetTopUnfinishedTasks(ctx) require.NoError(t, err) require.Len(t, tasks, 8) - taskKeys := make([]string, 0, len(tasks)) - for _, task := range tasks { - taskKeys = append(taskKeys, task.Key) - } - require.Equal(t, []string{"key/6", "key/5", "key/1", "key/2", "key/3", "key/4", "key/8", "key/9"}, taskKeys) + require.Equal(t, []string{"key/6", "key/5", "key/1", "key/2", "key/3", "key/4", "key/8", "key/9"}, getTaskKeys(tasks)) + + proto.MaxConcurrentTask = 6 + tasks, err = gm.GetTopUnfinishedTasks(ctx) + require.NoError(t, err) + require.Len(t, tasks, 11) + require.Equal(t, []string{"key/6", "key/5", "key/1", "key/2", "key/3", "key/4", "key/8", "key/9", "key/10", "key/11", "key/12"}, getTaskKeys(tasks)) } func TestGetUsedSlotsOnNodes(t *testing.T) { @@ -508,10 +518,6 @@ func TestSubTaskTable(t *testing.T) { require.Len(t, cntByStates, 1) require.Equal(t, int64(1), cntByStates[proto.SubtaskStatePending]) - ok, err := sm.HasSubtasksInStates(ctx, "tidb1", 1, proto.StepOne, proto.SubtaskStatePending) - require.NoError(t, err) - require.True(t, ok) - ts := time.Now() time.Sleep(time.Second) require.NoError(t, sm.StartSubtask(ctx, 1, "tidb1")) @@ -545,15 +551,8 @@ func TestSubTaskTable(t *testing.T) { require.NoError(t, err) require.Equal(t, int64(0), cntByStates[proto.SubtaskStatePending]) - ok, err = sm.HasSubtasksInStates(ctx, "tidb1", 1, proto.StepOne, proto.SubtaskStatePending) - require.NoError(t, err) - require.False(t, ok) require.NoError(t, testutil.DeleteSubtasksByTaskID(ctx, sm, 1)) - ok, err = sm.HasSubtasksInStates(ctx, "tidb1", 1, proto.StepOne, proto.SubtaskStatePending, proto.SubtaskStateRunning) - require.NoError(t, err) - require.False(t, ok) - testutil.CreateSubTask(t, sm, 2, proto.StepOne, "tidb1", []byte("test"), proto.TaskTypeExample, 11) subtasks, err := sm.GetAllSubtasksByStepAndState(ctx, 2, proto.StepOne, proto.SubtaskStateSucceed) @@ -824,7 +823,9 @@ func TestSubtaskHistoryTable(t *testing.T) { require.Len(t, subTasks, 3) // test GC history table. - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/storage/subtaskHistoryKeepSeconds", "return(1)") + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/storage/subtaskHistoryKeepSeconds", func(interval *int) { + *interval = 1 + }) time.Sleep(2 * time.Second) subTask4 := testutil.CreateSubTask(t, sm, taskID2, proto.StepInit, tidb1, []byte(meta), proto.TaskTypeExample, 11) diff --git a/pkg/disttask/framework/storage/task_state.go b/pkg/disttask/framework/storage/task_state.go index dbca740eb7b23..8e4c472791c14 100644 --- a/pkg/disttask/framework/storage/task_state.go +++ b/pkg/disttask/framework/storage/task_state.go @@ -16,7 +16,10 @@ package storage import ( "context" + "encoding/json" + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/sqlexec" @@ -159,6 +162,78 @@ func (mgr *TaskManager) ResumedTask(ctx context.Context, taskID int64) error { return err } +// ModifyTaskByID modifies the task by the task ID. +func (mgr *TaskManager) ModifyTaskByID(ctx context.Context, taskID int64, param *proto.ModifyParam) error { + if !param.PrevState.CanMoveToModifying() { + return ErrTaskStateNotAllow + } + bytes, err := json.Marshal(param) + if err != nil { + return errors.Trace(err) + } + return mgr.WithNewTxn(ctx, func(se sessionctx.Context) error { + task, err2 := mgr.getTaskBaseByID(ctx, se.GetSQLExecutor(), taskID) + if err2 != nil { + return err2 + } + if task.State != param.PrevState { + return ErrTaskChanged + } + failpoint.InjectCall("beforeMoveToModifying") + _, err = sqlexec.ExecSQL(ctx, se.GetSQLExecutor(), ` + update mysql.tidb_global_task + set state = %?, modify_params = %?, state_update_time = CURRENT_TIMESTAMP() + where id = %? and state = %?`, + proto.TaskStateModifying, json.RawMessage(bytes), taskID, param.PrevState, + ) + if err != nil { + return err + } + if se.GetSessionVars().StmtCtx.AffectedRows() == 0 { + // the txn is pessimistic, it's possible that another txn has + // changed the task state before this txn commits and there is no + // write-conflict. + return ErrTaskChanged + } + return nil + }) +} + +// ModifiedTask implements the scheduler.TaskManager interface. +func (mgr *TaskManager) ModifiedTask(ctx context.Context, task *proto.Task) error { + prevState := task.ModifyParam.PrevState + return mgr.WithNewTxn(ctx, func(se sessionctx.Context) error { + failpoint.InjectCall("beforeModifiedTask") + _, err := sqlexec.ExecSQL(ctx, se.GetSQLExecutor(), ` + update mysql.tidb_global_task + set state = %?, + concurrency = %?, + meta = %?, + modify_params = null, + state_update_time = CURRENT_TIMESTAMP() + where id = %? and state = %?`, + prevState, task.Concurrency, task.Meta, task.ID, proto.TaskStateModifying, + ) + if err != nil { + return err + } + if se.GetSessionVars().StmtCtx.AffectedRows() == 0 { + // might be handled by other owner nodes, skip. + return nil + } + // subtask in final state are not changed. + // subtask might have different concurrency later, see TaskExecInfo, we + // need to handle it too, but ok for now. + _, err = sqlexec.ExecSQL(ctx, se.GetSQLExecutor(), ` + update mysql.tidb_background_subtask + set concurrency = %?, state_update_time = unix_timestamp() + where task_key = %? and state in (%?, %?, %?)`, + task.Concurrency, task.ID, + proto.SubtaskStatePending, proto.SubtaskStateRunning, proto.SubtaskStatePaused) + return err + }) +} + // SucceedTask update task state from running to succeed. func (mgr *TaskManager) SucceedTask(ctx context.Context, taskID int64) error { return mgr.WithNewSession(func(se sessionctx.Context) error { diff --git a/pkg/disttask/framework/storage/task_state_test.go b/pkg/disttask/framework/storage/task_state_test.go index 460a197fda910..0a515675d95ff 100644 --- a/pkg/disttask/framework/storage/task_state_test.go +++ b/pkg/disttask/framework/storage/task_state_test.go @@ -15,13 +15,21 @@ package storage_test import ( + "cmp" + "context" "errors" + "slices" + "sync/atomic" "testing" "github.com/pingcap/tidb/pkg/disttask/framework/proto" + "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/framework/testutil" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + tidbutil "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/util" ) @@ -126,3 +134,149 @@ func TestTaskState(t *testing.T) { require.NoError(t, err) checkTaskStateStep(t, task, proto.TaskStateSucceed, proto.StepDone) } + +func TestModifyTask(t *testing.T) { + _, gm, ctx := testutil.InitTableTest(t) + require.NoError(t, gm.InitMeta(ctx, ":4000", "")) + + id, err := gm.CreateTask(ctx, "key1", "test", 4, "", []byte("test")) + require.NoError(t, err) + + require.ErrorIs(t, gm.ModifyTaskByID(ctx, id, &proto.ModifyParam{ + PrevState: proto.TaskStateReverting, + }), storage.ErrTaskStateNotAllow) + require.ErrorIs(t, gm.ModifyTaskByID(ctx, 123123123, &proto.ModifyParam{ + PrevState: proto.TaskStatePaused, + }), storage.ErrTaskNotFound) + require.ErrorIs(t, gm.ModifyTaskByID(ctx, id, &proto.ModifyParam{ + PrevState: proto.TaskStatePaused, + }), storage.ErrTaskChanged) + + // task changed in middle of modifying + ch := make(chan struct{}) + var wg tidbutil.WaitGroupWrapper + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/storage/beforeMoveToModifying", func() { + if counter.Add(1) == 1 { + <-ch + <-ch + } + }) + task, err := gm.GetTaskByID(ctx, id) + require.NoError(t, err) + require.Equal(t, proto.TaskStatePending, task.State) + subtasks := make([]*proto.Subtask, 0, 4) + for i := 0; i < 4; i++ { + subtasks = append(subtasks, proto.NewSubtask(proto.StepOne, task.ID, task.Type, + ":4000", task.Concurrency, proto.EmptyMeta, i+1)) + } + wg.Run(func() { + ch <- struct{}{} + require.NoError(t, gm.SwitchTaskStep(ctx, task, proto.TaskStateRunning, proto.StepOne, subtasks)) + ch <- struct{}{} + }) + require.ErrorIs(t, gm.ModifyTaskByID(ctx, id, &proto.ModifyParam{ + PrevState: proto.TaskStatePending, + }), storage.ErrTaskChanged) + wg.Wait() + + // move to 'modifying' success + task, err = gm.GetTaskByID(ctx, id) + require.NoError(t, err) + require.Equal(t, proto.TaskStateRunning, task.State) + param := proto.ModifyParam{ + PrevState: proto.TaskStateRunning, + Modifications: []proto.Modification{ + {Type: proto.ModifyConcurrency, To: 2}, + }, + } + require.NoError(t, gm.ModifyTaskByID(ctx, id, ¶m)) + task, err = gm.GetTaskByID(ctx, id) + require.NoError(t, err) + require.Equal(t, proto.TaskStateModifying, task.State) + require.Equal(t, param, task.ModifyParam) + + // modified + gotSubtasks, err := gm.GetSubtasksWithHistory(ctx, task.ID, proto.StepOne) + require.NoError(t, err) + slices.SortFunc(gotSubtasks, func(i, j *proto.Subtask) int { + return cmp.Compare(i.Ordinal, j.Ordinal) + }) + require.Len(t, gotSubtasks, len(subtasks)) + require.NoError(t, gm.FinishSubtask(ctx, gotSubtasks[0].ExecID, gotSubtasks[0].ID, nil)) + require.NoError(t, gm.StartSubtask(ctx, gotSubtasks[1].ID, gotSubtasks[1].ExecID)) + require.NoError(t, gm.WithNewSession(func(se sessionctx.Context) error { + _, err := sqlexec.ExecSQL(ctx, se.GetSQLExecutor(), `update mysql.tidb_background_subtask set state='paused' where id=%?`, + gotSubtasks[2].ID) + return err + })) + task.Concurrency = 2 + task.Meta = []byte("modified") + require.NoError(t, gm.ModifiedTask(ctx, task)) + checkTaskAfterModify(ctx, t, gm, task.ID, + 2, []byte("modified"), []int{4, 2, 2, 2}, + ) + + // task state changed before move to 'modified' + param = proto.ModifyParam{ + PrevState: proto.TaskStateRunning, + Modifications: []proto.Modification{ + {Type: proto.ModifyConcurrency, To: 3}, + }, + } + require.NoError(t, gm.ModifyTaskByID(ctx, id, ¶m)) + task, err = gm.GetTaskByID(ctx, id) + require.NoError(t, err) + require.Equal(t, proto.TaskStateModifying, task.State) + require.Equal(t, param, task.ModifyParam) + ch = make(chan struct{}) + wg = tidbutil.WaitGroupWrapper{} + var called bool + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/storage/beforeModifiedTask", func() { + if called { + return + } + called = true + <-ch + <-ch + }) + taskClone := *task + wg.Run(func() { + ch <- struct{}{} + // NOTE: this will NOT happen in real case, because the task can NOT move + // to 'modifying' again to change modify params. + // here just to show that if another client finishes modifying, our modify + // will skip silently. + taskClone.Concurrency = 5 + taskClone.Meta = []byte("modified-other") + require.NoError(t, gm.ModifiedTask(ctx, &taskClone)) + ch <- struct{}{} + }) + task.Concurrency = 3 + task.Meta = []byte("modified2") + require.NoError(t, gm.ModifiedTask(ctx, task)) + wg.Wait() + checkTaskAfterModify(ctx, t, gm, task.ID, + 5, []byte("modified-other"), []int{4, 5, 5, 5}, + ) +} + +func checkTaskAfterModify( + ctx context.Context, t *testing.T, gm *storage.TaskManager, taskID int64, + expectConcurrency int, expectedMeta []byte, expectedSTConcurrencies []int) { + task, err := gm.GetTaskByID(ctx, taskID) + require.NoError(t, err) + require.Equal(t, proto.TaskStateRunning, task.State) + require.Equal(t, expectConcurrency, task.Concurrency) + require.Equal(t, expectedMeta, task.Meta) + require.Equal(t, proto.ModifyParam{}, task.ModifyParam) + gotSubtasks, err := gm.GetSubtasksWithHistory(ctx, task.ID, proto.StepOne) + require.NoError(t, err) + require.Len(t, gotSubtasks, len(expectedSTConcurrencies)) + slices.SortFunc(gotSubtasks, func(i, j *proto.Subtask) int { + return cmp.Compare(i.Ordinal, j.Ordinal) + }) + for i, expected := range expectedSTConcurrencies { + require.Equal(t, expected, gotSubtasks[i].Concurrency) + } +} diff --git a/pkg/disttask/framework/storage/task_table.go b/pkg/disttask/framework/storage/task_table.go index 4cc852610ef40..38a601a31a6d1 100644 --- a/pkg/disttask/framework/storage/task_table.go +++ b/pkg/disttask/framework/storage/task_table.go @@ -39,7 +39,7 @@ const ( basicTaskColumns = `t.id, t.task_key, t.type, t.state, t.step, t.priority, t.concurrency, t.create_time, t.target_scope` // TaskColumns is the columns for task. // TODO: dispatcher_id will update to scheduler_id later - TaskColumns = basicTaskColumns + `, t.start_time, t.state_update_time, t.meta, t.dispatcher_id, t.error` + TaskColumns = basicTaskColumns + `, t.start_time, t.state_update_time, t.meta, t.dispatcher_id, t.error, t.modify_params` // InsertTaskColumns is the columns used in insert task. InsertTaskColumns = `task_key, type, state, priority, concurrency, step, meta, create_time, target_scope` basicSubtaskColumns = `id, step, task_key, type, exec_id, state, concurrency, create_time, ordinal, start_time` @@ -65,6 +65,12 @@ var ( // i.e. SubmitTask in handle may submit a task twice. ErrTaskAlreadyExists = errors.New("task already exists") + // ErrTaskStateNotAllow is the error when the task state is not allowed to do the operation. + ErrTaskStateNotAllow = errors.New("task state not allow to do the operation") + + // ErrTaskChanged is the error when task changed by other operation. + ErrTaskChanged = errors.New("task changed by other operation") + // ErrSubtaskNotFound is the error when can't find subtask by subtask_id and execId, // i.e. scheduler change the subtask's execId when subtask need to balance to other nodes. ErrSubtaskNotFound = errors.New("subtask not found") @@ -75,7 +81,8 @@ type TaskExecInfo struct { *proto.TaskBase // SubtaskConcurrency is the concurrency of subtask in current task step. // TODO: will be used when support subtask have smaller concurrency than task, - // TODO: such as post-process of import-into. + // TODO: such as post-process of import-into. Also remember the 'modifying' state + // also update subtask concurrency. // TODO: we might need create one task executor for each step in this case, to alloc // TODO: minimal resource SubtaskConcurrency int @@ -236,7 +243,7 @@ func (mgr *TaskManager) CreateTaskWithSession( func (mgr *TaskManager) GetTopUnfinishedTasks(ctx context.Context) ([]*proto.TaskBase, error) { rs, err := mgr.ExecuteSQLWithNewSession(ctx, `select `+basicTaskColumns+` from mysql.tidb_global_task t - where state in (%?, %?, %?, %?, %?, %?) + where state in (%?, %?, %?, %?, %?, %?, %?) order by priority asc, create_time asc, id asc limit %?`, proto.TaskStatePending, @@ -245,6 +252,7 @@ func (mgr *TaskManager) GetTopUnfinishedTasks(ctx context.Context) ([]*proto.Tas proto.TaskStateCancelling, proto.TaskStatePausing, proto.TaskStateResuming, + proto.TaskStateModifying, proto.MaxConcurrentTask*2, ) if err != nil { @@ -318,7 +326,16 @@ func (mgr *TaskManager) GetTaskByID(ctx context.Context, taskID int64) (task *pr // GetTaskBaseByID implements the TaskManager.GetTaskBaseByID interface. func (mgr *TaskManager) GetTaskBaseByID(ctx context.Context, taskID int64) (task *proto.TaskBase, err error) { - rs, err := mgr.ExecuteSQLWithNewSession(ctx, "select "+basicTaskColumns+" from mysql.tidb_global_task t where id = %?", taskID) + err = mgr.WithNewSession(func(se sessionctx.Context) error { + var err2 error + task, err2 = mgr.getTaskBaseByID(ctx, se.GetSQLExecutor(), taskID) + return err2 + }) + return +} + +func (*TaskManager) getTaskBaseByID(ctx context.Context, exec sqlexec.SQLExecutor, taskID int64) (task *proto.TaskBase, err error) { + rs, err := sqlexec.ExecSQL(ctx, exec, "select "+basicTaskColumns+" from mysql.tidb_global_task t where id = %?", taskID) if err != nil { return task, err } @@ -550,22 +567,6 @@ func (mgr *TaskManager) GetSubtaskErrors(ctx context.Context, taskID int64) ([]e return subTaskErrors, nil } -// HasSubtasksInStates checks if there are subtasks in the states. -func (mgr *TaskManager) HasSubtasksInStates(ctx context.Context, tidbID string, taskID int64, step proto.Step, states ...proto.SubtaskState) (bool, error) { - args := []any{tidbID, taskID, step} - for _, state := range states { - args = append(args, state) - } - rs, err := mgr.ExecuteSQLWithNewSession(ctx, `select 1 from mysql.tidb_background_subtask - where exec_id = %? and task_key = %? and step = %? - and state in (`+strings.Repeat("%?,", len(states)-1)+"%?) limit 1", args...) - if err != nil { - return false, err - } - - return len(rs) > 0, nil -} - // UpdateSubtasksExecIDs update subtasks' execID. func (mgr *TaskManager) UpdateSubtasksExecIDs(ctx context.Context, subtasks []*proto.SubtaskBase) error { // skip the update process. diff --git a/pkg/disttask/framework/taskexecutor/BUILD.bazel b/pkg/disttask/framework/taskexecutor/BUILD.bazel index 79a2483481d91..75bfd4b4cf3e5 100644 --- a/pkg/disttask/framework/taskexecutor/BUILD.bazel +++ b/pkg/disttask/framework/taskexecutor/BUILD.bazel @@ -19,7 +19,6 @@ go_library( "//pkg/disttask/framework/scheduler", "//pkg/disttask/framework/storage", "//pkg/disttask/framework/taskexecutor/execute", - "//pkg/lightning/common", "//pkg/lightning/log", "//pkg/metrics", "//pkg/sessionctx/variable", @@ -29,11 +28,11 @@ go_library( "//pkg/util/cpu", "//pkg/util/gctuner", "//pkg/util/intest", + "//pkg/util/logutil", "//pkg/util/memory", "@com_github_docker_go_units//:go-units", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", - "@com_github_pingcap_log//:log", "@org_uber_go_zap//:zap", ], ) @@ -51,7 +50,7 @@ go_test( ], embed = [":taskexecutor"], flaky = True, - shard_count = 17, + shard_count = 13, deps = [ "//pkg/disttask/framework/mock", "//pkg/disttask/framework/mock/execute", @@ -70,11 +69,7 @@ go_test( "@com_github_pingcap_errors//:errors", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//util", - "@org_golang_google_grpc//codes", - "@org_golang_google_grpc//status", "@org_uber_go_goleak//:goleak", "@org_uber_go_mock//gomock", - "@org_uber_go_zap//:zap", - "@org_uber_go_zap//zaptest/observer", ], ) diff --git a/pkg/disttask/framework/taskexecutor/execute/interface.go b/pkg/disttask/framework/taskexecutor/execute/interface.go index 75890d2c3ddb0..e60e11f407b5c 100644 --- a/pkg/disttask/framework/taskexecutor/execute/interface.go +++ b/pkg/disttask/framework/taskexecutor/execute/interface.go @@ -33,18 +33,21 @@ type StepExecutor interface { StepExecFrameworkInfo // Init is used to initialize the environment. - // if failed, task executor will retry later. + // task executor will retry if the returned error is retryable, see + // IsRetryableError in TaskExecutor.Extension, else framework will mark random + // subtask as failed, to trigger task failure. Init(context.Context) error // RunSubtask is used to run the subtask. + // The subtask meta can be updated in place, if no error returned, the subtask + // meta will be updated in the task table. RunSubtask(ctx context.Context, subtask *proto.Subtask) error // RealtimeSummary returns the realtime summary of the running subtask by this executor. RealtimeSummary() *SubtaskSummary - // OnFinished is used to handle the subtask when it is finished. - // The subtask meta can be updated in place. - OnFinished(ctx context.Context, subtask *proto.Subtask) error - // Cleanup is used to clean up the environment. + // Cleanup is used to clean up the environment for this step. + // the returned error will not affect task/subtask state, it's only logged, + // so don't put code that's prone to error in it. Cleanup(context.Context) error } @@ -64,6 +67,8 @@ type StepExecFrameworkInfo interface { // interfaces, the implementation of other interface must embed // StepExecFrameworkInfo. restricted() + // GetStep returns the step. + GetStep() proto.Step // GetResource returns the expected resource of this step executor. GetResource() *proto.StepResource } @@ -71,21 +76,29 @@ type StepExecFrameworkInfo interface { var stepExecFrameworkInfoName = reflect.TypeFor[StepExecFrameworkInfo]().Name() type frameworkInfo struct { + step proto.Step resource *proto.StepResource } func (*frameworkInfo) restricted() {} +func (f *frameworkInfo) GetStep() proto.Step { + return f.step +} + func (f *frameworkInfo) GetResource() *proto.StepResource { return f.resource } // SetFrameworkInfo sets the framework info for the StepExecutor. -func SetFrameworkInfo(exec StepExecutor, resource *proto.StepResource) { +func SetFrameworkInfo(exec StepExecutor, step proto.Step, resource *proto.StepResource) { if exec == nil { return } - toInject := &frameworkInfo{resource: resource} + toInject := &frameworkInfo{ + step: step, + resource: resource, + } // use reflection to set the framework info e := reflect.ValueOf(exec) if e.Kind() == reflect.Ptr || e.Kind() == reflect.Interface { diff --git a/pkg/disttask/framework/taskexecutor/interface.go b/pkg/disttask/framework/taskexecutor/interface.go index 2ae95087960b5..db368f51b4ef1 100644 --- a/pkg/disttask/framework/taskexecutor/interface.go +++ b/pkg/disttask/framework/taskexecutor/interface.go @@ -53,20 +53,12 @@ type TaskTable interface { // PauseSubtasks update subtasks state to paused. PauseSubtasks(ctx context.Context, execID string, taskID int64) error - HasSubtasksInStates(ctx context.Context, execID string, taskID int64, step proto.Step, states ...proto.SubtaskState) (bool, error) // RunningSubtasksBack2Pending update the state of subtask which belongs to this // node from running to pending. // see subtask state machine for more detail. RunningSubtasksBack2Pending(ctx context.Context, subtasks []*proto.SubtaskBase) error } -// Pool defines the interface of a pool. -type Pool interface { - Run(func()) error - RunWithConcurrency(chan func(), uint32) error - ReleaseAndWait() -} - // TaskExecutor is the executor for a task. // Each task type should implement this interface. // context tree of task execution: @@ -115,9 +107,7 @@ type Extension interface { // the Executor will mark the subtask as failed. IsIdempotent(subtask *proto.Subtask) bool // GetStepExecutor returns the subtask executor for the subtask. - // Note: - // 1. summary is the summary manager of all subtask of the same type now. - // 2. should not retry the error from it. + // Note, the error returned is fatal, framework will fail the task directly. GetStepExecutor(task *proto.Task) (execute.StepExecutor, error) // IsRetryableError returns whether the error is transient. // When error is transient, the framework won't mark subtasks as failed, @@ -152,8 +142,3 @@ func (*EmptyStepExecutor) RealtimeSummary() *execute.SubtaskSummary { func (*EmptyStepExecutor) Cleanup(context.Context) error { return nil } - -// OnFinished implements the StepExecutor interface. -func (*EmptyStepExecutor) OnFinished(_ context.Context, _ *proto.Subtask) error { - return nil -} diff --git a/pkg/disttask/framework/taskexecutor/manager.go b/pkg/disttask/framework/taskexecutor/manager.go index 460bcb8d0ec2e..43179a6ba036e 100644 --- a/pkg/disttask/framework/taskexecutor/manager.go +++ b/pkg/disttask/framework/taskexecutor/manager.go @@ -21,7 +21,6 @@ import ( "github.com/docker/go-units" "github.com/pingcap/errors" - "github.com/pingcap/log" litstorage "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/disttask/framework/handle" @@ -35,6 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/util/cgroup" "github.com/pingcap/tidb/pkg/util/cpu" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/memory" "go.uber.org/zap" ) @@ -80,7 +80,7 @@ type Manager struct { // NewManager creates a new task executor Manager. func NewManager(ctx context.Context, id string, taskTable TaskTable) (*Manager, error) { - logger := log.L() + logger := logutil.ErrVerboseLogger() if intest.InTest { logger = logger.With(zap.String("server-id", id)) } @@ -329,7 +329,8 @@ func (m *Manager) startTaskExecutor(taskBase *proto.TaskBase) { zap.Stringer("type", task.Type), zap.Int("remaining-slots", m.slotManager.availableSlots())) m.executorWG.RunWithLog(func() { defer func() { - m.logger.Info("task executor exit", zap.Int64("task-id", task.ID), zap.Stringer("type", task.Type)) + m.logger.Info("task executor exit", zap.Int64("task-id", task.ID), + zap.Stringer("type", task.Type)) m.slotManager.free(task.ID) m.delTaskExecutor(executor) executor.Close() @@ -381,7 +382,8 @@ func (m *Manager) failSubtask(err error, taskID int64, taskExecutor TaskExecutor return m.taskTable.FailSubtask(m.ctx, m.id, taskID, err) }, "update to subtask failed") if err1 == nil { - m.logger.Error("update error to subtask success", zap.Int64("task-id", taskID), zap.Error(err1), zap.Stack("stack")) + m.logger.Error("update error to subtask success", zap.Int64("task-id", taskID), + zap.Error(err1), zap.Stack("stack")) } } diff --git a/pkg/disttask/framework/taskexecutor/manager_test.go b/pkg/disttask/framework/taskexecutor/manager_test.go index 8f74e7a730a4c..1bbaa2915d5a9 100644 --- a/pkg/disttask/framework/taskexecutor/manager_test.go +++ b/pkg/disttask/framework/taskexecutor/manager_test.go @@ -22,7 +22,6 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/mock" "github.com/pingcap/tidb/pkg/disttask/framework/proto" - "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/memory" @@ -464,11 +463,7 @@ func TestManagerInitMeta(t *testing.T) { require.NoError(t, m.InitMeta()) require.True(t, ctrl.Satisfied()) - bak := scheduler.RetrySQLTimes - t.Cleanup(func() { - scheduler.RetrySQLTimes = bak - }) - scheduler.RetrySQLTimes = 1 + reduceRetrySQLTimes(t, 1) mockTaskTable.EXPECT().InitMeta(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("mock err")) require.ErrorContains(t, m.InitMeta(), "mock err") require.True(t, ctrl.Satisfied()) diff --git a/pkg/disttask/framework/taskexecutor/task_executor.go b/pkg/disttask/framework/taskexecutor/task_executor.go index 7d9f86e7cdbc4..fab34fec79606 100644 --- a/pkg/disttask/framework/taskexecutor/task_executor.go +++ b/pkg/disttask/framework/taskexecutor/task_executor.go @@ -16,25 +16,23 @@ package taskexecutor import ( "context" - "fmt" "sync" "sync/atomic" "time" "github.com/pingcap/errors" "github.com/pingcap/failpoint" - "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/disttask/framework/handle" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/execute" - "github.com/pingcap/tidb/pkg/lightning/common" llog "github.com/pingcap/tidb/pkg/lightning/log" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/backoff" "github.com/pingcap/tidb/pkg/util/gctuner" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/memory" "go.uber.org/zap" ) @@ -52,23 +50,16 @@ var ( var ( // ErrCancelSubtask is the cancel cause when cancelling subtasks. ErrCancelSubtask = errors.New("cancel subtasks") - // ErrFinishSubtask is the cancel cause when TaskExecutor successfully processed subtasks. - ErrFinishSubtask = errors.New("finish subtasks") // ErrNonIdempotentSubtask means the subtask is left in running state and is not idempotent, // so cannot be run again. ErrNonIdempotentSubtask = errors.New("subtask in running state and is not idempotent") - - // MockTiDBDown is used to mock TiDB node down, return true if it's chosen. - MockTiDBDown func(execID string, task *proto.TaskBase) bool ) // BaseTaskExecutor is the base implementation of TaskExecutor. type BaseTaskExecutor struct { // id, it's the same as server id now, i.e. host:port. - id string - // we only store task base here to reduce overhead of refreshing it. - // task meta is loaded when we do execute subtasks, see GetStepExecutor. - taskBase atomic.Pointer[proto.TaskBase] + id string + task atomic.Pointer[proto.Task] taskTable TaskTable logger *zap.Logger ctx context.Context @@ -79,12 +70,13 @@ type BaseTaskExecutor struct { mu struct { sync.RWMutex - err error - // handled indicates whether the error has been updated to one of the subtask. - handled bool // runtimeCancel is used to cancel the Run/Rollback when error occurs. runtimeCancel context.CancelCauseFunc } + + stepExec execute.StepExecutor + stepCtx context.Context + stepLogger *llog.Task } // NewBaseTaskExecutor creates a new BaseTaskExecutor. @@ -92,7 +84,7 @@ type BaseTaskExecutor struct { // TODO: we can refactor this part to pass task base only, but currently ADD-INDEX // depends on it to init, so we keep it for now. func NewBaseTaskExecutor(ctx context.Context, id string, task *proto.Task, taskTable TaskTable) *BaseTaskExecutor { - logger := log.L().With(zap.Int64("task-id", task.ID), zap.String("task-type", string(task.Type))) + logger := logutil.ErrVerboseLogger().With(zap.Int64("task-id", task.ID), zap.String("task-type", string(task.Type))) if intest.InTest { logger = logger.With(zap.String("server-id", id)) } @@ -104,7 +96,7 @@ func NewBaseTaskExecutor(ctx context.Context, id string, task *proto.Task, taskT cancel: cancelFunc, logger: logger, } - taskExecutorImpl.taskBase.Store(&task.TaskBase) + taskExecutorImpl.task.Store(task) return taskExecutorImpl } @@ -123,7 +115,7 @@ func (e *BaseTaskExecutor) checkBalanceSubtask(ctx context.Context) { case <-ticker.C: } - task := e.taskBase.Load() + task := e.task.Load() subtasks, err := e.taskTable.GetSubtasksByExecIDAndStepAndStates(ctx, e.id, task.ID, task.Step, proto.SubtaskStateRunning) if err != nil { @@ -143,7 +135,13 @@ func (e *BaseTaskExecutor) checkBalanceSubtask(ctx context.Context) { continue } if !e.IsIdempotent(st) { - e.updateSubtaskStateAndErrorImpl(ctx, st.ExecID, st.ID, proto.SubtaskStateFailed, ErrNonIdempotentSubtask) + if err := e.updateSubtaskStateAndErrorImpl(ctx, st.ExecID, st.ID, + proto.SubtaskStateFailed, ErrNonIdempotentSubtask); err != nil { + e.logger.Error("failed to update subtask to 'failed' state", zap.Error(err)) + continue + } + // if a subtask fail, scheduler will notice and start revert the + // task, so we can directly return. return } extraRunningSubtasks = append(extraRunningSubtasks, &st.SubtaskBase) @@ -196,34 +194,53 @@ func (e *BaseTaskExecutor) Ctx() context.Context { // Run implements the TaskExecutor interface. func (e *BaseTaskExecutor) Run(resource *proto.StepResource) { - var err error + defer func() { + if r := recover(); r != nil { + e.logger.Error("run task panicked, fail the task", zap.Any("recover", r), zap.Stack("stack")) + err4Panic := errors.Errorf("%v", r) + taskBase := e.task.Load() + e.failOneSubtask(e.ctx, taskBase.ID, err4Panic) + } + if e.stepExec != nil { + e.cleanStepExecutor() + } + }() // task executor occupies resources, if there's no subtask to run for 10s, // we release the resources so that other tasks can use them. // 300ms + 600ms + 1.2s + 2s * 4 = 10.1s backoffer := backoff.NewExponential(SubtaskCheckInterval, 2, MaxSubtaskCheckInterval) checkInterval, noSubtaskCheckCnt := SubtaskCheckInterval, 0 + skipBackoff := false for { - select { - case <-e.ctx.Done(): + if e.ctx.Err() != nil { return - case <-time.After(checkInterval): } - if err = e.refreshTask(); err != nil { + if !skipBackoff { + select { + case <-e.ctx.Done(): + return + case <-time.After(checkInterval): + } + } + skipBackoff = false + if err := e.refreshTask(); err != nil { if errors.Cause(err) == storage.ErrTaskNotFound { return } e.logger.Error("refresh task failed", zap.Error(err)) continue } - task := e.taskBase.Load() + task := e.task.Load() if task.State != proto.TaskStateRunning { return } - if exist, err := e.taskTable.HasSubtasksInStates(e.ctx, e.id, task.ID, task.Step, - unfinishedSubtaskStates...); err != nil { - e.logger.Error("check whether there are subtasks to run failed", zap.Error(err)) + + subtask, err := e.taskTable.GetFirstSubtaskInStates(e.ctx, e.id, task.ID, task.Step, + proto.SubtaskStatePending, proto.SubtaskStateRunning) + if err != nil { + e.logger.Warn("get first subtask meets error", zap.Error(err)) continue - } else if !exist { + } else if subtask == nil { if noSubtaskCheckCnt >= maxChecksWhenNoSubtask { e.logger.Info("no subtask to run for a while, exit") break @@ -234,253 +251,161 @@ func (e *BaseTaskExecutor) Run(resource *proto.StepResource) { } // reset it when we get a subtask checkInterval, noSubtaskCheckCnt = SubtaskCheckInterval, 0 - err = e.RunStep(resource) - if err != nil { - e.logger.Error("failed to handle task", zap.Error(err)) - } - } -} -// RunStep start to fetch and run all subtasks for the step of task on the node. -// return if there's no subtask to run. -func (e *BaseTaskExecutor) RunStep(resource *proto.StepResource) (err error) { - defer func() { - if r := recover(); r != nil { - e.logger.Error("BaseTaskExecutor panicked", zap.Any("recover", r), zap.Stack("stack")) - err4Panic := errors.Errorf("%v", r) - err1 := e.updateSubtask(err4Panic) - if err == nil { - err = err1 + if e.stepExec != nil && e.stepExec.GetStep() != subtask.Step { + e.cleanStepExecutor() + } + if e.stepExec == nil { + if err2 := e.createStepExecutor(resource); err2 != nil { + e.logger.Error("create step executor failed", + zap.String("step", proto.Step2Str(task.Type, task.Step)), zap.Error(err2)) + continue } } - }() - err = e.runStep(resource) - if e.mu.handled { - return err - } - if err == nil { - // may have error in - // 1. defer function in run(ctx, task) - // 2. cancel ctx - // TODO: refine onError/getError - if e.getError() != nil { - err = e.getError() - } else if e.ctx.Err() != nil { - err = e.ctx.Err() + err = e.runSubtask(subtask) + if err != nil { + // task executor keeps running its subtasks even though some subtask + // might have failed, we rely on scheduler to detect the error, and + // notify task executor or manager to cancel. + e.logger.Error("run subtask failed", zap.Error(err)) } else { - return nil + // if we run a subtask successfully, we will try to run next subtask + // immediately for once. + skipBackoff = true } } - - return e.updateSubtask(err) } -func (e *BaseTaskExecutor) runStep(resource *proto.StepResource) (resErr error) { - runStepCtx, runStepCancel := context.WithCancelCause(e.ctx) - e.registerRunStepCancelFunc(runStepCancel) - defer func() { - runStepCancel(ErrFinishSubtask) - e.unregisterRunStepCancelFunc() - }() - e.resetError() - taskBase := e.taskBase.Load() - task, err := e.taskTable.GetTaskByID(e.ctx, taskBase.ID) +func (e *BaseTaskExecutor) createStepExecutor(resource *proto.StepResource) error { + task := e.task.Load() + + stepExecutor, err := e.GetStepExecutor(task) if err != nil { - e.onError(errors.Trace(err)) - return e.getError() + e.logger.Info("failed to get step executor", zap.Error(err)) + e.failOneSubtask(e.ctx, task.ID, err) + return errors.Trace(err) + } + execute.SetFrameworkInfo(stepExecutor, task.Step, resource) + + if err := stepExecutor.Init(e.ctx); err != nil { + if e.IsRetryableError(err) { + e.logger.Info("meet retryable err when init step executor", zap.Error(err)) + } else { + e.logger.Info("failed to init step executor", zap.Error(err)) + e.failOneSubtask(e.ctx, task.ID, err) + } + return errors.Trace(err) } + stepLogger := llog.BeginTask(e.logger.With( zap.String("step", proto.Step2Str(task.Type, task.Step)), zap.Float64("mem-limit-percent", gctuner.GlobalMemoryLimitTuner.GetPercentage()), zap.String("server-mem-limit", memory.ServerMemoryLimitOriginText.Load()), zap.Stringer("resource", resource), ), "execute task step") - // log as info level, subtask might be cancelled, let caller check it. - defer func() { - stepLogger.End(zap.InfoLevel, resErr) - }() - stepExecutor, err := e.GetStepExecutor(task) - if err != nil { - e.onError(errors.Trace(err)) - return e.getError() - } - execute.SetFrameworkInfo(stepExecutor, resource) - - failpoint.Inject("mockExecSubtaskInitEnvErr", func() { - failpoint.Return(errors.New("mockExecSubtaskInitEnvErr")) - }) - if err := stepExecutor.Init(runStepCtx); err != nil { - e.onError(errors.Trace(err)) - return e.getError() - } + runStepCtx, runStepCancel := context.WithCancelCause(e.ctx) + e.stepExec = stepExecutor + e.stepCtx = runStepCtx + e.stepLogger = stepLogger - defer func() { - err := stepExecutor.Cleanup(runStepCtx) - if err != nil { - e.logger.Error("cleanup subtask exec env failed", zap.Error(err)) - e.onError(errors.Trace(err)) - } - }() + e.mu.Lock() + defer e.mu.Unlock() + e.mu.runtimeCancel = runStepCancel - for { - // check if any error occurs. - if err := e.getError(); err != nil { - break - } - if runStepCtx.Err() != nil { - break - } + return nil +} - subtask, err := e.taskTable.GetFirstSubtaskInStates(runStepCtx, e.id, task.ID, task.Step, - proto.SubtaskStatePending, proto.SubtaskStateRunning) - if err != nil { - e.logger.Warn("GetFirstSubtaskInStates meets error", zap.Error(err)) - continue - } - if subtask == nil { - break - } +func (e *BaseTaskExecutor) cleanStepExecutor() { + if err2 := e.stepExec.Cleanup(e.ctx); err2 != nil { + e.logger.Error("cleanup subtask exec env failed", zap.Error(err2)) + // Cleanup is not a critical path of running subtask, so no need to + // affect state of subtasks. there might be no subtask to change even + // we want to if all subtasks are finished. + } + e.stepExec = nil + e.stepLogger.End(zap.InfoLevel, nil) - if subtask.State == proto.SubtaskStateRunning { - if !e.IsIdempotent(subtask) { - e.logger.Info("subtask in running state and is not idempotent, fail it", - zap.Int64("subtask-id", subtask.ID)) - e.onError(ErrNonIdempotentSubtask) - e.updateSubtaskStateAndErrorImpl(runStepCtx, subtask.ExecID, subtask.ID, proto.SubtaskStateFailed, ErrNonIdempotentSubtask) - e.markErrorHandled() - break - } - e.logger.Info("subtask in running state and is idempotent", + e.mu.Lock() + defer e.mu.Unlock() + e.mu.runtimeCancel(nil) + e.mu.runtimeCancel = nil +} + +func (e *BaseTaskExecutor) runSubtask(subtask *proto.Subtask) (resErr error) { + if subtask.State == proto.SubtaskStateRunning { + if !e.IsIdempotent(subtask) { + e.logger.Info("subtask in running state and is not idempotent, fail it", zap.Int64("subtask-id", subtask.ID)) - } else { - // subtask.State == proto.SubtaskStatePending - err := e.startSubtask(runStepCtx, subtask.ID) - if err != nil { - e.logger.Warn("startSubtask meets error", zap.Error(err)) - // should ignore ErrSubtaskNotFound - // since it only means that the subtask not owned by current task executor. - if err == storage.ErrSubtaskNotFound { - continue - } - e.onError(errors.Trace(err)) - continue + if err := e.updateSubtaskStateAndErrorImpl(e.stepCtx, subtask.ExecID, subtask.ID, + proto.SubtaskStateFailed, ErrNonIdempotentSubtask); err != nil { + return err } + return ErrNonIdempotentSubtask + } + e.logger.Info("subtask in running state and is idempotent", + zap.Int64("subtask-id", subtask.ID)) + } else { + // subtask.State == proto.SubtaskStatePending + err := e.startSubtask(e.stepCtx, subtask.ID) + if err != nil { + // should ignore ErrSubtaskNotFound + // since it only means that the subtask not owned by current task executor. + if err != storage.ErrSubtaskNotFound { + e.logger.Warn("start subtask meets error", zap.Error(err)) + } + return errors.Trace(err) } - - failpoint.Inject("cancelBeforeRunSubtask", func() { - runStepCancel(nil) - }) - - e.runSubtask(runStepCtx, stepExecutor, subtask) } - return e.getError() -} -func (e *BaseTaskExecutor) hasRealtimeSummary(stepExecutor execute.StepExecutor) bool { - _, ok := e.taskTable.(*storage.TaskManager) - return ok && stepExecutor.RealtimeSummary() != nil -} - -func (e *BaseTaskExecutor) runSubtask(ctx context.Context, stepExecutor execute.StepExecutor, subtask *proto.Subtask) { - err := func() error { + logger := e.logger.With(zap.Int64("subtaskID", subtask.ID), zap.String("step", proto.Step2Str(subtask.Type, subtask.Step))) + logTask := llog.BeginTask(logger, "run subtask") + subtaskErr := func() error { e.currSubtaskID.Store(subtask.ID) var wg util.WaitGroupWrapper - checkCtx, checkCancel := context.WithCancel(ctx) + checkCtx, checkCancel := context.WithCancel(e.stepCtx) wg.RunWithLog(func() { e.checkBalanceSubtask(checkCtx) }) - if e.hasRealtimeSummary(stepExecutor) { + if e.hasRealtimeSummary(e.stepExec) { wg.RunWithLog(func() { - e.updateSubtaskSummaryLoop(checkCtx, ctx, stepExecutor) + e.updateSubtaskSummaryLoop(checkCtx, e.stepCtx, e.stepExec) }) } defer func() { checkCancel() wg.Wait() }() - return stepExecutor.RunSubtask(ctx, subtask) + return e.stepExec.RunSubtask(e.stepCtx, subtask) }() - failpoint.Inject("MockRunSubtaskCancel", func(val failpoint.Value) { - if val.(bool) { - err = ErrCancelSubtask - } - }) - - failpoint.Inject("MockRunSubtaskContextCanceled", func(val failpoint.Value) { - if val.(bool) { - err = context.Canceled - } - }) - - if err != nil { - e.onError(errors.Trace(err)) - } + failpoint.InjectCall("afterRunSubtask", e, &subtaskErr) + logTask.End2(zap.InfoLevel, subtaskErr) - finished := e.markSubTaskCanceledOrFailed(ctx, subtask) - if finished { - return - } - - failpoint.Inject("mockTiDBShutdown", func() { - if MockTiDBDown(e.id, e.GetTaskBase()) { - failpoint.Return() - } - }) - - failpoint.Inject("MockExecutorRunErr", func(val failpoint.Value) { - if val.(bool) { - e.onError(errors.New("MockExecutorRunErr")) - } - }) - failpoint.Inject("MockExecutorRunCancel", func(val failpoint.Value) { - if taskID, ok := val.(int); ok { - mgr, err := storage.GetTaskManager() - if err != nil { - e.logger.Error("get task manager failed", zap.Error(err)) - } else { - err = mgr.CancelTask(ctx, int64(taskID)) - if err != nil { - e.logger.Error("cancel task failed", zap.Error(err)) - } - } - } - }) - e.onSubtaskFinished(ctx, stepExecutor, subtask) -} + failpoint.InjectCall("mockTiDBShutdown", e, e.id, e.GetTaskBase()) -func (e *BaseTaskExecutor) onSubtaskFinished(ctx context.Context, executor execute.StepExecutor, subtask *proto.Subtask) { - if err := e.getError(); err == nil { - if err = executor.OnFinished(ctx, subtask); err != nil { - e.onError(errors.Trace(err)) + if subtaskErr != nil { + if err := e.markSubTaskCanceledOrFailed(e.stepCtx, subtask, subtaskErr); err != nil { + logger.Error("failed to handle subtask error", zap.Error(err)) } - } - failpoint.Inject("MockSubtaskFinishedCancel", func(val failpoint.Value) { - if val.(bool) { - e.onError(errors.Trace(ErrCancelSubtask)) - } - }) - - finished := e.markSubTaskCanceledOrFailed(ctx, subtask) - if finished { - return - } - - e.finishSubtask(ctx, subtask) - - finished = e.markSubTaskCanceledOrFailed(ctx, subtask) - if finished { - return + return subtaskErr } + err := e.finishSubtask(e.stepCtx, subtask) failpoint.InjectCall("syncAfterSubtaskFinish") + return err +} + +func (e *BaseTaskExecutor) hasRealtimeSummary(stepExecutor execute.StepExecutor) bool { + _, ok := e.taskTable.(*storage.TaskManager) + return ok && stepExecutor.RealtimeSummary() != nil } // GetTaskBase implements TaskExecutor.GetTaskBase. func (e *BaseTaskExecutor) GetTaskBase() *proto.TaskBase { - return e.taskBase.Load() + task := e.task.Load() + return &task.TaskBase } // CancelRunningSubtask implements TaskExecutor.CancelRunningSubtask. @@ -500,27 +425,15 @@ func (e *BaseTaskExecutor) Close() { // refreshTask fetch task state from tidb_global_task table. func (e *BaseTaskExecutor) refreshTask() error { - task := e.GetTaskBase() - newTaskBase, err := e.taskTable.GetTaskBaseByID(e.ctx, task.ID) + oldTask := e.task.Load() + newTask, err := e.taskTable.GetTaskByID(e.ctx, oldTask.ID) if err != nil { return err } - e.taskBase.Store(newTaskBase) + e.task.Store(newTask) return nil } -func (e *BaseTaskExecutor) registerRunStepCancelFunc(cancel context.CancelCauseFunc) { - e.mu.Lock() - defer e.mu.Unlock() - e.mu.runtimeCancel = cancel -} - -func (e *BaseTaskExecutor) unregisterRunStepCancelFunc() { - e.mu.Lock() - defer e.mu.Unlock() - e.mu.runtimeCancel = nil -} - func (e *BaseTaskExecutor) cancelRunStepWith(cause error) { e.mu.Lock() defer e.mu.Unlock() @@ -529,49 +442,8 @@ func (e *BaseTaskExecutor) cancelRunStepWith(cause error) { } } -func (e *BaseTaskExecutor) onError(err error) { - if err == nil { - return - } - - if errors.HasStack(err) { - e.logger.Error("onError", zap.Error(err), zap.Stack("stack"), zap.String("error stack", fmt.Sprintf("%+v", err))) - } else { - e.logger.Error("onError", zap.Error(err), zap.Stack("stack")) - } - e.mu.Lock() - defer e.mu.Unlock() - - if e.mu.err == nil { - e.mu.err = err - e.logger.Error("taskExecutor met first error", zap.Error(err)) - } - - if e.mu.runtimeCancel != nil { - e.mu.runtimeCancel(err) - } -} - -func (e *BaseTaskExecutor) markErrorHandled() { - e.mu.Lock() - defer e.mu.Unlock() - e.mu.handled = true -} - -func (e *BaseTaskExecutor) getError() error { - e.mu.RLock() - defer e.mu.RUnlock() - return e.mu.err -} - -func (e *BaseTaskExecutor) resetError() { - e.mu.Lock() - defer e.mu.Unlock() - e.mu.err = nil - e.mu.handled = false -} - -func (e *BaseTaskExecutor) updateSubtaskStateAndErrorImpl(ctx context.Context, execID string, subtaskID int64, state proto.SubtaskState, subTaskErr error) { +func (e *BaseTaskExecutor) updateSubtaskStateAndErrorImpl(ctx context.Context, execID string, subtaskID int64, state proto.SubtaskState, subTaskErr error) error { + start := time.Now() // retry for 3+6+12+24+(30-4)*30 ~= 825s ~= 14 minutes backoffer := backoff.NewExponential(scheduler.RetrySQLInterval, 2, scheduler.RetrySQLMaxInterval) err := handle.RunWithRetry(ctx, scheduler.RetrySQLTimes, backoffer, e.logger, @@ -580,17 +452,21 @@ func (e *BaseTaskExecutor) updateSubtaskStateAndErrorImpl(ctx context.Context, e }, ) if err != nil { - e.onError(errors.Trace(err)) + e.logger.Error("failed to update subtask state", zap.Int64("subtaskID", subtaskID), + zap.Stringer("targetState", state), zap.NamedError("subtaskErr", subTaskErr), + zap.Duration("takes", time.Since(start)), zap.Error(err)) } + return err } // startSubtask try to change the state of the subtask to running. // If the subtask is not owned by the task executor, // the update will fail and task executor should not run the subtask. func (e *BaseTaskExecutor) startSubtask(ctx context.Context, subtaskID int64) error { + start := time.Now() // retry for 3+6+12+24+(30-4)*30 ~= 825s ~= 14 minutes backoffer := backoff.NewExponential(scheduler.RetrySQLInterval, 2, scheduler.RetrySQLMaxInterval) - return handle.RunWithRetry(ctx, scheduler.RetrySQLTimes, backoffer, e.logger, + err := handle.RunWithRetry(ctx, scheduler.RetrySQLTimes, backoffer, e.logger, func(ctx context.Context) (bool, error) { err := e.taskTable.StartSubtask(ctx, subtaskID, e.id) if err == storage.ErrSubtaskNotFound { @@ -600,9 +476,16 @@ func (e *BaseTaskExecutor) startSubtask(ctx context.Context, subtaskID int64) er return true, err }, ) + if err != nil && err != storage.ErrSubtaskNotFound { + e.logger.Error("failed to start subtask", zap.Int64("subtaskID", subtaskID), + zap.Duration("takes", time.Since(start)), zap.Error(err)) + } + return err } -func (e *BaseTaskExecutor) finishSubtask(ctx context.Context, subtask *proto.Subtask) { +func (e *BaseTaskExecutor) finishSubtask(ctx context.Context, subtask *proto.Subtask) error { + start := time.Now() + // retry for 3+6+12+24+(30-4)*30 ~= 825s ~= 14 minutes backoffer := backoff.NewExponential(scheduler.RetrySQLInterval, 2, scheduler.RetrySQLMaxInterval) err := handle.RunWithRetry(ctx, scheduler.RetrySQLTimes, backoffer, e.logger, func(ctx context.Context) (bool, error) { @@ -610,79 +493,46 @@ func (e *BaseTaskExecutor) finishSubtask(ctx context.Context, subtask *proto.Sub }, ) if err != nil { - e.onError(errors.Trace(err)) + e.logger.Error("failed to finish subtask", zap.Int64("subtaskID", subtask.ID), + zap.Duration("takes", time.Since(start)), zap.Error(err)) } + return err } // markSubTaskCanceledOrFailed check the error type and decide the subtasks' state. // 1. Only cancel subtasks when meet ErrCancelSubtask. // 2. Only fail subtasks when meet non retryable error. // 3. When meet other errors, don't change subtasks' state. -func (e *BaseTaskExecutor) markSubTaskCanceledOrFailed(ctx context.Context, subtask *proto.Subtask) bool { - if err := e.getError(); err != nil { - err := errors.Cause(err) - if ctx.Err() != nil && context.Cause(ctx) == ErrCancelSubtask { - e.logger.Warn("subtask canceled", zap.Error(err)) - e.updateSubtaskStateAndErrorImpl(e.ctx, subtask.ExecID, subtask.ID, proto.SubtaskStateCanceled, nil) - } else if e.IsRetryableError(err) { - e.logger.Warn("meet retryable error", zap.Error(err)) - } else if common.IsContextCanceledError(err) { - e.logger.Info("meet context canceled for gracefully shutdown", zap.Error(err)) - } else { - e.logger.Warn("subtask failed", zap.Error(err)) - e.updateSubtaskStateAndErrorImpl(e.ctx, subtask.ExecID, subtask.ID, proto.SubtaskStateFailed, err) +func (e *BaseTaskExecutor) markSubTaskCanceledOrFailed(ctx context.Context, subtask *proto.Subtask, stErr error) error { + if ctx.Err() != nil { + if context.Cause(ctx) == ErrCancelSubtask { + e.logger.Warn("subtask canceled") + return e.updateSubtaskStateAndErrorImpl(e.ctx, subtask.ExecID, subtask.ID, proto.SubtaskStateCanceled, nil) } - e.markErrorHandled() - return true - } - return false -} -func (e *BaseTaskExecutor) failSubtaskWithRetry(ctx context.Context, taskID int64, err error) error { - backoffer := backoff.NewExponential(scheduler.RetrySQLInterval, 2, scheduler.RetrySQLMaxInterval) - err1 := handle.RunWithRetry(e.ctx, scheduler.RetrySQLTimes, backoffer, e.logger, - func(_ context.Context) (bool, error) { - return true, e.taskTable.FailSubtask(ctx, e.id, taskID, err) - }, - ) - if err1 == nil { - e.logger.Info("failed one subtask succeed", zap.NamedError("subtask-err", err)) + e.logger.Info("meet context canceled for gracefully shutdown") + } else if e.IsRetryableError(stErr) { + e.logger.Warn("meet retryable error", zap.Error(stErr)) + } else { + e.logger.Warn("subtask failed", zap.Error(stErr)) + return e.updateSubtaskStateAndErrorImpl(e.ctx, subtask.ExecID, subtask.ID, proto.SubtaskStateFailed, stErr) } - return err1 + return nil } -func (e *BaseTaskExecutor) cancelSubtaskWithRetry(ctx context.Context, taskID int64, err error) error { - e.logger.Warn("subtask canceled", zap.NamedError("subtask-cancel", err)) +// on fatal error, we randomly fail a subtask to notify scheduler to revert the +// task. we don't return the internal error, what can we do if we failed to handle +// a fatal error? +func (e *BaseTaskExecutor) failOneSubtask(ctx context.Context, taskID int64, subtaskErr error) { + start := time.Now() backoffer := backoff.NewExponential(scheduler.RetrySQLInterval, 2, scheduler.RetrySQLMaxInterval) - err1 := handle.RunWithRetry(e.ctx, scheduler.RetrySQLTimes, backoffer, e.logger, + err1 := handle.RunWithRetry(ctx, scheduler.RetrySQLTimes, backoffer, e.logger, func(_ context.Context) (bool, error) { - return true, e.taskTable.CancelSubtask(ctx, e.id, taskID) + return true, e.taskTable.FailSubtask(ctx, e.id, taskID, subtaskErr) }, ) - if err1 == nil { - e.logger.Info("canceled one subtask succeed", zap.NamedError("subtask-cancel", err)) - } - return err1 -} - -// updateSubtask check the error type and decide the subtasks' state. -// 1. Only cancel subtasks when meet ErrCancelSubtask. -// 2. Only fail subtasks when meet non retryable error. -// 3. When meet other errors, don't change subtasks' state. -// Handled errors should not happen during subtasks execution. -// Only handle errors before subtasks execution and after subtasks execution. -func (e *BaseTaskExecutor) updateSubtask(err error) error { - task := e.taskBase.Load() - err = errors.Cause(err) - // TODO this branch is unreachable now, remove it when we refactor error handling. - if e.ctx.Err() != nil && context.Cause(e.ctx) == ErrCancelSubtask { - return e.cancelSubtaskWithRetry(e.ctx, task.ID, ErrCancelSubtask) - } else if e.IsRetryableError(err) { - e.logger.Warn("meet retryable error", zap.Error(err)) - } else if common.IsContextCanceledError(err) { - e.logger.Info("meet context canceled for gracefully shutdown", zap.Error(err)) - } else { - return e.failSubtaskWithRetry(e.ctx, task.ID, err) + if err1 != nil { + e.logger.Error("fail one subtask failed", zap.NamedError("subtaskErr", subtaskErr), + zap.Duration("takes", time.Since(start)), zap.Error(err1)) } - return nil } diff --git a/pkg/disttask/framework/taskexecutor/task_executor_test.go b/pkg/disttask/framework/taskexecutor/task_executor_test.go index 132f798e64b60..5096a5f21332a 100644 --- a/pkg/disttask/framework/taskexecutor/task_executor_test.go +++ b/pkg/disttask/framework/taskexecutor/task_executor_test.go @@ -23,14 +23,11 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/mock" mockexecute "github.com/pingcap/tidb/pkg/disttask/framework/mock/execute" "github.com/pingcap/tidb/pkg/disttask/framework/proto" + "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/execute" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" - "go.uber.org/zap" - "go.uber.org/zap/zaptest/observer" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) var ( @@ -39,343 +36,540 @@ var ( } ) -func TestTaskExecutorRun(t *testing.T) { - var tp proto.TaskType = "test_task_executor_run" - var concurrency = 10 - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockSubtaskTable := mock.NewMockTaskTable(ctrl) - mockStepExecutor := mockexecute.NewMockStepExecutor(ctrl) - mockExtension := mock.NewMockExtension(ctrl) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(false).AnyTimes() - - task1 := &proto.Task{TaskBase: proto.TaskBase{State: proto.TaskStateRunning, Step: proto.StepOne, Type: tp, ID: 1, Concurrency: concurrency}} - // mock for checkBalanceSubtask - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "id", - task1.ID, proto.StepOne, proto.SubtaskStateRunning).Return([]*proto.Subtask{{SubtaskBase: proto.SubtaskBase{ID: 1}}}, nil).AnyTimes() - // mock GetTaskByID at beginning of runStep - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task1.ID).Return(task1, nil).AnyTimes() - - // 1. no taskExecutor constructor - taskExecutorRegisterErr := errors.Errorf("constructor of taskExecutor for key not found") - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(nil, taskExecutorRegisterErr).Times(2) - taskExecutor := NewBaseTaskExecutor(ctx, "id", task1, mockSubtaskTable) - taskExecutor.Extension = mockExtension - err := taskExecutor.runStep(nil) - require.EqualError(t, err, taskExecutorRegisterErr.Error()) - mockSubtaskTable.EXPECT().FailSubtask(taskExecutor.ctx, gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - err = taskExecutor.RunStep(nil) - require.NoError(t, err) - require.True(t, ctrl.Satisfied()) - - // 2. init subtask exec env failed - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockStepExecutor, nil).AnyTimes() - - initErr := errors.New("init error") - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(initErr) - err = taskExecutor.runStep(nil) - require.EqualError(t, err, initErr.Error()) - require.True(t, ctrl.Satisfied()) - - // 3. run subtask failed - runSubtaskErr := errors.New("run subtask error") - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task1.ID, "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(runSubtaskErr) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", task1.ID, proto.SubtaskStateFailed, gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - - err = taskExecutor.RunStep(nil) - require.EqualError(t, err, runSubtaskErr.Error()) - require.True(t, ctrl.Satisfied()) - - // 4. run subtask success - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task1.ID, "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), "id", int64(1), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.NoError(t, err) - require.True(t, ctrl.Satisfied()) - - // 5. run subtask one by one - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - // first round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), int64(1), "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), "id", int64(1), gomock.Any()).Return(nil) - // second round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 2, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), int64(2), "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), "id", int64(2), gomock.Any()).Return(nil) - // third round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.NoError(t, err) - require.True(t, ctrl.Satisfied()) - - // run previous left subtask in running state again, but the subtask is not - // idempotent, so fail it. - subtaskID := int64(2) - theSubtask := &proto.Subtask{SubtaskBase: proto.SubtaskBase{ID: subtaskID, Type: tp, Step: proto.StepOne, State: proto.SubtaskStateRunning, ExecID: "id"}} - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(theSubtask, nil) - mockExtension.EXPECT().IsIdempotent(gomock.Any()).Return(false) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", subtaskID, proto.SubtaskStateFailed, gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.ErrorContains(t, err, "subtask in running state and is not idempotent") - require.True(t, ctrl.Satisfied()) - - // run previous left subtask in running state again, but the subtask idempotent, - // run it again. - theSubtask = &proto.Subtask{SubtaskBase: proto.SubtaskBase{ID: subtaskID, Type: tp, Step: proto.StepOne, State: proto.SubtaskStateRunning, ExecID: "id"}} - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - // first round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(theSubtask, nil) - mockExtension.EXPECT().IsIdempotent(gomock.Any()).Return(true) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), "id", subtaskID, gomock.Any()).Return(nil) - // second round of the run loop - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.NoError(t, err) - require.True(t, ctrl.Satisfied()) - - // 6. cancel - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task1.ID, "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(ErrCancelSubtask) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", task1.ID, proto.SubtaskStateCanceled, gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.EqualError(t, err, ErrCancelSubtask.Error()) - require.True(t, ctrl.Satisfied()) - - // 7. RunSubtask return context.Canceled - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task1.ID, "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(context.Canceled) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.EqualError(t, err, context.Canceled.Error()) - require.True(t, ctrl.Satisfied()) - - // 8. grpc cancel - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task1.ID, "id").Return(nil) - grpcErr := status.Error(codes.Canceled, "test cancel") - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(grpcErr) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.EqualError(t, err, grpcErr.Error()) - require.True(t, ctrl.Satisfied()) - - // 9. annotate grpc cancel - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task1.ID, "id").Return(nil) - grpcErr = status.Error(codes.Canceled, "test cancel") - annotatedError := errors.Annotatef( - grpcErr, - " %s", - "test annotate", - ) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(annotatedError) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.EqualError(t, err, annotatedError.Error()) - require.True(t, ctrl.Satisfied()) - - // 10. subtask owned by other executor - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task1.ID, "id").Return(storage.ErrSubtaskNotFound) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.RunStep(nil) - require.NoError(t, err) - require.True(t, ctrl.Satisfied()) - - // task not found when Run - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(nil, storage.ErrTaskNotFound) - taskExecutor.Run(nil) - require.True(t, ctrl.Satisfied()) - // task Succeed inside Run - task1.State = proto.TaskStateSucceed - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(&task1.TaskBase, nil) - taskExecutor.Run(nil) - require.True(t, ctrl.Satisfied()) - - task1.State = proto.TaskStateRunning - ReduceCheckInterval(t) +func reduceRetrySQLTimes(t *testing.T, target int) { + retryCntBak := scheduler.RetrySQLTimes + t.Cleanup(func() { + scheduler.RetrySQLTimes = retryCntBak + }) + scheduler.RetrySQLTimes = target +} - // GetTaskBaseByID error, should continue - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(nil, errors.New("mock err")) - // HasSubtasksInStates error, should continue - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(&task1.TaskBase, nil) - mockSubtaskTable.EXPECT().HasSubtasksInStates(gomock.Any(), "id", task1.ID, task1.Step, - unfinishedNormalSubtaskStates...).Return(false, errors.New("failed to check")) - // no subtask to run, should exit the loop after some time. - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(&task1.TaskBase, nil).Times(8) - mockSubtaskTable.EXPECT().HasSubtasksInStates(gomock.Any(), "id", task1.ID, task1.Step, - unfinishedNormalSubtaskStates...).Return(false, nil).Times(8) - taskExecutor.Run(nil) - require.True(t, ctrl.Satisfied()) - - // no-subtask check counter should be reset after a subtask is run. - // loop 4 times without subtask, then 1 time with subtask. - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(&task1.TaskBase, nil).Times(4) - mockSubtaskTable.EXPECT().HasSubtasksInStates(gomock.Any(), "id", task1.ID, task1.Step, - unfinishedNormalSubtaskStates...).Return(false, nil).Times(4) - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(&task1.TaskBase, nil) - mockSubtaskTable.EXPECT().HasSubtasksInStates(gomock.Any(), "id", task1.ID, task1.Step, - unfinishedNormalSubtaskStates...).Return(true, nil) - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task1.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - // should loop for another 8 times - mockSubtaskTable.EXPECT().GetTaskBaseByID(gomock.Any(), task1.ID).Return(&task1.TaskBase, nil).Times(8) - mockSubtaskTable.EXPECT().HasSubtasksInStates(gomock.Any(), "id", task1.ID, task1.Step, - unfinishedNormalSubtaskStates...).Return(false, nil).Times(8) - taskExecutor.Run(nil) - require.True(t, ctrl.Satisfied()) - - taskExecutor.Cancel() - taskExecutor.Run(nil) - require.True(t, ctrl.Satisfied()) +type taskExecutorRunEnv struct { + ctrl *gomock.Controller + taskTable *mock.MockTaskTable + stepExecutor *mockexecute.MockStepExecutor + taskExecExt *mock.MockExtension + taskExecutor *BaseTaskExecutor + task1 *proto.Task + succeedTask1 *proto.Task + revertingTask1 *proto.Task + pendingSubtask1 *proto.Subtask + runningSubtask2 *proto.Subtask } -func TestTaskExecutor(t *testing.T) { - var tp proto.TaskType = "test_task_executor" - var taskID int64 = 1 - var concurrency = 10 - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() +func newTaskExecutorRunEnv(t *testing.T) *taskExecutorRunEnv { ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockSubtaskTable := mock.NewMockTaskTable(ctrl) - mockStepExecutor := mockexecute.NewMockStepExecutor(ctrl) - mockExtension := mock.NewMockExtension(ctrl) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", taskID, proto.SubtaskStateFailed, gomock.Any()).Return(nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockStepExecutor, nil).AnyTimes() - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(false).AnyTimes() - // mock for checkBalanceSubtask - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "id", - taskID, proto.StepOne, proto.SubtaskStateRunning).Return([]*proto.Subtask{{SubtaskBase: proto.SubtaskBase{ID: 1}}}, nil).AnyTimes() - - task := &proto.Task{TaskBase: proto.TaskBase{Step: proto.StepOne, Type: tp, ID: taskID, Concurrency: concurrency}} - taskExecutor := NewBaseTaskExecutor(ctx, "id", task, mockSubtaskTable) - taskExecutor.Extension = mockExtension + taskTable := mock.NewMockTaskTable(ctrl) + stepExecutor := mockexecute.NewMockStepExecutor(ctrl) + taskExecExt := mock.NewMockExtension(ctrl) + + task1 := proto.Task{TaskBase: proto.TaskBase{State: proto.TaskStateRunning, Step: proto.StepOne, + Type: proto.TaskTypeExample, ID: 1, Concurrency: 10}} + taskExecutor := NewBaseTaskExecutor(context.Background(), "id", &task1, taskTable) + taskExecutor.Extension = taskExecExt + + t.Cleanup(func() { + ctrl.Finish() + }) + ReduceCheckInterval(t) - // 1. run failed. - runSubtaskErr := errors.New("run subtask error") - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - subtasks := []*proto.Subtask{ - {SubtaskBase: proto.SubtaskBase{ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, + succeedTask1 := task1 + succeedTask1.State = proto.TaskStateSucceed + revertingTask1 := task1 + revertingTask1.State = proto.TaskStateReverting + return &taskExecutorRunEnv{ + ctrl: ctrl, + taskTable: taskTable, + stepExecutor: stepExecutor, + taskExecExt: taskExecExt, + taskExecutor: taskExecutor, + task1: &task1, + succeedTask1: &succeedTask1, + revertingTask1: &revertingTask1, + pendingSubtask1: &proto.Subtask{SubtaskBase: proto.SubtaskBase{ + ID: 1, Type: task1.Type, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, + runningSubtask2: &proto.Subtask{SubtaskBase: proto.SubtaskBase{ + ID: 2, Type: task1.Type, Step: proto.StepOne, State: proto.SubtaskStateRunning, ExecID: "id"}}, } - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(subtasks[0], nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID, "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(runSubtaskErr) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err := taskExecutor.runStep(nil) - require.EqualError(t, err, runSubtaskErr.Error()) - require.True(t, ctrl.Satisfied()) - - // 2. run one subtask, then task moved to history(ErrTaskNotFound). - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(subtasks[0], nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), taskID, "id").Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), "id", int64(1), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - err = taskExecutor.runStep(nil) - require.NoError(t, err) - require.True(t, ctrl.Satisfied()) } -func TestRunStepCurrentSubtaskScheduledAway(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockSubtaskTable := mock.NewMockTaskTable(ctrl) - mockStepExecutor := mockexecute.NewMockStepExecutor(ctrl) - mockExtension := mock.NewMockExtension(ctrl) +func (e *taskExecutorRunEnv) mockForCheckBalanceSubtask() { + e.taskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates( + gomock.Any(), "id", e.task1.ID, proto.StepOne, proto.SubtaskStateRunning). + DoAndReturn(func(context.Context, string, int64, proto.Step, ...proto.SubtaskState) ([]*proto.Subtask, error) { + return []*proto.Subtask{{SubtaskBase: proto.SubtaskBase{ID: e.taskExecutor.currSubtaskID.Load()}}}, nil + }).AnyTimes() +} - task := &proto.Task{TaskBase: proto.TaskBase{Step: proto.StepOne, Type: "example", ID: 1, Concurrency: 1}} - subtasks := []*proto.Subtask{ - {SubtaskBase: proto.SubtaskBase{ID: 1, Type: "example", Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "tidb1"}}, - } - ctx := context.Background() - taskExecutor := NewBaseTaskExecutor(ctx, "tidb1", task, mockSubtaskTable) - taskExecutor.Extension = mockExtension +func TestTaskExecutorRun(t *testing.T) { + t.Run("context done when run", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskExecutor.cancel() + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("task not found when run", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(nil, storage.ErrTaskNotFound) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("task state is not running when run", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.revertingTask1, nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("retry on error of GetTaskByID", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(nil, errors.New("some err")) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(nil, errors.New("some err")) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("retry on error of GetFirstSubtaskInStates", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + for i := 0; i < 3; i++ { + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(nil, errors.New("some err")) + } + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("get step executor failed", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + taskExecutorRegisterErr := errors.Errorf("constructor of taskExecutor for key not found") + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(nil, taskExecutorRegisterErr) + e.taskTable.EXPECT().FailSubtask(gomock.Any(), e.taskExecutor.id, e.task1.ID, taskExecutorRegisterErr).Return(nil) + // used to break the loop, below too + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("non retryable step executor Init error", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + initErr := errors.New("init error") + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(initErr) + e.taskExecExt.EXPECT().IsRetryableError(gomock.Any()).Return(false) + e.taskTable.EXPECT().FailSubtask(gomock.Any(), e.taskExecutor.id, e.task1.ID, initErr).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("retryable step executor Init error", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + initErr := errors.New("init error") + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(initErr) + e.taskExecExt.EXPECT().IsRetryableError(gomock.Any()).Return(true) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run one subtask failed with non-retryable error", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + runSubtaskErr := errors.New("run subtask error") + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(runSubtaskErr) + e.taskExecExt.EXPECT().IsRetryableError(gomock.Any()).Return(false) + e.taskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", e.task1.ID, proto.SubtaskStateFailed, gomock.Any()).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run subtask panic, fail the entire task", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), e.pendingSubtask1).DoAndReturn( + func(context.Context, *proto.Subtask) error { + panic("run subtask panic") + }, + ) + e.taskTable.EXPECT().FailSubtask(gomock.Any(), "id", e.task1.ID, gomock.Any()).DoAndReturn( + func(_ context.Context, _ string, _ int64, err error) error { + require.ErrorContains(t, err, "run subtask panic") + return nil + }, + ) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run one subtask failed with retryable error, success after retry 3 times", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + runSubtaskErr := errors.New("run subtask error") + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(runSubtaskErr) + e.taskExecExt.EXPECT().IsRetryableError(gomock.Any()).Return(true) + // already started by prev StartSubtask + runningSubtask := *e.pendingSubtask1 + runningSubtask.State = proto.SubtaskStateRunning + for i := 0; i < 3; i++ { + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(&runningSubtask, nil) + e.stepExecutor.EXPECT().GetStep().Return(proto.StepOne) + e.taskExecExt.EXPECT().IsIdempotent(gomock.Any()).Return(true) + if i < 2 { + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(runSubtaskErr) + e.taskExecExt.EXPECT().IsRetryableError(gomock.Any()).Return(true) + } else { + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", e.pendingSubtask1.ID, gomock.Any()).Return(nil) + } + } + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("subtask scheduled away during running, keep running next subtask", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + // mock for checkBalanceSubtask, returns empty subtask list + e.taskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "id", + e.task1.ID, proto.StepOne, proto.SubtaskStateRunning).Return([]*proto.Subtask{}, nil) + // this subtask is scheduled awsy during running + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx context.Context, subtask *proto.Subtask) error { + <-ctx.Done() + return ctx.Err() + }) + // keep running next subtask + nextSubtask := &proto.Subtask{SubtaskBase: proto.SubtaskBase{ + ID: 2, Type: e.task1.Type, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}} + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(nextSubtask, nil) + e.stepExecutor.EXPECT().GetStep().Return(proto.StepOne) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), nextSubtask.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), nextSubtask).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", nextSubtask.ID, gomock.Any()).Return(nil) + // exit + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run one subtask success", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", int64(1), gomock.Any()).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run subtasks one by one, and exit due to no subtask to run for a while", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + for i := 0; i < 5; i++ { + subtaskID := int64(i + 1) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + theSubtask := &proto.Subtask{SubtaskBase: proto.SubtaskBase{ + ID: subtaskID, Type: e.task1.Type, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}} + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(theSubtask, nil) + if i == 0 { + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + } else { + e.stepExecutor.EXPECT().GetStep().Return(proto.StepOne) + } + e.taskTable.EXPECT().StartSubtask(gomock.Any(), subtaskID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), theSubtask).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", subtaskID, gomock.Any()).Return(nil) + } + // exit due to no subtask to run for a while + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil).Times(8) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(nil, nil).Times(8) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run subtasks step by step", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + idAlloc := int64(1) + var currStepExecStep proto.Step + for i, s := range []struct { + step proto.Step + count int + }{ + {proto.StepOne, 5}, + {proto.StepTwo, 1}, + {proto.StepThree, 3}, + } { + taskOfStep := *e.task1 + taskOfStep.Step = s.step + for j := 0; j < s.count; j++ { + subtaskID := idAlloc + idAlloc++ + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), taskOfStep.ID).Return(&taskOfStep, nil) + theSubtask := &proto.Subtask{SubtaskBase: proto.SubtaskBase{ + ID: subtaskID, Type: taskOfStep.Type, Step: s.step, State: proto.SubtaskStatePending, ExecID: "id"}} + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", taskOfStep.ID, s.step, + unfinishedNormalSubtaskStates...).Return(theSubtask, nil) + if j == 0 { + if i != 0 { + e.stepExecutor.EXPECT().GetStep().Return(currStepExecStep) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + } + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + currStepExecStep = s.step + } else { + e.stepExecutor.EXPECT().GetStep().Return(currStepExecStep) + } + e.taskTable.EXPECT().StartSubtask(gomock.Any(), subtaskID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), theSubtask).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", subtaskID, gomock.Any()).Return(nil) + } + } + // end the loop + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("step executor cleanup failed, keeps running", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), e.pendingSubtask1).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", int64(1), gomock.Any()).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + step2Subtask := &proto.Subtask{SubtaskBase: proto.SubtaskBase{ + ID: 2, Type: e.task1.Type, Step: proto.StepTwo, State: proto.SubtaskStatePending, ExecID: "id"}} + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(step2Subtask, nil) + e.stepExecutor.EXPECT().GetStep().Return(e.pendingSubtask1.Step) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(errors.New("some error")) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), step2Subtask.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), step2Subtask).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", step2Subtask.ID, gomock.Any()).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(errors.New("some error 2")) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run previous left non-idempotent subtask in running state, fail it.", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + subtaskID := int64(2) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.runningSubtask2, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskExecExt.EXPECT().IsIdempotent(gomock.Any()).Return(false) + e.taskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", subtaskID, proto.SubtaskStateFailed, ErrNonIdempotentSubtask).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("run previous left idempotent subtask in running state, run it again.", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + subtaskID := int64(2) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.runningSubtask2, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + // first round of the run loop + e.taskExecExt.EXPECT().IsIdempotent(gomock.Any()).Return(true) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", subtaskID, gomock.Any()).Return(nil) + // second round of the run loop + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("subtask cancelled during running", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn(func(context.Context, *proto.Subtask) error { + e.taskExecutor.CancelRunningSubtask() + return ErrCancelSubtask + }) + e.taskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "id", e.task1.ID, proto.SubtaskStateCanceled, nil).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(nil, storage.ErrTaskNotFound) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("task executor cancelled for graceful shutdown during subtask running", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn(func(context.Context, *proto.Subtask) error { + e.taskExecutor.Cancel() + return context.Canceled + }) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("subtask scheduled away right before we start it", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(storage.ErrSubtaskNotFound) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("start subtask failed after retry, will try again", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + reduceRetrySQLTimes(t, 1) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(errors.New("some error")) + // second round of the run loop + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.stepExecutor.EXPECT().GetStep().Return(proto.StepOne) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), e.pendingSubtask1).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", e.pendingSubtask1.ID, gomock.Any()).Return(nil) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.succeedTask1, nil) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) + + t.Run("no subtask to run, should exit the loop after some time", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil).Times(8) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(nil, nil).Times(8) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) + }) - // mock for checkBalanceSubtask - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", - task.ID, proto.StepOne, proto.SubtaskStateRunning).Return([]*proto.Subtask{}, nil) - // mock for runStep - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockStepExecutor, nil) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(false) - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "tidb1", task.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(subtasks[0], nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task.ID, "tidb1").Return(nil) - mockStepExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx context.Context, subtask *proto.Subtask) error { - <-ctx.Done() - return ctx.Err() + t.Run("no-subtask check counter should be reset after a subtask is run.", func(t *testing.T) { + e := newTaskExecutorRunEnv(t) + e.mockForCheckBalanceSubtask() + // loop 4 times without subtask, then 1 time with subtask. + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil).Times(4) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(nil, nil).Times(4) + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(e.pendingSubtask1, nil) + e.taskExecExt.EXPECT().GetStepExecutor(gomock.Any()).Return(e.stepExecutor, nil) + e.stepExecutor.EXPECT().Init(gomock.Any()).Return(nil) + e.taskTable.EXPECT().StartSubtask(gomock.Any(), e.pendingSubtask1.ID, "id").Return(nil) + e.stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) + e.taskTable.EXPECT().FinishSubtask(gomock.Any(), "id", e.pendingSubtask1.ID, gomock.Any()).Return(nil) + // loop for 8 times without subtask, and exit + e.taskTable.EXPECT().GetTaskByID(gomock.Any(), e.task1.ID).Return(e.task1, nil).Times(8) + e.taskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", e.task1.ID, proto.StepOne, + unfinishedNormalSubtaskStates...).Return(nil, nil).Times(8) + e.stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) + e.taskExecutor.Run(nil) + require.True(t, e.ctrl.Satisfied()) }) - mockStepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - require.ErrorIs(t, taskExecutor.runStep(nil), context.Canceled) - require.True(t, ctrl.Satisfied()) } func TestCheckBalanceSubtask(t *testing.T) { @@ -389,209 +583,84 @@ func TestCheckBalanceSubtask(t *testing.T) { taskExecutor := NewBaseTaskExecutor(ctx, "tidb1", task, mockSubtaskTable) taskExecutor.Extension = mockExtension - // context canceled - canceledCtx, cancel := context.WithCancel(ctx) - cancel() - taskExecutor.checkBalanceSubtask(canceledCtx) - bak := checkBalanceSubtaskInterval + retryIntBak := scheduler.RetrySQLInterval t.Cleanup(func() { checkBalanceSubtaskInterval = bak + scheduler.RetrySQLInterval = retryIntBak }) checkBalanceSubtaskInterval = 100 * time.Millisecond + scheduler.RetrySQLInterval = time.Millisecond - // subtask scheduled away - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", - task.ID, task.Step, proto.SubtaskStateRunning).Return(nil, errors.New("error")) - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", - task.ID, task.Step, proto.SubtaskStateRunning).Return([]*proto.Subtask{}, nil) - runCtx, cancelCause := context.WithCancelCause(ctx) - taskExecutor.registerRunStepCancelFunc(cancelCause) - require.NoError(t, runCtx.Err()) - taskExecutor.checkBalanceSubtask(ctx) - require.ErrorIs(t, runCtx.Err(), context.Canceled) - require.True(t, ctrl.Satisfied()) - - subtasks := []*proto.Subtask{{SubtaskBase: proto.SubtaskBase{ID: 1, ExecID: "tidb1"}}} - // in-idempotent running subtask - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", - task.ID, task.Step, proto.SubtaskStateRunning).Return(subtasks, nil) - mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "tidb1", - subtasks[0].ID, proto.SubtaskStateFailed, ErrNonIdempotentSubtask).Return(nil) - mockExtension.EXPECT().IsIdempotent(subtasks[0]).Return(false) - taskExecutor.checkBalanceSubtask(ctx) - require.True(t, ctrl.Satisfied()) - - // current running subtask is skipped - require.Zero(t, taskExecutor.currSubtaskID.Load()) - taskExecutor.currSubtaskID.Store(1) - subtasks = []*proto.Subtask{{SubtaskBase: proto.SubtaskBase{ID: 1, ExecID: "tidb1"}}, {SubtaskBase: proto.SubtaskBase{ID: 2, ExecID: "tidb1"}}} - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", - task.ID, task.Step, proto.SubtaskStateRunning).Return(subtasks, nil) - mockExtension.EXPECT().IsIdempotent(gomock.Any()).Return(true) - mockSubtaskTable.EXPECT().RunningSubtasksBack2Pending(gomock.Any(), []*proto.SubtaskBase{{ID: 2, ExecID: "tidb1"}}).Return(nil) - // used to break the loop - mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", - task.ID, task.Step, proto.SubtaskStateRunning).Return(nil, nil) - taskExecutor.checkBalanceSubtask(ctx) - require.True(t, ctrl.Satisfied()) -} + t.Run("context cancelled", func(t *testing.T) { + // context canceled + canceledCtx, cancel := context.WithCancel(ctx) + cancel() + taskExecutor.checkBalanceSubtask(canceledCtx) + }) -func TestExecutorErrHandling(t *testing.T) { - var tp proto.TaskType = "test_task_executor" - var concurrency = 10 - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockSubtaskTable := mock.NewMockTaskTable(ctrl) - mockSubtaskExecutor := mockexecute.NewMockStepExecutor(ctrl) - mockExtension := mock.NewMockExtension(ctrl) - task := &proto.Task{TaskBase: proto.TaskBase{Step: proto.StepOne, Type: tp, ID: 1, Concurrency: concurrency}} - taskExecutor := NewBaseTaskExecutor(ctx, "id", task, mockSubtaskTable) - taskExecutor.Extension = mockExtension + t.Run("subtask scheduled away", func(t *testing.T) { + mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", + task.ID, task.Step, proto.SubtaskStateRunning).Return(nil, errors.New("error")) + mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", + task.ID, task.Step, proto.SubtaskStateRunning).Return([]*proto.Subtask{}, nil) + runCtx, cancelCause := context.WithCancelCause(ctx) + taskExecutor.mu.runtimeCancel = cancelCause + require.NoError(t, runCtx.Err()) + taskExecutor.checkBalanceSubtask(ctx) + require.ErrorIs(t, runCtx.Err(), context.Canceled) + require.True(t, ctrl.Satisfied()) + }) + + t.Run("non-idempotent running subtask", func(t *testing.T) { + subtasks := []*proto.Subtask{{SubtaskBase: proto.SubtaskBase{ID: 1, ExecID: "tidb1"}}} + // in-idempotent running subtask + mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", + task.ID, task.Step, proto.SubtaskStateRunning).Return(subtasks, nil) + mockExtension.EXPECT().IsIdempotent(subtasks[0]).Return(false) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "tidb1", + subtasks[0].ID, proto.SubtaskStateFailed, ErrNonIdempotentSubtask).Return(nil) + taskExecutor.checkBalanceSubtask(ctx) + require.True(t, ctrl.Satisfied()) + + // if we failed to change state of non-idempotent subtask, will retry + reduceRetrySQLTimes(t, 1) + mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", + task.ID, task.Step, proto.SubtaskStateRunning).Return(subtasks, nil) + mockExtension.EXPECT().IsIdempotent(subtasks[0]).Return(false) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "tidb1", + subtasks[0].ID, proto.SubtaskStateFailed, ErrNonIdempotentSubtask). + Return(errors.New("some error")) + // retry part + mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", + task.ID, task.Step, proto.SubtaskStateRunning).Return(subtasks, nil) + mockExtension.EXPECT().IsIdempotent(subtasks[0]).Return(false) + mockSubtaskTable.EXPECT().UpdateSubtaskStateAndError(gomock.Any(), "tidb1", + subtasks[0].ID, proto.SubtaskStateFailed, ErrNonIdempotentSubtask).Return(nil) + taskExecutor.checkBalanceSubtask(ctx) + require.True(t, ctrl.Satisfied()) + }) - // GetStepExecutor meet retryable error. - getSubtaskExecutorErr := errors.New("get executor err") - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(nil, getSubtaskExecutorErr) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(true) - require.NoError(t, taskExecutor.RunStep(nil)) - require.True(t, ctrl.Satisfied()) - - // GetStepExecutor meet non retryable error. - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(nil, getSubtaskExecutorErr) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(false) - mockSubtaskTable.EXPECT().FailSubtask(taskExecutor.ctx, taskExecutor.id, gomock.Any(), getSubtaskExecutorErr) - require.NoError(t, taskExecutor.RunStep(nil)) - require.True(t, ctrl.Satisfied()) - - // Init meet retryable error. - initErr := errors.New("executor init err") - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockSubtaskExecutor, nil) - mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(initErr) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(true) - require.NoError(t, taskExecutor.RunStep(nil)) - require.True(t, ctrl.Satisfied()) - - // Init meet non retryable error. - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockSubtaskExecutor, nil) - mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(initErr) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(false) - mockSubtaskTable.EXPECT().FailSubtask(taskExecutor.ctx, taskExecutor.id, gomock.Any(), initErr) - require.NoError(t, taskExecutor.RunStep(nil)) - require.True(t, ctrl.Satisfied()) - - // Cleanup meet retryable error. - cleanupErr := errors.New("cleanup err") - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockSubtaskExecutor, nil) - mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task.ID, "id").Return(nil) - mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(cleanupErr) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(true) - require.NoError(t, taskExecutor.RunStep(nil)) - require.True(t, ctrl.Satisfied()) - - // Cleanup meet non retryable error. - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockSubtaskExecutor, nil) - mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task.ID, "id").Return(nil) - mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(cleanupErr) - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(false) - mockSubtaskTable.EXPECT().FailSubtask(taskExecutor.ctx, taskExecutor.id, gomock.Any(), cleanupErr) - require.NoError(t, taskExecutor.RunStep(nil)) - require.True(t, ctrl.Satisfied()) - - // subtask succeed. - mockSubtaskTable.EXPECT().GetTaskByID(gomock.Any(), task.ID).Return(task, nil) - mockExtension.EXPECT().GetStepExecutor(gomock.Any()).Return(mockSubtaskExecutor, nil) - mockSubtaskExecutor.EXPECT().Init(gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(&proto.Subtask{SubtaskBase: proto.SubtaskBase{ - ID: 1, Type: tp, Step: proto.StepOne, State: proto.SubtaskStatePending, ExecID: "id"}}, nil) - mockSubtaskTable.EXPECT().StartSubtask(gomock.Any(), task.ID, "id").Return(nil) - mockSubtaskExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().FinishSubtask(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) - mockSubtaskTable.EXPECT().GetFirstSubtaskInStates(gomock.Any(), "id", task.ID, proto.StepOne, - unfinishedNormalSubtaskStates...).Return(nil, nil) - mockSubtaskExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil) - require.NoError(t, taskExecutor.RunStep(nil)) - require.True(t, ctrl.Satisfied()) + t.Run("current running subtask is skipped", func(t *testing.T) { + require.Zero(t, taskExecutor.currSubtaskID.Load()) + taskExecutor.currSubtaskID.Store(1) + subtasks := []*proto.Subtask{{SubtaskBase: proto.SubtaskBase{ID: 1, ExecID: "tidb1"}}, {SubtaskBase: proto.SubtaskBase{ID: 2, ExecID: "tidb1"}}} + mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", + task.ID, task.Step, proto.SubtaskStateRunning).Return(subtasks, nil) + mockExtension.EXPECT().IsIdempotent(gomock.Any()).Return(true) + mockSubtaskTable.EXPECT().RunningSubtasksBack2Pending(gomock.Any(), []*proto.SubtaskBase{{ID: 2, ExecID: "tidb1"}}).Return(nil) + // used to break the loop + mockSubtaskTable.EXPECT().GetSubtasksByExecIDAndStepAndStates(gomock.Any(), "tidb1", + task.ID, task.Step, proto.SubtaskStateRunning).Return(nil, nil) + taskExecutor.checkBalanceSubtask(ctx) + require.True(t, ctrl.Satisfied()) + }) } func TestInject(t *testing.T) { e := &EmptyStepExecutor{} r := &proto.StepResource{CPU: proto.NewAllocatable(1)} - execute.SetFrameworkInfo(e, r) + execute.SetFrameworkInfo(e, proto.StepOne, r) got := e.GetResource() require.Equal(t, r, got) } - -func throwError() error { - return errors.New("mock error") -} - -func callOnError(taskExecutor *BaseTaskExecutor) { - taskExecutor.onError(throwError()) -} - -func throwErrorNoTrace() error { - return errors.NewNoStackError("mock error") -} - -func callOnErrorNoTrace(taskExecutor *BaseTaskExecutor) { - taskExecutor.onError(throwErrorNoTrace()) -} - -func TestExecutorOnErrorLog(t *testing.T) { - taskExecutor := &BaseTaskExecutor{} - - observedZapCore, observedLogs := observer.New(zap.ErrorLevel) - observedLogger := zap.New(observedZapCore) - taskExecutor.logger = observedLogger - - { - callOnError(taskExecutor) - require.GreaterOrEqual(t, observedLogs.Len(), 1) - errLog := observedLogs.TakeAll()[0] - contextMap := errLog.ContextMap() - require.Contains(t, contextMap, "error stack") - errStack := contextMap["error stack"] - require.IsType(t, "", errStack) - errStackStr := errStack.(string) - require.Regexpf(t, `mock error[\n\t ]*`+ - `github\.com/pingcap/tidb/pkg/disttask/framework/taskexecutor\.throwError`, - errStackStr, - "got err stack: %s", errStackStr) - } - - { - callOnErrorNoTrace(taskExecutor) - require.GreaterOrEqual(t, observedLogs.Len(), 1) - errLog := observedLogs.TakeAll()[0] - contextMap := errLog.ContextMap() - require.NotContains(t, contextMap, "error stack") - } -} diff --git a/pkg/disttask/framework/testutil/BUILD.bazel b/pkg/disttask/framework/testutil/BUILD.bazel index a606528a86bcd..d442f345a409d 100644 --- a/pkg/disttask/framework/testutil/BUILD.bazel +++ b/pkg/disttask/framework/testutil/BUILD.bazel @@ -21,6 +21,7 @@ go_library( "//pkg/disttask/framework/scheduler/mock", "//pkg/disttask/framework/storage", "//pkg/disttask/framework/taskexecutor", + "//pkg/disttask/framework/taskexecutor/execute", "//pkg/kv", "//pkg/sessionctx", "//pkg/store/mockstore", diff --git a/pkg/disttask/framework/testutil/disttest_util.go b/pkg/disttask/framework/testutil/disttest_util.go index d741657b2aeee..4fd02210e1306 100644 --- a/pkg/disttask/framework/testutil/disttest_util.go +++ b/pkg/disttask/framework/testutil/disttest_util.go @@ -25,43 +25,49 @@ import ( "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor" + "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/execute" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" ) -// RegisterTaskMetaWithDXFCtx initialize mock components for dist task. -func RegisterTaskMetaWithDXFCtx(c *TestDXFContext, schedulerExt scheduler.Extension, runSubtaskFn func(ctx context.Context, subtask *proto.Subtask) error) { - RegisterTaskMeta(c.T, c.MockCtrl, schedulerExt, c.TestContext, runSubtaskFn) -} - -// RegisterTaskMeta initialize mock components for dist task. -func RegisterTaskMeta(t testing.TB, ctrl *gomock.Controller, schedulerExt scheduler.Extension, testContext *TestContext, runSubtaskFn func(ctx context.Context, subtask *proto.Subtask) error) { +// GetCommonTaskExecutorExt returns a common task executor extension. +func GetCommonTaskExecutorExt(ctrl *gomock.Controller, getStepExecFn func(*proto.Task) (execute.StepExecutor, error)) *mock.MockExtension { executorExt := mock.NewMockExtension(ctrl) - mockCleanupRountine := mock.NewMockCleanUpRoutine(ctrl) - mockCleanupRountine.EXPECT().CleanUp(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStepExecutor := GetMockStepExecutor(ctrl) - if runSubtaskFn == nil { - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, subtask *proto.Subtask) error { - switch subtask.Step { - case proto.StepOne, proto.StepTwo: - testContext.CollectSubtask(subtask) - default: - panic("invalid step") - } - return nil - }).AnyTimes() - } else { - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn(runSubtaskFn).AnyTimes() - } - mockStepExecutor.EXPECT().RealtimeSummary().Return(nil).AnyTimes() executorExt.EXPECT().IsIdempotent(gomock.Any()).Return(true).AnyTimes() - executorExt.EXPECT().GetStepExecutor(gomock.Any()).Return(mockStepExecutor, nil).AnyTimes() + executorExt.EXPECT().GetStepExecutor(gomock.Any()).DoAndReturn(getStepExecFn).AnyTimes() executorExt.EXPECT().IsRetryableError(gomock.Any()).Return(false).AnyTimes() - registerTaskMetaInner(t, proto.TaskTypeExample, schedulerExt, executorExt, mockCleanupRountine) + return executorExt +} + +// GetCommonStepExecutor returns one mock subtaskExecutor. +func GetCommonStepExecutor(ctrl *gomock.Controller, step proto.Step, runSubtaskFn func(ctx context.Context, subtask *proto.Subtask) error) *mockexecute.MockStepExecutor { + executor := mockexecute.NewMockStepExecutor(ctrl) + executor.EXPECT().Init(gomock.Any()).Return(nil).AnyTimes() + executor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn(runSubtaskFn).AnyTimes() + executor.EXPECT().GetStep().Return(step).AnyTimes() + executor.EXPECT().Cleanup(gomock.Any()).Return(nil).AnyTimes() + executor.EXPECT().RealtimeSummary().Return(nil).AnyTimes() + return executor +} + +// GetCommonCleanUpRoutine returns a common cleanup routine. +func GetCommonCleanUpRoutine(ctrl *gomock.Controller) scheduler.CleanUpRoutine { + r := mock.NewMockCleanUpRoutine(ctrl) + r.EXPECT().CleanUp(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() + return r +} + +// RegisterExampleTask register example task. +func RegisterExampleTask( + t testing.TB, + schedulerExt scheduler.Extension, + executorExt taskexecutor.Extension, + mockCleanup scheduler.CleanUpRoutine, +) { + registerTaskType(t, proto.TaskTypeExample, schedulerExt, executorExt, mockCleanup) } -func registerTaskMetaInner(t testing.TB, taskType proto.TaskType, schedulerExt scheduler.Extension, executorExt taskexecutor.Extension, mockCleanup scheduler.CleanUpRoutine) { +func registerTaskType(t testing.TB, taskType proto.TaskType, schedulerExt scheduler.Extension, executorExt taskexecutor.Extension, mockCleanup scheduler.CleanUpRoutine) { t.Cleanup(func() { scheduler.ClearSchedulerFactory() scheduler.ClearSchedulerCleanUpFactory() @@ -72,12 +78,12 @@ func registerTaskMetaInner(t testing.TB, taskType proto.TaskType, schedulerExt s baseScheduler := scheduler.NewBaseScheduler(ctx, task, param) baseScheduler.Extension = schedulerExt return baseScheduler - }) + }, + ) - scheduler.RegisterSchedulerCleanUpFactory(taskType, - func() scheduler.CleanUpRoutine { - return mockCleanup - }) + scheduler.RegisterSchedulerCleanUpFactory(taskType, func() scheduler.CleanUpRoutine { + return mockCleanup + }) taskexecutor.RegisterTaskType(taskType, func(ctx context.Context, id string, task *proto.Task, taskTable taskexecutor.TaskTable) taskexecutor.TaskExecutor { @@ -88,26 +94,16 @@ func registerTaskMetaInner(t testing.TB, taskType proto.TaskType, schedulerExt s ) } -// RegisterRollbackTaskMeta register rollback task meta. -func RegisterRollbackTaskMeta(t testing.TB, ctrl *gomock.Controller, schedulerExt scheduler.Extension, testContext *TestContext) { - executorExt := mock.NewMockExtension(ctrl) - stepExecutor := mockexecute.NewMockStepExecutor(ctrl) - mockCleanupRountine := mock.NewMockCleanUpRoutine(ctrl) - mockCleanupRountine.EXPECT().CleanUp(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - stepExecutor.EXPECT().Init(gomock.Any()).Return(nil).AnyTimes() - stepExecutor.EXPECT().Cleanup(gomock.Any()).Return(nil).AnyTimes() - stepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, subtask *proto.Subtask) error { - testContext.CollectSubtask(subtask) - return nil - }).AnyTimes() - stepExecutor.EXPECT().RealtimeSummary().Return(nil).AnyTimes() - stepExecutor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - executorExt.EXPECT().IsIdempotent(gomock.Any()).Return(true).AnyTimes() - executorExt.EXPECT().GetStepExecutor(gomock.Any()).Return(stepExecutor, nil).AnyTimes() - executorExt.EXPECT().IsRetryableError(gomock.Any()).Return(false).AnyTimes() - - registerTaskMetaInner(t, proto.TaskTypeExample, schedulerExt, executorExt, mockCleanupRountine) +// RegisterTaskTypeForRollback register rollback task meta. +func RegisterTaskTypeForRollback(t testing.TB, ctrl *gomock.Controller, schedulerExt scheduler.Extension, testContext *TestContext) { + subtaskRunFn := func(_ context.Context, subtask *proto.Subtask) error { + testContext.CollectSubtask(subtask) + return nil + } + executorExt := GetCommonTaskExecutorExt(ctrl, func(task *proto.Task) (execute.StepExecutor, error) { + return GetCommonStepExecutor(ctrl, task.Step, subtaskRunFn), nil + }) + RegisterExampleTask(t, schedulerExt, executorExt, GetCommonCleanUpRoutine(ctrl)) } // SubmitAndWaitTask schedule one task. diff --git a/pkg/disttask/framework/testutil/executor_util.go b/pkg/disttask/framework/testutil/executor_util.go index 98a041977a32f..90a82ccfb6818 100644 --- a/pkg/disttask/framework/testutil/executor_util.go +++ b/pkg/disttask/framework/testutil/executor_util.go @@ -17,45 +17,21 @@ package testutil import ( "context" - "github.com/pingcap/tidb/pkg/disttask/framework/mock" - mockexecute "github.com/pingcap/tidb/pkg/disttask/framework/mock/execute" "github.com/pingcap/tidb/pkg/disttask/framework/proto" "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor" + "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/execute" "go.uber.org/mock/gomock" ) -// GetMockStepExecutor returns one mock subtaskExecutor. -func GetMockStepExecutor(ctrl *gomock.Controller) *mockexecute.MockStepExecutor { - executor := mockexecute.NewMockStepExecutor(ctrl) - executor.EXPECT().Init(gomock.Any()).Return(nil).AnyTimes() - executor.EXPECT().Cleanup(gomock.Any()).Return(nil).AnyTimes() - executor.EXPECT().OnFinished(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - return executor -} - -// GetMockTaskExecutorExtension returns one mock TaskExecutorExtension. -func GetMockTaskExecutorExtension(ctrl *gomock.Controller, mockStepExecutor *mockexecute.MockStepExecutor) *mock.MockExtension { - mockExtension := mock.NewMockExtension(ctrl) - mockExtension.EXPECT(). - GetStepExecutor(gomock.Any()). - Return(mockStepExecutor, nil).AnyTimes() - mockExtension.EXPECT().IsRetryableError(gomock.Any()).Return(false).AnyTimes() - return mockExtension -} - // InitTaskExecutor inits all mock components for TaskExecutor. func InitTaskExecutor(ctrl *gomock.Controller, runSubtaskFn func(ctx context.Context, subtask *proto.Subtask) error) { - mockStepExecutor := GetMockStepExecutor(ctrl) - mockStepExecutor.EXPECT().RunSubtask(gomock.Any(), gomock.Any()).DoAndReturn( - runSubtaskFn, - ).AnyTimes() - mockStepExecutor.EXPECT().RealtimeSummary().Return(nil).AnyTimes() - - mockExtension := GetMockTaskExecutorExtension(ctrl, mockStepExecutor) + executorExt := GetCommonTaskExecutorExt(ctrl, func(task *proto.Task) (execute.StepExecutor, error) { + return GetCommonStepExecutor(ctrl, task.Step, runSubtaskFn), nil + }) taskexecutor.RegisterTaskType(proto.TaskTypeExample, func(ctx context.Context, id string, task *proto.Task, taskTable taskexecutor.TaskTable) taskexecutor.TaskExecutor { s := taskexecutor.NewBaseTaskExecutor(ctx, id, task, taskTable) - s.Extension = mockExtension + s.Extension = executorExt return s }, ) diff --git a/pkg/disttask/framework/testutil/table_util.go b/pkg/disttask/framework/testutil/table_util.go index 74969e5a9963c..205104d1a919a 100644 --- a/pkg/disttask/framework/testutil/table_util.go +++ b/pkg/disttask/framework/testutil/table_util.go @@ -55,10 +55,10 @@ func InitTableTestWithCancel(t *testing.T) (*storage.TaskManager, context.Contex func getResourcePool(t *testing.T) (kv.Storage, *pools.ResourcePool) { testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/domain/MockDisableDistTask", "return(true)") store := testkit.CreateMockStore(t, mockstore.WithStoreType(mockstore.EmbedUnistore)) - tk := testkit.NewTestKit(t, store) pool := pools.NewResourcePool(func() (pools.Resource, error) { + tk := testkit.NewTestKit(t, store) return tk.Session(), nil - }, 1, 1, time.Second) + }, 10, 10, time.Second) t.Cleanup(func() { pool.Close() diff --git a/pkg/disttask/importinto/mock/import_mock.go b/pkg/disttask/importinto/mock/import_mock.go index 7be883ce4e346..28eec32a4c712 100644 --- a/pkg/disttask/importinto/mock/import_mock.go +++ b/pkg/disttask/importinto/mock/import_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - "github.com/pingcap/tidb/pkg/lightning/backend" + backend "github.com/pingcap/tidb/pkg/lightning/backend" gomock "go.uber.org/mock/gomock" ) diff --git a/pkg/disttask/importinto/planner.go b/pkg/disttask/importinto/planner.go index ff4add8bd3d88..8df53b5a13a40 100644 --- a/pkg/disttask/importinto/planner.go +++ b/pkg/disttask/importinto/planner.go @@ -239,7 +239,7 @@ func buildControllerForPlan(p *LogicalPlan) (*importer.LoadDataController, error } func buildController(plan *importer.Plan, stmt string) (*importer.LoadDataController, error) { - idAlloc := kv.NewPanickingAllocators(plan.TableInfo.SepAutoInc(), 0) + idAlloc := kv.NewPanickingAllocators(plan.TableInfo.SepAutoInc()) tbl, err := tables.TableFromMeta(idAlloc, plan.TableInfo) if err != nil { return nil, err diff --git a/pkg/disttask/importinto/task_executor.go b/pkg/disttask/importinto/task_executor.go index 31d85fbc0d0ad..4fa45c5d32b41 100644 --- a/pkg/disttask/importinto/task_executor.go +++ b/pkg/disttask/importinto/task_executor.go @@ -73,7 +73,7 @@ func getTableImporter( taskMeta *TaskMeta, store tidbkv.Storage, ) (*importer.TableImporter, error) { - idAlloc := kv.NewPanickingAllocators(taskMeta.Plan.TableInfo.SepAutoInc(), 0) + idAlloc := kv.NewPanickingAllocators(taskMeta.Plan.TableInfo.SepAutoInc()) tbl, err := tables.TableFromMeta(idAlloc, taskMeta.Plan.TableInfo) if err != nil { return nil, err @@ -193,14 +193,14 @@ outer: if panicked.Load() { return errors.Errorf("panic occurred during import, please check log") } - return nil + return s.onFinished(ctx, subtask) } func (*importStepExecutor) RealtimeSummary() *execute.SubtaskSummary { return nil } -func (s *importStepExecutor) OnFinished(ctx context.Context, subtask *proto.Subtask) error { +func (s *importStepExecutor) onFinished(ctx context.Context, subtask *proto.Subtask) error { var subtaskMeta ImportStepMeta if err := json.Unmarshal(subtask.Meta, &subtaskMeta); err != nil { return errors.Trace(err) @@ -357,10 +357,13 @@ func (m *mergeSortStepExecutor) RunSubtask(ctx context.Context, subtask *proto.S brlogutil.Key("start-key", m.subtaskSortedKVMeta.StartKey), brlogutil.Key("end-key", m.subtaskSortedKVMeta.EndKey), ) - return err + if err != nil { + return errors.Trace(err) + } + return m.onFinished(subtask) } -func (m *mergeSortStepExecutor) OnFinished(_ context.Context, subtask *proto.Subtask) error { +func (m *mergeSortStepExecutor) onFinished(subtask *proto.Subtask) error { var subtaskMeta MergeSortStepMeta if err := json.Unmarshal(subtask.Meta, &subtaskMeta); err != nil { return errors.Trace(err) @@ -436,14 +439,18 @@ func (e *writeAndIngestStepExecutor) RunSubtask(ctx context.Context, subtask *pr if err != nil { return err } - return localBackend.ImportEngine(ctx, engineUUID, int64(config.SplitRegionSize), int64(config.SplitRegionKeys)) + err = localBackend.ImportEngine(ctx, engineUUID, int64(config.SplitRegionSize), int64(config.SplitRegionKeys)) + if err != nil { + return errors.Trace(err) + } + return e.onFinished(ctx, subtask) } func (*writeAndIngestStepExecutor) RealtimeSummary() *execute.SubtaskSummary { return nil } -func (e *writeAndIngestStepExecutor) OnFinished(ctx context.Context, subtask *proto.Subtask) error { +func (e *writeAndIngestStepExecutor) onFinished(ctx context.Context, subtask *proto.Subtask) error { var subtaskMeta WriteIngestStepMeta if err := json.Unmarshal(subtask.Meta, &subtaskMeta); err != nil { return errors.Trace(err) diff --git a/pkg/disttask/operator/operator.go b/pkg/disttask/operator/operator.go index c17c33fcbf249..d66baffedab29 100644 --- a/pkg/disttask/operator/operator.go +++ b/pkg/disttask/operator/operator.go @@ -93,6 +93,16 @@ func (c *AsyncOperator[T, R]) SetSink(ch DataChannel[R]) { c.pool.SetResultSender(ch.Channel()) } +// TuneWorkerPoolSize tunes the worker pool size. +func (c *AsyncOperator[T, R]) TuneWorkerPoolSize(workerNum int32) { + c.pool.Tune(workerNum) +} + +// GetWorkerPoolSize returns the worker pool size. +func (c *AsyncOperator[T, R]) GetWorkerPoolSize() int32 { + return c.pool.Cap() +} + type asyncWorker[T, R any] struct { transform func(T) R } diff --git a/pkg/disttask/operator/pipeline.go b/pkg/disttask/operator/pipeline.go index a920eddb781b6..7ded88b19fff1 100644 --- a/pkg/disttask/operator/pipeline.go +++ b/pkg/disttask/operator/pipeline.go @@ -65,3 +65,11 @@ func (p *AsyncPipeline) String() string { } return "AsyncPipeline[" + strings.Join(opStrs, " -> ") + "]" } + +// GetLocalIngestModeReaderAndWriter returns the reader and writer in the local ingest mode. +func (p *AsyncPipeline) GetLocalIngestModeReaderAndWriter() (operator1, operator2 Operator) { + if len(p.ops) != 4 { + return nil, nil + } + return p.ops[1], p.ops[2] +} diff --git a/pkg/domain/BUILD.bazel b/pkg/domain/BUILD.bazel index fea17d5c870e1..481bb941d13de 100644 --- a/pkg/domain/BUILD.bazel +++ b/pkg/domain/BUILD.bazel @@ -67,6 +67,8 @@ go_library( "//pkg/statistics/handle/initstats", "//pkg/statistics/handle/logutil", "//pkg/statistics/handle/util", + "//pkg/statistics/util", + "//pkg/store", "//pkg/store/helper", "//pkg/ttl/ttlworker", "//pkg/types", @@ -90,6 +92,7 @@ go_library( "//pkg/util/printer", "//pkg/util/replayer", "//pkg/util/servermemorylimit", + "//pkg/util/size", "//pkg/util/sqlexec", "//pkg/util/sqlkiller", "//pkg/util/syncutil", @@ -109,9 +112,6 @@ go_library( "@com_github_tikv_pd_client//resource_group/controller", "@io_etcd_go_etcd_client_v3//:client", "@io_etcd_go_etcd_client_v3//concurrency", - "@org_golang_google_grpc//:grpc", - "@org_golang_google_grpc//backoff", - "@org_golang_google_grpc//keepalive", "@org_uber_go_atomic//:atomic", "@org_uber_go_zap//:zap", ], @@ -136,7 +136,7 @@ go_test( ], embed = [":domain"], flaky = True, - shard_count = 31, + shard_count = 30, deps = [ "//pkg/config", "//pkg/ddl", diff --git a/pkg/domain/db_test.go b/pkg/domain/db_test.go index 317b35ea222fb..9b083f062b6e5 100644 --- a/pkg/domain/db_test.go +++ b/pkg/domain/db_test.go @@ -80,7 +80,7 @@ func TestNormalSessionPool(t *testing.T) { domain, err := session.BootstrapSession(store) require.NoError(t, err) defer domain.Close() - info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) + info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true, domain.InfoCache()) require.NoError(t, err1) conf := config.GetGlobalConfig() conf.Socket = "" @@ -113,7 +113,7 @@ func TestAbnormalSessionPool(t *testing.T) { domain, err := session.BootstrapSession(store) require.NoError(t, err) defer domain.Close() - info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true) + info, err1 := infosync.GlobalInfoSyncerInit(context.Background(), "t", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, true, domain.InfoCache()) require.NoError(t, err1) conf := config.GetGlobalConfig() conf.Socket = "" @@ -162,7 +162,7 @@ func TestTetchAllSchemasWithTables(t *testing.T) { require.Equal(t, len(dbs), 5) } -func TestTetchAllSchemasWithTablesWithFailpoint(t *testing.T) { +func TestFetchAllSchemasWithTablesWithFailpoint(t *testing.T) { lease := 100 * time.Millisecond store, err := mockstore.NewMockStore() require.NoError(t, err) @@ -194,7 +194,7 @@ func TestTetchAllSchemasWithTablesWithFailpoint(t *testing.T) { require.Equal(t, len(dbs), 1003) // inject the failpoint - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/domain/failed-fetch-schemas-with-tables", "1*return()")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/domain/failed-fetch-schemas-with-tables", "return()")) defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/domain/failed-fetch-schemas-with-tables")) }() diff --git a/pkg/domain/domain.go b/pkg/domain/domain.go index 0e80d904db8e2..a8d3df9895bcd 100644 --- a/pkg/domain/domain.go +++ b/pkg/domain/domain.go @@ -16,6 +16,7 @@ package domain import ( "context" + "encoding/json" "fmt" "math" "math/rand" @@ -74,6 +75,7 @@ import ( "github.com/pingcap/tidb/pkg/statistics/handle/initstats" statslogutil "github.com/pingcap/tidb/pkg/statistics/handle/logutil" handleutil "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/store" "github.com/pingcap/tidb/pkg/store/helper" "github.com/pingcap/tidb/pkg/ttl/ttlworker" "github.com/pingcap/tidb/pkg/types" @@ -93,6 +95,7 @@ import ( "github.com/pingcap/tidb/pkg/util/memoryusagealarm" "github.com/pingcap/tidb/pkg/util/replayer" "github.com/pingcap/tidb/pkg/util/servermemorylimit" + "github.com/pingcap/tidb/pkg/util/size" "github.com/pingcap/tidb/pkg/util/sqlkiller" "github.com/pingcap/tidb/pkg/util/syncutil" "github.com/tikv/client-go/v2/tikv" @@ -104,9 +107,6 @@ import ( "go.etcd.io/etcd/client/v3/concurrency" atomicutil "go.uber.org/atomic" "go.uber.org/zap" - "google.golang.org/grpc" - "google.golang.org/grpc/backoff" - "google.golang.org/grpc/keepalive" ) var ( @@ -193,6 +193,7 @@ type Domain struct { expiredTimeStamp types.Time } + brOwnerMgr owner.Manager logBackupAdvancer *daemon.OwnerDaemon historicalStatsWorker *HistoricalStatsWorker ttlJobManager atomic.Pointer[ttlworker.JobManager] @@ -274,6 +275,11 @@ func (do *Domain) EtcdClient() *clientv3.Client { return do.etcdClient } +// UnprefixedEtcdCli export for test. +func (do *Domain) UnprefixedEtcdCli() *clientv3.Client { + return do.unprefixedEtcdCli +} + // loadInfoSchema loads infoschema at startTS. // It returns: // 1. the needed infoschema @@ -357,6 +363,16 @@ func (do *Domain) loadInfoSchema(startTS uint64, isSnapshot bool) (infoschema.In // We can fall back to full load, don't need to return the error. logutil.BgLogger().Error("failed to load schema diff", zap.Error(err)) } + + // add failpoint to simulate long-running schema loading scenario + failpoint.Inject("mock-load-schema-long-time", func(val failpoint.Value) { + if val.(bool) { + // not ideal to use sleep, but not sure if there is a better way + logutil.BgLogger().Error("sleep before doing a full load") + time.Sleep(15 * time.Second) + } + }) + // full load. schemas, err := do.fetchAllSchemasWithTables(m) if err != nil { @@ -522,7 +538,7 @@ func (*Domain) fetchSchemasWithTables(ctx context.Context, schemas []*model.DBIn di.TableName2ID = name2ID tables = specialTableInfos } else { - tables, err = m.ListTables(di.ID) + tables, err = m.ListTables(ctx, di.ID) if err != nil { return err } @@ -799,15 +815,40 @@ func (do *Domain) Reload() error { } } - // lease renew, so it must be executed despite it is cache or not - do.SchemaValidator.Update(version, oldSchemaVersion, is.SchemaMetaVersion(), changes) lease := do.GetSchemaLease() sub := time.Since(startTime) // Reload interval is lease / 2, if load schema time elapses more than this interval, // some query maybe responded by ErrInfoSchemaExpired error. if sub > (lease/2) && lease > 0 { + // If it is a full load and there are a lot of tables, this is likely to happen. logutil.BgLogger().Warn("loading schema takes a long time", zap.Duration("take time", sub)) + + // We can optimize the case by updating the TS to a new value, as long as the schema version is the same. + // For example, lease is 45s, and the load process takes 2min, after the load process finish, this + // loaded infoschema because stale immediately. + // But if we re-check the schema version again and verify that it's still the newest, it is safe to use it. + var latestSchemaVer int64 + var currentTS uint64 + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnMeta) + err := kv.RunInNewTxn(ctx, do.store, false, func(_ context.Context, txn kv.Transaction) error { + var err error + m := meta.NewReader(txn) + latestSchemaVer, err = m.GetSchemaVersion() + if err != nil { + return errors.Trace(err) + } + currentTS = txn.StartTS() + return nil + }) + if err == nil && latestSchemaVer == is.SchemaMetaVersion() { + version = currentTS + logutil.BgLogger().Info("use this schema and update ts", + zap.Int64("schema ver", latestSchemaVer), + zap.Uint64("reload ts", currentTS)) + } } + // lease renew, so it must be executed despite it is cache or not + do.SchemaValidator.Update(version, oldSchemaVersion, is.SchemaMetaVersion(), changes) return nil } @@ -1226,8 +1267,8 @@ func (do *Domain) Close() { } do.releaseServerID(context.Background()) close(do.exit) - if do.etcdClient != nil { - terror.Log(errors.Trace(do.etcdClient.Close())) + if do.brOwnerMgr != nil { + do.brOwnerMgr.Close() } do.runawayManager.Stop() @@ -1243,6 +1284,9 @@ func (do *Domain) Close() { } do.cancelFns.mu.Unlock() do.wg.Wait() + if do.etcdClient != nil { + terror.Log(errors.Trace(do.etcdClient.Close())) + } do.sysSessionPool.Close() variable.UnregisterStatistics(do.BindHandle()) if do.onClose != nil { @@ -1266,6 +1310,11 @@ const resourceIdleTimeout = 3 * time.Minute // resources in the ResourcePool wil // NewDomain creates a new domain. Should not create multiple domains for the same store. func NewDomain(store kv.Storage, schemaLease time.Duration, statsLease time.Duration, dumpFileGcLease time.Duration, factory pools.Factory) *Domain { + return NewDomainWithEtcdClient(store, schemaLease, statsLease, dumpFileGcLease, factory, nil) +} + +// NewDomainWithEtcdClient creates a new domain with etcd client. Should not create multiple domains for the same store. +func NewDomainWithEtcdClient(store kv.Storage, schemaLease time.Duration, statsLease time.Duration, dumpFileGcLease time.Duration, factory pools.Factory, etcdClient *clientv3.Client) *Domain { intest.Assert(schemaLease > 0, "schema lease should be a positive duration") capacity := 200 // capacity of the sysSessionPool size do := &Domain{ @@ -1310,67 +1359,12 @@ func NewDomain(store kv.Storage, schemaLease time.Duration, statsLease time.Dura do.sysProcesses = SysProcesses{mu: &sync.RWMutex{}, procMap: make(map[uint64]sysproctrack.TrackProc)} do.initDomainSysVars() do.expiredTimeStamp4PC.expiredTimeStamp = types.NewTime(types.ZeroCoreTime, mysql.TypeTimestamp, types.DefaultFsp) + do.etcdClient = etcdClient return do } const serverIDForStandalone = 1 // serverID for standalone deployment. -// NewEtcdCli creates a new clientv3.Client from store if the store support it. -// the returned client might be nil. -// TODO currently uni-store/mock-tikv/tikv all implements EtcdBackend while they don't support actually. -// refactor this part. -func NewEtcdCli(store kv.Storage) (*clientv3.Client, error) { - etcdStore, addrs, err := getEtcdAddrs(store) - if err != nil { - return nil, err - } - if len(addrs) == 0 { - return nil, nil - } - cli, err := newEtcdCli(addrs, etcdStore) - if err != nil { - return nil, err - } - return cli, nil -} - -func getEtcdAddrs(store kv.Storage) (kv.EtcdBackend, []string, error) { - etcdStore, ok := store.(kv.EtcdBackend) - if !ok { - return nil, nil, nil - } - addrs, err := etcdStore.EtcdAddrs() - if err != nil { - return nil, nil, err - } - return etcdStore, addrs, nil -} - -func newEtcdCli(addrs []string, ebd kv.EtcdBackend) (*clientv3.Client, error) { - cfg := config.GetGlobalConfig() - etcdLogCfg := zap.NewProductionConfig() - etcdLogCfg.Level = zap.NewAtomicLevelAt(zap.ErrorLevel) - backoffCfg := backoff.DefaultConfig - backoffCfg.MaxDelay = 3 * time.Second - cli, err := clientv3.New(clientv3.Config{ - LogConfig: &etcdLogCfg, - Endpoints: addrs, - AutoSyncInterval: 30 * time.Second, - DialTimeout: 5 * time.Second, - DialOptions: []grpc.DialOption{ - grpc.WithConnectParams(grpc.ConnectParams{ - Backoff: backoffCfg, - }), - grpc.WithKeepaliveParams(keepalive.ClientParameters{ - Time: time.Duration(cfg.TiKVClient.GrpcKeepAliveTime) * time.Second, - Timeout: time.Duration(cfg.TiKVClient.GrpcKeepAliveTimeout) * time.Second, - }), - }, - TLS: ebd.TLSConfig(), - }) - return cli, err -} - // Init initializes a domain. after return, session can be used to do DMLs but not // DDLs which can be used after domain Start. func (do *Domain) Init( @@ -1379,12 +1373,12 @@ func (do *Domain) Init( ) error { do.sysExecutorFactory = sysExecutorFactory perfschema.Init() - etcdStore, addrs, err := getEtcdAddrs(do.store) + etcdStore, addrs, err := store.GetEtcdAddrs(do.store) if err != nil { return errors.Trace(err) } if len(addrs) > 0 { - cli, err2 := newEtcdCli(addrs, etcdStore) + cli, err2 := store.NewEtcdCliWithAddrs(addrs, etcdStore) if err2 != nil { return errors.Trace(err2) } @@ -1394,7 +1388,7 @@ func (do *Domain) Init( do.autoidClient = autoid.NewClientDiscover(cli) - unprefixedEtcdCli, err2 := newEtcdCli(addrs, etcdStore) + unprefixedEtcdCli, err2 := store.NewEtcdCliWithAddrs(addrs, etcdStore) if err2 != nil { return errors.Trace(err2) } @@ -1447,7 +1441,7 @@ func (do *Domain) Init( skipRegisterToDashboard := config.GetGlobalConfig().SkipRegisterToDashboard do.info, err = infosync.GlobalInfoSyncerInit(ctx, do.ddl.GetID(), do.ServerID, do.etcdClient, do.unprefixedEtcdCli, pdCli, pdHTTPCli, - do.Store().GetCodec(), skipRegisterToDashboard) + do.Store().GetCodec(), skipRegisterToDashboard, do.infoCache) if err != nil { return err } @@ -1567,6 +1561,11 @@ func (do *Domain) GetSchemaLease() time.Duration { return do.schemaLease } +// IsLeaseExpired returns whether lease has expired +func (do *Domain) IsLeaseExpired() bool { + return do.SchemaValidator.IsLeaseExpired() +} + // InitInfo4Test init infosync for distributed execution test. func (do *Domain) InitInfo4Test() { infosync.MockGlobalServerInfoManagerEntry.Add(do.ddl.GetID(), do.ServerID) @@ -1593,7 +1592,8 @@ func (do *Domain) initLogBackup(ctx context.Context, pdClient pd.Client) error { return err } adv := streamhelper.NewCheckpointAdvancer(env) - do.logBackupAdvancer = daemon.New(adv, streamhelper.OwnerManagerForLogBackup(ctx, do.etcdClient), adv.Config().TickDuration) + do.brOwnerMgr = streamhelper.OwnerManagerForLogBackup(ctx, do.etcdClient) + do.logBackupAdvancer = daemon.New(adv, do.brOwnerMgr, adv.Config().TickDuration) loop, err := do.logBackupAdvancer.Begin(ctx) if err != nil { return err @@ -1861,6 +1861,36 @@ func (do *Domain) GetPDHTTPClient() pdhttp.Client { return nil } +func decodePrivilegeEvent(resp clientv3.WatchResponse) PrivilegeEvent { + var msg PrivilegeEvent + for _, event := range resp.Events { + if event.Kv != nil { + val := event.Kv.Value + if len(val) > 0 { + var tmp PrivilegeEvent + err := json.Unmarshal(val, &tmp) + if err != nil { + logutil.BgLogger().Warn("decodePrivilegeEvent unmarshal fail", zap.Error(err)) + break + } + if tmp.All { + msg.All = true + break + } + // duplicated users in list is ok. + msg.UserList = append(msg.UserList, tmp.UserList...) + } + } + } + + // In case old version triggers the event, the event value is empty, + // Then we fall back to the old way: reload all the users. + if len(msg.UserList) == 0 { + msg.All = true + } + return msg +} + // LoadPrivilegeLoop create a goroutine loads privilege tables in a loop, it // should be called only once in BootstrapSession. func (do *Domain) LoadPrivilegeLoop(sctx sessionctx.Context) error { @@ -1875,7 +1905,7 @@ func (do *Domain) LoadPrivilegeLoop(sctx sessionctx.Context) error { var watchCh clientv3.WatchChan duration := 5 * time.Minute if do.etcdClient != nil { - watchCh = do.etcdClient.Watch(context.Background(), privilegeKey) + watchCh = do.etcdClient.Watch(do.ctx, privilegeKey) duration = 10 * time.Minute } @@ -1887,25 +1917,32 @@ func (do *Domain) LoadPrivilegeLoop(sctx sessionctx.Context) error { var count int for { - ok := true + var err error select { case <-do.exit: return - case _, ok = <-watchCh: - case <-time.After(duration): - } - if !ok { - logutil.BgLogger().Error("load privilege loop watch channel closed") - watchCh = do.etcdClient.Watch(context.Background(), privilegeKey) - count++ - if count > 10 { - time.Sleep(time.Duration(count) * time.Second) + case resp, ok := <-watchCh: + if ok { + count = 0 + event := decodePrivilegeEvent(resp) + if event.All { + err = do.privHandle.UpdateAll() + } else { + err = do.privHandle.Update(event.UserList) + } + } else { + if do.ctx.Err() == nil { + logutil.BgLogger().Error("load privilege loop watch channel closed") + watchCh = do.etcdClient.Watch(do.ctx, privilegeKey) + count++ + if count > 10 { + time.Sleep(time.Duration(count) * time.Second) + } + } } - continue + case <-time.After(duration): + err = do.privHandle.UpdateAll() } - - count = 0 - err := do.privHandle.Update() metrics.LoadPrivilegeCounter.WithLabelValues(metrics.RetLabel(err)).Inc() if err != nil { logutil.BgLogger().Error("load privilege failed", zap.Error(err)) @@ -2062,7 +2099,12 @@ func (do *Domain) LoadBindInfoLoop(ctxForHandle sessionctx.Context, ctxForEvolve return err } - owner := do.newOwnerManager(bindinfo.Prompt, bindinfo.OwnerKey) + owner := do.NewOwnerManager(bindinfo.Prompt, bindinfo.OwnerKey) + err = owner.CampaignOwner() + if err != nil { + logutil.BgLogger().Warn("campaign owner failed", zap.Error(err)) + return err + } do.globalBindHandleWorkerLoop(owner) return nil } @@ -2083,7 +2125,7 @@ func (do *Domain) globalBindHandleWorkerLoop(owner owner.Manager) { for { select { case <-do.exit: - owner.Cancel() + owner.Close() return case <-bindWorkerTicker.C: bindHandle := do.BindHandle() @@ -2385,8 +2427,15 @@ func (do *Domain) UpdateTableStatsLoop(ctx, initStatsCtx sessionctx.Context) err } variable.EnableStatsOwner = do.enableStatsOwner variable.DisableStatsOwner = do.disableStatsOwner - do.statsOwner = do.newOwnerManager(handle.StatsPrompt, handle.StatsOwnerKey) + do.statsOwner = do.NewOwnerManager(handle.StatsPrompt, handle.StatsOwnerKey) do.statsOwner.SetListener(owner.NewListenersWrapper(statsHandle, do.ddlNotifier)) + if config.GetGlobalConfig().Instance.TiDBEnableStatsOwner.Load() { + err := do.statsOwner.CampaignOwner() + if err != nil { + logutil.BgLogger().Warn("campaign owner failed", zap.Error(err)) + return err + } + } do.wg.Run(func() { do.indexUsageWorker() }, "indexUsageWorker") @@ -2474,7 +2523,7 @@ func (do *Domain) disableStatsOwner() error { func quitStatsOwner(do *Domain, mgr owner.Manager) { <-do.exit - mgr.Cancel() + mgr.Close() } // StartLoadStatsSubWorkers starts sub workers with new sessions to load stats concurrently. @@ -2487,7 +2536,8 @@ func (do *Domain) StartLoadStatsSubWorkers(ctxList []sessionctx.Context) { logutil.BgLogger().Info("start load stats sub workers", zap.Int("worker count", len(ctxList))) } -func (do *Domain) newOwnerManager(prompt, ownerKey string) owner.Manager { +// NewOwnerManager returns the owner manager for use outside of the domain. +func (do *Domain) NewOwnerManager(prompt, ownerKey string) owner.Manager { id := do.ddl.OwnerManager().ID() var statsOwner owner.Manager if do.etcdClient == nil { @@ -2495,13 +2545,6 @@ func (do *Domain) newOwnerManager(prompt, ownerKey string) owner.Manager { } else { statsOwner = owner.NewOwnerManager(context.Background(), do.etcdClient, prompt, id, ownerKey) } - // TODO: Need to do something when err is not nil. - if ownerKey == handle.StatsOwnerKey && config.GetGlobalConfig().Instance.TiDBEnableStatsOwner.Load() { - err := statsOwner.CampaignOwner() - if err != nil { - logutil.BgLogger().Warn("campaign owner failed", zap.Error(err)) - } - } return statsOwner } @@ -2595,7 +2638,7 @@ func (do *Domain) updateStatsWorkerExitPreprocessing(statsHandle *handle.Handle) logutil.BgLogger().Info("updateStatsWorker is going to exit, start to flush stats") statsHandle.FlushStats() logutil.BgLogger().Info("updateStatsWorker ready to release owner") - do.statsOwner.Cancel() + do.statsOwner.Close() ch <- struct{}{} }() select { @@ -2675,6 +2718,7 @@ func (do *Domain) updateStatsWorker(_ sessionctx.Context) { } case <-readMemTicker.C: memory.ForceReadMemStats() + do.StatsHandle().StatsCache.TriggerEvict() case <-updateStatsHealthyTicker.C: statsHandle.UpdateStatsHealthyMetrics() } @@ -2799,15 +2843,39 @@ const ( tiflashComputeNodeKey = "/tiflash/new_tiflash_compute_nodes" ) +// PrivilegeEvent is the message definition for NotifyUpdatePrivilege(), encoded in json. +// TiDB old version do not use no such message. +type PrivilegeEvent struct { + All bool + UserList []string +} + +// NotifyUpdateAllUsersPrivilege updates privilege key in etcd, TiDB client that watches +// the key will get notification. +func (do *Domain) NotifyUpdateAllUsersPrivilege() error { + return do.notifyUpdatePrivilege(PrivilegeEvent{All: true}) +} + // NotifyUpdatePrivilege updates privilege key in etcd, TiDB client that watches // the key will get notification. -func (do *Domain) NotifyUpdatePrivilege() error { +func (do *Domain) NotifyUpdatePrivilege(userList []string) error { + return do.notifyUpdatePrivilege(PrivilegeEvent{UserList: userList}) +} + +func (do *Domain) notifyUpdatePrivilege(event PrivilegeEvent) error { // No matter skip-grant-table is configured or not, sending an etcd message is required. // Because we need to tell other TiDB instances to update privilege data, say, we're changing the // password using a special TiDB instance and want the new password to take effect. if do.etcdClient != nil { + data, err := json.Marshal(event) + if err != nil { + return errors.Trace(err) + } + if uint64(len(data)) > size.MB { + logutil.BgLogger().Warn("notify update privilege message too large", zap.ByteString("value", data)) + } row := do.etcdClient.KV - _, err := row.Put(context.Background(), privilegeKey, "") + _, err = row.Put(do.ctx, privilegeKey, string(data)) if err != nil { logutil.BgLogger().Warn("notify update privilege failed", zap.Error(err)) } @@ -2820,7 +2888,10 @@ func (do *Domain) NotifyUpdatePrivilege() error { return nil } - return do.PrivilegeHandle().Update() + if event.All { + return do.PrivilegeHandle().UpdateAll() + } + return do.PrivilegeHandle().Update(event.UserList) } // NotifyUpdateSysVarCache updates the sysvar cache key in etcd, which other TiDB @@ -3255,7 +3326,8 @@ func (do *Domain) planCacheEvictTrigger() { case <-ticker.C: // trigger the eviction begin := time.Now() - detailInfo, numEvicted := do.instancePlanCache.Evict() + enabled := variable.EnableInstancePlanCache.Load() + detailInfo, numEvicted := do.instancePlanCache.Evict(!enabled) // evict all if the plan cache is disabled metrics2.GetPlanCacheInstanceEvict().Set(float64(numEvicted)) if numEvicted > 0 { logutil.BgLogger().Info("instance plan eviction", diff --git a/pkg/domain/domain_test.go b/pkg/domain/domain_test.go index f575d8702b305..92eff2e83dd98 100644 --- a/pkg/domain/domain_test.go +++ b/pkg/domain/domain_test.go @@ -486,19 +486,3 @@ func TestDeferFn(t *testing.T) { require.True(t, d) require.Len(t, df.data, 1) } - -func TestNewEtcdCliGetEtcdAddrs(t *testing.T) { - etcdStore, addrs, err := getEtcdAddrs(nil) - require.NoError(t, err) - require.Empty(t, addrs) - require.Nil(t, etcdStore) - - etcdStore, addrs, err = getEtcdAddrs(&mockEtcdBackend{pdAddrs: []string{"localhost:2379"}}) - require.NoError(t, err) - require.Equal(t, []string{"localhost:2379"}, addrs) - require.NotNil(t, etcdStore) - - cli, err := NewEtcdCli(nil) - require.NoError(t, err) - require.Nil(t, cli) -} diff --git a/pkg/domain/infosync/info.go b/pkg/domain/infosync/info.go index ec18dac803fe5..e0f25e8c3c16e 100644 --- a/pkg/domain/infosync/info.go +++ b/pkg/domain/infosync/info.go @@ -126,6 +126,7 @@ type InfoSyncer struct { scheduleManager ScheduleManager tiflashReplicaManager TiFlashReplicaManager resourceManagerClient pd.ResourceManagerClient + infoCache infoschemaMinTS } // ServerInfo is server static information. @@ -202,6 +203,10 @@ func SetPDHttpCliForTest(cli pdhttp.Client) func() { } } +type infoschemaMinTS interface { + GetAndResetRecentInfoSchemaTS(now uint64) uint64 +} + // GlobalInfoSyncerInit return a new InfoSyncer. It is exported for testing. func GlobalInfoSyncerInit( ctx context.Context, @@ -211,6 +216,7 @@ func GlobalInfoSyncerInit( pdCli pd.Client, pdHTTPCli pdhttp.Client, codec tikv.Codec, skipRegisterToDashBoard bool, + infoCache infoschemaMinTS, ) (*InfoSyncer, error) { if pdHTTPCli != nil { pdHTTPCli = pdHTTPCli. @@ -224,6 +230,7 @@ func GlobalInfoSyncerInit( info: getServerInfo(id, serverIDGetter), serverInfoPath: fmt.Sprintf("%s/%s", ServerInformationPath, id), minStartTSPath: fmt.Sprintf("%s/%s", ServerMinStartTSPath, id), + infoCache: infoCache, } err := is.init(ctx, skipRegisterToDashBoard) if err != nil { @@ -546,6 +553,7 @@ func GetRuleBundle(ctx context.Context, name string) (*placement.Bundle, error) } // PutRuleBundles is used to post specific rule bundles to PD. +// an "empty" bundle means delete bundle if a bundle with such ID exists. func PutRuleBundles(ctx context.Context, bundles []*placement.Bundle) error { failpoint.Inject("putRuleBundlesError", func(isServiceError failpoint.Value) { var err error @@ -800,6 +808,14 @@ func (is *InfoSyncer) ReportMinStartTS(store kv.Storage) { } } + if is.infoCache != nil { + schemaTS := is.infoCache.GetAndResetRecentInfoSchemaTS(currentVer.Ver) + logutil.BgLogger().Debug("ReportMinStartTS", zap.Uint64("InfoSchema Recent StartTS", schemaTS)) + if schemaTS > startTSLowerLimit && schemaTS < minStartTS { + minStartTS = schemaTS + } + } + is.minStartTS = kv.GetMinInnerTxnStartTS(now, startTSLowerLimit, minStartTS) err = is.storeMinStartTS(context.Background()) diff --git a/pkg/domain/infosync/info_test.go b/pkg/domain/infosync/info_test.go index f8bf26dbb7c50..3f85c8289c147 100644 --- a/pkg/domain/infosync/info_test.go +++ b/pkg/domain/infosync/info_test.go @@ -71,7 +71,7 @@ func TestTopology(t *testing.T) { require.NoError(t, err) }() - info, err := GlobalInfoSyncerInit(ctx, currentID, func() uint64 { return 1 }, client, client, nil, nil, keyspace.CodecV1, false) + info, err := GlobalInfoSyncerInit(ctx, currentID, func() uint64 { return 1 }, client, client, nil, nil, keyspace.CodecV1, false, nil) require.NoError(t, err) err = info.newTopologySessionAndStoreServerInfo(ctx, util2.NewSessionDefaultRetryCnt) @@ -156,7 +156,7 @@ func (is *InfoSyncer) ttlKeyExists(ctx context.Context) (bool, error) { } func TestPutBundlesRetry(t *testing.T) { - _, err := GlobalInfoSyncerInit(context.TODO(), "test", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, false) + _, err := GlobalInfoSyncerInit(context.TODO(), "test", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, false, nil) require.NoError(t, err) bundle, err := placement.NewBundleFromOptions(&model.PlacementSettings{PrimaryRegion: "r1", Regions: "r1,r2"}) @@ -220,7 +220,7 @@ func TestPutBundlesRetry(t *testing.T) { func TestTiFlashManager(t *testing.T) { ctx := context.Background() - _, err := GlobalInfoSyncerInit(ctx, "test", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, false) + _, err := GlobalInfoSyncerInit(ctx, "test", func() uint64 { return 1 }, nil, nil, nil, nil, keyspace.CodecV1, false, nil) tiflash := NewMockTiFlash() SetMockTiFlash(tiflash) diff --git a/pkg/domain/infosync/placement_manager.go b/pkg/domain/infosync/placement_manager.go index 2d9de6a24d3e4..1a9d20ee1bf9b 100644 --- a/pkg/domain/infosync/placement_manager.go +++ b/pkg/domain/infosync/placement_manager.go @@ -16,6 +16,8 @@ package infosync import ( "context" + "fmt" + "sort" "sync" "github.com/pingcap/tidb/pkg/ddl/placement" @@ -99,6 +101,60 @@ func (m *mockPlacementManager) GetAllRuleBundles(_ context.Context) ([]*placemen return bundles, nil } +type keyRange struct { + start string + end string +} + +// CheckBundle check that the rules don't overlap without explicit Override +// Exported for testing reasons. +// Tries to be a simpler version of PDs +// prepareRulesForApply + checkApplyRules. +// And additionally checks for key overlaps. +func CheckBundle(bundle *placement.Bundle) error { + keys := make([]keyRange, 0, len(bundle.Rules)) + for _, rule := range bundle.Rules { + if rule.Role == pd.Leader { + if rule.Override { + // PD would override the previous rules, + // not only the overlapping key ranges. + keys = keys[:0] + } + keys = append(keys, keyRange{ + start: rule.StartKeyHex, + end: rule.EndKeyHex, + }) + } + } + if len(keys) == 0 { + return nil + } + // Could use pd's placement.sortRules() instead. + sort.Slice(keys, func(i, j int) bool { + if keys[i].start == keys[j].start { + return keys[i].end < keys[j].end + } + return keys[i].start < keys[j].start + }) + + for i := 1; i < len(keys); i++ { + if keys[i].start < keys[i-1].end { + return fmt.Errorf(`ERROR 8243 (HY000): "[PD:placement:ErrBuildRuleList]build rule list failed, multiple leader replicas for range {%s, %s}`, keys[i-1].start, keys[i].end) + } + } + return nil +} + +func checkBundles(bundles map[string]*placement.Bundle) error { + // Check that no bundles have leaders overlapping ranges + for k := range bundles { + if err := CheckBundle(bundles[k]); err != nil { + return err + } + } + return nil +} + func (m *mockPlacementManager) PutRuleBundles(_ context.Context, bundles []*placement.Bundle) error { m.Lock() defer m.Unlock() @@ -115,5 +171,5 @@ func (m *mockPlacementManager) PutRuleBundles(_ context.Context, bundles []*plac } } - return nil + return checkBundles(m.bundles) } diff --git a/pkg/domain/plan_replayer_dump.go b/pkg/domain/plan_replayer_dump.go index 6edf681d5551d..02bf97302c846 100644 --- a/pkg/domain/plan_replayer_dump.go +++ b/pkg/domain/plan_replayer_dump.go @@ -35,7 +35,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/printer" diff --git a/pkg/domain/schema_validator.go b/pkg/domain/schema_validator.go index 6cf2480bc0ab2..3853478115953 100644 --- a/pkg/domain/schema_validator.go +++ b/pkg/domain/schema_validator.go @@ -57,6 +57,8 @@ type SchemaValidator interface { Reset() // IsStarted indicates whether SchemaValidator is started. IsStarted() bool + // IsLeaseExpired checks whether the current lease has expired + IsLeaseExpired() bool } type deltaSchemaInfo struct { @@ -169,6 +171,10 @@ func (s *schemaValidator) Update(leaseGrantTS uint64, oldVer, currVer int64, cha } } +func (s *schemaValidator) IsLeaseExpired() bool { + return time.Now().After(s.latestSchemaExpire) +} + // isRelatedTablesChanged returns the result whether relatedTableIDs is changed // from usedVer to the latest schema version. // NOTE, this function should be called under lock! diff --git a/pkg/errctx/context.go b/pkg/errctx/context.go index 0028a91faf3f1..34fae1304463c 100644 --- a/pkg/errctx/context.go +++ b/pkg/errctx/context.go @@ -196,6 +196,8 @@ const ( ErrGroupDupKey // ErrGroupBadNull is the group of bad null errors ErrGroupBadNull + // ErrGroupNoDefault is the group of no default value errors + ErrGroupNoDefault // ErrGroupDividedByZero is the group of divided by zero errors ErrGroupDividedByZero // ErrGroupAutoIncReadFailed is the group of auto increment read failed errors @@ -223,6 +225,8 @@ func init() { ErrGroupBadNull: { errno.ErrBadNull, errno.ErrWarnNullToNotnull, + }, + ErrGroupNoDefault: { errno.ErrNoDefaultForField, }, ErrGroupDividedByZero: { diff --git a/pkg/errno/errcode.go b/pkg/errno/errcode.go index 17fd2cc63ef86..044eda4acf284 100644 --- a/pkg/errno/errcode.go +++ b/pkg/errno/errcode.go @@ -1085,6 +1085,7 @@ const ( ErrMemoryExceedForQuery = 8175 ErrMemoryExceedForInstance = 8176 ErrDeleteNotFoundColumn = 8177 + ErrKeyTooLarge = 8178 // Error codes used by TiDB ddl package ErrUnsupportedDDLOperation = 8200 diff --git a/pkg/errno/errname.go b/pkg/errno/errname.go index 3259373293505..eedd8c562bf4f 100644 --- a/pkg/errno/errname.go +++ b/pkg/errno/errname.go @@ -1078,7 +1078,9 @@ var MySQLErrName = map[uint16]*mysql.ErrMessage{ ErrMemoryExceedForQuery: mysql.Message("Your query has been cancelled due to exceeding the allowed memory limit for a single SQL query. Please try narrowing your query scope or increase the tidb_mem_quota_query limit and try again.[conn=%d]", nil), ErrMemoryExceedForInstance: mysql.Message("Your query has been cancelled due to exceeding the allowed memory limit for the tidb-server instance and this query is currently using the most memory. Please try narrowing your query scope or increase the tidb_server_memory_limit and try again.[conn=%d]", nil), ErrDeleteNotFoundColumn: mysql.Message("Delete can not find column %s for table %s", nil), - ErrHTTPServiceError: mysql.Message("HTTP request failed with status %s", nil), + ErrKeyTooLarge: mysql.Message("key is too large, the size of given key is %d", nil), + + ErrHTTPServiceError: mysql.Message("HTTP request failed with status %s", nil), ErrWarnOptimizerHintInvalidInteger: mysql.Message("integer value is out of range in '%s'", nil), ErrWarnOptimizerHintUnsupportedHint: mysql.Message("Optimizer hint %s is not supported by TiDB and is ignored", nil), diff --git a/pkg/executor/BUILD.bazel b/pkg/executor/BUILD.bazel index 035f718469015..6a300d21ee529 100644 --- a/pkg/executor/BUILD.bazel +++ b/pkg/executor/BUILD.bazel @@ -82,6 +82,7 @@ go_library( "stmtsummary.go", "table_reader.go", "trace.go", + "traffic.go", "union_scan.go", "update.go", "utils.go", @@ -102,6 +103,8 @@ go_library( "//pkg/ddl/label", "//pkg/ddl/placement", "//pkg/ddl/schematracker", + "//pkg/ddl/session", + "//pkg/ddl/util", "//pkg/distsql", "//pkg/distsql/context", "//pkg/disttask/framework/handle", @@ -189,6 +192,7 @@ go_library( "//pkg/statistics/handle/storage", "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/store/driver/backoff", "//pkg/store/driver/txn", "//pkg/store/helper", @@ -357,6 +361,7 @@ go_test( "select_into_test.go", "select_test.go", "set_test.go", + "show_ddl_jobs_test.go", "show_placement_labels_test.go", "show_placement_test.go", "show_stats_test.go", @@ -371,6 +376,7 @@ go_test( "temporary_table_test.go", "tikv_regions_peers_table_test.go", "trace_test.go", + "traffic_test.go", "union_scan_test.go", "update_test.go", "utils_test.go", @@ -433,12 +439,13 @@ go_test( "//pkg/sessiontxn/staleread", "//pkg/statistics", "//pkg/statistics/handle/storage", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/store/copr", "//pkg/store/driver/error", "//pkg/store/helper", "//pkg/store/mockstore", "//pkg/store/mockstore/unistore", + "//pkg/table", "//pkg/table/tables", "//pkg/tablecodec", "//pkg/testkit", @@ -460,6 +467,7 @@ go_test( "//pkg/util/disk", "//pkg/util/execdetails", "//pkg/util/gcutil", + "//pkg/util/hint", "//pkg/util/logutil", "//pkg/util/memory", "//pkg/util/mock", @@ -484,6 +492,7 @@ go_test( "@com_github_pingcap_kvproto//pkg/diagnosticspb", "@com_github_pingcap_kvproto//pkg/encryptionpb", "@com_github_pingcap_kvproto//pkg/errorpb", + "@com_github_pingcap_kvproto//pkg/keyspacepb", "@com_github_pingcap_kvproto//pkg/kvrpcpb", "@com_github_pingcap_kvproto//pkg/metapb", "@com_github_pingcap_log//:log", diff --git a/pkg/executor/adapter.go b/pkg/executor/adapter.go index cd1f3affea5c6..1f5af2082c8c5 100644 --- a/pkg/executor/adapter.go +++ b/pkg/executor/adapter.go @@ -258,8 +258,6 @@ type ExecStmt struct { InfoSchema infoschema.InfoSchema // Plan stores a reference to the final physical plan. Plan base.Plan - // Text represents the origin query text. - Text string StmtNode ast.StmtNode @@ -298,7 +296,7 @@ func (a *ExecStmt) PointGet(ctx context.Context) (*recordSet, error) { r, ctx := tracing.StartRegionEx(ctx, "ExecStmt.PointGet") defer r.End() if r.Span != nil { - r.Span.LogKV("sql", a.OriginText()) + r.Span.LogKV("sql", a.Text()) } failpoint.Inject("assertTxnManagerInShortPointGetPlan", func() { @@ -328,7 +326,7 @@ func (a *ExecStmt) PointGet(ctx context.Context) (*recordSet, error) { } else { // CachedPlan type is already checked in last step pointGetPlan := a.Plan.(*plannercore.PointGetPlan) - exec.Init(pointGetPlan) + exec.Recreated(pointGetPlan) a.PsStmt.PointGet.Executor = exec executor = exec } @@ -359,7 +357,7 @@ func (a *ExecStmt) PointGet(ctx context.Context) (*recordSet, error) { var pi processinfoSetter if raw, ok := sctx.(processinfoSetter); ok { pi = raw - sql := a.OriginText() + sql := a.Text() maxExecutionTime := sctx.GetSessionVars().GetMaxExecutionTime() // Update processinfo, ShowProcess() will use it. pi.SetProcessInfo(sql, time.Now(), cmd, maxExecutionTime) @@ -378,7 +376,12 @@ func (a *ExecStmt) PointGet(ctx context.Context) (*recordSet, error) { // OriginText returns original statement as a string. func (a *ExecStmt) OriginText() string { - return a.Text + return a.StmtNode.OriginalText() +} + +// Text returns utf8 encoded statement as a string. +func (a *ExecStmt) Text() string { + return a.StmtNode.Text() } // IsPrepared returns true if stmt is a prepare statement. @@ -598,6 +601,7 @@ func (a *ExecStmt) Exec(ctx context.Context) (_ sqlexec.RecordSet, err error) { if a.isSelectForUpdate { if sctx.GetSessionVars().UseLowResolutionTSO() { + terror.Log(exec.Close(e)) return nil, errors.New("can not execute select for update statement when 'tidb_low_resolution_tso' is set") } // Special handle for "select for update statement" in pessimistic transaction. @@ -614,6 +618,7 @@ func (a *ExecStmt) Exec(ctx context.Context) (_ sqlexec.RecordSet, err error) { var txnStartTS uint64 txn, err := sctx.Txn(false) if err != nil { + terror.Log(exec.Close(e)) return nil, err } if txn.Valid() { @@ -639,7 +644,7 @@ func (a *ExecStmt) inheritContextFromExecuteStmt() { } func (a *ExecStmt) getSQLForProcessInfo() string { - sql := a.OriginText() + sql := a.Text() if simple, ok := a.Plan.(*plannercore.Simple); ok && simple.Statement != nil { if ss, ok := simple.Statement.(ast.SensitiveStmtNode); ok { // Use SecureText to avoid leak password information. @@ -657,7 +662,7 @@ func (a *ExecStmt) handleStmtForeignKeyTrigger(ctx context.Context, e exec.Execu if stmtCtx.ForeignKeyTriggerCtx.HasFKCascades { // If the ExecStmt has foreign key cascade to be executed, we need call `StmtCommit` to commit the ExecStmt itself // change first. - // Since `UnionScanExec` use `SnapshotIter` and `SnapshotGetter` to read txn mem-buffer, if we don't do `StmtCommit`, + // Since `UnionScanExec` use `SnapshotIter` and `SnapshotGetter` to read txn mem-buffer, if we don't do `StmtCommit`, // then the fk cascade executor can't read the mem-buffer changed by the ExecStmt. a.Ctx.StmtCommit(ctx) } @@ -1033,7 +1038,7 @@ func (a *ExecStmt) handlePessimisticDML(ctx context.Context, e exec.Executor) (e // If it's not a retryable error, rollback current transaction instead of rolling back current statement like // in normal transactions, because we cannot locate and rollback the statement that leads to the lock error. // This is too strict, but since the feature is not for everyone, it's the easiest way to guarantee safety. - stmtText := parser.Normalize(a.OriginText(), sctx.GetSessionVars().EnableRedactLog) + stmtText := parser.Normalize(a.Text(), sctx.GetSessionVars().EnableRedactLog) logutil.Logger(ctx).Info("Transaction abort for the safety of lazy uniqueness check. "+ "Note this may not be a uniqueness violation.", zap.Error(err), @@ -1417,6 +1422,7 @@ func (a *ExecStmt) FinishExecuteStmt(txnTS uint64, err error, hasMoreResults boo a.LogSlowQuery(txnTS, succ, hasMoreResults) a.SummaryStmt(succ) a.observeStmtFinishedForTopSQL() + a.UpdatePlanCacheRuntimeInfo() if sessVars.StmtCtx.IsTiFlash.Load() { if succ { executor_metrics.TotalTiFlashQuerySuccCounter.Inc() @@ -1670,7 +1676,7 @@ func (a *ExecStmt) LogSlowQuery(txnTS uint64, succ bool, hasMoreResults bool) { TimeOptimize: sessVars.DurationOptimization, TimeWaitTS: sessVars.DurationWaitTS, IndexNames: indexNames, - CopTasks: &copTaskInfo, + CopTasks: copTaskInfo, ExecDetail: execDetail, MemMax: memMax, DiskMax: diskMax, @@ -1791,12 +1797,7 @@ func GetResultRowsCount(stmtCtx *stmtctx.StatementContext, p base.Plan) int64 { if runtimeStatsColl == nil { return 0 } - rootPlanID := p.ID() - if !runtimeStatsColl.ExistsRootStats(rootPlanID) { - return 0 - } - rootStats := runtimeStatsColl.GetRootStats(rootPlanID) - return rootStats.GetActRows() + return runtimeStatsColl.GetPlanActRows(p.ID()) } // getFlatPlan generates a FlatPhysicalPlan from the plan stored in stmtCtx.plan, @@ -1930,37 +1931,11 @@ func (a *ExecStmt) SummaryStmt(succ bool) { } sessVars.SetPrevStmtDigest(digest.String()) - // No need to encode every time, so encode lazily. - planGenerator := func() (p string, h string, e any) { - defer func() { - e = recover() - if e != nil { - logutil.BgLogger().Warn("fail to generate plan info", - zap.Stack("backtrace"), - zap.Any("error", e)) - } - }() - p, h = getEncodedPlan(stmtCtx, !sessVars.InRestrictedSQL) - return - } - var binPlanGen func() string - if variable.GenerateBinaryPlan.Load() { - binPlanGen = func() string { - binPlan := getBinaryPlan(a.Ctx) - return binPlan - } - } // Generating plan digest is slow, only generate it once if it's 'Point_Get'. // If it's a point get, different SQLs leads to different plans, so SQL digest // is enough to distinguish different plans in this case. var planDigest string - var planDigestGen func() string - if a.Plan.TP() == plancodec.TypePointGet { - planDigestGen = func() string { - _, planDigest := GetPlanDigest(stmtCtx) - return planDigest.String() - } - } else { + if a.Plan.TP() != plancodec.TypePointGet { _, tmp := GetPlanDigest(stmtCtx) planDigest = tmp.String() } @@ -1969,7 +1944,6 @@ func (a *ExecStmt) SummaryStmt(succ bool) { copTaskInfo := stmtCtx.CopTasksDetails() memMax := sessVars.MemTracker.MaxConsumed() diskMax := sessVars.DiskTracker.MaxConsumed() - sql := a.getLazyStmtText() var stmtDetail execdetails.StmtExecDetails stmtDetailRaw := a.GoCtx.Value(execdetails.StmtExecDetailKey) if stmtDetailRaw != nil { @@ -2005,52 +1979,89 @@ func (a *ExecStmt) SummaryStmt(succ bool) { keyspaceID = uint32(a.Ctx.GetStore().GetCodec().GetKeyspaceID()) } - stmtExecInfo := &stmtsummary.StmtExecInfo{ - SchemaName: strings.ToLower(sessVars.CurrentDB), - OriginalSQL: &sql, - Charset: charset, - Collation: collation, - NormalizedSQL: normalizedSQL, - Digest: digest.String(), - PrevSQL: prevSQL, - PrevSQLDigest: prevSQLDigest, - PlanGenerator: planGenerator, - BinaryPlanGenerator: binPlanGen, - PlanDigest: planDigest, - PlanDigestGen: planDigestGen, - User: userString, - TotalLatency: costTime, - ParseLatency: sessVars.DurationParse, - CompileLatency: sessVars.DurationCompile, - StmtCtx: stmtCtx, - CopTasks: &copTaskInfo, - ExecDetail: &execDetail, - MemMax: memMax, - DiskMax: diskMax, - StartTime: sessVars.StartTime, - IsInternal: sessVars.InRestrictedSQL, - Succeed: succ, - PlanInCache: sessVars.FoundInPlanCache, - PlanInBinding: sessVars.FoundInBinding, - ExecRetryCount: a.retryCount, - StmtExecDetails: stmtDetail, - ResultRows: resultRows, - TiKVExecDetails: tikvExecDetail, - Prepared: a.isPreparedStmt, - KeyspaceName: keyspaceName, - KeyspaceID: keyspaceID, - RUDetail: ruDetail, - ResourceGroupName: sessVars.StmtCtx.ResourceGroupName, - CPUUsages: sessVars.SQLCPUUsages.GetCPUUsages(), - - PlanCacheUnqualified: sessVars.StmtCtx.PlanCacheUnqualified(), - } + if sessVars.CacheStmtExecInfo == nil { + sessVars.CacheStmtExecInfo = &stmtsummary.StmtExecInfo{} + } + stmtExecInfo := sessVars.CacheStmtExecInfo + stmtExecInfo.SchemaName = strings.ToLower(sessVars.CurrentDB) + stmtExecInfo.Charset = charset + stmtExecInfo.Collation = collation + stmtExecInfo.NormalizedSQL = normalizedSQL + stmtExecInfo.Digest = digest.String() + stmtExecInfo.PrevSQL = prevSQL + stmtExecInfo.PrevSQLDigest = prevSQLDigest + stmtExecInfo.PlanDigest = planDigest + stmtExecInfo.User = userString + stmtExecInfo.TotalLatency = costTime + stmtExecInfo.ParseLatency = sessVars.DurationParse + stmtExecInfo.CompileLatency = sessVars.DurationCompile + stmtExecInfo.StmtCtx = stmtCtx + stmtExecInfo.CopTasks = copTaskInfo + stmtExecInfo.ExecDetail = execDetail + stmtExecInfo.MemMax = memMax + stmtExecInfo.DiskMax = diskMax + stmtExecInfo.StartTime = sessVars.StartTime + stmtExecInfo.IsInternal = sessVars.InRestrictedSQL + stmtExecInfo.Succeed = succ + stmtExecInfo.PlanInCache = sessVars.FoundInPlanCache + stmtExecInfo.PlanInBinding = sessVars.FoundInBinding + stmtExecInfo.ExecRetryCount = a.retryCount + stmtExecInfo.StmtExecDetails = stmtDetail + stmtExecInfo.ResultRows = resultRows + stmtExecInfo.TiKVExecDetails = tikvExecDetail + stmtExecInfo.Prepared = a.isPreparedStmt + stmtExecInfo.KeyspaceName = keyspaceName + stmtExecInfo.KeyspaceID = keyspaceID + stmtExecInfo.RUDetail = ruDetail + stmtExecInfo.ResourceGroupName = sessVars.StmtCtx.ResourceGroupName + stmtExecInfo.CPUUsages = sessVars.SQLCPUUsages.GetCPUUsages() + stmtExecInfo.PlanCacheUnqualified = sessVars.StmtCtx.PlanCacheUnqualified() + stmtExecInfo.LazyInfo = a if a.retryCount > 0 { stmtExecInfo.ExecRetryTime = costTime - sessVars.DurationParse - sessVars.DurationCompile - time.Since(a.retryStartTime) } stmtsummaryv2.Add(stmtExecInfo) } +// GetOriginalSQL implements StmtExecLazyInfo interface. +func (a *ExecStmt) GetOriginalSQL() string { + stmt := a.getLazyStmtText() + return stmt.String() +} + +// GetEncodedPlan implements StmtExecLazyInfo interface. +func (a *ExecStmt) GetEncodedPlan() (p string, h string, e any) { + defer func() { + e = recover() + if e != nil { + logutil.BgLogger().Warn("fail to generate plan info", + zap.Stack("backtrace"), + zap.Any("error", e)) + } + }() + + sessVars := a.Ctx.GetSessionVars() + p, h = getEncodedPlan(sessVars.StmtCtx, !sessVars.InRestrictedSQL) + return +} + +// GetBinaryPlan implements StmtExecLazyInfo interface. +func (a *ExecStmt) GetBinaryPlan() string { + if variable.GenerateBinaryPlan.Load() { + return getBinaryPlan(a.Ctx) + } + return "" +} + +// GetPlanDigest implements StmtExecLazyInfo interface. +func (a *ExecStmt) GetPlanDigest() string { + if a.Plan.TP() == plancodec.TypePointGet { + _, planDigest := GetPlanDigest(a.Ctx.GetSessionVars().StmtCtx) + return planDigest.String() + } + return "" +} + // GetTextToLog return the query text to log. func (a *ExecStmt) GetTextToLog(keepHint bool) string { var sql string @@ -2151,6 +2162,31 @@ func (a *ExecStmt) observeStmtBeginForTopSQL(ctx context.Context) context.Contex return topsql.AttachSQLAndPlanInfo(ctx, sqlDigest, planDigest) } +// UpdatePlanCacheRuntimeInfo updates the runtime information of the plan in the plan cache. +func (a *ExecStmt) UpdatePlanCacheRuntimeInfo() { + if !variable.EnableInstancePlanCache.Load() { + return // only record for Instance Plan Cache + } + v := a.Ctx.GetSessionVars().PlanCacheValue + if v == nil { + return + } + pcv, ok := v.(*plannercore.PlanCacheValue) + if !ok { + return + } + + execDetail := a.Ctx.GetSessionVars().StmtCtx.GetExecDetails() + var procKeys, totKeys int64 + if execDetail.ScanDetail != nil { // only support TiKV + procKeys = execDetail.ScanDetail.ProcessedKeys + totKeys = execDetail.ScanDetail.TotalKeys + } + costTime := a.Ctx.GetSessionVars().GetTotalCostDuration() + pcv.UpdateRuntimeInfo(procKeys, totKeys, int64(costTime)) + a.Ctx.GetSessionVars().PlanCacheValue = nil // reset +} + func (a *ExecStmt) observeStmtFinishedForTopSQL() { vars := a.Ctx.GetSessionVars() if vars == nil { diff --git a/pkg/executor/aggregate/agg_hash_partial_worker.go b/pkg/executor/aggregate/agg_hash_partial_worker.go index dd9898691bb49..284f4275001db 100644 --- a/pkg/executor/aggregate/agg_hash_partial_worker.go +++ b/pkg/executor/aggregate/agg_hash_partial_worker.go @@ -71,25 +71,16 @@ type HashAggPartialWorker struct { inflightChunkSync *sync.WaitGroup } -func (w *HashAggPartialWorker) getChildInput() bool { +func (w *HashAggPartialWorker) getChildInput() (*chunk.Chunk, bool) { select { case <-w.finishCh: - return false + return nil, false case chk, ok := <-w.inputCh: if !ok { - return false - } - - sizeBefore := w.chk.MemoryUsage() - w.chk.SwapColumns(chk) - w.memTracker.Consume(w.chk.MemoryUsage() - sizeBefore) - - w.giveBackCh <- &HashAggInput{ - chk: chk, - giveBackCh: w.inputCh, + return nil, false } + return chk, true } - return true } func (w *HashAggPartialWorker) fetchChunkAndProcess(ctx sessionctx.Context, hasError *bool, needShuffle *bool) bool { @@ -99,14 +90,24 @@ func (w *HashAggPartialWorker) fetchChunkAndProcess(ctx sessionctx.Context, hasE } waitStart := time.Now() - ok := w.getChildInput() - updateWaitTime(w.stats, waitStart) - + chk, ok := w.getChildInput() if !ok { return false } defer w.inflightChunkSync.Done() + updateWaitTime(w.stats, waitStart) + + w.intestDuringPartialWorkerRun() + + sizeBefore := w.chk.MemoryUsage() + w.chk.SwapColumns(chk) + w.memTracker.Consume(w.chk.MemoryUsage() - sizeBefore) + + w.giveBackCh <- &HashAggInput{ + chk: chk, + giveBackCh: w.inputCh, + } execStart := time.Now() if err := w.updatePartialResult(ctx, w.chk, len(w.partialResultsMap)); err != nil { diff --git a/pkg/executor/analyze.go b/pkg/executor/analyze.go index 2c8697cff29d6..674b49a383d1e 100644 --- a/pkg/executor/analyze.go +++ b/pkg/executor/analyze.go @@ -99,6 +99,14 @@ func (e *AnalyzeExec) Next(ctx context.Context, _ *chunk.Chunk) error { if len(tasks) == 0 { return nil } + tableAndPartitionIDs := make([]int64, 0, len(tasks)) + for _, task := range tasks { + tableID := getTableIDFromTask(task) + tableAndPartitionIDs = append(tableAndPartitionIDs, tableID.TableID) + if tableID.IsPartitionTable() { + tableAndPartitionIDs = append(tableAndPartitionIDs, tableID.PartitionID) + } + } // Get the min number of goroutines for parallel execution. buildStatsConcurrency, err := getBuildStatsConcurrency(e.Ctx()) @@ -186,7 +194,7 @@ TASKLOOP: if err != nil { sessionVars.StmtCtx.AppendWarning(err) } - return statsHandle.Update(ctx, infoSchema) + return statsHandle.Update(ctx, infoSchema, tableAndPartitionIDs...) } func (e *AnalyzeExec) waitFinish(ctx context.Context, g *errgroup.Group, resultsCh chan *statistics.AnalyzeResults) error { diff --git a/pkg/executor/batch_point_get.go b/pkg/executor/batch_point_get.go index 6921135fe9887..463221f98a6b5 100644 --- a/pkg/executor/batch_point_get.go +++ b/pkg/executor/batch_point_get.go @@ -19,6 +19,7 @@ import ( "fmt" "slices" "sync/atomic" + "time" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/executor/internal/exec" @@ -176,14 +177,15 @@ func (e *BatchPointGetExec) Close() error { if e.RuntimeStats() != nil && e.snapshot != nil { e.snapshot.SetOption(kv.CollectRuntimeStats, nil) } - if e.indexUsageReporter != nil { + if e.indexUsageReporter != nil && e.stats != nil { kvReqTotal := e.stats.GetCmdRPCCount(tikvrpc.CmdBatchGet) // We cannot distinguish how many rows are coming from each partition. Here, we calculate all index usages // percentage according to the row counts for the whole table. + rows := e.RuntimeStats().GetActRows() if e.idxInfo != nil { - e.indexUsageReporter.ReportPointGetIndexUsage(e.tblInfo.ID, e.tblInfo.ID, e.idxInfo.ID, e.ID(), kvReqTotal) + e.indexUsageReporter.ReportPointGetIndexUsage(e.tblInfo.ID, e.tblInfo.ID, e.idxInfo.ID, kvReqTotal, rows) } else { - e.indexUsageReporter.ReportPointGetIndexUsageForHandle(e.tblInfo, e.tblInfo.ID, e.ID(), kvReqTotal) + e.indexUsageReporter.ReportPointGetIndexUsageForHandle(e.tblInfo, e.tblInfo.ID, kvReqTotal, rows) } } e.inited = 0 @@ -235,6 +237,12 @@ func (e *BatchPointGetExec) initialize(ctx context.Context) error { var indexKeys []kv.Key var err error batchGetter := e.batchGetter + if e.Ctx().GetSessionVars().MaxExecutionTime > 0 { + // If MaxExecutionTime is set, we need to set the context deadline for the batch get. + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, time.Duration(e.Ctx().GetSessionVars().MaxExecutionTime)*time.Millisecond) + defer cancel() + } rc := e.Ctx().GetSessionVars().IsPessimisticReadConsistency() if e.idxInfo != nil && !isCommonHandleRead(e.tblInfo, e.idxInfo) { // `SELECT a, b FROM t WHERE (a, b) IN ((1, 2), (1, 2), (2, 1), (1, 2))` should not return duplicated rows diff --git a/pkg/executor/brie.go b/pkg/executor/brie.go index c0ec6528f50b9..8ad6ec5b9b2f9 100644 --- a/pkg/executor/brie.go +++ b/pkg/executor/brie.go @@ -283,7 +283,15 @@ func (b *executorBuilder) buildBRIE(s *ast.BRIEStmt, schema *expression.Schema) Key: tidbCfg.Security.ClusterSSLKey, } pds := strings.Split(tidbCfg.Path, ",") + + // build common config and override for specific task if needed cfg := task.DefaultConfig() + switch s.Kind { + case ast.BRIEKindBackup: + cfg.OverrideDefaultForBackup() + default: + } + cfg.PD = pds cfg.TLS = tlsCfg @@ -315,9 +323,9 @@ func (b *executorBuilder) buildBRIE(s *ast.BRIEStmt, schema *expression.Schema) store := tidbCfg.Store failpoint.Inject("modifyStore", func(v failpoint.Value) { - store = v.(string) + store = config.StoreType(v.(string)) }) - if store != "tikv" { + if store != config.StoreTypeTiKV { b.err = errors.Errorf("%s requires tikv store, not %s", s.Kind, store) return nil } @@ -384,8 +392,7 @@ func (b *executorBuilder) buildBRIE(s *ast.BRIEStmt, schema *expression.Schema) switch s.Kind { case ast.BRIEKindBackup: - bcfg := task.DefaultBackupConfig() - bcfg.Config = cfg + bcfg := task.DefaultBackupConfig(cfg) e.backupCfg = &bcfg for _, opt := range s.Options { @@ -430,8 +437,7 @@ func (b *executorBuilder) buildBRIE(s *ast.BRIEStmt, schema *expression.Schema) } case ast.BRIEKindRestore: - rcfg := task.DefaultRestoreConfig() - rcfg.Config = cfg + rcfg := task.DefaultRestoreConfig(cfg) e.restoreCfg = &rcfg for _, opt := range s.Options { switch opt.Tp { diff --git a/pkg/executor/brie_test.go b/pkg/executor/brie_test.go index 7bfc014a2d215..305cd74417755 100644 --- a/pkg/executor/brie_test.go +++ b/pkg/executor/brie_test.go @@ -147,7 +147,7 @@ func TestFetchShowBRIE(t *testing.T) { require.Equal(t, info2Res, fetchShowBRIEResult(t, e, brieColTypes)) } -func TestBRIEBuilderOPtions(t *testing.T) { +func TestBRIEBuilderOptions(t *testing.T) { sctx := mock.NewContext() sctx.GetSessionVars().User = &auth.UserIdentity{Username: "test"} is := infoschema.MockInfoSchema([]*model.TableInfo{core.MockSignedTable(), core.MockUnsignedTable()}) @@ -156,9 +156,10 @@ func TestBRIEBuilderOPtions(t *testing.T) { ctx := context.Background() p := parser.New() p.SetParserConfig(parser.ParserConfig{EnableWindowFunction: true, EnableStrictDoubleTypeCheck: true}) - failpoint.Enable("github.com/pingcap/tidb/pkg/executor/modifyStore", `return("tikv")`) + err := failpoint.Enable("github.com/pingcap/tidb/pkg/executor/modifyStore", `return("tikv")`) + require.NoError(t, err) defer failpoint.Disable("github.com/pingcap/tidb/pkg/executor/modifyStore") - err := os.WriteFile("/tmp/keyfile", []byte(strings.Repeat("A", 128)), 0644) + err = os.WriteFile("/tmp/keyfile", []byte(strings.Repeat("A", 128)), 0644) require.NoError(t, err) stmt, err := p.ParseOneStmt("BACKUP TABLE `a` TO 'noop://' CHECKSUM_CONCURRENCY = 4 IGNORE_STATS = 1 COMPRESSION_LEVEL = 4 COMPRESSION_TYPE = 'lz4' ENCRYPTION_METHOD = 'aes256-ctr' ENCRYPTION_KEYFILE = '/tmp/keyfile'", "", "") @@ -190,6 +191,7 @@ func TestBRIEBuilderOPtions(t *testing.T) { require.NoError(t, builder.err) e, ok := exec.(*BRIEExec) require.True(t, ok) + require.False(t, e.backupCfg.Checksum) require.Equal(t, uint(4), e.backupCfg.ChecksumConcurrency) require.Equal(t, int32(4), e.backupCfg.CompressionLevel) require.Equal(t, true, e.backupCfg.IgnoreStats) @@ -223,6 +225,7 @@ func TestBRIEBuilderOPtions(t *testing.T) { e, ok = exec.(*BRIEExec) require.True(t, ok) require.Equal(t, uint(4), e.restoreCfg.ChecksumConcurrency) + require.True(t, e.restoreCfg.Checksum) require.True(t, e.restoreCfg.WaitTiflashReady) require.True(t, e.restoreCfg.WithSysTable) require.True(t, e.restoreCfg.LoadStats) diff --git a/pkg/executor/builder.go b/pkg/executor/builder.go index 13ea4365466f2..ca795719199c5 100644 --- a/pkg/executor/builder.go +++ b/pkg/executor/builder.go @@ -210,6 +210,8 @@ func (b *executorBuilder) build(p base.Plan) exec.Executor { return b.buildUnlockStats(v) case *plannercore.PlanReplayer: return b.buildPlanReplayer(v) + case *plannercore.Traffic: + return b.buildTraffic(v) case *plannercore.PhysicalLimit: return b.buildLimit(v) case *plannercore.Prepare: @@ -222,6 +224,8 @@ func (b *executorBuilder) build(p base.Plan) exec.Executor { return b.buildPauseDDLJobs(v) case *plannercore.ResumeDDLJobs: return b.buildResumeDDLJobs(v) + case *plannercore.AlterDDLJob: + return b.buildAlterDDLJob(v) case *plannercore.ShowNextRowID: return b.buildShowNextRowID(v) case *plannercore.ShowDDL: @@ -359,6 +363,15 @@ func (b *executorBuilder) buildResumeDDLJobs(v *plannercore.ResumeDDLJobs) exec. return e } +func (b *executorBuilder) buildAlterDDLJob(v *plannercore.AlterDDLJob) exec.Executor { + e := &AlterDDLJobExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), + jobID: v.JobID, + AlterOpts: v.Options, + } + return e +} + func (b *executorBuilder) buildShowNextRowID(v *plannercore.ShowNextRowID) exec.Executor { e := &ShowNextRowIDExec{ BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), @@ -811,12 +824,15 @@ func (b *executorBuilder) buildLimit(v *plannercore.PhysicalLimit) exec.Executor end: v.Offset + v.Count, } - childUsedSchemaLen := v.Children()[0].Schema().Len() + childSchemaLen := v.Children()[0].Schema().Len() childUsedSchema := markChildrenUsedCols(v.Schema().Columns, v.Children()[0].Schema())[0] e.columnIdxsUsedByChild = make([]int, 0, len(childUsedSchema)) e.columnIdxsUsedByChild = append(e.columnIdxsUsedByChild, childUsedSchema...) - if len(e.columnIdxsUsedByChild) == childUsedSchemaLen { + if len(e.columnIdxsUsedByChild) == childSchemaLen { e.columnIdxsUsedByChild = nil // indicates that all columns are used. LimitExec will improve performance for this condition. + } else { + // construct a project evaluator to do the inline projection + e.columnSwapHelper = chunk.NewColumnSwapHelper(e.columnIdxsUsedByChild) } return e } @@ -1130,6 +1146,63 @@ func (b *executorBuilder) buildPlanReplayer(v *plannercore.PlanReplayer) exec.Ex return e } +func (b *executorBuilder) buildTraffic(traffic *plannercore.Traffic) exec.Executor { + switch traffic.OpType { + case ast.TrafficOpCapture: + exec := &TrafficCaptureExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, nil, 0), + Args: map[string]string{ + "output": traffic.Dir, + }, + } + for _, option := range traffic.Options { + switch option.OptionType { + case ast.TrafficOptionDuration: + exec.Args["duration"] = option.StrValue + case ast.TrafficOptionEncryptionMethod: + exec.Args["encrypt-method"] = option.StrValue + case ast.TrafficOptionCompress: + exec.Args["compress"] = strconv.FormatBool(option.BoolValue) + } + } + return exec + case ast.TrafficOpReplay: + exec := &TrafficReplayExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, nil, 0), + Args: map[string]string{ + "input": traffic.Dir, + }, + } + for _, option := range traffic.Options { + switch option.OptionType { + case ast.TrafficOptionUsername: + exec.Args["username"] = option.StrValue + case ast.TrafficOptionPassword: + exec.Args["password"] = option.StrValue + case ast.TrafficOptionSpeed: + if v := option.FloatValue.GetValue(); v != nil { + if dec, ok := v.(*types.MyDecimal); ok { + exec.Args["speed"] = dec.String() + } + } + case ast.TrafficOptionReadOnly: + exec.Args["readonly"] = strconv.FormatBool(option.BoolValue) + } + } + return exec + case ast.TrafficOpCancel: + return &TrafficCancelExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, nil, 0), + } + case ast.TrafficOpShow: + return &TrafficShowExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, nil, 0), + } + } + // impossible here + return nil +} + func (*executorBuilder) buildReplace(vals *InsertValues) exec.Executor { replaceExec := &ReplaceExec{ InsertValues: vals, @@ -2241,7 +2314,6 @@ func (b *executorBuilder) buildMemTable(v *plannercore.PhysicalMemTable) exec.Ex strings.ToLower(infoschema.ClusterTableProcesslist), strings.ToLower(infoschema.TableTiKVRegionStatus), strings.ToLower(infoschema.TableTiDBHotRegions), - strings.ToLower(infoschema.TableSessionVar), strings.ToLower(infoschema.TableConstraints), strings.ToLower(infoschema.TableTiFlashReplica), strings.ToLower(infoschema.TableTiDBServersInfo), @@ -2265,6 +2337,8 @@ func (b *executorBuilder) buildMemTable(v *plannercore.PhysicalMemTable) exec.Ex strings.ToLower(infoschema.TableTiDBCheckConstraints), strings.ToLower(infoschema.TableKeywords), strings.ToLower(infoschema.TableTiDBIndexUsage), + strings.ToLower(infoschema.TableTiDBPlanCache), + strings.ToLower(infoschema.ClusterTableTiDBPlanCache), strings.ToLower(infoschema.ClusterTableTiDBIndexUsage): memTracker := memory.NewTracker(v.ID(), -1) memTracker.AttachTo(b.ctx.GetSessionVars().StmtCtx.MemTracker) @@ -2310,9 +2384,11 @@ func (b *executorBuilder) buildMemTable(v *plannercore.PhysicalMemTable) exec.Ex case strings.ToLower(infoschema.TableStatementsSummary), strings.ToLower(infoschema.TableStatementsSummaryHistory), strings.ToLower(infoschema.TableStatementsSummaryEvicted), + strings.ToLower(infoschema.TableTiDBStatementsStats), strings.ToLower(infoschema.ClusterTableStatementsSummary), strings.ToLower(infoschema.ClusterTableStatementsSummaryHistory), - strings.ToLower(infoschema.ClusterTableStatementsSummaryEvicted): + strings.ToLower(infoschema.ClusterTableStatementsSummaryEvicted), + strings.ToLower(infoschema.ClusterTableTiDBStatementsStats): var extractor *plannercore.StatementsSummaryExtractor if v.Extractor != nil { extractor = v.Extractor.(*plannercore.StatementsSummaryExtractor) @@ -2456,19 +2532,23 @@ func (b *executorBuilder) buildApply(v *plannercore.PhysicalApply) exec.Executor } tupleJoiner := join.NewJoiner(b.ctx, v.JoinType, v.InnerChildIdx == 0, defaultValues, otherConditions, exec.RetTypes(leftChild), exec.RetTypes(rightChild), nil, false) - serialExec := &join.NestedLoopApplyExec{ - BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID(), outerExec, innerExec), - InnerExec: innerExec, - OuterExec: outerExec, - OuterFilter: outerFilter, - InnerFilter: innerFilter, - Outer: v.JoinType != logicalop.InnerJoin, - Joiner: tupleJoiner, - OuterSchema: v.OuterSchema, - Sctx: b.ctx, - CanUseCache: v.CanUseCache, - } - executor_metrics.ExecutorCounterNestedLoopApplyExec.Inc() + + constructSerialExec := func() exec.Executor { + serialExec := &join.NestedLoopApplyExec{ + BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID(), outerExec, innerExec), + InnerExec: innerExec, + OuterExec: outerExec, + OuterFilter: outerFilter, + InnerFilter: innerFilter, + Outer: v.JoinType != logicalop.InnerJoin, + Joiner: tupleJoiner, + OuterSchema: v.OuterSchema, + Sctx: b.ctx, + CanUseCache: v.CanUseCache, + } + executor_metrics.ExecutorCounterNestedLoopApplyExec.Inc() + return serialExec + } // try parallel mode if v.Concurrency > 1 { @@ -2480,13 +2560,13 @@ func (b *executorBuilder) buildApply(v *plannercore.PhysicalApply) exec.Executor clonedInnerPlan, err := plannercore.SafeClone(v.SCtx(), innerPlan) if err != nil { b.err = nil - return serialExec + return constructSerialExec() } corCol := coreusage.ExtractCorColumnsBySchema4PhysicalPlan(clonedInnerPlan, outerPlan.Schema()) clonedInnerExec := b.build(clonedInnerPlan) if b.err != nil { b.err = nil - return serialExec + return constructSerialExec() } innerExecs = append(innerExecs, clonedInnerExec) corCols = append(corCols, corCol) @@ -2510,7 +2590,7 @@ func (b *executorBuilder) buildApply(v *plannercore.PhysicalApply) exec.Executor useCache: v.CanUseCache, } } - return serialExec + return constructSerialExec() } func (b *executorBuilder) buildMaxOneRow(v *plannercore.PhysicalMaxOneRow) exec.Executor { @@ -3061,13 +3141,23 @@ func (b *executorBuilder) buildAnalyze(v *plannercore.Analyze) exec.Executor { } exprCtx := b.ctx.GetExprCtx() for _, task := range v.ColTasks { + // ColumnInfos2ColumnsAndNames will use the `colInfos` to find the unique id for the column, + // so we need to make sure all the columns pass into it. columns, _, err := expression.ColumnInfos2ColumnsAndNames( exprCtx, pmodel.NewCIStr(task.AnalyzeInfo.DBName), task.TblInfo.Name, - task.ColsInfo, + append(task.ColsInfo, task.SkipColsInfo...), task.TblInfo, ) + columns = slices.DeleteFunc(columns, func(expr *expression.Column) bool { + for _, col := range task.SkipColsInfo { + if col.ID == expr.ID { + return true + } + } + return false + }) if err != nil { b.err = err return nil diff --git a/pkg/executor/check_table_index.go b/pkg/executor/check_table_index.go index 6b7d176739939..6f0187377c22b 100644 --- a/pkg/executor/check_table_index.go +++ b/pkg/executor/check_table_index.go @@ -352,61 +352,41 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non w.e.BaseExecutor.ReleaseSysSession(ctx, se) }() + tblMeta := w.table.Meta() + tblName := TableName(w.e.dbName, tblMeta.Name.String()) + var pkCols []string var pkTypes []*types.FieldType switch { - case w.e.table.Meta().IsCommonHandle: - pkColsInfo := w.e.table.Meta().GetPrimaryKey().Columns + case tblMeta.IsCommonHandle: + pkColsInfo := tblMeta.GetPrimaryKey().Columns for _, colInfo := range pkColsInfo { - colStr := colInfo.Name.O - pkCols = append(pkCols, colStr) - pkTypes = append(pkTypes, &w.e.table.Meta().Columns[colInfo.Offset].FieldType) + pkCols = append(pkCols, ColumnName(colInfo.Name.O)) + pkTypes = append(pkTypes, &tblMeta.Columns[colInfo.Offset].FieldType) } - case w.e.table.Meta().PKIsHandle: - pkCols = append(pkCols, w.e.table.Meta().GetPkName().O) + case tblMeta.PKIsHandle: + pkCols = append(pkCols, ColumnName(tblMeta.GetPkName().O)) default: // support decoding _tidb_rowid. - pkCols = append(pkCols, model.ExtraHandleName.O) + pkCols = append(pkCols, ColumnName(model.ExtraHandleName.O)) } + handleColumns := strings.Join(pkCols, ",") - // CheckSum of (handle + index columns). - var md5HandleAndIndexCol strings.Builder - md5HandleAndIndexCol.WriteString("crc32(md5(concat_ws(0x2, ") - for _, col := range pkCols { - md5HandleAndIndexCol.WriteString(ColumnName(col)) - md5HandleAndIndexCol.WriteString(", ") - } - for offset, col := range idxInfo.Columns { - tblCol := w.table.Meta().Columns[col.Offset] - if tblCol.IsGenerated() && !tblCol.GeneratedStored { - md5HandleAndIndexCol.WriteString(tblCol.GeneratedExprString) + indexColNames := make([]string, len(idxInfo.Columns)) + for i, col := range idxInfo.Columns { + tblCol := tblMeta.Columns[col.Offset] + if tblCol.IsVirtualGenerated() && tblCol.Hidden { + indexColNames[i] = tblCol.GeneratedExprString } else { - md5HandleAndIndexCol.WriteString(ColumnName(col.Name.O)) - } - if offset != len(idxInfo.Columns)-1 { - md5HandleAndIndexCol.WriteString(", ") + indexColNames[i] = ColumnName(col.Name.O) } } - md5HandleAndIndexCol.WriteString(")))") + indexColumns := strings.Join(indexColNames, ",") - // Used to group by and order. - var md5Handle strings.Builder - md5Handle.WriteString("crc32(md5(concat_ws(0x2, ") - for i, col := range pkCols { - md5Handle.WriteString(ColumnName(col)) - if i != len(pkCols)-1 { - md5Handle.WriteString(", ") - } - } - md5Handle.WriteString(")))") + // CheckSum of (handle + index columns). + md5HandleAndIndexCol := fmt.Sprintf("crc32(md5(concat_ws(0x2, %s, %s)))", handleColumns, indexColumns) - handleColumnField := strings.Join(pkCols, ", ") - var indexColumnField strings.Builder - for offset, col := range idxInfo.Columns { - indexColumnField.WriteString(ColumnName(col.Name.O)) - if offset != len(idxInfo.Columns)-1 { - indexColumnField.WriteString(", ") - } - } + // Used to group by and order. + md5Handle := fmt.Sprintf("crc32(md5(concat_ws(0x2, %s)))", handleColumns) tableRowCntToCheck := int64(0) @@ -437,17 +417,28 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non logutil.BgLogger().Warn("compare checksum by group reaches time limit", zap.Int("times", times)) break } - whereKey := fmt.Sprintf("((cast(%s as signed) - %d) %% %d)", md5Handle.String(), offset, mod) - groupByKey := fmt.Sprintf("((cast(%s as signed) - %d) div %d %% %d)", md5Handle.String(), offset, mod, bucketSize) + whereKey := fmt.Sprintf("((cast(%s as signed) - %d) %% %d)", md5Handle, offset, mod) + groupByKey := fmt.Sprintf("((cast(%s as signed) - %d) div %d %% %d)", md5Handle, offset, mod, bucketSize) if !checkOnce { whereKey = "0" } checkOnce = true - tblQuery := fmt.Sprintf("select /*+ read_from_storage(tikv[%s]) */ bit_xor(%s), %s, count(*) from %s use index() where %s = 0 group by %s", TableName(w.e.dbName, w.e.table.Meta().Name.String()), md5HandleAndIndexCol.String(), groupByKey, TableName(w.e.dbName, w.e.table.Meta().Name.String()), whereKey, groupByKey) - idxQuery := fmt.Sprintf("select bit_xor(%s), %s, count(*) from %s use index(`%s`) where %s = 0 group by %s", md5HandleAndIndexCol.String(), groupByKey, TableName(w.e.dbName, w.e.table.Meta().Name.String()), idxInfo.Name, whereKey, groupByKey) - - logutil.BgLogger().Info("fast check table by group", zap.String("table name", w.table.Meta().Name.String()), zap.String("index name", idxInfo.Name.String()), zap.Int("times", times), zap.Int("current offset", offset), zap.Int("current mod", mod), zap.String("table sql", tblQuery), zap.String("index sql", idxQuery)) + tblQuery := fmt.Sprintf( + "select /*+ read_from_storage(tikv[%s]) */ bit_xor(%s), %s, count(*) from %s use index() where %s = 0 group by %s", + tblName, md5HandleAndIndexCol, groupByKey, tblName, whereKey, groupByKey) + idxQuery := fmt.Sprintf( + "select bit_xor(%s), %s, count(*) from %s use index(`%s`) where %s = 0 group by %s", + md5HandleAndIndexCol, groupByKey, tblName, idxInfo.Name, whereKey, groupByKey) + + logutil.BgLogger().Info( + "fast check table by group", + zap.String("table name", tblMeta.Name.String()), + zap.String("index name", idxInfo.Name.String()), + zap.Int("times", times), + zap.Int("current offset", offset), zap.Int("current mod", mod), + zap.String("table sql", tblQuery), zap.String("index sql", idxQuery), + ) // compute table side checksum. tableChecksum, err := getCheckSum(w.e.contextCtx, se, tblQuery) @@ -502,7 +493,9 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non if !meetError { if times != 1 { - logutil.BgLogger().Error("unexpected result, no error detected in this round, but an error is detected in the previous round", zap.Int("times", times), zap.Int("offset", offset), zap.Int("mod", mod)) + logutil.BgLogger().Error( + "unexpected result, no error detected in this round, but an error is detected in the previous round", + zap.Int("times", times), zap.Int("offset", offset), zap.Int("mod", mod)) } break } @@ -528,9 +521,13 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non } if meetError { - groupByKey := fmt.Sprintf("((cast(%s as signed) - %d) %% %d)", md5Handle.String(), offset, mod) - indexSQL := fmt.Sprintf("select %s, %s, %s from %s use index(`%s`) where %s = 0 order by %s", handleColumnField, indexColumnField.String(), md5HandleAndIndexCol.String(), TableName(w.e.dbName, w.e.table.Meta().Name.String()), idxInfo.Name, groupByKey, handleColumnField) - tableSQL := fmt.Sprintf("select /*+ read_from_storage(tikv[%s]) */ %s, %s, %s from %s use index() where %s = 0 order by %s", TableName(w.e.dbName, w.e.table.Meta().Name.String()), handleColumnField, indexColumnField.String(), md5HandleAndIndexCol.String(), TableName(w.e.dbName, w.e.table.Meta().Name.String()), groupByKey, handleColumnField) + groupByKey := fmt.Sprintf("((cast(%s as signed) - %d) %% %d)", md5Handle, offset, mod) + indexSQL := fmt.Sprintf( + "select %s, %s, %s from %s use index(`%s`) where %s = 0 order by %s", + handleColumns, indexColumns, md5HandleAndIndexCol, tblName, idxInfo.Name, groupByKey, handleColumns) + tableSQL := fmt.Sprintf( + "select /*+ read_from_storage(tikv[%s]) */ %s, %s, %s from %s use index() where %s = 0 order by %s", + tblName, handleColumns, indexColumns, md5HandleAndIndexCol, tblName, groupByKey, handleColumns) idxRow, err := queryToRow(se, indexSQL) if err != nil { @@ -562,7 +559,7 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non getValueFromRow := func(row chunk.Row) ([]types.Datum, error) { valueDatum := make([]types.Datum, 0) for i, t := range idxInfo.Columns { - valueDatum = append(valueDatum, row.GetDatum(i+len(pkCols), &w.table.Meta().Columns[t.Offset].FieldType)) + valueDatum = append(valueDatum, row.GetDatum(i+len(pkCols), &tblMeta.Columns[t.Offset].FieldType)) } return valueDatum, nil } @@ -590,7 +587,7 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non } return k }, - Tbl: w.table.Meta(), + Tbl: tblMeta, Idx: idxInfo, EnableRedactLog: w.sctx.GetSessionVars().EnableRedactLog, Storage: w.sctx.GetStore(), diff --git a/pkg/executor/compiler.go b/pkg/executor/compiler.go index ebc756bc3a9e2..82b6d00a60552 100644 --- a/pkg/executor/compiler.go +++ b/pkg/executor/compiler.go @@ -122,7 +122,6 @@ func (c *Compiler) Compile(ctx context.Context, stmtNode ast.StmtNode) (_ *ExecS InfoSchema: is, Plan: finalPlan, LowerPriority: lowerPriority, - Text: stmtNode.Text(), StmtNode: stmtNode, Ctx: c.Ctx, OutputNames: names, diff --git a/pkg/executor/coprocessor.go b/pkg/executor/coprocessor.go index 8abcda99eaf7f..e3fc1179e0379 100644 --- a/pkg/executor/coprocessor.go +++ b/pkg/executor/coprocessor.go @@ -71,7 +71,7 @@ func NewCoprocessorDAGHandler(sctx sessionctx.Context) *CoprocessorDAGHandler { func (h *CoprocessorDAGHandler) HandleRequest(ctx context.Context, req *coprocessor.Request) *coprocessor.Response { ctx = copHandlerCtx(ctx, req) - e, err := h.buildDAGExecutor(req) + e, err := h.buildDAGExecutor(ctx, req) if err != nil { return h.buildErrorResponse(err) } @@ -114,7 +114,7 @@ func (h *CoprocessorDAGHandler) HandleStreamRequest(ctx context.Context, req *co ctx = copHandlerCtx(ctx, req) logutil.Logger(ctx).Debug("handle coprocessor stream request") - e, err := h.buildDAGExecutor(req) + e, err := h.buildDAGExecutor(ctx, req) if err != nil { return stream.Send(h.buildErrorResponse(err)) } @@ -155,7 +155,7 @@ func (h *CoprocessorDAGHandler) buildResponseAndSendToStream(chk *chunk.Chunk, t return nil } -func (h *CoprocessorDAGHandler) buildDAGExecutor(req *coprocessor.Request) (exec.Executor, error) { +func (h *CoprocessorDAGHandler) buildDAGExecutor(ctx context.Context, req *coprocessor.Request) (exec.Executor, error) { if req.GetTp() != kv.ReqTypeDAG { return nil, errors.Errorf("unsupported request type %d", req.GetTp()) } @@ -172,11 +172,11 @@ func (h *CoprocessorDAGHandler) buildDAGExecutor(req *coprocessor.Request) (exec Username: dagReq.User.UserName, Hostname: dagReq.User.UserHost, } - authName, authHost, success := pm.MatchIdentity(dagReq.User.UserName, dagReq.User.UserHost, false) + authName, authHost, success := pm.MatchIdentity(ctx, dagReq.User.UserName, dagReq.User.UserHost, false) if success && pm.GetAuthWithoutVerification(authName, authHost) { h.sctx.GetSessionVars().User.AuthUsername = authName h.sctx.GetSessionVars().User.AuthHostname = authHost - h.sctx.GetSessionVars().ActiveRoles = pm.GetDefaultRoles(authName, authHost) + h.sctx.GetSessionVars().ActiveRoles = pm.GetDefaultRoles(ctx, authName, authHost) } } } diff --git a/pkg/executor/cte.go b/pkg/executor/cte.go index 4f57b89d3bd92..003fc0505fadf 100644 --- a/pkg/executor/cte.go +++ b/pkg/executor/cte.go @@ -90,16 +90,16 @@ func (e *CTEExec) Open(ctx context.Context) (err error) { defer e.producer.resTbl.Unlock() if e.producer.checkAndUpdateCorColHashCode() { - e.producer.reset() - if err = e.producer.reopenTbls(); err != nil { + err = e.producer.reset() + if err != nil { return err } } if e.producer.openErr != nil { return e.producer.openErr } - if !e.producer.opened { - if err = e.producer.openProducer(ctx, e); err != nil { + if !e.producer.hasCTEResult() && !e.producer.executorOpened { + if err = e.producer.openProducerExecutor(ctx, e); err != nil { return err } } @@ -110,8 +110,14 @@ func (e *CTEExec) Open(ctx context.Context) (err error) { func (e *CTEExec) Next(ctx context.Context, req *chunk.Chunk) (err error) { e.producer.resTbl.Lock() defer e.producer.resTbl.Unlock() - if !e.producer.resTbl.Done() { - if err = e.producer.produce(ctx); err != nil { + if !e.producer.hasCTEResult() { + // in case that another CTEExec call close without generate CTE result. + if !e.producer.executorOpened { + if err = e.producer.openProducerExecutor(ctx, e); err != nil { + return err + } + } + if err = e.producer.genCTEResult(ctx); err != nil { return err } } @@ -133,7 +139,7 @@ func (e *CTEExec) Close() (firstErr error) { func() { e.producer.resTbl.Lock() defer e.producer.resTbl.Unlock() - if !e.producer.closed { + if e.producer.executorOpened { failpoint.Inject("mock_cte_exec_panic_avoid_deadlock", func(v failpoint.Value) { ok := v.(bool) if ok { @@ -141,12 +147,17 @@ func (e *CTEExec) Close() (firstErr error) { panic(exeerrors.ErrMemoryExceedForQuery) } }) - // closeProducer() only close seedExec and recursiveExec, will not touch resTbl. - // It means you can still read resTbl after call closeProducer(). - // You can even call all three functions(openProducer/produce/closeProducer) in CTEExec.Next(). + // closeProducerExecutor() only close seedExec and recursiveExec, will not touch resTbl. + // It means you can still read resTbl after call closeProducerExecutor(). + // You can even call all three functions(openProducerExecutor/genCTEResult/closeProducerExecutor) in CTEExec.Next(). // Separating these three function calls is only to follow the abstraction of the volcano model. - err := e.producer.closeProducer() + err := e.producer.closeProducerExecutor() firstErr = setFirstErr(firstErr, err, "close cte producer error") + if !e.producer.hasCTEResult() { + // CTE result is not generated, in this case, we reset it + err = e.producer.reset() + firstErr = setFirstErr(firstErr, err, "close cte producer error") + } } }() err := e.BaseExecutor.Close() @@ -161,10 +172,10 @@ func (e *CTEExec) reset() { } type cteProducer struct { - // opened should be false when not open or open fail(a.k.a. openErr != nil) - opened bool - produced bool - closed bool + // executorOpened is used to indicate whether the executor(seedExec/recursiveExec) is opened. + // when executorOpened is true, the executor is opened, otherwise it means the executor is + // not opened or is already closed. + executorOpened bool // cteProducer is shared by multiple operators, so if the first operator tries to open // and got error, the second should return open error directly instead of open again. @@ -203,14 +214,10 @@ type cteProducer struct { corColHashCodes [][]byte } -func (p *cteProducer) openProducer(ctx context.Context, cteExec *CTEExec) (err error) { +func (p *cteProducer) openProducerExecutor(ctx context.Context, cteExec *CTEExec) (err error) { defer func() { p.openErr = err - if err == nil { - p.opened = true - } else { - p.opened = false - } + p.executorOpened = true }() if p.seedExec == nil { return errors.New("seedExec for CTEExec is nil") @@ -253,7 +260,7 @@ func (p *cteProducer) openProducer(ctx context.Context, cteExec *CTEExec) (err e return nil } -func (p *cteProducer) closeProducer() (firstErr error) { +func (p *cteProducer) closeProducerExecutor() (firstErr error) { err := exec.Close(p.seedExec) firstErr = setFirstErr(firstErr, err, "close seedExec err") @@ -272,7 +279,7 @@ func (p *cteProducer) closeProducer() (firstErr error) { // because ExplainExec still needs tracker to get mem usage info. p.memTracker = nil p.diskTracker = nil - p.closed = true + p.executorOpened = false return } @@ -339,7 +346,13 @@ func (p *cteProducer) nextChunkLimit(cteExec *CTEExec, req *chunk.Chunk) error { return nil } -func (p *cteProducer) produce(ctx context.Context) (err error) { +func (p *cteProducer) hasCTEResult() bool { + return p.resTbl.Done() +} + +// genCTEResult generates the result of CTE, and stores the result in resTbl. +// This is a synchronous function, which means it will block until the result is generated. +func (p *cteProducer) genCTEResult(ctx context.Context) (err error) { if p.resTbl.Error() != nil { return p.resTbl.Error() } @@ -532,14 +545,18 @@ func (p *cteProducer) setupTblsForNewIteration() (err error) { return nil } -func (p *cteProducer) reset() { +func (p *cteProducer) reset() error { p.curIter = 0 p.hashTbl = nil - - p.opened = false + p.executorOpened = false p.openErr = nil - p.produced = false - p.closed = false + + // Normally we need to setup tracker after calling Reopen(), + // But reopen resTbl means we need to call genCTEResult() again, it will setup tracker. + if err := p.resTbl.Reopen(); err != nil { + return err + } + return p.iterInTbl.Reopen() } func (p *cteProducer) resetTracker() { @@ -553,18 +570,6 @@ func (p *cteProducer) resetTracker() { } } -func (p *cteProducer) reopenTbls() (err error) { - if p.isDistinct { - p.hashTbl = join.NewConcurrentMapHashTable() - } - // Normally we need to setup tracker after calling Reopen(), - // But reopen resTbl means we need to call produce() again, it will setup tracker. - if err := p.resTbl.Reopen(); err != nil { - return err - } - return p.iterInTbl.Reopen() -} - // Check if tbl meets the requirement of limit. func (p *cteProducer) limitDone(tbl cteutil.Storage) bool { return p.hasLimit && uint64(tbl.NumRows()) >= p.limitEnd diff --git a/pkg/executor/distsql.go b/pkg/executor/distsql.go index ef1f426adaa5b..1832913b6001e 100644 --- a/pkg/executor/distsql.go +++ b/pkg/executor/distsql.go @@ -1073,7 +1073,7 @@ func (w *indexWorker) fetchHandles(ctx context.Context, results []distsql.Select idxID := w.idxLookup.getIndexPlanRootID() if w.idxLookup.stmtRuntimeStatsColl != nil { if idxID != w.idxLookup.ID() && w.idxLookup.stats != nil { - w.idxLookup.stats.indexScanBasicStats = w.idxLookup.stmtRuntimeStatsColl.GetBasicRuntimeStats(idxID) + w.idxLookup.stats.indexScanBasicStats = w.idxLookup.stmtRuntimeStatsColl.GetBasicRuntimeStats(idxID, true) } } for i := 0; i < len(results); { @@ -1131,7 +1131,6 @@ func (w *indexWorker) extractTaskHandles(ctx context.Context, chk *chunk.Chunk, if len(handleOffset) == 0 { handleOffset = []int{numColsWithoutPid - 1} } - handles = make([]kv.Handle, 0, w.batchSize) // PushedLimit would always be nil for CheckIndex or CheckTable, we add this check just for insurance. checkLimit := (w.PushedLimit != nil) && (w.checkIndexValue == nil) for len(handles) < w.batchSize { @@ -1157,6 +1156,9 @@ func (w *indexWorker) extractTaskHandles(ctx context.Context, chk *chunk.Chunk, if chk.NumRows() == 0 { return handles, retChk, nil } + if handles == nil { + handles = make([]kv.Handle, 0, chk.NumRows()) + } for i := 0; i < chk.NumRows(); i++ { w.scannedKeys++ if checkLimit { diff --git a/pkg/executor/executor_failpoint_test.go b/pkg/executor/executor_failpoint_test.go index 031acf115bd40..693edd71272f0 100644 --- a/pkg/executor/executor_failpoint_test.go +++ b/pkg/executor/executor_failpoint_test.go @@ -37,6 +37,7 @@ import ( "github.com/pingcap/tidb/pkg/util/deadlockhistory" "github.com/pingcap/tidb/pkg/util/sqlkiller" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" ) func TestTiDBLastTxnInfoCommitMode(t *testing.T) { @@ -594,6 +595,26 @@ func TestTiKVClientReadTimeout(t *testing.T) { defer func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/store/mockstore/unistore/unistoreRPCDeadlineExceeded")) }() + + waitUntilReadTSSafe := func(tk *testkit.TestKit, readTime string) { + unixTime, err := strconv.ParseFloat(tk.MustQuery("select unix_timestamp(" + readTime + ")").Rows()[0][0].(string), 64) + require.NoError(t, err) + expectedPhysical := int64(unixTime*1000) + 1 + expectedTS := oracle.ComposeTS(expectedPhysical, 0) + for { + tk.MustExec("begin") + currentTS, err := strconv.ParseUint(tk.MustQuery("select @@tidb_current_ts").Rows()[0][0].(string), 10, 64) + require.NoError(t, err) + tk.MustExec("rollback") + + if currentTS >= expectedTS { + return + } + + time.Sleep(5 * time.Millisecond) + } + } + // Test for point_get request rows := tk.MustQuery("explain analyze select /*+ set_var(tikv_client_read_timeout=1) */ * from t where a = 1").Rows() require.Len(t, rows, 1) @@ -614,6 +635,7 @@ func TestTiKVClientReadTimeout(t *testing.T) { // Test for stale read. tk.MustExec("set @a=now(6);") + waitUntilReadTSSafe(tk, "@a") tk.MustExec("set @@tidb_replica_read='closest-replicas';") rows = tk.MustQuery("explain analyze select /*+ set_var(tikv_client_read_timeout=1) */ * from t as of timestamp(@a) where b > 1").Rows() require.Len(t, rows, 3) @@ -642,6 +664,7 @@ func TestTiKVClientReadTimeout(t *testing.T) { // Test for stale read. tk.MustExec("set @a=now(6);") + waitUntilReadTSSafe(tk, "@a") tk.MustExec("set @@tidb_replica_read='closest-replicas';") rows = tk.MustQuery("explain analyze select * from t as of timestamp(@a) where b > 1").Rows() require.Len(t, rows, 3) diff --git a/pkg/executor/executor_pkg_test.go b/pkg/executor/executor_pkg_test.go index b965d240b1732..ec0c15fa7ea57 100644 --- a/pkg/executor/executor_pkg_test.go +++ b/pkg/executor/executor_pkg_test.go @@ -131,7 +131,7 @@ func TestBuildKvRangesForIndexJoinWithoutCwcAndWithMemoryTracker(t *testing.T) { } require.Equal(t, 2*bytesConsumed1, bytesConsumed2) - require.Equal(t, int64(25560), bytesConsumed1) + require.Equal(t, int64(23640), bytesConsumed1) } func generateIndexRange(vals ...int64) *ranger.Range { @@ -348,6 +348,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelError l[errctx.ErrGroupDupKey] = errctx.LevelError l[errctx.ErrGroupBadNull] = errctx.LevelError + l[errctx.ErrGroupNoDefault] = errctx.LevelError l[errctx.ErrGroupDividedByZero] = errctx.LevelError l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelError @@ -362,6 +363,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelWarn l[errctx.ErrGroupDupKey] = errctx.LevelError l[errctx.ErrGroupBadNull] = errctx.LevelWarn + l[errctx.ErrGroupNoDefault] = errctx.LevelWarn l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelError @@ -376,6 +378,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelWarn l[errctx.ErrGroupDupKey] = errctx.LevelWarn l[errctx.ErrGroupBadNull] = errctx.LevelWarn + l[errctx.ErrGroupNoDefault] = errctx.LevelWarn l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelWarn l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelWarn @@ -390,6 +393,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelWarn l[errctx.ErrGroupDupKey] = errctx.LevelWarn l[errctx.ErrGroupBadNull] = errctx.LevelWarn + l[errctx.ErrGroupNoDefault] = errctx.LevelWarn l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelWarn @@ -404,6 +408,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelWarn l[errctx.ErrGroupDupKey] = errctx.LevelWarn l[errctx.ErrGroupBadNull] = errctx.LevelWarn + l[errctx.ErrGroupNoDefault] = errctx.LevelWarn l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelError @@ -418,6 +423,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelError l[errctx.ErrGroupDupKey] = errctx.LevelError l[errctx.ErrGroupBadNull] = errctx.LevelError + l[errctx.ErrGroupNoDefault] = errctx.LevelError l[errctx.ErrGroupDividedByZero] = errctx.LevelIgnore l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelError @@ -432,6 +438,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelWarn l[errctx.ErrGroupDupKey] = errctx.LevelError l[errctx.ErrGroupBadNull] = errctx.LevelError + l[errctx.ErrGroupNoDefault] = errctx.LevelError l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelError @@ -446,6 +453,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelWarn l[errctx.ErrGroupDupKey] = errctx.LevelError l[errctx.ErrGroupBadNull] = errctx.LevelError + l[errctx.ErrGroupNoDefault] = errctx.LevelError l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelError @@ -460,6 +468,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelError l[errctx.ErrGroupDupKey] = errctx.LevelError l[errctx.ErrGroupBadNull] = errctx.LevelError + l[errctx.ErrGroupNoDefault] = errctx.LevelError l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelWarn @@ -474,6 +483,7 @@ func TestErrLevelsForResetStmtContext(t *testing.T) { l[errctx.ErrGroupTruncate] = errctx.LevelError l[errctx.ErrGroupDupKey] = errctx.LevelError l[errctx.ErrGroupBadNull] = errctx.LevelError + l[errctx.ErrGroupNoDefault] = errctx.LevelError l[errctx.ErrGroupDividedByZero] = errctx.LevelWarn l[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelError l[errctx.ErrGroupNoMatchedPartition] = errctx.LevelWarn diff --git a/pkg/executor/explain_test.go b/pkg/executor/explain_test.go index 51c7fb5d468b4..bd94ca044a513 100644 --- a/pkg/executor/explain_test.go +++ b/pkg/executor/explain_test.go @@ -322,7 +322,8 @@ func TestIssue35911(t *testing.T) { timeStr1 := extractTime.FindStringSubmatch(rows[4][5].(string))[1] time1, err := time.ParseDuration(timeStr1) require.NoError(t, err) - timeStr2 := extractTime.FindStringSubmatch(rows[5][5].(string))[1] + extractTime2, _ := regexp.Compile("^total_time:(.*?),") + timeStr2 := extractTime2.FindStringSubmatch(rows[5][5].(string))[1] time2, err := time.ParseDuration(timeStr2) require.NoError(t, err) // The duration of IndexLookUp should be longer than its build side child @@ -341,6 +342,48 @@ func TestIssue35911(t *testing.T) { require.EqualValues(t, 5, concurrency) } +func TestTotalTimeCases(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1") + tk.MustExec("create table t1 (c1 bigint, c2 int, c3 int, c4 int, primary key(c1, c2), index (c3));") + lineNum := 1000 + for i := 0; i < lineNum; i++ { + tk.MustExec(fmt.Sprintf("insert into t1 values(%d, %d, %d, %d);", i, i+1, i+2, i+3)) + } + tk.MustExec("analyze table t1") + tk.MustExec("set @@tidb_executor_concurrency = 5;") + + tk.MustExec("set @@tidb_enable_parallel_apply = 0;") + rows := tk.MustQuery("explain analyze select (select /*+ NO_DECORRELATE() */ sum(c4) from t1 where t1.c3 = alias.c3) from t1 alias where alias.c1 = 1;").Rows() + require.True(t, len(rows) == 11) + + // Line3 is tikv_task, others should be all walltime + for i := 0; i < 11; i++ { + if i != 3 { + require.True(t, strings.HasPrefix(rows[i][5].(string), "time:")) + } + } + + // use parallel_apply + tk.MustExec("set @@tidb_enable_parallel_apply = 1;") + rows = tk.MustQuery("explain analyze select (select /*+ NO_DECORRELATE() */ sum(c4) from t1 where t1.c3 = alias.c3) from t1 alias where alias.c1 = 1;").Rows() + require.True(t, len(rows) == 11) + // Line0-2 is walltime, Line3 is tikv_task, Line9 Line10 are special, they are total time in integration environment, while + // walltime in uts due to only one IndexLookUp executor is actually open, others should be all total_time. + for i := 0; i < 11; i++ { + if i == 9 || i == 10 { + continue + } + if i < 3 { + require.True(t, strings.HasPrefix(rows[i][5].(string), "time:")) + } else if i > 3 { + require.True(t, strings.HasPrefix(rows[i][5].(string), "total_time:")) + } + } +} + func flatJSONPlan(j *plannercore.ExplainInfoForEncode) (res []*plannercore.ExplainInfoForEncode) { if j == nil { return diff --git a/pkg/executor/explainfor_test.go b/pkg/executor/explainfor_test.go index 49ab445ea2ab0..27ecff8db29c1 100644 --- a/pkg/executor/explainfor_test.go +++ b/pkg/executor/explainfor_test.go @@ -19,6 +19,7 @@ import ( "encoding/json" "fmt" "strconv" + "strings" "testing" "github.com/pingcap/tidb/pkg/parser/auth" @@ -850,3 +851,24 @@ func TestExplainForJSON(t *testing.T) { tk2.MustExec(fmt.Sprintf("explain format = 'TIDB_JSON' for connection %d", tk1RootProcess.ID)) tk2.MustExec(fmt.Sprintf("explain format = TIDB_JSON for connection %d", tk1RootProcess.ID)) } + +func TestIssue55669(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, primary key (a,b), key (b)) partition by range (b) (partition p0 values less than (1000000), partition pMax values less than (maxvalue))") + tk.MustQuery("select a,b from t where b between 1 and 10") + tkRootProcess := tk.Session().ShowProcess() + ps := []*util.ProcessInfo{tkRootProcess} + tk.Session().SetSessionManager(&testkit.MockSessionManager{PS: ps}) + + rs := tk.MustQuery(fmt.Sprintf("explain for connection %d", tkRootProcess.ID)).Rows() + ok := false + for i := range rs { + if strings.HasSuffix(rs[i][4].(string), "partition:p0") { + ok = true + } + } + require.True(t, ok) +} diff --git a/pkg/executor/grant.go b/pkg/executor/grant.go index 38fb33073ccde..d39f99c31936b 100644 --- a/pkg/executor/grant.go +++ b/pkg/executor/grant.go @@ -258,7 +258,8 @@ func (e *GrantExec) Next(ctx context.Context, _ *chunk.Chunk) error { return err } isCommit = true - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + users := userSpecToUserList(e.Users) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(users) } func containsNonDynamicPriv(privList []*ast.PrivElem) bool { diff --git a/pkg/executor/historical_stats_test.go b/pkg/executor/historical_stats_test.go index c448eb628c10f..73a6d78d30e98 100644 --- a/pkg/executor/historical_stats_test.go +++ b/pkg/executor/historical_stats_test.go @@ -26,7 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics/handle/storage" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/oracle" diff --git a/pkg/executor/importer/BUILD.bazel b/pkg/executor/importer/BUILD.bazel index 45affc02d7974..018c6ba46f25e 100644 --- a/pkg/executor/importer/BUILD.bazel +++ b/pkg/executor/importer/BUILD.bazel @@ -135,6 +135,7 @@ go_test( "//pkg/session", "//pkg/sessionctx/variable", "//pkg/testkit", + "//pkg/testkit/testfailpoint", "//pkg/testkit/testsetup", "//pkg/types", "//pkg/util", diff --git a/pkg/executor/importer/importer_testkit_test.go b/pkg/executor/importer/importer_testkit_test.go index 12c395d4d8ec9..fe99739c27b3b 100644 --- a/pkg/executor/importer/importer_testkit_test.go +++ b/pkg/executor/importer/importer_testkit_test.go @@ -45,6 +45,7 @@ import ( "github.com/pingcap/tidb/pkg/session" "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/types" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" "github.com/pingcap/tidb/pkg/util/logutil" @@ -159,18 +160,14 @@ func TestVerifyChecksum(t *testing.T) { } func TestGetTargetNodeCpuCnt(t *testing.T) { - _, tm, ctx := testutil.InitTableTest(t) - old := variable.EnableDistTask.Load() + store, tm, ctx := testutil.InitTableTest(t) + tk := testkit.NewTestKit(t, store) - variable.EnableDistTask.Store(false) - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/util/cpu/mockNumCpu", "return(16)")) - t.Cleanup(func() { - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/util/cpu/mockNumCpu")) - variable.EnableDistTask.Store(old) - }) + tk.MustExec("set @@global.tidb_enable_dist_task = off;") + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/util/cpu/mockNumCpu", "return(16)") require.NoError(t, tm.InitMeta(ctx, "tidb1", "")) - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/util/cpu/mockNumCpu", "return(8)")) + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/util/cpu/mockNumCpu", "return(8)") targetNodeCPUCnt, err := importer.GetTargetNodeCPUCnt(ctx, importer.DataSourceTypeQuery, "") require.NoError(t, err) require.Equal(t, 8, targetNodeCPUCnt) @@ -187,7 +184,7 @@ func TestGetTargetNodeCpuCnt(t *testing.T) { require.NoError(t, err) require.Equal(t, 8, targetNodeCPUCnt) // disttask enabled - variable.EnableDistTask.Store(true) + tk.MustExec("set @@global.tidb_enable_dist_task = on;") targetNodeCPUCnt, err = importer.GetTargetNodeCPUCnt(ctx, importer.DataSourceTypeFile, "s3://path/to/xxx.csv") require.NoError(t, err) diff --git a/pkg/executor/importer/table_import.go b/pkg/executor/importer/table_import.go index 1939809ea7285..eecdee38d96db 100644 --- a/pkg/executor/importer/table_import.go +++ b/pkg/executor/importer/table_import.go @@ -154,7 +154,7 @@ func NewTableImporter( id string, kvStore tidbkv.Storage, ) (ti *TableImporter, err error) { - idAlloc := kv.NewPanickingAllocators(e.Table.Meta().SepAutoInc(), 0) + idAlloc := kv.NewPanickingAllocators(e.Table.Meta().SepAutoInc()) tbl, err := tables.TableFromMeta(idAlloc, e.Table.Meta()) if err != nil { return nil, errors.Annotatef(err, "failed to tables.TableFromMeta %s", e.Table.Meta().Name) @@ -234,7 +234,7 @@ type TableImporter struct { // NewTableImporterForTest creates a new table importer for test. func NewTableImporterForTest(ctx context.Context, e *LoadDataController, id string, helper local.StoreHelper) (*TableImporter, error) { - idAlloc := kv.NewPanickingAllocators(e.Table.Meta().SepAutoInc(), 0) + idAlloc := kv.NewPanickingAllocators(e.Table.Meta().SepAutoInc()) tbl, err := tables.TableFromMeta(idAlloc, e.Table.Meta()) if err != nil { return nil, errors.Annotatef(err, "failed to tables.TableFromMeta %s", e.Table.Meta().Name) diff --git a/pkg/executor/index_merge_reader.go b/pkg/executor/index_merge_reader.go index 78c95001138b3..cd88db82049da 100644 --- a/pkg/executor/index_merge_reader.go +++ b/pkg/executor/index_merge_reader.go @@ -376,6 +376,9 @@ func (e *IndexMergeReaderExecutor) startPartialIndexWorker(ctx context.Context, byItems: is.ByItems, pushedLimit: pushedIndexLimit, } + if worker.stats != nil && worker.idxID != 0 { + worker.sc.GetSessionVars().StmtCtx.RuntimeStatsColl.GetBasicRuntimeStats(worker.idxID, true) + } if e.isCorColInPartialFilters[workID] { // We got correlated column, so need to refresh Selection operator. var err error @@ -1800,7 +1803,7 @@ func (w *partialIndexWorker) extractTaskHandles(ctx context.Context, chk *chunk. return nil, nil, err } if w.stats != nil && w.idxID != 0 { - w.sc.GetSessionVars().StmtCtx.RuntimeStatsColl.GetBasicRuntimeStats(w.idxID).Record(time.Since(start), chk.NumRows()) + w.sc.GetSessionVars().StmtCtx.RuntimeStatsColl.GetBasicRuntimeStats(w.idxID, false).Record(time.Since(start), chk.NumRows()) } if chk.NumRows() == 0 { failpoint.Inject("testIndexMergeErrorPartialIndexWorker", func(v failpoint.Value) { diff --git a/pkg/executor/infoschema_reader.go b/pkg/executor/infoschema_reader.go index be1237d4b3bdb..98e7fd173d43a 100644 --- a/pkg/executor/infoschema_reader.go +++ b/pkg/executor/infoschema_reader.go @@ -115,10 +115,29 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex // Cache the ret full rows in schemataRetriever if !e.initialized { - is := sctx.GetInfoSchema().(infoschema.InfoSchema) - e.is = is - var err error + // InTxn() should be true in most of the cases. + // Because the transaction should have been activated in MemTableReaderExec Open(). + // Why not just activate the txn here (sctx.Txn(true)) and do it in Open() instead? + // Because it could DATA RACE here and in Open() it's safe. + if sctx.GetSessionVars().InTxn() { + e.is, err = domain.GetDomain(sctx).GetSnapshotInfoSchema(sctx.GetSessionVars().TxnCtx.StartTS) + if err != nil { + return nil, errors.Trace(err) + } + } else { + // When the excutor is built from tidb coprocessor request, the transaction is not valid. + // Then InTxn() is false. + // + // What's the difference between using latest infoschema and using snapshot infoschema? + // A query *should* use the infoschema of the txn start ts, but it's still safe to use the latest. + // If now it's 12:00:00, the ts of the latest infoschema might be 11:59:30 or 11:52:12 or anything. + // Say, default GC interval is 10min, the ts of the latest infoschema is 11:52:12. + // Then the valid lifetime range on infoschema API become [11:52:12, 12:12:12) using latest infoschema, + // but it should be [12:00:00, 12:10:00) if using the snapshot infoschema. + e.is = sctx.GetInfoSchema().(infoschema.InfoSchema) + } + switch e.table.Name.O { case infoschema.TableSchemata: err = e.setDataFromSchemata(sctx) @@ -166,8 +185,6 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex err = e.setDataForTiDBHotRegions(ctx, sctx) case infoschema.TableConstraints: err = e.setDataFromTableConstraints(ctx, sctx) - case infoschema.TableSessionVar: - e.rows, err = infoschema.GetDataFromSessionVariables(ctx, sctx) case infoschema.TableTiDBServersInfo: err = e.setDataForServersInfo(sctx) case infoschema.TableTiFlashReplica: @@ -179,7 +196,7 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex infoschema.TableClientErrorsSummaryByHost: err = e.setDataForClientErrorsSummary(sctx, e.table.Name.O) case infoschema.TableAttributes: - err = e.setDataForAttributes(ctx, sctx, is) + err = e.setDataForAttributes(ctx, sctx, e.is) case infoschema.TablePlacementPolicies: err = e.setDataFromPlacementPolicies(sctx) case infoschema.TableTrxSummary: @@ -212,6 +229,10 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex err = e.setDataFromIndexUsage(ctx, sctx) case infoschema.ClusterTableTiDBIndexUsage: err = e.setDataFromClusterIndexUsage(ctx, sctx) + case infoschema.TableTiDBPlanCache: + err = e.setDataFromPlanCache(ctx, sctx, false) + case infoschema.ClusterTableTiDBPlanCache: + err = e.setDataFromPlanCache(ctx, sctx, true) } if err != nil { return nil, err @@ -242,11 +263,26 @@ func getAutoIncrementID( sctx sessionctx.Context, tblInfo *model.TableInfo, ) int64 { + if raw, ok := is.(*infoschema.SessionExtendedInfoSchema); ok { + if ok, v2 := infoschema.IsV2(raw.InfoSchema); ok { + isCached := v2.TableIsCached(tblInfo.ID) + if !isCached { + // Loading table info from kv storage invalidates the cached auto_increment id. + return 0 + } + } + } tbl, ok := is.TableByID(context.Background(), tblInfo.ID) if !ok { return 0 } - return tbl.Allocators(sctx.GetTableCtx()).Get(autoid.AutoIncrementType).Base() + 1 + alloc := tbl.Allocators(sctx.GetTableCtx()).Get(autoid.AutoIncrementType) + if alloc == nil || alloc.Base() == 0 { + // It may not be loaded yet. + // To show global next autoID, one should use `show table x next_row_id`. + return 0 + } + return alloc.Base() + 1 } func hasPriv(ctx sessionctx.Context, priv mysql.PrivilegeType) bool { @@ -714,6 +750,19 @@ func onlySchemaOrTableColumns(columns []*model.ColumnInfo) bool { return false } +func onlySchemaOrTableColPredicates(predicates map[string]set.StringSet) bool { + for str := range predicates { + switch str { + case "table_name": + case "table_schema": + case "table_catalog": + default: + return false + } + } + return true +} + func (e *memtableRetriever) setDataFromTables(ctx context.Context, sctx sessionctx.Context) error { var rows [][]types.Datum checker := privilege.GetPrivilegeManager(sctx) @@ -730,7 +779,7 @@ func (e *memtableRetriever) setDataFromTables(ctx context.Context, sctx sessionc // select count(*) from INFORMATION_SCHEMA.TABLES // select table_schema, table_name from INFORMATION_SCHEMA.TABLES // column pruning in general is not supported here. - if onlySchemaOrTableColumns(e.columns) { + if onlySchemaOrTableColumns(e.columns) && onlySchemaOrTableColPredicates(ex.ColPredicates) { is := e.is if raw, ok := is.(*infoschema.SessionExtendedInfoSchema); ok { is = raw.InfoSchema @@ -806,6 +855,9 @@ func (e *memtableRetriever) setDataFromTables(ctx context.Context, sctx sessionc if err != nil { return errors.Trace(err) } + if ctx.Err() != nil { + return errors.Trace(ctx.Err()) + } } e.rows = rows return nil @@ -921,10 +973,7 @@ type hugeMemTableRetriever struct { // retrieve implements the infoschemaRetriever interface func (e *hugeMemTableRetriever) retrieve(ctx context.Context, sctx sessionctx.Context) ([][]types.Datum, error) { - if e.extractor.SkipRequest { - e.retrieved = true - } - if e.retrieved { + if e.extractor.SkipRequest || e.retrieved { return nil, nil } @@ -1013,7 +1062,7 @@ func (e *hugeMemTableRetriever) dataForColumnsInTable( // Build plan is not thread safe, there will be concurrency on sessionctx. if err := runWithSystemSession(internalCtx, sctx, func(s sessionctx.Context) error { is := sessiontxn.GetTxnManager(s).GetTxnInfoSchema() - planBuilder, _ := plannercore.NewPlanBuilder().Init(s.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) + planBuilder, _ := plannercore.NewPlanBuilder(plannercore.PlanBuilderOptNoExecution{}).Init(s.GetPlanCtx(), is, hint.NewQBHintHandler(nil)) var err error viewLogicalPlan, err = planBuilder.BuildDataSourceFromView(ctx, schema, tbl, nil, nil) return errors.Trace(err) @@ -1176,6 +1225,10 @@ func (e *memtableRetriever) setDataFromPartitions(ctx context.Context, sctx sess } createTime := types.NewTime(types.FromGoTime(table.GetUpdateTime()), createTimeTp, types.DefaultFsp) + if ctx.Err() != nil { + return errors.Trace(ctx.Err()) + } + var rowCount, dataLength, indexLength uint64 if useStatsCache { if table.GetPartitionInfo() == nil { @@ -1605,13 +1658,7 @@ func (e *DDLJobsReaderExec) Next(_ context.Context, req *chunk.Chunk) error { if e.cursor < len(e.runningJobs) { num := min(req.Capacity(), len(e.runningJobs)-e.cursor) for i := e.cursor; i < e.cursor+num; i++ { - e.appendJobToChunk(req, e.runningJobs[i], checker) - req.AppendString(12, e.runningJobs[i].Query) - if e.runningJobs[i].MultiSchemaInfo != nil { - for range e.runningJobs[i].MultiSchemaInfo.SubJobs { - req.AppendString(12, e.runningJobs[i].Query) - } - } + e.appendJobToChunk(req, e.runningJobs[i], checker, false) } e.cursor += num count += num @@ -1625,13 +1672,7 @@ func (e *DDLJobsReaderExec) Next(_ context.Context, req *chunk.Chunk) error { return err } for _, job := range e.cacheJobs { - e.appendJobToChunk(req, job, checker) - req.AppendString(12, job.Query) - if job.MultiSchemaInfo != nil { - for range job.MultiSchemaInfo.SubJobs { - req.AppendString(12, job.Query) - } - } + e.appendJobToChunk(req, job, checker, false) } e.cursor += len(e.cacheJobs) } @@ -1952,7 +1993,7 @@ func (e *memtableRetriever) setDataForTiKVRegionStatus(ctx context.Context, sctx for _, tableID := range extractorTableIDs { regionsInfo, err := e.getRegionsInfoForTable(ctx, tikvHelper, is, tableID) if err != nil { - if errors.ErrorEqual(err, infoschema.ErrTableExists) { + if errors.ErrorEqual(err, infoschema.ErrTableNotExists) { continue } return err @@ -1972,6 +2013,10 @@ func (e *memtableRetriever) setDataForTiKVRegionStatus(ctx context.Context, sctx return err } } + if allRegionsInfo == nil { + return nil + } + tableInfos := tikvHelper.GetRegionsTableInfo(allRegionsInfo, is, nil) for i := range allRegionsInfo.Regions { regionTableList := tableInfos[allRegionsInfo.Regions[i].ID] @@ -1996,7 +2041,7 @@ func (e *memtableRetriever) setDataForTiKVRegionStatus(ctx context.Context, sctx func (e *memtableRetriever) getRegionsInfoForTable(ctx context.Context, h *helper.Helper, is infoschema.InfoSchema, tableID int64) (*pd.RegionsInfo, error) { tbl, _ := is.TableByID(ctx, tableID) if tbl == nil { - return nil, infoschema.ErrTableExists.GenWithStackByArgs(tableID) + return nil, infoschema.ErrTableNotExists.GenWithStackByArgs(tableID) } pt := tbl.Meta().GetPartitionInfo() @@ -3436,9 +3481,10 @@ func (e *TiFlashSystemTableRetriever) dataForTiFlashSystemTables(ctx context.Con if !ok { return nil, errors.New("Get tiflash system tables can only run with tikv compatible storage") } - // send request to tiflash, timeout is 1s + // send request to tiflash, use 5 minutes as per-request timeout instanceID := e.instanceIDs[e.instanceIdx] - resp, err := tikvStore.GetTiKVClient().SendRequest(ctx, instanceID, &request, time.Second) + timeout := time.Duration(5*60) * time.Second + resp, err := tikvStore.GetTiKVClient().SendRequest(ctx, instanceID, &request, timeout) if err != nil { return nil, errors.Trace(err) } @@ -3899,6 +3945,46 @@ func (e *memtableRetriever) setDataFromClusterIndexUsage(ctx context.Context, sc return nil } +func (e *memtableRetriever) setDataFromPlanCache(_ context.Context, sctx sessionctx.Context, cluster bool) (err error) { + values := domain.GetDomain(sctx).GetInstancePlanCache().All() + rows := make([][]types.Datum, 0, len(values)) + for _, v := range values { + pcv := v.(*plannercore.PlanCacheValue) + + row := make([]types.Datum, 0, 16) + row = append(row, types.NewStringDatum(pcv.SQLDigest)) + row = append(row, types.NewStringDatum(pcv.SQLText)) + row = append(row, types.NewStringDatum(pcv.StmtType)) + row = append(row, types.NewStringDatum(pcv.ParseUser)) + row = append(row, types.NewStringDatum(pcv.PlanDigest)) + row = append(row, types.NewStringDatum(pcv.BinaryPlan)) + row = append(row, types.NewStringDatum(pcv.Binding)) + row = append(row, types.NewStringDatum(pcv.OptimizerEnvHash)) + row = append(row, types.NewStringDatum(pcv.ParseValues)) + row = append(row, types.NewIntDatum(pcv.Memory)) + exec, procKeys, totKeys, sumLat, lastTime := pcv.RuntimeInfo() + row = append(row, types.NewIntDatum(exec)) + row = append(row, types.NewIntDatum(procKeys)) + row = append(row, types.NewIntDatum(totKeys)) + row = append(row, types.NewIntDatum(sumLat)) + row = append(row, types.NewTimeDatum( + types.NewTime(types.FromGoTime(pcv.LoadTime), mysql.TypeTimestamp, types.DefaultFsp))) + row = append(row, types.NewTimeDatum( + types.NewTime(types.FromGoTime(lastTime), mysql.TypeTimestamp, types.DefaultFsp))) + + rows = append(rows, row) + } + + if cluster { + if rows, err = infoschema.AppendHostInfoToRows(sctx, rows); err != nil { + return err + } + } + + e.rows = rows + return nil +} + func checkRule(rule *label.Rule) (dbName, tableName string, partitionName string, err error) { s := strings.Split(rule.ID, "/") if len(s) < 3 { diff --git a/pkg/executor/infoschema_reader_test.go b/pkg/executor/infoschema_reader_test.go index ef73cc970c912..644896b064833 100644 --- a/pkg/executor/infoschema_reader_test.go +++ b/pkg/executor/infoschema_reader_test.go @@ -552,6 +552,15 @@ func TestTablesTable(t *testing.T) { testkit.Rows()) tk.MustQuery(fmt.Sprintf("select table_schema, table_name, tidb_table_id from information_schema.tables where table_schema = 'db1' and table_name = 't1' and tidb_table_id in (%s,%s)", tableMetas[0].id, tableMetas[1].id)).Check( testkit.Rows(toString(tableMetas[0]))) + + selectTables, err := strconv.Atoi(tk.MustQuery("select count(*) from information_schema.tables where upper(table_name) = 'T1'").Rows()[0][0].(string)) + require.NoError(t, err) + totalTables, err := strconv.Atoi(tk.MustQuery("select count(*) from information_schema.tables").Rows()[0][0].(string)) + require.NoError(t, err) + remainTables, err := strconv.Atoi(tk.MustQuery("select count(*) from information_schema.tables where upper(table_name) != 'T1'").Rows()[0][0].(string)) + require.NoError(t, err) + require.Equal(t, 2, selectTables) + require.Equal(t, totalTables, remainTables+selectTables) } func TestColumnTable(t *testing.T) { @@ -606,8 +615,9 @@ func TestColumnTable(t *testing.T) { where TABLE_SCHEMA = 'test' and TABLE_NAME = 'tbl1' and COLUMN_NAME = 'col_2';`).Check( testkit.RowsWithSep("|", "test|tbl1|col_2")) - tk.MustQuery(`select count(*) from information_schema.columns;`).Check( - testkit.RowsWithSep("|", "4983")) + tk.MustQuery(`select count(*) from information_schema.columns + where TABLE_SCHEMA = 'test' and TABLE_NAME in ('tbl1', 'tbl2', 'view1');`).Check( + testkit.RowsWithSep("|", "9")) } func TestIndexUsageTable(t *testing.T) { @@ -653,8 +663,9 @@ func TestIndexUsageTable(t *testing.T) { where TABLE_SCHEMA = 'test' and TABLE_NAME = 'idt2' and INDEX_NAME = 'idx_4';`).Check( testkit.RowsWithSep("|", "test|idt2|idx_4")) - tk.MustQuery(`select count(*) from information_schema.tidb_index_usage;`).Check( - testkit.RowsWithSep("|", "78")) + tk.MustQuery(`select count(*) from information_schema.tidb_index_usage + where TABLE_SCHEMA = 'test' and TABLE_NAME in ('idt1', 'idt2');`).Check( + testkit.RowsWithSep("|", "6")) tk.MustQuery(`select TABLE_SCHEMA, TABLE_NAME, INDEX_NAME from information_schema.tidb_index_usage where TABLE_SCHEMA = 'test1';`).Check(testkit.Rows()) @@ -735,21 +746,23 @@ func TestShowColumnsWithSubQueryView(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") - if tk.MustQuery("select @@tidb_schema_cache_size > 0").Equal(testkit.Rows("1")) { - // infoschema v2 requires network, so it cannot be tested this way. - t.Skip() - } + tk.MustExec("set @@global.tidb_schema_cache_size = 0;") + t.Cleanup(func() { + tk.MustExec("set @@global.tidb_schema_cache_size = default;") + }) tk.MustExec("CREATE TABLE added (`id` int(11), `name` text, `some_date` timestamp);") tk.MustExec("CREATE TABLE incremental (`id` int(11), `name`text, `some_date` timestamp);") tk.MustExec("create view temp_view as (select * from `added` where id > (select max(id) from `incremental`));") // Show columns should not send coprocessor request to the storage. - require.NoError(t, failpoint.Enable("tikvclient/tikvStoreSendReqResult", `return("timeout")`)) + testfailpoint.Enable(t, "tikvclient/tikvStoreSendReqResult", `return("timeout")`) + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/planner/core/BuildDataSourceFailed", "panic") + tk.MustQuery("show columns from temp_view;").Check(testkit.Rows( "id int(11) YES ", "name text YES ", "some_date timestamp YES ")) - require.NoError(t, failpoint.Disable("tikvclient/tikvStoreSendReqResult")) + tk.MustQuery("select COLUMN_NAME from information_schema.columns where table_name = 'temp_view';").Check(testkit.Rows("id", "name", "some_date")) } // Code below are helper utilities for the test cases. @@ -857,21 +870,21 @@ 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 /* txn-merge */|public|124|129|t1|synced", + "131|add index|public|124|129|t1|synced", "130|create table|public|124|129|t1|synced", - "117|add index /* txn-merge */|public|110|115|t1|synced", + "117|add index|public|110|115|t1|synced", "116|create table|public|110|115|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 /* txn-merge */|public|124|135|t3|synced", - "134|add index /* txn-merge */|public|124|132|t2|synced", - "131|add index /* txn-merge */|public|124|129|t1|synced", - "128|add index /* txn-merge */|public|124|126|t0|synced", + "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", )) 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 /* txn-merge */|public|110|121|t3|synced", + "123|add index|public|110|121|t3|synced", "122|create table|public|110|121|t3|synced", )) tk2.MustQuery(`SELECT JOB_ID, JOB_TYPE, SCHEMA_STATE, SCHEMA_ID, TABLE_ID, table_name, STATE @@ -879,19 +892,19 @@ func TestInfoSchemaDDLJobs(t *testing.T) { // Test running job loaded := atomic.Bool{} - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { 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 /* txn-merge */ write only 110 112 t0 running", + "138 add index write only 110 112 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 /* txn-merge */ write only 110 112 t0 running", + "138 add index write only 110 112 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 /* txn-merge */ write only 110 112 t0 running", + "138 add index write only 110 112 t0 running", )) } }) @@ -1049,16 +1062,21 @@ func TestInfoschemaTablesSpecialOptimizationCovered(t *testing.T) { {"select table_name, table_schema from information_schema.tables", true}, {"select table_name from information_schema.tables", true}, {"select table_name from information_schema.tables where table_schema = 'test'", true}, + {"select table_name, table_schema from information_schema.tables where table_name = 't'", true}, {"select table_schema from information_schema.tables", true}, + {"select table_schema from information_schema.tables where tidb_table_id = 4611686018427387967", false}, {"select count(table_schema) from information_schema.tables", true}, {"select count(table_name) from information_schema.tables", true}, {"select count(table_rows) from information_schema.tables", false}, {"select count(1) from information_schema.tables", true}, {"select count(*) from information_schema.tables", true}, + {"select count(*) from information_schema.tables where tidb_table_id = 4611686018427387967", false}, {"select count(1) from (select table_name from information_schema.tables) t", true}, {"select * from information_schema.tables", false}, {"select table_name, table_catalog from information_schema.tables", true}, + {"select table_name, table_catalog from information_schema.tables where table_catalog = 'normal'", true}, {"select table_name, table_rows from information_schema.tables", false}, + {"select table_name, table_schema, tidb_table_id from information_schema.tables where tidb_table_id = 4611686018427387967", false}, } { var covered bool ctx := context.WithValue(context.Background(), "cover-check", &covered) diff --git a/pkg/executor/insert_test.go b/pkg/executor/insert_test.go index a195acff531af..4731fae2f8fcd 100644 --- a/pkg/executor/insert_test.go +++ b/pkg/executor/insert_test.go @@ -24,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/executor" "github.com/pingcap/tidb/pkg/meta/autoid" "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/execdetails" @@ -657,3 +658,30 @@ func TestMySQLInsertID(t *testing.T) { tk.MustExec("insert into tb(a, b) values(1,2) on duplicate key update b = 2;") require.Equal(t, tk.Session().LastInsertID(), uint64(0)) } + +func TestInsertNullInNonStrictMode(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1 (id int primary key, col1 varchar(10) not null default '')") + tk.MustExec("create table t2 (id int primary key, col1 varchar(10))") + tk.MustExec("insert into t2 values (1, null)") + tk.MustExec("insert ignore into t1 values(5, null)") + + tk.MustExec("set session sql_mode = ''") + + err := tk.ExecToErr("insert into t1 values(1, null)") + require.EqualError(t, err, table.ErrColumnCantNull.GenWithStackByArgs("col1").Error()) + + err = tk.ExecToErr("insert into t1 set id = 1, col1 = null") + require.EqualError(t, err, table.ErrColumnCantNull.GenWithStackByArgs("col1").Error()) + + err = tk.ExecToErr("insert t1 VALUES (5, 5) ON DUPLICATE KEY UPDATE col1 = null") + require.EqualError(t, err, table.ErrColumnCantNull.GenWithStackByArgs("col1").Error()) + + tk.MustExec("insert into t1 select * from t2") + tk.MustExec("insert into t1 values(2, null), (3, 3), (4, 4)") + tk.MustExec("update t1 set col1 = null where id = 3") + tk.MustExec("insert ignore t1 VALUES (4, 4) ON DUPLICATE KEY UPDATE col1 = null") + tk.MustQuery("select * from t1").Check(testkit.RowsWithSep("|", "1|", "2|", "3|", "4|", "5|")) +} diff --git a/pkg/executor/internal/exec/executor.go b/pkg/executor/internal/exec/executor.go index 8dce75e47909b..3b3673dc1edee 100644 --- a/pkg/executor/internal/exec/executor.go +++ b/pkg/executor/internal/exec/executor.go @@ -236,7 +236,7 @@ func newExecutorStats(stmtCtx *stmtctx.StatementContext, id int) executorStats { if stmtCtx.RuntimeStatsColl != nil { if id > 0 { - e.runtimeStats = stmtCtx.RuntimeStatsColl.GetBasicRuntimeStats(id) + e.runtimeStats = stmtCtx.RuntimeStatsColl.GetBasicRuntimeStats(id, true) } } @@ -338,7 +338,7 @@ func (e *BaseExecutorV2) BuildNewBaseExecutorV2(stmtRuntimeStatsColl *execdetail newExecutorStats := e.executorStats if stmtRuntimeStatsColl != nil { if id > 0 { - newExecutorStats.runtimeStats = stmtRuntimeStatsColl.GetBasicRuntimeStats(id) + newExecutorStats.runtimeStats = stmtRuntimeStatsColl.GetBasicRuntimeStats(id, true) } } @@ -430,6 +430,10 @@ func Open(ctx context.Context, e Executor) (err error) { err = util.GetRecoverError(r) } }() + if e.RuntimeStats() != nil { + start := time.Now() + defer func() { e.RuntimeStats().RecordOpen(time.Since(start)) }() + } return e.Open(ctx) } @@ -469,5 +473,9 @@ func Close(e Executor) (err error) { err = util.GetRecoverError(r) } }() + if e.RuntimeStats() != nil { + start := time.Now() + defer func() { e.RuntimeStats().RecordClose(time.Since(start)) }() + } return e.Close() } diff --git a/pkg/executor/internal/exec/indexusage.go b/pkg/executor/internal/exec/indexusage.go index 223149042844d..da91a21bea389 100644 --- a/pkg/executor/internal/exec/indexusage.go +++ b/pkg/executor/internal/exec/indexusage.go @@ -89,30 +89,24 @@ func (e *IndexUsageReporter) ReportCopIndexUsage(tableID int64, physicalTableID // ReportPointGetIndexUsageForHandle wraps around `ReportPointGetIndexUsage` to get the `indexID` automatically // from the `table.Table` if the table has a clustered index or integer primary key. -func (e *IndexUsageReporter) ReportPointGetIndexUsageForHandle(tblInfo *model.TableInfo, physicalTableID int64, planID int, kvRequestTotal int64) { +func (e *IndexUsageReporter) ReportPointGetIndexUsageForHandle(tblInfo *model.TableInfo, physicalTableID int64, kvRequestTotal, rows int64) { idxID, ok := getClusterIndexID(tblInfo) if !ok { return } - e.ReportPointGetIndexUsage(tblInfo.ID, physicalTableID, idxID, planID, kvRequestTotal) + e.ReportPointGetIndexUsage(tblInfo.ID, physicalTableID, idxID, kvRequestTotal, rows) } // ReportPointGetIndexUsage reports the index usage of a point get or batch point get -func (e *IndexUsageReporter) ReportPointGetIndexUsage(tableID int64, physicalTableID int64, indexID int64, planID int, kvRequestTotal int64) { +func (e *IndexUsageReporter) ReportPointGetIndexUsage(tableID int64, physicalTableID int64, indexID int64, kvRequestTotal, rows int64) { tableRowCount, ok := e.getTableRowCount(physicalTableID) if !ok { // skip if the table is empty or the stats is not valid return } - basic := e.runtimeStatsColl.GetBasicRuntimeStats(planID) - if basic == nil { - return - } - accessRows := basic.GetActRows() - - sample := indexusage.NewSample(0, uint64(kvRequestTotal), uint64(accessRows), uint64(tableRowCount)) + sample := indexusage.NewSample(0, uint64(kvRequestTotal), uint64(rows), uint64(tableRowCount)) e.reporter.Update(tableID, indexID, sample) } diff --git a/pkg/executor/internal/exec/indexusage_test.go b/pkg/executor/internal/exec/indexusage_test.go index 6e59dcb70f1e9..254f85b08b060 100644 --- a/pkg/executor/internal/exec/indexusage_test.go +++ b/pkg/executor/internal/exec/indexusage_test.go @@ -52,9 +52,7 @@ func TestIndexUsageReporter(t *testing.T) { runtimeStatsColl := sc.RuntimeStatsColl // For PointGet and BatchPointGet - planID := 3 - runtimeStatsColl.GetBasicRuntimeStats(planID).Record(time.Second, 2024) - reporter.ReportPointGetIndexUsage(tableID, tableID, indexID, planID, 1) + reporter.ReportPointGetIndexUsage(tableID, tableID, indexID, 1, 2024) require.Eventually(t, func() bool { tk.Session().ReportUsageStats() @@ -63,7 +61,7 @@ func TestIndexUsageReporter(t *testing.T) { }, time.Second*5, time.Millisecond) // For Index Scan - planID = 4 + planID := 4 rows := uint64(2024) zero := uint64(0) executorID := "test-executor" @@ -87,9 +85,7 @@ func TestIndexUsageReporter(t *testing.T) { Version: statistics.PseudoVersion, RealtimeCount: 100, }) - planID = 4 - runtimeStatsColl.GetBasicRuntimeStats(planID).Record(time.Second, 2024) - reporter.ReportPointGetIndexUsage(tableID, tableID, indexID, planID, 1) + reporter.ReportPointGetIndexUsage(tableID, tableID, indexID, 1, 2024) require.Eventually(t, func() bool { tk.Session().ReportUsageStats() diff --git a/pkg/executor/internal/querywatch/query_watch_test.go b/pkg/executor/internal/querywatch/query_watch_test.go index fa461083270e5..ead75f0f63877 100644 --- a/pkg/executor/internal/querywatch/query_watch_test.go +++ b/pkg/executor/internal/querywatch/query_watch_test.go @@ -168,3 +168,22 @@ func TestQueryWatch(t *testing.T) { time.Sleep(1 * time.Second) tk.MustGetErrCode("select * from test.t1", mysql.ErrResourceGroupQueryRunawayQuarantine) } + +func TestQueryWatchIssue56897(t *testing.T) { + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/resourcegroup/runaway/FastRunawayGC", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/resourcegroup/runaway/FastRunawayGC")) + }() + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + require.Eventually(t, func() bool { + return dom.RunawayManager().IsSyncerInitialized() + }, 20*time.Second, 300*time.Millisecond) + tk.MustQuery("QUERY WATCH ADD ACTION KILL SQL TEXT SIMILAR TO 'use test';").Check((testkit.Rows("1"))) + time.Sleep(1 * time.Second) + _, err := tk.Exec("use test") + require.Nil(t, err) + _, err = tk.Exec("use mysql") + require.Nil(t, err) +} diff --git a/pkg/executor/internal/testutil/testutil.go b/pkg/executor/internal/testutil/testutil.go index b360c771d7723..e28a7272bff93 100644 --- a/pkg/executor/internal/testutil/testutil.go +++ b/pkg/executor/internal/testutil/testutil.go @@ -53,6 +53,8 @@ type MockDataSourceParameters struct { // and he can save provided test data at here. Datums [][]any + Nulls [][]bool + Rows int HasSel bool } @@ -80,6 +82,10 @@ func (mds *MockDataSource) GenColDatums(col int) (results []any) { } results = make([]any, 0, rows) + // ndv > 0: generate n rows with random value with `nvd` distinct value + // ndv == 0: generate n rows with random value + // ndv == -1: generate n rows with value provided by user and with `nvd` distinct value + // ndv == -2: use rows provided by user if ndv == 0 { if mds.P.GenDataFunc == nil { for i := 0; i < rows; i++ { @@ -90,11 +96,19 @@ func (mds *MockDataSource) GenColDatums(col int) (results []any) { results = append(results, mds.P.GenDataFunc(i, typ)) } } + } else if ndv == -2 { + // Use data provided by user + if mds.P.Datums[col] == nil { + panic("need to provide data") + } + + results = mds.P.Datums[col] } else { + // Use nvd base data provided by user datums := make([]any, 0, max(ndv, 0)) if ndv == -1 { if mds.P.Datums[col] == nil { - panic("need to provid data") + panic("need to provide data") } datums = mds.P.Datums[col] @@ -257,8 +271,9 @@ func BuildMockDataSource(opt MockDataSourceParameters) *MockDataSource { Chunks: nil, } rTypes := exec.RetTypes(m) - colData := make([][]any, len(rTypes)) - for i := 0; i < len(rTypes); i++ { + colNum := len(rTypes) + colData := make([][]any, colNum) + for i := 0; i < colNum; i++ { colData[i] = m.GenColDatums(i) } @@ -267,10 +282,26 @@ func BuildMockDataSource(opt MockDataSourceParameters) *MockDataSource { m.GenData[i] = chunk.NewChunkWithCapacity(exec.RetTypes(m), m.MaxChunkSize()) } + nulls := opt.Nulls + if nulls == nil { + nulls = make([][]bool, colNum) + for i := range colNum { + nulls[i] = make([]bool, m.P.Rows) + for j := range m.P.Rows { + nulls[i][j] = false + } + } + } + for i := 0; i < m.P.Rows; i++ { idx := i / m.MaxChunkSize() retTypes := exec.RetTypes(m) - for colIdx := 0; colIdx < len(rTypes); colIdx++ { + for colIdx := 0; colIdx < colNum; colIdx++ { + if nulls[colIdx][i] { + m.GenData[idx].AppendNull(colIdx) + continue + } + switch retTypes[colIdx].GetType() { case mysql.TypeLong, mysql.TypeLonglong: m.GenData[idx].AppendInt64(colIdx, colData[colIdx][i].(int64)) diff --git a/pkg/executor/join/BUILD.bazel b/pkg/executor/join/BUILD.bazel index d93d83563288e..9640d0009ecbf 100644 --- a/pkg/executor/join/BUILD.bazel +++ b/pkg/executor/join/BUILD.bazel @@ -4,6 +4,7 @@ go_library( name = "join", srcs = [ "base_join_probe.go", + "base_semi_join.go", "concurrent_map.go", "hash_join_base.go", "hash_join_spill.go", @@ -20,9 +21,11 @@ go_library( "join_row_table.go", "join_table_meta.go", "joiner.go", + "left_outer_semi_join_probe.go", "merge_join.go", "outer_join_probe.go", "row_table_builder.go", + "semi_join_probe.go", "tagged_ptr.go", ], importpath = "github.com/pingcap/tidb/pkg/executor/join", @@ -58,6 +61,7 @@ go_library( "//pkg/util/logutil", "//pkg/util/memory", "//pkg/util/mvmap", + "//pkg/util/queue", "//pkg/util/ranger", "//pkg/util/serialization", "//pkg/util/sqlkiller", @@ -86,10 +90,12 @@ go_test( "join_table_meta_test.go", "joiner_test.go", "left_outer_join_probe_test.go", + "left_outer_semi_join_probe_test.go", "merge_join_test.go", "outer_join_spill_test.go", "right_outer_join_probe_test.go", "row_table_builder_test.go", + "semi_join_probe_test.go", "tagged_ptr_test.go", ], embed = [":join"], diff --git a/pkg/executor/join/base_join_probe.go b/pkg/executor/join/base_join_probe.go index 71eb53e060813..01bf4119edb02 100644 --- a/pkg/executor/join/base_join_probe.go +++ b/pkg/executor/join/base_join_probe.go @@ -185,6 +185,7 @@ func (j *baseJoinProbe) SetChunkForProbe(chk *chunk.Chunk) (err error) { return errors.New("Previous chunk is not probed yet") } } + j.currentChunk = chk logicalRows := chk.NumRows() // if chk.sel != nil, then physicalRows is different from logicalRows @@ -312,6 +313,20 @@ func (j *baseJoinProbe) SetChunkForProbe(chk *chunk.Chunk) (err error) { } func (j *baseJoinProbe) SetRestoredChunkForProbe(chk *chunk.Chunk) error { + defer func() { + if j.ctx.spillHelper.areAllPartitionsSpilled() { + // We will not call `Probe` function when all partitions are spilled. + // So it's necessary to manually set `currentProbeRow` to avoid check fail. + j.currentProbeRow = j.chunkRows + } + }() + + if j.currentChunk != nil { + if j.currentProbeRow < j.chunkRows { + return errors.New("Previous chunk is not probed yet") + } + } + hashValueCol := chk.Column(0) serializedKeysCol := chk.Column(1) colNum := chk.NumCols() @@ -478,7 +493,7 @@ func (j *baseJoinProbe) prepareForProbe(chk *chunk.Chunk) (joinedChk *chunk.Chun j.nextCachedBuildRowIndex = 0 j.matchedRowsForCurrentProbeRow = 0 joinedChk = chk - if j.ctx.OtherCondition != nil { + if j.ctx.hasOtherCondition() { j.tmpChk.Reset() j.rowIndexInfos = j.rowIndexInfos[:0] j.selected = j.selected[:0] @@ -560,8 +575,8 @@ func (j *baseJoinProbe) appendBuildRowToChunkInternal(chk *chunk.Chunk, usedCols // not used so don't need to insert into chk, but still need to advance rowData if meta.columnsSize[columnIndex] < 0 { for index := 0; index < j.nextCachedBuildRowIndex; index++ { - size := *(*uint64)(unsafe.Add(*(*unsafe.Pointer)(unsafe.Pointer(&j.cachedBuildRows[index].buildRowStart)), j.cachedBuildRows[index].buildRowOffset)) - j.cachedBuildRows[index].buildRowOffset += sizeOfLengthField + int(size) + size := *(*uint32)(unsafe.Add(*(*unsafe.Pointer)(unsafe.Pointer(&j.cachedBuildRows[index].buildRowStart)), j.cachedBuildRows[index].buildRowOffset)) + j.cachedBuildRows[index].buildRowOffset += sizeOfElementSize + int(size) } } else { for index := 0; index < j.nextCachedBuildRowIndex; index++ { @@ -687,12 +702,28 @@ func isKeyMatched(keyMode keyMode, serializedKey []byte, rowStart unsafe.Pointer case FixedSerializedKey: return bytes.Equal(serializedKey, hack.GetBytesFromPtr(unsafe.Add(rowStart, meta.nullMapLength+sizeOfNextPtr), meta.joinKeysLength)) case VariableSerializedKey: - return bytes.Equal(serializedKey, hack.GetBytesFromPtr(unsafe.Add(rowStart, meta.nullMapLength+sizeOfNextPtr+sizeOfLengthField), int(meta.getSerializedKeyLength(rowStart)))) + return bytes.Equal(serializedKey, hack.GetBytesFromPtr(unsafe.Add(rowStart, meta.nullMapLength+sizeOfNextPtr+sizeOfElementSize), int(meta.getSerializedKeyLength(rowStart)))) default: panic("unknown key match type") } } +func commonInitForScanRowTable(base *baseJoinProbe) *rowIter { + totalRowCount := base.ctx.hashTableContext.hashTable.totalRowCount() + concurrency := base.ctx.Concurrency + workID := uint64(base.workID) + avgRowPerWorker := totalRowCount / uint64(concurrency) + startIndex := workID * avgRowPerWorker + endIndex := (workID + 1) * avgRowPerWorker + if workID == uint64(concurrency-1) { + endIndex = totalRowCount + } + if endIndex > totalRowCount { + endIndex = totalRowCount + } + return base.ctx.hashTableContext.hashTable.createRowIter(startIndex, endIndex) +} + // NewJoinProbe create a join probe used for hash join v2 func NewJoinProbe(ctx *HashJoinCtxV2, workID uint, joinType logicalop.JoinType, keyIndex []int, joinedColumnTypes, probeKeyTypes []*types.FieldType, rightAsBuildSide bool) ProbeV2 { base := baseJoinProbe{ @@ -747,6 +778,19 @@ func NewJoinProbe(ctx *HashJoinCtxV2, workID uint, joinType logicalop.JoinType, return newOuterJoinProbe(base, !rightAsBuildSide, rightAsBuildSide) case logicalop.RightOuterJoin: return newOuterJoinProbe(base, rightAsBuildSide, rightAsBuildSide) + case logicalop.SemiJoin: + if len(base.rUsed) != 0 { + panic("len(base.rUsed) != 0 for semi join") + } + return newSemiJoinProbe(base, !rightAsBuildSide) + case logicalop.LeftOuterSemiJoin: + if len(base.rUsed) != 0 { + panic("len(base.rUsed) != 0 for left outer semi join") + } + if rightAsBuildSide { + return newLeftOuterSemiJoinProbe(base) + } + fallthrough default: panic("unsupported join type") } diff --git a/pkg/executor/join/base_semi_join.go b/pkg/executor/join/base_semi_join.go new file mode 100644 index 0000000000000..246a5de563519 --- /dev/null +++ b/pkg/executor/join/base_semi_join.go @@ -0,0 +1,131 @@ +// Copyright 2024 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 join + +import ( + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/queue" + "github.com/pingcap/tidb/pkg/util/sqlkiller" +) + +// The following described case has other condition. +// During the probe, when a probe matches one build row, we need to put the probe and build rows +// together and generate a new row. If one probe row could match n build row, then we will get +// n new rows. If n is very big, there will generate too much rows. In order to avoid this case +// we need to limit the max generated row number. This variable describe this max number. +// NOTE: Suppose probe chunk has n rows and n*maxMatchedRowNum << chunkRemainingCapacity. +// We will keep on join probe rows that have been matched before with build rows, though +// probe row with idx i may have produced `maxMatchedRowNum` number rows before. So that +// we can process as many rows as possible. +var maxMatchedRowNum = 4 + +type baseSemiJoin struct { + baseJoinProbe + isLeftSideBuild bool + + // isMatchedRows marks whether the left side row is matched + // It's used only when right side is build side. + isMatchedRows []bool + + isNulls []bool + + // used when left side is build side + rowIter *rowIter + + // used in other condition to record which rows need to be processed + unFinishedProbeRowIdxQueue *queue.Queue[int] +} + +func newBaseSemiJoin(base baseJoinProbe, isLeftSideBuild bool) *baseSemiJoin { + ret := &baseSemiJoin{ + baseJoinProbe: base, + isLeftSideBuild: isLeftSideBuild, + isNulls: make([]bool, 0), + } + + return ret +} + +func (b *baseSemiJoin) resetProbeState() { + if !b.isLeftSideBuild { + b.isMatchedRows = b.isMatchedRows[:0] + for i := 0; i < b.chunkRows; i++ { + b.isMatchedRows = append(b.isMatchedRows, false) + } + } + + if b.ctx.hasOtherCondition() { + if b.unFinishedProbeRowIdxQueue == nil { + b.unFinishedProbeRowIdxQueue = queue.NewQueue[int](b.chunkRows) + } else { + b.unFinishedProbeRowIdxQueue.ClearAndExpandIfNeed(b.chunkRows) + } + + for i := 0; i < b.chunkRows; i++ { + if b.matchedRowsHeaders[i] != 0 { + b.unFinishedProbeRowIdxQueue.Push(i) + } + } + } +} + +func (b *baseSemiJoin) matchMultiBuildRows(joinedChk *chunk.Chunk, joinedChkRemainCap *int, isRightSideBuild bool) { + tagHelper := b.ctx.hashTableContext.tagHelper + meta := b.ctx.hashTableMeta + for b.matchedRowsHeaders[b.currentProbeRow] != 0 && *joinedChkRemainCap > 0 && b.matchedRowsForCurrentProbeRow < maxMatchedRowNum { + candidateRow := tagHelper.toUnsafePointer(b.matchedRowsHeaders[b.currentProbeRow]) + if isRightSideBuild || !meta.isCurrentRowUsedWithAtomic(candidateRow) { + if isKeyMatched(meta.keyMode, b.serializedKeys[b.currentProbeRow], candidateRow, meta) { + b.appendBuildRowToCachedBuildRowsV1(b.currentProbeRow, candidateRow, joinedChk, 0, true) + b.matchedRowsForCurrentProbeRow++ + *joinedChkRemainCap-- + } else { + b.probeCollision++ + } + } + + b.matchedRowsHeaders[b.currentProbeRow] = getNextRowAddress(candidateRow, tagHelper, b.matchedRowsHashValue[b.currentProbeRow]) + } + + b.finishLookupCurrentProbeRow() +} + +func (b *baseSemiJoin) concatenateProbeAndBuildRows(joinedChk *chunk.Chunk, sqlKiller *sqlkiller.SQLKiller, isRightSideBuild bool) error { + joinedChkRemainCap := joinedChk.Capacity() + + for joinedChkRemainCap > 0 && !b.unFinishedProbeRowIdxQueue.IsEmpty() { + probeRowIdx := b.unFinishedProbeRowIdxQueue.Pop() + if isRightSideBuild && b.isMatchedRows[probeRowIdx] { + continue + } + + b.currentProbeRow = probeRowIdx + b.matchMultiBuildRows(joinedChk, &joinedChkRemainCap, isRightSideBuild) + + if b.matchedRowsHeaders[probeRowIdx] == 0 { + continue + } + + b.unFinishedProbeRowIdxQueue.Push(probeRowIdx) + } + + err := checkSQLKiller(sqlKiller, "killedDuringProbe") + if err != nil { + return err + } + + b.finishCurrentLookupLoop(joinedChk) + return nil +} diff --git a/pkg/executor/join/hash_join_spill_helper.go b/pkg/executor/join/hash_join_spill_helper.go index 68bd84d54c8d6..e2612f0d4e11f 100644 --- a/pkg/executor/join/hash_join_spill_helper.go +++ b/pkg/executor/join/hash_join_spill_helper.go @@ -81,6 +81,7 @@ type hashJoinSpillHelper struct { spillTriggedInBuildingStageForTest bool spillTriggeredBeforeBuildingHashTableForTest bool allPartitionsSpilledForTest bool + skipProbeInRestoreForTest bool } func newHashJoinSpillHelper(hashJoinExec *HashJoinV2Exec, partitionNum int, probeFieldTypes []*types.FieldType) *hashJoinSpillHelper { @@ -373,6 +374,18 @@ func (h *hashJoinSpillHelper) init() { h.buildRowsInDisk = make([][]*chunk.DataInDiskByChunks, h.hashJoinExec.Concurrency) h.probeRowsInDisk = make([][]*chunk.DataInDiskByChunks, h.hashJoinExec.Concurrency) + + for _, worker := range h.hashJoinExec.BuildWorkers { + if worker.restoredChkBuf == nil { + worker.restoredChkBuf = chunk.NewEmptyChunk(h.buildSpillChkFieldTypes) + } + } + + for _, worker := range h.hashJoinExec.ProbeWorkers { + if worker.restoredChkBuf == nil { + worker.restoredChkBuf = chunk.NewEmptyChunk(h.probeSpillFieldTypes) + } + } } } @@ -540,6 +553,10 @@ func (h *hashJoinSpillHelper) initTmpSpillBuildSideChunks() { } } +func (h *hashJoinSpillHelper) isProbeSkippedInRestoreForTest() bool { + return h.skipProbeInRestoreForTest +} + func (h *hashJoinSpillHelper) isRespillTriggeredForTest() bool { return h.spillRoundForTest > 1 } diff --git a/pkg/executor/join/hash_join_v2.go b/pkg/executor/join/hash_join_v2.go index 22abbff7cd4ea..ca18d0d58eb63 100644 --- a/pkg/executor/join/hash_join_v2.go +++ b/pkg/executor/join/hash_join_v2.go @@ -42,6 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/disk" "github.com/pingcap/tidb/pkg/util/execdetails" + "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/memory" ) @@ -359,6 +360,8 @@ type ProbeWorkerV2 struct { // We build individual joinProbe for each join worker when use chunk-based // execution, to avoid the concurrency of joiner.chk and joiner.selected. JoinProbe ProbeV2 + + restoredChkBuf *chunk.Chunk } func (w *ProbeWorkerV2) updateProbeStatistic(start time.Time, probeTime int64) { @@ -392,8 +395,7 @@ func (w *ProbeWorkerV2) restoreAndProbe(inDisk *chunk.DataInDiskByChunks) { } failpoint.Inject("ConsumeRandomPanic", nil) - // TODO reuse chunk - chk, err := inDisk.GetChunk(i) + err := inDisk.FillChunk(i, w.restoredChkBuf) if err != nil { joinResult.err = err break @@ -407,7 +409,7 @@ func (w *ProbeWorkerV2) restoreAndProbe(inDisk *chunk.DataInDiskByChunks) { start := time.Now() waitTime := int64(0) - ok, waitTime, joinResult = w.processOneRestoredProbeChunk(chk, joinResult) + ok, waitTime, joinResult = w.processOneRestoredProbeChunk(joinResult) probeTime += int64(time.Since(start)) - waitTime if !ok { break @@ -434,6 +436,7 @@ type BuildWorkerV2 struct { HasNullableKey bool WorkerID uint builder *rowTableBuilder + restoredChkBuf *chunk.Chunk } func (b *BuildWorkerV2) getSegmentsInRowTable(partID int) []*rowTableSegment { @@ -449,9 +452,9 @@ func (b *BuildWorkerV2) updatePartitionData(cost int64) { setMaxValue(&b.HashJoinCtx.stats.maxPartitionData, cost) } -func (b *BuildWorkerV2) processOneRestoredChunk(chk *chunk.Chunk, cost *int64) error { +func (b *BuildWorkerV2) processOneRestoredChunk(cost *int64) error { start := time.Now() - err := b.builder.processOneRestoredChunk(chk, b.HashJoinCtx, int(b.WorkerID), int(b.HashJoinCtx.partitionNumber)) + err := b.builder.processOneRestoredChunk(b.restoredChkBuf, b.HashJoinCtx, int(b.WorkerID), int(b.HashJoinCtx.partitionNumber)) if err != nil { return err } @@ -476,10 +479,7 @@ func (b *BuildWorkerV2) splitPartitionAndAppendToRowTableForRestoreImpl(i int, i return nil } - var chk *chunk.Chunk - - // TODO reuse chunk - chk, err = inDisk.GetChunk(i) + err = inDisk.FillChunk(i, b.restoredChkBuf) if err != nil { return err } @@ -489,7 +489,7 @@ func (b *BuildWorkerV2) splitPartitionAndAppendToRowTableForRestoreImpl(i int, i return err } - err = b.processOneRestoredChunk(chk, cost) + err = b.processOneRestoredChunk(cost) if err != nil { return err } @@ -504,11 +504,6 @@ func (b *BuildWorkerV2) splitPartitionAndAppendToRowTableForRestore(inDisk *chun } }() - partitionNumber := b.HashJoinCtx.partitionNumber - hashJoinCtx := b.HashJoinCtx - - b.builder = createRowTableBuilder(b.BuildKeyColIdx, hashJoinCtx.BuildKeyTypes, partitionNumber, b.HasNullableKey, hashJoinCtx.BuildFilter != nil, hashJoinCtx.needScanRowTableAfterProbeDone) - hasErr := false chunkNum := inDisk.NumChunks() for i := 0; i < chunkNum; i++ { @@ -544,10 +539,6 @@ func (b *BuildWorkerV2) splitPartitionAndAppendToRowTable(typeCtx types.Context, setMaxValue(&b.HashJoinCtx.stats.maxPartitionData, cost) } }() - partitionNumber := b.HashJoinCtx.partitionNumber - hashJoinCtx := b.HashJoinCtx - - b.builder = createRowTableBuilder(b.BuildKeyColIdx, hashJoinCtx.BuildKeyTypes, partitionNumber, b.HasNullableKey, hashJoinCtx.BuildFilter != nil, hashJoinCtx.needScanRowTableAfterProbeDone) hasErr := false for chk := range srcChkCh { @@ -923,8 +914,8 @@ func (w *ProbeWorkerV2) scanRowTableAfterProbeDone() { } } -func (w *ProbeWorkerV2) processOneRestoredProbeChunk(probeChunk *chunk.Chunk, joinResult *hashjoinWorkerResult) (ok bool, waitTime int64, _ *hashjoinWorkerResult) { - joinResult.err = w.JoinProbe.SetRestoredChunkForProbe(probeChunk) +func (w *ProbeWorkerV2) processOneRestoredProbeChunk(joinResult *hashjoinWorkerResult) (ok bool, waitTime int64, _ *hashjoinWorkerResult) { + joinResult.err = w.JoinProbe.SetRestoredChunkForProbe(w.restoredChkBuf) if joinResult.err != nil { return false, 0, joinResult } @@ -941,6 +932,9 @@ func (w *ProbeWorkerV2) processOneProbeChunk(probeChunk *chunk.Chunk, joinResult func (w *ProbeWorkerV2) probeAndSendResult(joinResult *hashjoinWorkerResult) (bool, int64, *hashjoinWorkerResult) { if w.HashJoinCtx.spillHelper.areAllPartitionsSpilled() { + if intest.InTest && w.HashJoinCtx.spillHelper.hashJoinExec.inRestore { + w.HashJoinCtx.spillHelper.skipProbeInRestoreForTest = true + } return true, 0, joinResult } @@ -1263,6 +1257,11 @@ func (e *HashJoinV2Exec) fetchAndBuildHashTableImpl(ctx context.Context) { // doneCh is used by the consumer(splitAndAppendToRowTable) to info the producer(fetchBuildSideRows) that the consumer meet error and stop consume data doneCh := make(chan struct{}, e.Concurrency) + // init builder, todo maybe the builder can be reused during the whole life cycle of the executor + hashJoinCtx := e.HashJoinCtxV2 + for _, worker := range e.BuildWorkers { + worker.builder = createRowTableBuilder(worker.BuildKeyColIdx, hashJoinCtx.BuildKeyTypes, hashJoinCtx.partitionNumber, worker.HasNullableKey, hashJoinCtx.BuildFilter != nil, hashJoinCtx.needScanRowTableAfterProbeDone) + } srcChkCh, waitForController := e.fetchBuildSideRows(ctx, fetcherAndWorkerSyncer, wg, errCh, doneCh) e.splitAndAppendToRowTable(srcChkCh, waitForController, fetcherAndWorkerSyncer, wg, errCh, doneCh) success := waitJobDone(wg, errCh) diff --git a/pkg/executor/join/index_lookup_hash_join.go b/pkg/executor/join/index_lookup_hash_join.go index 873efcada1fb9..1d672ae2d6827 100644 --- a/pkg/executor/join/index_lookup_hash_join.go +++ b/pkg/executor/join/index_lookup_hash_join.go @@ -195,6 +195,9 @@ func (e *IndexNestedLoopHashJoin) startWorkers(ctx context.Context, initBatchSiz func (e *IndexNestedLoopHashJoin) finishJoinWorkers(r any) { if r != nil { e.IndexLookUpJoin.Finished.Store(true) + if e.cancelFunc != nil { + e.cancelFunc() + } err := fmt.Errorf("%v", r) if recoverdErr, ok := r.(error); ok { err = recoverdErr @@ -215,9 +218,6 @@ func (e *IndexNestedLoopHashJoin) finishJoinWorkers(r any) { task := &indexHashJoinTask{err: err} e.taskCh <- task } - if e.cancelFunc != nil { - e.cancelFunc() - } } e.WorkerWg.Done() } @@ -370,6 +370,11 @@ func (ow *indexHashJoinOuterWorker) run(ctx context.Context) { failpoint.Inject("testIndexHashJoinOuterWorkerErr", func() { err = errors.New("mockIndexHashJoinOuterWorkerErr") }) + failpoint.Inject("testIssue54055_1", func(val failpoint.Value) { + if val.(bool) { + err = errors.New("testIssue54055_1") + } + }) if err != nil { task = &indexHashJoinTask{err: err} if ow.keepOuterOrder { @@ -674,6 +679,12 @@ func (iw *indexHashJoinInnerWorker) handleTask(ctx context.Context, task *indexH close(resultCh) } }() + failpoint.Inject("testIssue54055_2", func(val failpoint.Value) { + if val.(bool) { + time.Sleep(10 * time.Millisecond) + panic("testIssue54055_2") + } + }) var joinStartTime time.Time if iw.stats != nil { start := time.Now() diff --git a/pkg/executor/join/index_lookup_join_test.go b/pkg/executor/join/index_lookup_join_test.go index 571d0967388c6..ff3da8269cce3 100644 --- a/pkg/executor/join/index_lookup_join_test.go +++ b/pkg/executor/join/index_lookup_join_test.go @@ -174,3 +174,30 @@ func TestIssue54688(t *testing.T) { rs.Close() } } + +func TestIssue54055(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test;") + tk.MustExec("drop table if exists t, s;") + tk.MustExec("create table t(a int, index(a));") + tk.MustExec("create table s(a int, index(a));") + tk.MustExec("insert into t values(1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15), (16), (17), (18), (19), (20), (21), (22), (23), (24), (25), (26), (27), (28), (29), (30), (31), (32), (33), (34), (35), (36), (37), (38), (39), (40), (41), (42), (43), (44), (45), (46), (47), (48), (49), (50), (51), (52), (53), (54), (55), (56), (57), (58), (59), (60), (61), (62), (63), (64), (65), (66), (67), (68), (69), (70), (71), (72), (73), (74), (75), (76), (77), (78), (79), (80), (81), (82), (83), (84), (85), (86), (87), (88), (89), (90), (91), (92), (93), (94), (95), (96), (97), (98), (99), (100), (101), (102), (103), (104), (105), (106), (107), (108), (109), (110), (111), (112), (113), (114), (115), (116), (117), (118), (119), (120), (121), (122), (123), (124), (125), (126), (127), (128);") + tk.MustExec("insert into s values(1), (128);") + + tk.MustExec("set @@tidb_max_chunk_size=32;") + tk.MustExec("set @@tidb_index_join_batch_size=32;") + tk.MustExec("set @@tidb_index_lookup_join_concurrency=1;") + + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/join/testIssue54055_1", "2*return(false)->1*return(true)")) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/executor/join/testIssue54055_2", "return(true)")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/join/testIssue54055_1")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/executor/join/testIssue54055_2")) + }() + rs, err := tk.Exec("select /*+ INL_HASH_JOIN(s) */ * from t join s on t.a=s.a order by t.a;") + require.NoError(t, err) + _, err = session.GetRows4Test(context.Background(), nil, rs) + require.NotNil(t, err) + rs.Close() +} diff --git a/pkg/executor/join/inner_join_probe_test.go b/pkg/executor/join/inner_join_probe_test.go index 88c102b2a9cf2..6a23fd2cd0379 100644 --- a/pkg/executor/join/inner_join_probe_test.go +++ b/pkg/executor/join/inner_join_probe_test.go @@ -301,6 +301,9 @@ func testJoinProbe(t *testing.T, withSel bool, leftKeyIndex []int, rightKeyIndex resultTypes[len(resultTypes)-1].DelFlag(mysql.NotNullFlag) } } + if joinType == logicalop.LeftOuterSemiJoin { + resultTypes = append(resultTypes, types.NewFieldType(mysql.TypeTiny)) + } meta := newTableMeta(buildKeyIndex, buildTypes, buildKeyTypes, probeKeyTypes, buildUsedByOtherCondition, buildUsed, needUsedFlag) hashJoinCtx := &HashJoinCtxV2{ @@ -458,6 +461,14 @@ func testJoinProbe(t *testing.T, withSel bool, leftKeyIndex []int, rightKeyIndex expectedChunks := genRightOuterJoinResult(t, hashJoinCtx.SessCtx, rightFilter, leftChunks, rightChunks, leftKeyIndex, rightKeyIndex, leftTypes, rightTypes, leftKeyTypes, rightKeyTypes, leftUsed, rightUsed, otherCondition, resultTypes) checkChunksEqual(t, expectedChunks, resultChunks, resultTypes) + case logicalop.LeftOuterSemiJoin: + expectedChunks := genLeftOuterSemiJoinResult(t, hashJoinCtx.SessCtx, leftFilter, leftChunks, rightChunks, leftKeyIndex, rightKeyIndex, leftTypes, + rightTypes, leftKeyTypes, rightKeyTypes, leftUsed, otherCondition, resultTypes) + checkChunksEqual(t, expectedChunks, resultChunks, resultTypes) + case logicalop.SemiJoin: + expectedChunks := genSemiJoinResult(t, hashJoinCtx.SessCtx, leftFilter, leftChunks, rightChunks, leftKeyIndex, rightKeyIndex, leftTypes, + rightTypes, leftKeyTypes, rightKeyTypes, leftUsed, otherCondition, resultTypes) + checkChunksEqual(t, expectedChunks, resultChunks, resultTypes) default: require.NoError(t, errors.New("not supported join type")) } diff --git a/pkg/executor/join/inner_join_spill_test.go b/pkg/executor/join/inner_join_spill_test.go index 575c29115f9f3..769e728749aa7 100644 --- a/pkg/executor/join/inner_join_spill_test.go +++ b/pkg/executor/join/inner_join_spill_test.go @@ -147,6 +147,7 @@ func testInnerJoinSpillCase4(t *testing.T, ctx *mock.Context, expectedResult []c require.True(t, hashJoinExec.spillHelper.isSpillTriggedInBuildingStageForTest()) require.True(t, hashJoinExec.spillHelper.areAllPartitionsSpilledForTest()) require.True(t, hashJoinExec.spillHelper.isRespillTriggeredForTest()) + require.True(t, hashJoinExec.spillHelper.isProbeSkippedInRestoreForTest()) checkResults(t, retTypes, result, expectedResult) } @@ -194,6 +195,9 @@ func getReturnTypes(joinType logicalop.JoinType, param spillTestParam) []*types. resultTypes[len(resultTypes)-1].DelFlag(mysql.NotNullFlag) } } + if joinType == logicalop.LeftOuterSemiJoin { + resultTypes = append(resultTypes, types.NewFieldType(mysql.TypeTiny)) + } return resultTypes } @@ -264,14 +268,14 @@ func TestInnerJoinSpillBasic(t *testing.T) { params := []spillTestParam{ // Normal case - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, // rightUsed is empty - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 750000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 250000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, // leftUsed is empty - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 750000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 250000, 10000}}, } err := failpoint.Enable("github.com/pingcap/tidb/pkg/executor/join/slowWorkers", `return(true)`) @@ -319,8 +323,8 @@ func TestInnerJoinSpillWithOtherCondition(t *testing.T) { otherCondition = append(otherCondition, sf) params := []spillTestParam{ - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 500000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 500000, 10000}}, } err = failpoint.Enable("github.com/pingcap/tidb/pkg/executor/join/slowWorkers", `return(true)`) diff --git a/pkg/executor/join/join_row_table.go b/pkg/executor/join/join_row_table.go index 892b0bd56cb07..32264589015af 100644 --- a/pkg/executor/join/join_row_table.go +++ b/pkg/executor/join/join_row_table.go @@ -21,7 +21,7 @@ import ( ) const sizeOfNextPtr = int(unsafe.Sizeof(uintptr(0))) -const sizeOfLengthField = int(unsafe.Sizeof(uint64(1))) +const sizeOfElementSize = int(unsafe.Sizeof(uint32(1))) const sizeOfUnsafePointer = int(unsafe.Sizeof(unsafe.Pointer(nil))) const sizeOfUintptr = int(unsafe.Sizeof(uintptr(0))) diff --git a/pkg/executor/join/join_row_table_test.go b/pkg/executor/join/join_row_table_test.go index b7aa5656b1405..523a8a9e3ff5e 100644 --- a/pkg/executor/join/join_row_table_test.go +++ b/pkg/executor/join/join_row_table_test.go @@ -28,7 +28,7 @@ func TestHeapObjectCanMove(t *testing.T) { func TestFixedOffsetInRowLayout(t *testing.T) { require.Equal(t, 8, sizeOfNextPtr) - require.Equal(t, 8, sizeOfLengthField) + require.Equal(t, 4, sizeOfElementSize) } func TestBitMaskInUint32(t *testing.T) { diff --git a/pkg/executor/join/join_table_meta.go b/pkg/executor/join/join_table_meta.go index 02ff39a3f4020..b8ee956bca309 100644 --- a/pkg/executor/join/join_table_meta.go +++ b/pkg/executor/join/join_table_meta.go @@ -66,8 +66,8 @@ type joinTableMeta struct { fakeKeyByte []byte } -func (meta *joinTableMeta) getSerializedKeyLength(rowStart unsafe.Pointer) uint64 { - return *(*uint64)(unsafe.Add(rowStart, sizeOfNextPtr+meta.nullMapLength)) +func (meta *joinTableMeta) getSerializedKeyLength(rowStart unsafe.Pointer) uint32 { + return *(*uint32)(unsafe.Add(rowStart, sizeOfNextPtr+meta.nullMapLength)) } func (meta *joinTableMeta) isReadNullMapThreadSafe(columnIndex int) bool { @@ -85,7 +85,7 @@ func (meta *joinTableMeta) getKeyBytes(rowStart unsafe.Pointer) []byte { case FixedSerializedKey: return hack.GetBytesFromPtr(unsafe.Add(rowStart, meta.nullMapLength+sizeOfNextPtr), meta.joinKeysLength) case VariableSerializedKey: - return hack.GetBytesFromPtr(unsafe.Add(rowStart, meta.nullMapLength+sizeOfNextPtr+sizeOfLengthField), int(meta.getSerializedKeyLength(rowStart))) + return hack.GetBytesFromPtr(unsafe.Add(rowStart, meta.nullMapLength+sizeOfNextPtr+sizeOfElementSize), int(meta.getSerializedKeyLength(rowStart))) default: panic("unknown key match type") } @@ -94,7 +94,7 @@ func (meta *joinTableMeta) getKeyBytes(rowStart unsafe.Pointer) []byte { func (meta *joinTableMeta) advanceToRowData(matchedRowInfo *matchedRowInfo) { if meta.rowDataOffset == -1 { // variable length, non-inlined key - matchedRowInfo.buildRowOffset = sizeOfNextPtr + meta.nullMapLength + sizeOfLengthField + int(meta.getSerializedKeyLength(*(*unsafe.Pointer)(unsafe.Pointer(&matchedRowInfo.buildRowStart)))) + matchedRowInfo.buildRowOffset = sizeOfNextPtr + meta.nullMapLength + sizeOfElementSize + int(meta.getSerializedKeyLength(*(*unsafe.Pointer)(unsafe.Pointer(&matchedRowInfo.buildRowStart)))) } else { matchedRowInfo.buildRowOffset = meta.rowDataOffset } @@ -122,6 +122,12 @@ func (*joinTableMeta) isCurrentRowUsed(rowStart unsafe.Pointer) bool { return (*(*uint32)(unsafe.Add(rowStart, sizeOfNextPtr)) & usedFlagMask) == usedFlagMask } +func (*joinTableMeta) isCurrentRowUsedWithAtomic(rowStart unsafe.Pointer) bool { + addr := (*uint32)(unsafe.Add(rowStart, sizeOfNextPtr)) + value := atomic.LoadUint32(addr) + return (value & usedFlagMask) == usedFlagMask +} + type keyProp struct { canBeInlined bool keyLength int @@ -211,14 +217,12 @@ func newTableMeta(buildKeyIndex []int, buildTypes, buildKeyTypes, probeKeyTypes keyIndexMap := make(map[int]struct{}) meta.serializeModes = make([]codec.SerializeMode, 0, len(buildKeyIndex)) isAllKeyInteger := true - hasFixedSizeKeyColumn := false varLengthKeyNumber := 0 for index, keyIndex := range buildKeyIndex { keyType := buildKeyTypes[index] prop := getKeyProp(keyType) if prop.keyLength != chunk.VarElemLen { meta.joinKeysLength += prop.keyLength - hasFixedSizeKeyColumn = true } else { meta.isJoinKeysFixedLength = false varLengthKeyNumber++ @@ -327,20 +331,10 @@ func newTableMeta(buildKeyIndex []int, buildTypes, buildKeyTypes, probeKeyTypes } if needUsedFlag { meta.colOffsetInNullMap = 1 - // the total row length should be larger than 4 byte since the smallest unit of atomic.LoadXXX is UInt32 - if len(columnsNeedToBeSaved) > 0 { - // the smallest length of a column is 4 byte, so the total row length is enough - meta.nullMapLength = (len(columnsNeedToBeSaved) + 1 + 7) / 8 - } else { - // if no columns need to be converted to row format, then the key is not inlined - // 1. if any of the key columns is fixed length, then the row length is larger than 4 bytes(since the smallest length of a fixed length column is 4 bytes) - // 2. if all the key columns are variable length, there is no guarantee that the row length is larger than 4 byte, the nullmap should be 4 bytes alignment - if hasFixedSizeKeyColumn { - meta.nullMapLength = (len(columnsNeedToBeSaved) + 1 + 7) / 8 - } else { - meta.nullMapLength = ((len(columnsNeedToBeSaved) + 1 + 31) / 32) * 4 - } - } + // If needUsedFlag == true, during probe stage, the usedFlag will be accessed by both read/write operator, + // so atomic read/write is required. We want to keep this atomic operator inside the access of nullmap, + // then the nullMapLength should be 4 bytes alignment since the smallest unit of atomic.LoadUint32 is UInt32 + meta.nullMapLength = ((len(columnsNeedToBeSaved) + 1 + 31) / 32) * 4 } else { meta.colOffsetInNullMap = 0 meta.nullMapLength = (len(columnsNeedToBeSaved) + 7) / 8 @@ -350,7 +344,7 @@ func newTableMeta(buildKeyIndex []int, buildTypes, buildKeyTypes, probeKeyTypes if meta.isJoinKeysFixedLength { meta.rowDataOffset = sizeOfNextPtr + meta.nullMapLength } else { - meta.rowDataOffset = sizeOfNextPtr + meta.nullMapLength + sizeOfLengthField + meta.rowDataOffset = sizeOfNextPtr + meta.nullMapLength + sizeOfElementSize } } else { if meta.isJoinKeysFixedLength { diff --git a/pkg/executor/join/join_table_meta_test.go b/pkg/executor/join/join_table_meta_test.go index 8ca39552ef8de..85b04790dd9b8 100644 --- a/pkg/executor/join/join_table_meta_test.go +++ b/pkg/executor/join/join_table_meta_test.go @@ -297,14 +297,12 @@ func TestJoinTableMetaNullMapLength(t *testing.T) { // nullmap only used for columns that needed to be converted to rows {[]int{0}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []int{}, false, 0}, {[]int{0}, []*types.FieldType{stringTp, intTp, intTp, intTp}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []int{}, false, 0}, - // usedFlag is true - // the row length is at least 4 bytes, so nullmap is 1 byte alignment - {[]int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, nil, true, 1}, - {[]int{0}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []int{1}, true, 1}, - {[]int{0}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []int{0}, true, 1}, - {[]int{0, 1}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp, intTp}, []int{}, true, 1}, - {[]int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, []*types.FieldType{uintTp}, []int{}, true, 1}, - // the row length is not guaranteed to be at least 4 bytes, nullmap is 4 bytes alignment + // usedFlag is true, nullmap is 4 byte alignment + {[]int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, nil, true, 4}, + {[]int{0}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []int{1}, true, 4}, + {[]int{0}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []int{0}, true, 4}, + {[]int{0, 1}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp, intTp}, []*types.FieldType{stringTp, intTp}, []int{}, true, 4}, + {[]int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, []*types.FieldType{uintTp}, []int{}, true, 4}, {[]int{0}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []*types.FieldType{stringTp}, []int{}, true, 4}, {[]int{0, 1}, []*types.FieldType{stringTp, stringTp}, []*types.FieldType{stringTp, stringTp}, []*types.FieldType{stringTp, stringTp}, []int{}, true, 4}, } diff --git a/pkg/executor/join/left_outer_semi_join_probe.go b/pkg/executor/join/left_outer_semi_join_probe.go new file mode 100644 index 0000000000000..d6e21c041d2f0 --- /dev/null +++ b/pkg/executor/join/left_outer_semi_join_probe.go @@ -0,0 +1,216 @@ +// Copyright 2024 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 join + +import ( + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/sqlkiller" +) + +type leftOuterSemiJoinProbe struct { + baseSemiJoin + + // isNullRows marks whether the left side row matched result is null + isNullRows []bool +} + +var _ ProbeV2 = &leftOuterSemiJoinProbe{} + +func newLeftOuterSemiJoinProbe(base baseJoinProbe) *leftOuterSemiJoinProbe { + probe := &leftOuterSemiJoinProbe{ + baseSemiJoin: *newBaseSemiJoin(base, false), + } + return probe +} + +func (j *leftOuterSemiJoinProbe) SetChunkForProbe(chunk *chunk.Chunk) (err error) { + err = j.baseJoinProbe.SetChunkForProbe(chunk) + if err != nil { + return err + } + j.resetProbeState() + return nil +} + +func (j *leftOuterSemiJoinProbe) SetRestoredChunkForProbe(chunk *chunk.Chunk) (err error) { + err = j.baseJoinProbe.SetRestoredChunkForProbe(chunk) + if err != nil { + return err + } + j.resetProbeState() + return nil +} + +func (j *leftOuterSemiJoinProbe) resetProbeState() { + j.isNullRows = j.isNullRows[:0] + for i := 0; i < j.chunkRows; i++ { + j.isNullRows = append(j.isNullRows, false) + } + j.baseSemiJoin.resetProbeState() +} + +func (*leftOuterSemiJoinProbe) NeedScanRowTable() bool { + return false +} + +func (*leftOuterSemiJoinProbe) IsScanRowTableDone() bool { + panic("should not reach here") +} + +func (*leftOuterSemiJoinProbe) InitForScanRowTable() { + panic("should not reach here") +} + +func (*leftOuterSemiJoinProbe) ScanRowTable(joinResult *hashjoinWorkerResult, _ *sqlkiller.SQLKiller) *hashjoinWorkerResult { + return joinResult +} + +func (j *leftOuterSemiJoinProbe) Probe(joinResult *hashjoinWorkerResult, sqlKiller *sqlkiller.SQLKiller) (ok bool, _ *hashjoinWorkerResult) { + joinedChk, remainCap, err := j.prepareForProbe(joinResult.chk) + if err != nil { + joinResult.err = err + return false, joinResult + } + + if j.ctx.hasOtherCondition() { + err = j.probeWithOtherCondition(joinResult.chk, joinedChk, remainCap, sqlKiller) + } else { + err = j.probeWithoutOtherCondition(joinResult.chk, joinedChk, remainCap, sqlKiller) + } + if err != nil { + joinResult.err = err + return false, joinResult + } + return true, joinResult +} + +func (j *leftOuterSemiJoinProbe) probeWithOtherCondition(chk, joinedChk *chunk.Chunk, remainCap int, sqlKiller *sqlkiller.SQLKiller) (err error) { + if !j.unFinishedProbeRowIdxQueue.IsEmpty() { + err = j.produceResult(joinedChk, sqlKiller) + if err != nil { + return err + } + j.currentProbeRow = 0 + } + + if j.unFinishedProbeRowIdxQueue.IsEmpty() { + startProbeRow := j.currentProbeRow + j.currentProbeRow = min(startProbeRow+remainCap, j.chunkRows) + j.buildResult(chk, startProbeRow) + } + return +} + +func (j *leftOuterSemiJoinProbe) produceResult(joinedChk *chunk.Chunk, sqlKiller *sqlkiller.SQLKiller) (err error) { + // The third parameter is always true, as left outer semi join now only support right side as build + err = j.concatenateProbeAndBuildRows(joinedChk, sqlKiller, true) + if err != nil { + return err + } + + if joinedChk.NumRows() > 0 { + j.selected, j.isNulls, err = expression.VecEvalBool(j.ctx.SessCtx.GetExprCtx().GetEvalCtx(), j.ctx.SessCtx.GetSessionVars().EnableVectorizedExpression, j.ctx.OtherCondition, joinedChk, j.selected, j.isNulls) + if err != nil { + return err + } + + for i := 0; i < joinedChk.NumRows(); i++ { + if j.selected[i] { + j.isMatchedRows[j.rowIndexInfos[i].probeRowIndex] = true + } + if j.isNulls[i] { + j.isNullRows[j.rowIndexInfos[i].probeRowIndex] = true + } + } + } + return nil +} + +func (j *leftOuterSemiJoinProbe) probeWithoutOtherCondition(_, joinedChk *chunk.Chunk, remainCap int, sqlKiller *sqlkiller.SQLKiller) (err error) { + meta := j.ctx.hashTableMeta + startProbeRow := j.currentProbeRow + tagHelper := j.ctx.hashTableContext.tagHelper + + for remainCap > 0 && j.currentProbeRow < j.chunkRows { + if j.matchedRowsHeaders[j.currentProbeRow] != 0 { + candidateRow := tagHelper.toUnsafePointer(j.matchedRowsHeaders[j.currentProbeRow]) + if !isKeyMatched(meta.keyMode, j.serializedKeys[j.currentProbeRow], candidateRow, meta) { + j.probeCollision++ + j.matchedRowsHeaders[j.currentProbeRow] = getNextRowAddress(candidateRow, tagHelper, j.matchedRowsHashValue[j.currentProbeRow]) + continue + } + j.isMatchedRows[j.currentProbeRow] = true + } + j.matchedRowsHeaders[j.currentProbeRow] = 0 + remainCap-- + j.currentProbeRow++ + } + + err = checkSQLKiller(sqlKiller, "killedDuringProbe") + + if err != nil { + return err + } + + j.buildResult(joinedChk, startProbeRow) + return nil +} + +func (j *leftOuterSemiJoinProbe) buildResult(chk *chunk.Chunk, startProbeRow int) { + var selected []bool + if startProbeRow == 0 && j.currentProbeRow == j.chunkRows && j.currentChunk.Sel() == nil && chk.NumRows() == 0 && len(j.spilledIdx) == 0 { + // TODO: Can do a shallow copy by directly copying the Column pointers + for index, colIndex := range j.lUsed { + j.currentChunk.Column(colIndex).CopyConstruct(chk.Column(index)) + } + } else { + selected = make([]bool, j.chunkRows) + for i := startProbeRow; i < j.currentProbeRow; i++ { + selected[i] = true + } + for _, spilledIdx := range j.spilledIdx { + selected[spilledIdx] = false // ignore spilled rows + } + for index, colIndex := range j.lUsed { + dstCol := chk.Column(index) + srcCol := j.currentChunk.Column(colIndex) + chunk.CopySelectedRowsWithRowIDFunc(dstCol, srcCol, selected, 0, len(selected), func(i int) int { + return j.usedRows[i] + }) + } + } + + for i := startProbeRow; i < j.currentProbeRow; i++ { + if selected != nil && !selected[i] { + continue + } + if j.isMatchedRows[i] { + chk.AppendInt64(len(j.lUsed), 1) + } else if j.isNullRows[i] { + chk.AppendNull(len(j.lUsed)) + } else { + chk.AppendInt64(len(j.lUsed), 0) + } + } + chk.SetNumVirtualRows(chk.NumRows()) +} + +func (j *leftOuterSemiJoinProbe) IsCurrentChunkProbeDone() bool { + if j.ctx.hasOtherCondition() && !j.unFinishedProbeRowIdxQueue.IsEmpty() { + return false + } + return j.baseJoinProbe.IsCurrentChunkProbeDone() +} diff --git a/pkg/executor/join/left_outer_semi_join_probe_test.go b/pkg/executor/join/left_outer_semi_join_probe_test.go new file mode 100644 index 0000000000000..08b5ec74aa3a8 --- /dev/null +++ b/pkg/executor/join/left_outer_semi_join_probe_test.go @@ -0,0 +1,578 @@ +// Copyright 2024 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 join + +import ( + "testing" + + "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/planner/core/operator/logicalop" + "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/codec" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" +) + +func genLeftOuterSemiJoinResult(t *testing.T, sessCtx sessionctx.Context, leftFilter expression.CNFExprs, leftChunks []*chunk.Chunk, rightChunks []*chunk.Chunk, leftKeyIndex []int, rightKeyIndex []int, + leftTypes []*types.FieldType, rightTypes []*types.FieldType, leftKeyTypes []*types.FieldType, rightKeyTypes []*types.FieldType, leftUsedColumns []int, otherConditions expression.CNFExprs, + resultTypes []*types.FieldType) []*chunk.Chunk { + return genLeftOuterSemiOrSemiJoinResultImpl(t, sessCtx, leftFilter, leftChunks, rightChunks, leftKeyIndex, rightKeyIndex, leftTypes, rightTypes, leftKeyTypes, rightKeyTypes, leftUsedColumns, otherConditions, resultTypes, true) +} + +func genSemiJoinResult(t *testing.T, sessCtx sessionctx.Context, leftFilter expression.CNFExprs, leftChunks []*chunk.Chunk, rightChunks []*chunk.Chunk, leftKeyIndex []int, rightKeyIndex []int, + leftTypes []*types.FieldType, rightTypes []*types.FieldType, leftKeyTypes []*types.FieldType, rightKeyTypes []*types.FieldType, leftUsedColumns []int, otherConditions expression.CNFExprs, + resultTypes []*types.FieldType) []*chunk.Chunk { + return genLeftOuterSemiOrSemiJoinResultImpl(t, sessCtx, leftFilter, leftChunks, rightChunks, leftKeyIndex, rightKeyIndex, leftTypes, rightTypes, leftKeyTypes, rightKeyTypes, leftUsedColumns, otherConditions, resultTypes, false) +} + +// generate left outer semi join result using nested loop +func genLeftOuterSemiOrSemiJoinResultImpl(t *testing.T, sessCtx sessionctx.Context, leftFilter expression.CNFExprs, leftChunks []*chunk.Chunk, rightChunks []*chunk.Chunk, leftKeyIndex []int, rightKeyIndex []int, + leftTypes []*types.FieldType, rightTypes []*types.FieldType, leftKeyTypes []*types.FieldType, rightKeyTypes []*types.FieldType, leftUsedColumns []int, otherConditions expression.CNFExprs, + resultTypes []*types.FieldType, isLeftOuter bool) []*chunk.Chunk { + filterVector := make([]bool, 0) + var err error + returnChks := make([]*chunk.Chunk, 0, 1) + resultChk := chunk.New(resultTypes, sessCtx.GetSessionVars().MaxChunkSize, sessCtx.GetSessionVars().MaxChunkSize) + shallowRowTypes := make([]*types.FieldType, 0, len(leftTypes)+len(rightTypes)) + shallowRowTypes = append(shallowRowTypes, leftTypes...) + shallowRowTypes = append(shallowRowTypes, rightTypes...) + shallowRow := chunk.MutRowFromTypes(shallowRowTypes) + + // For each row in left chunks + for _, leftChunk := range leftChunks { + if leftFilter != nil { + filterVector, err = expression.VectorizedFilter(sessCtx.GetExprCtx().GetEvalCtx(), sessCtx.GetSessionVars().EnableVectorizedExpression, leftFilter, chunk.NewIterator4Chunk(leftChunk), filterVector) + require.NoError(t, err) + } + for leftIndex := 0; leftIndex < leftChunk.NumRows(); leftIndex++ { + filterIndex := leftIndex + if leftChunk.Sel() != nil { + filterIndex = leftChunk.Sel()[leftIndex] + } + if leftFilter != nil && !filterVector[filterIndex] { + if isLeftOuter { + // Filtered by left filter, append 0 for matched flag + appendToResultChk(leftChunk.GetRow(leftIndex), chunk.Row{}, leftUsedColumns, nil, resultChk) + resultChk.AppendInt64(len(leftUsedColumns), 0) + } + + if resultChk.IsFull() { + returnChks = append(returnChks, resultChk) + resultChk = chunk.New(resultTypes, sessCtx.GetSessionVars().MaxChunkSize, sessCtx.GetSessionVars().MaxChunkSize) + } + continue + } + + leftRow := leftChunk.GetRow(leftIndex) + hasMatch := false + hasNull := false + + // For each row in right chunks + for _, rightChunk := range rightChunks { + for rightIndex := 0; rightIndex < rightChunk.NumRows(); rightIndex++ { + rightRow := rightChunk.GetRow(rightIndex) + valid := !containsNullKey(leftRow, leftKeyIndex) && !containsNullKey(rightRow, rightKeyIndex) + if valid { + ok, err := codec.EqualChunkRow(sessCtx.GetSessionVars().StmtCtx.TypeCtx(), leftRow, leftKeyTypes, leftKeyIndex, + rightRow, rightKeyTypes, rightKeyIndex) + require.NoError(t, err) + valid = ok + } + + if valid && otherConditions != nil { + shallowRow.ShallowCopyPartialRow(0, leftRow) + shallowRow.ShallowCopyPartialRow(len(leftTypes), rightRow) + matched, null, err := expression.EvalBool(sessCtx.GetExprCtx().GetEvalCtx(), otherConditions, shallowRow.ToRow()) + require.NoError(t, err) + valid = matched + hasNull = hasNull || null + } + + if valid { + hasMatch = true + break + } + } + if hasMatch { + break + } + } + + if isLeftOuter { + // Append result with matched flag + appendToResultChk(leftRow, chunk.Row{}, leftUsedColumns, nil, resultChk) + if hasMatch { + resultChk.AppendInt64(len(leftUsedColumns), 1) + } else { + if hasNull { + resultChk.AppendNull(len(leftUsedColumns)) + } else { + resultChk.AppendInt64(len(leftUsedColumns), 0) + } + } + } else { + if hasMatch { + appendToResultChk(leftRow, chunk.Row{}, leftUsedColumns, nil, resultChk) + } + } + + if resultChk.IsFull() { + returnChks = append(returnChks, resultChk) + resultChk = chunk.New(resultTypes, sessCtx.GetSessionVars().MaxChunkSize, sessCtx.GetSessionVars().MaxChunkSize) + } + } + } + if resultChk.NumRows() > 0 { + returnChks = append(returnChks, resultChk) + } + return returnChks +} + +func testLeftOuterSemiOrSemiJoinProbeBasic(t *testing.T, isLeftOuter bool) { + // todo test nullable type after builder support nullable type + tinyTp := types.NewFieldType(mysql.TypeTiny) + tinyTp.AddFlag(mysql.NotNullFlag) + intTp := types.NewFieldType(mysql.TypeLonglong) + intTp.AddFlag(mysql.NotNullFlag) + uintTp := types.NewFieldType(mysql.TypeLonglong) + uintTp.AddFlag(mysql.NotNullFlag) + uintTp.AddFlag(mysql.UnsignedFlag) + stringTp := types.NewFieldType(mysql.TypeVarString) + stringTp.AddFlag(mysql.NotNullFlag) + + lTypes := []*types.FieldType{intTp, stringTp, uintTp, stringTp, tinyTp} + rTypes := []*types.FieldType{intTp, stringTp, uintTp, stringTp, tinyTp} + rTypes = append(rTypes, retTypes...) + rTypes1 := []*types.FieldType{uintTp, stringTp, intTp, stringTp, tinyTp} + rTypes1 = append(rTypes1, rTypes1...) + + rightAsBuildSide := []bool{true} + if !isLeftOuter { + rightAsBuildSide = append(rightAsBuildSide, false) + } + + partitionNumber := 4 + simpleFilter := createSimpleFilter(t) + hasFilter := []bool{false} + if isLeftOuter { + hasFilter = append(hasFilter, true) + } + + var joinType logicalop.JoinType + if isLeftOuter { + joinType = logicalop.LeftOuterSemiJoin + } else { + joinType = logicalop.SemiJoin + } + + testCases := []testCase{ + // normal case + {[]int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, nil, []int{}, nil, nil, nil}, + // rightUsed is empty + {[]int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, []int{0, 1, 2, 3}, []int{}, nil, nil, nil}, + // leftUsed is empty + {[]int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, []int{}, []int{}, nil, nil, nil}, + // both left/right Used are empty + {[]int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, []int{}, []int{}, nil, nil, nil}, + // both left/right used is part of all columns + {[]int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, []int{0, 2}, []int{}, nil, nil, nil}, + // int join uint + {[]int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{uintTp}, lTypes, rTypes1, []int{0, 1, 2, 3}, []int{}, nil, nil, nil}, + // multiple join keys + {[]int{0, 1}, []int{0, 1}, []*types.FieldType{intTp, stringTp}, []*types.FieldType{intTp, stringTp}, lTypes, rTypes, []int{0, 1, 2, 3}, []int{}, nil, nil, nil}, + } + + for _, tc := range testCases { + for _, value := range rightAsBuildSide { + for _, testFilter := range hasFilter { + leftFilter := simpleFilter + if !testFilter { + leftFilter = nil + } + testJoinProbe(t, false, tc.leftKeyIndex, tc.rightKeyIndex, tc.leftKeyTypes, tc.rightKeyTypes, tc.leftTypes, tc.rightTypes, value, tc.leftUsed, + tc.rightUsed, tc.leftUsedByOtherCondition, tc.rightUsedByOtherCondition, leftFilter, nil, tc.otherCondition, partitionNumber, joinType, 200) + testJoinProbe(t, false, tc.leftKeyIndex, tc.rightKeyIndex, toNullableTypes(tc.leftKeyTypes), toNullableTypes(tc.rightKeyTypes), + toNullableTypes(tc.leftTypes), toNullableTypes(tc.rightTypes), value, tc.leftUsed, tc.rightUsed, tc.leftUsedByOtherCondition, tc.rightUsedByOtherCondition, + leftFilter, nil, tc.otherCondition, partitionNumber, joinType, 200) + } + } + } +} + +func testLeftOuterSemiJoinProbeAllJoinKeys(t *testing.T, isLeftOuter bool) { + tinyTp := types.NewFieldType(mysql.TypeTiny) + tinyTp.AddFlag(mysql.NotNullFlag) + intTp := types.NewFieldType(mysql.TypeLonglong) + intTp.AddFlag(mysql.NotNullFlag) + uintTp := types.NewFieldType(mysql.TypeLonglong) + uintTp.AddFlag(mysql.UnsignedFlag) + uintTp.AddFlag(mysql.NotNullFlag) + yearTp := types.NewFieldType(mysql.TypeYear) + yearTp.AddFlag(mysql.NotNullFlag) + durationTp := types.NewFieldType(mysql.TypeDuration) + durationTp.AddFlag(mysql.NotNullFlag) + enumTp := types.NewFieldType(mysql.TypeEnum) + enumTp.AddFlag(mysql.NotNullFlag) + enumWithIntFlag := types.NewFieldType(mysql.TypeEnum) + enumWithIntFlag.AddFlag(mysql.EnumSetAsIntFlag) + enumWithIntFlag.AddFlag(mysql.NotNullFlag) + setTp := types.NewFieldType(mysql.TypeSet) + setTp.AddFlag(mysql.NotNullFlag) + bitTp := types.NewFieldType(mysql.TypeBit) + bitTp.AddFlag(mysql.NotNullFlag) + jsonTp := types.NewFieldType(mysql.TypeJSON) + jsonTp.AddFlag(mysql.NotNullFlag) + floatTp := types.NewFieldType(mysql.TypeFloat) + floatTp.AddFlag(mysql.NotNullFlag) + doubleTp := types.NewFieldType(mysql.TypeDouble) + doubleTp.AddFlag(mysql.NotNullFlag) + stringTp := types.NewFieldType(mysql.TypeVarString) + stringTp.AddFlag(mysql.NotNullFlag) + datetimeTp := types.NewFieldType(mysql.TypeDatetime) + datetimeTp.AddFlag(mysql.NotNullFlag) + decimalTp := types.NewFieldType(mysql.TypeNewDecimal) + decimalTp.AddFlag(mysql.NotNullFlag) + timestampTp := types.NewFieldType(mysql.TypeTimestamp) + timestampTp.AddFlag(mysql.NotNullFlag) + dateTp := types.NewFieldType(mysql.TypeDate) + dateTp.AddFlag(mysql.NotNullFlag) + binaryStringTp := types.NewFieldType(mysql.TypeBlob) + binaryStringTp.AddFlag(mysql.NotNullFlag) + + lTypes := []*types.FieldType{tinyTp, intTp, uintTp, yearTp, durationTp, enumTp, enumWithIntFlag, setTp, bitTp, jsonTp, floatTp, doubleTp, stringTp, datetimeTp, decimalTp, timestampTp, dateTp, binaryStringTp} + rTypes := lTypes + lUsed := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17} + rUsed := []int{} + var joinType logicalop.JoinType + if isLeftOuter { + joinType = logicalop.LeftOuterSemiJoin + } else { + joinType = logicalop.SemiJoin + } + partitionNumber := 4 + + rightAsBuildSide := []bool{true} + if !isLeftOuter { + rightAsBuildSide = append(rightAsBuildSide, false) + } + + // single key + for i := 0; i < len(lTypes); i++ { + lKeyTypes := []*types.FieldType{lTypes[i]} + rKeyTypes := []*types.FieldType{rTypes[i]} + for _, rightAsBuild := range rightAsBuildSide { + testJoinProbe(t, false, []int{i}, []int{i}, lKeyTypes, rKeyTypes, lTypes, rTypes, rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + testJoinProbe(t, false, []int{i}, []int{i}, toNullableTypes(lKeyTypes), toNullableTypes(rKeyTypes), toNullableTypes(lTypes), toNullableTypes(rTypes), rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + } + } + // composed key + // fixed size, inlined + for _, rightAsBuild := range rightAsBuildSide { + lKeyTypes := []*types.FieldType{intTp, uintTp} + rKeyTypes := []*types.FieldType{intTp, uintTp} + testJoinProbe(t, false, []int{1, 2}, []int{1, 2}, lKeyTypes, rKeyTypes, lTypes, rTypes, rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + testJoinProbe(t, false, []int{1, 2}, []int{1, 2}, toNullableTypes(lKeyTypes), toNullableTypes(rKeyTypes), toNullableTypes(lTypes), toNullableTypes(rTypes), rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + } + // variable size, inlined + for _, rightAsBuild := range rightAsBuildSide { + lKeyTypes := []*types.FieldType{intTp, binaryStringTp} + rKeyTypes := []*types.FieldType{intTp, binaryStringTp} + testJoinProbe(t, false, []int{1, 17}, []int{1, 17}, lKeyTypes, rKeyTypes, lTypes, rTypes, rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + testJoinProbe(t, false, []int{1, 17}, []int{1, 17}, toNullableTypes(lKeyTypes), toNullableTypes(rKeyTypes), toNullableTypes(lTypes), toNullableTypes(rTypes), rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + } + // fixed size, not inlined + for _, rightAsBuild := range rightAsBuildSide { + lKeyTypes := []*types.FieldType{intTp, datetimeTp} + rKeyTypes := []*types.FieldType{intTp, datetimeTp} + testJoinProbe(t, false, []int{1, 13}, []int{1, 13}, lKeyTypes, rKeyTypes, lTypes, rTypes, rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + testJoinProbe(t, false, []int{1, 13}, []int{1, 13}, toNullableTypes(lKeyTypes), toNullableTypes(rKeyTypes), toNullableTypes(lTypes), toNullableTypes(rTypes), rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + } + // variable size, not inlined + for _, rightAsBuild := range rightAsBuildSide { + lKeyTypes := []*types.FieldType{intTp, decimalTp} + rKeyTypes := []*types.FieldType{intTp, decimalTp} + testJoinProbe(t, false, []int{1, 14}, []int{1, 14}, lKeyTypes, rKeyTypes, lTypes, rTypes, rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + testJoinProbe(t, false, []int{1, 14}, []int{1, 14}, toNullableTypes(lKeyTypes), toNullableTypes(rKeyTypes), toNullableTypes(lTypes), toNullableTypes(rTypes), rightAsBuild, lUsed, rUsed, nil, nil, nil, nil, nil, partitionNumber, joinType, 100) + } +} + +func testLeftOuterSemiJoinProbeOtherCondition(t *testing.T, isLeftOuter bool) { + intTp := types.NewFieldType(mysql.TypeLonglong) + intTp.AddFlag(mysql.NotNullFlag) + nullableIntTp := types.NewFieldType(mysql.TypeLonglong) + uintTp := types.NewFieldType(mysql.TypeLonglong) + uintTp.AddFlag(mysql.NotNullFlag) + uintTp.AddFlag(mysql.UnsignedFlag) + stringTp := types.NewFieldType(mysql.TypeVarString) + stringTp.AddFlag(mysql.NotNullFlag) + + lTypes := []*types.FieldType{intTp, intTp, stringTp, uintTp, stringTp} + rTypes := []*types.FieldType{intTp, intTp, stringTp, uintTp, stringTp} + rTypes = append(rTypes, rTypes...) + + tinyTp := types.NewFieldType(mysql.TypeTiny) + a := &expression.Column{Index: 1, RetType: nullableIntTp} + b := &expression.Column{Index: 8, RetType: nullableIntTp} + sf, err := expression.NewFunction(mock.NewContext(), ast.GT, tinyTp, a, b) + require.NoError(t, err, "error when create other condition") + // test condition `a = b` from `a in (select b from t2)` + a2 := &expression.Column{Index: 1, RetType: nullableIntTp, InOperand: true} + b2 := &expression.Column{Index: 8, RetType: nullableIntTp, InOperand: true} + sf2, err := expression.NewFunction(mock.NewContext(), ast.EQ, tinyTp, a2, b2) + require.NoError(t, err, "error when create other condition") + otherCondition := make(expression.CNFExprs, 0) + otherCondition = append(otherCondition, sf) + otherCondition2 := make(expression.CNFExprs, 0) + otherCondition2 = append(otherCondition2, sf2) + + var joinType logicalop.JoinType + if isLeftOuter { + joinType = logicalop.LeftOuterSemiJoin + } else { + joinType = logicalop.SemiJoin + } + + simpleFilter := createSimpleFilter(t) + + hasFilter := []bool{false} + if isLeftOuter { + hasFilter = append(hasFilter, true) + } + + rightAsBuildSide := []bool{true} + if !isLeftOuter { + rightAsBuildSide = append(rightAsBuildSide, false) + } + + partitionNumber := 4 + rightUsed := []int{} + + for _, rightBuild := range rightAsBuildSide { + for _, testFilter := range hasFilter { + leftFilter := simpleFilter + if !testFilter { + leftFilter = nil + } + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 200) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 200) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 200) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, nil, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 200) + + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 200) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 200) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 200) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, nil, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 200) + } + } +} + +func testLeftOuterSemiJoinProbeWithSel(t *testing.T, isLeftOuter bool) { + intTp := types.NewFieldType(mysql.TypeLonglong) + intTp.AddFlag(mysql.NotNullFlag) + nullableIntTp := types.NewFieldType(mysql.TypeLonglong) + uintTp := types.NewFieldType(mysql.TypeLonglong) + uintTp.AddFlag(mysql.NotNullFlag) + uintTp.AddFlag(mysql.UnsignedFlag) + nullableUIntTp := types.NewFieldType(mysql.TypeLonglong) + nullableUIntTp.AddFlag(mysql.UnsignedFlag) + stringTp := types.NewFieldType(mysql.TypeVarString) + stringTp.AddFlag(mysql.NotNullFlag) + + lTypes := []*types.FieldType{intTp, intTp, stringTp, uintTp, stringTp} + rTypes := []*types.FieldType{intTp, intTp, stringTp, uintTp, stringTp} + rTypes = append(rTypes, rTypes...) + + tinyTp := types.NewFieldType(mysql.TypeTiny) + a := &expression.Column{Index: 1, RetType: nullableIntTp} + b := &expression.Column{Index: 8, RetType: nullableUIntTp} + sf, err := expression.NewFunction(mock.NewContext(), ast.GT, tinyTp, a, b) + require.NoError(t, err, "error when create other condition") + otherCondition := make(expression.CNFExprs, 0) + otherCondition = append(otherCondition, sf) + + var joinType logicalop.JoinType + if isLeftOuter { + joinType = logicalop.LeftOuterSemiJoin + } else { + joinType = logicalop.SemiJoin + } + + rightAsBuildSide := []bool{true} + if !isLeftOuter { + rightAsBuildSide = append(rightAsBuildSide, false) + } + + simpleFilter := createSimpleFilter(t) + + hasFilter := []bool{false} + if isLeftOuter { + hasFilter = append(hasFilter, true) + } + + partitionNumber := 4 + rightUsed := []int{} + + for _, rightBuild := range rightAsBuildSide { + for _, useFilter := range hasFilter { + leftFilter := simpleFilter + if !useFilter { + leftFilter = nil + } + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 500) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 500) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 500) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, nil, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 500) + } + } +} + +func TestLeftOuterSemiJoinProbeBasic(t *testing.T) { + testLeftOuterSemiOrSemiJoinProbeBasic(t, true) +} + +func TestLeftOuterSemiJoinProbeAllJoinKeys(t *testing.T) { + testLeftOuterSemiJoinProbeAllJoinKeys(t, true) +} + +func TestLeftOuterSemiJoinProbeOtherCondition(t *testing.T) { + testLeftOuterSemiJoinProbeOtherCondition(t, true) +} + +func TestLeftOuterSemiJoinProbeWithSel(t *testing.T) { + testLeftOuterSemiJoinProbeWithSel(t, true) +} + +func TestLeftOuterSemiJoinBuildResultFastPath(t *testing.T) { + intTp := types.NewFieldType(mysql.TypeLonglong) + intTp.AddFlag(mysql.NotNullFlag) + nullableIntTp := types.NewFieldType(mysql.TypeLonglong) + uintTp := types.NewFieldType(mysql.TypeLonglong) + uintTp.AddFlag(mysql.NotNullFlag) + uintTp.AddFlag(mysql.UnsignedFlag) + stringTp := types.NewFieldType(mysql.TypeVarString) + stringTp.AddFlag(mysql.NotNullFlag) + + lTypes := []*types.FieldType{intTp, intTp, stringTp, uintTp, stringTp} + rTypes := []*types.FieldType{intTp, intTp, stringTp, uintTp, stringTp} + rTypes = append(rTypes, rTypes...) + + tinyTp := types.NewFieldType(mysql.TypeTiny) + a := &expression.Column{Index: 1, RetType: nullableIntTp} + b := &expression.Column{Index: 8, RetType: nullableIntTp} + sf, err := expression.NewFunction(mock.NewContext(), ast.GT, tinyTp, a, b) + require.NoError(t, err, "error when create other condition") + // test condition `a = b` from `a in (select b from t2)` + a2 := &expression.Column{Index: 1, RetType: nullableIntTp, InOperand: true} + b2 := &expression.Column{Index: 8, RetType: nullableIntTp, InOperand: true} + sf2, err := expression.NewFunction(mock.NewContext(), ast.EQ, tinyTp, a2, b2) + require.NoError(t, err, "error when create other condition") + otherCondition := make(expression.CNFExprs, 0) + otherCondition = append(otherCondition, sf) + otherCondition2 := make(expression.CNFExprs, 0) + otherCondition2 = append(otherCondition2, sf2) + joinType := logicalop.LeftOuterSemiJoin + simpleFilter := createSimpleFilter(t) + hasFilter := []bool{false, true} + rightAsBuildSide := []bool{true} + partitionNumber := 4 + rightUsed := []int{} + + for _, rightBuild := range rightAsBuildSide { + for _, testFilter := range hasFilter { + leftFilter := simpleFilter + if !testFilter { + leftFilter = nil + } + // MockContext set MaxChunkSize to 32, input chunk size should be less than 32 to test fast path + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 30) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 30) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 30) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, nil, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition, partitionNumber, joinType, 30) + + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 30) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 30) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 30) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, nil, rightUsed, []int{1}, []int{3}, leftFilter, nil, otherCondition2, partitionNumber, joinType, 30) + + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, nil, partitionNumber, joinType, 30) + testJoinProbe(t, false, []int{0}, []int{0}, []*types.FieldType{intTp}, []*types.FieldType{intTp}, lTypes, rTypes, rightBuild, []int{}, rightUsed, []int{1}, []int{3}, leftFilter, nil, nil, partitionNumber, joinType, 30) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, []int{1, 2, 4}, rightUsed, []int{1}, []int{3}, leftFilter, nil, nil, partitionNumber, joinType, 30) + testJoinProbe(t, true, []int{0}, []int{0}, []*types.FieldType{nullableIntTp}, []*types.FieldType{nullableIntTp}, toNullableTypes(lTypes), toNullableTypes(rTypes), rightBuild, nil, rightUsed, []int{1}, []int{3}, leftFilter, nil, nil, partitionNumber, joinType, 30) + } + } +} + +func TestLeftOuterSemiJoinSpill(t *testing.T) { + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = 32 + ctx.GetSessionVars().MaxChunkSize = 32 + leftDataSource, rightDataSource := buildLeftAndRightDataSource(ctx, leftCols, rightCols, false) + leftDataSourceWithSel, rightDataSourceWithSel := buildLeftAndRightDataSource(ctx, leftCols, rightCols, true) + + intTp := types.NewFieldType(mysql.TypeLonglong) + intTp.AddFlag(mysql.NotNullFlag) + stringTp := types.NewFieldType(mysql.TypeVarString) + stringTp.AddFlag(mysql.NotNullFlag) + + leftTypes := []*types.FieldType{intTp, intTp, intTp, stringTp, intTp} + rightTypes := []*types.FieldType{intTp, intTp, stringTp, intTp, intTp} + + leftKeys := []*expression.Column{ + {Index: 1, RetType: intTp}, + {Index: 3, RetType: stringTp}, + } + rightKeys := []*expression.Column{ + {Index: 0, RetType: intTp}, + {Index: 2, RetType: stringTp}, + } + + tinyTp := types.NewFieldType(mysql.TypeTiny) + a := &expression.Column{Index: 1, RetType: intTp} + b := &expression.Column{Index: 8, RetType: intTp} + sf, err := expression.NewFunction(mock.NewContext(), ast.GT, tinyTp, a, b) + require.NoError(t, err, "error when create other condition") + otherCondition := make(expression.CNFExprs, 0) + otherCondition = append(otherCondition, sf) + + maxRowTableSegmentSize = 100 + spillChunkSize = 100 + + joinType := logicalop.LeftOuterSemiJoin + params := []spillTestParam{ + // basic case + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 100000, 10000}}, + // with other condition + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, otherCondition, []int{1}, []int{3}, []int64{3000000, 1700000, 3500000, 100000, 10000}}, + } + + for _, param := range params { + testSpill(t, ctx, joinType, leftDataSource, rightDataSource, param) + } + + params2 := []spillTestParam{ + // basic case with sel + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{1000000, 900000, 1700000, 100000, 10000}}, + // with other condition with sel + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, otherCondition, []int{1}, []int{3}, []int64{1000000, 900000, 1600000, 100000, 10000}}, + } + + for _, param := range params2 { + testSpill(t, ctx, joinType, leftDataSourceWithSel, rightDataSourceWithSel, param) + } +} diff --git a/pkg/executor/join/outer_join_probe.go b/pkg/executor/join/outer_join_probe.go index 3001057d876d6..edcdd284c5fa6 100644 --- a/pkg/executor/join/outer_join_probe.go +++ b/pkg/executor/join/outer_join_probe.go @@ -111,19 +111,7 @@ func (j *outerJoinProbe) InitForScanRowTable() { if !j.isOuterSideBuild { panic("should not reach here") } - totalRowCount := j.ctx.hashTableContext.hashTable.totalRowCount() - concurrency := j.ctx.Concurrency - workID := uint64(j.workID) - avgRowPerWorker := totalRowCount / uint64(concurrency) - startIndex := workID * avgRowPerWorker - endIndex := (workID + 1) * avgRowPerWorker - if workID == uint64(concurrency-1) { - endIndex = totalRowCount - } - if endIndex > totalRowCount { - endIndex = totalRowCount - } - j.rowIter = j.ctx.hashTableContext.hashTable.createRowIter(startIndex, endIndex) + j.rowIter = commonInitForScanRowTable(&j.baseJoinProbe) } func (j *outerJoinProbe) ScanRowTable(joinResult *hashjoinWorkerResult, sqlKiller *sqlkiller.SQLKiller) *hashjoinWorkerResult { diff --git a/pkg/executor/join/outer_join_spill_test.go b/pkg/executor/join/outer_join_spill_test.go index a81ad9a2dc6a6..63c08cb8533b5 100644 --- a/pkg/executor/join/outer_join_spill_test.go +++ b/pkg/executor/join/outer_join_spill_test.go @@ -93,14 +93,14 @@ func TestOuterJoinSpillBasic(t *testing.T) { params := []spillTestParam{ // Normal case - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, // rightUsed is empty - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 750000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 250000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, // leftUsed is empty - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 750000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{5000000, 1700000, 6000000, 500000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{3000000, 1700000, 3500000, 250000, 10000}}, } err := failpoint.Enable("github.com/pingcap/tidb/pkg/executor/join/slowWorkers", `return(true)`) @@ -146,8 +146,8 @@ func TestOuterJoinSpillWithSel(t *testing.T) { params := []spillTestParam{ // Normal case - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{2000000, 1000000, 3000000, 500000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{2000000, 1000000, 3000000, 500000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{2000000, 1000000, 3000000, 200000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, nil, nil, nil, []int64{2000000, 1000000, 3000000, 200000, 10000}}, } err := failpoint.Enable("github.com/pingcap/tidb/pkg/executor/join/slowWorkers", `return(true)`) @@ -201,8 +201,8 @@ func TestOuterJoinSpillWithOtherCondition(t *testing.T) { otherCondition = append(otherCondition, sf) params := []spillTestParam{ - {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, - {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 1500000, 10000}}, + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 500000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1, 3, 4}, []int{0, 2, 3, 4}, otherCondition, []int{0}, []int{4}, []int64{5000000, 1700000, 6000000, 500000, 10000}}, } err = failpoint.Enable("github.com/pingcap/tidb/pkg/executor/join/slowWorkers", `return(true)`) diff --git a/pkg/executor/join/row_table_builder.go b/pkg/executor/join/row_table_builder.go index 50a18c3d5c881..9ac7e945b3d94 100644 --- a/pkg/executor/join/row_table_builder.go +++ b/pkg/executor/join/row_table_builder.go @@ -15,8 +15,11 @@ package join import ( + "errors" "hash" "hash/fnv" + "math" + "strconv" "unsafe" "github.com/pingcap/tidb/pkg/expression" @@ -81,8 +84,31 @@ func (b *rowTableBuilder) initHashValueAndPartIndexForOneChunk(partitionMaskOffs } } +func (b *rowTableBuilder) checkMaxElementSize(chk *chunk.Chunk, hashJoinCtx *HashJoinCtxV2) (bool, int) { + // check both join keys and the columns needed to be converted to row format + for _, colIdx := range b.buildKeyIndex { + column := chk.Column(colIdx) + if column.ContainsVeryLargeElement() { + return true, colIdx + } + } + for _, colIdx := range hashJoinCtx.hashTableMeta.rowColumnsOrder { + column := chk.Column(colIdx) + if column.ContainsVeryLargeElement() { + return true, colIdx + } + } + return false, 0 +} + func (b *rowTableBuilder) processOneChunk(chk *chunk.Chunk, typeCtx types.Context, hashJoinCtx *HashJoinCtxV2, workerID int) error { + elementSizeExceedLimit, colIdx := b.checkMaxElementSize(chk, hashJoinCtx) + if elementSizeExceedLimit { + // TiDB's max row size is 128MB, so element size should never exceed limit + return errors.New("row table build failed: column contains element larger than 4GB, column index: " + strconv.Itoa(colIdx)) + } b.ResetBuffer(chk) + b.firstSegRowSizeHint = max(uint(1), uint(float64(len(b.usedRows))/float64(hashJoinCtx.partitionNumber)*float64(1.2))) var err error if b.hasFilter { @@ -102,6 +128,12 @@ func (b *rowTableBuilder) processOneChunk(chk *chunk.Chunk, typeCtx types.Contex return err } } + for _, key := range b.serializedKeyVectorBuffer { + if len(key) > math.MaxUint32 { + // TiDB's max row size is 128MB, so key size should never exceed limit + return errors.New("row table build failed: join key contains element larger than 4GB") + } + } err = checkSQLKiller(&hashJoinCtx.SessCtx.GetSessionVars().SQLKiller, "killedDuringBuild") if err != nil { return err @@ -251,34 +283,34 @@ func fillNextRowPtr(seg *rowTableSegment) int { return sizeOfNextPtr } -func (b *rowTableBuilder) fillSerializedKeyAndKeyLengthIfNeeded(rowTableMeta *joinTableMeta, hasValidKey bool, logicalRowIndex int, seg *rowTableSegment) int { - appendRowLength := 0 +func (b *rowTableBuilder) fillSerializedKeyAndKeyLengthIfNeeded(rowTableMeta *joinTableMeta, hasValidKey bool, logicalRowIndex int, seg *rowTableSegment) int64 { + appendRowLength := int64(0) // 1. fill key length if needed if !rowTableMeta.isJoinKeysFixedLength { // if join_key is not fixed length: `key_length` need to be written in rawData // even the join keys is inlined, for example if join key is 2 binary string // then the inlined join key should be: col1_size + col1_data + col2_size + col2_data // and len(col1_size + col1_data + col2_size + col2_data) need to be written before the inlined join key - length := uint64(0) + length := uint32(0) if hasValidKey { - length = uint64(len(b.serializedKeyVectorBuffer[logicalRowIndex])) + length = uint32(len(b.serializedKeyVectorBuffer[logicalRowIndex])) } else { length = 0 } - seg.rawData = append(seg.rawData, unsafe.Slice((*byte)(unsafe.Pointer(&length)), sizeOfLengthField)...) - appendRowLength += sizeOfLengthField + seg.rawData = append(seg.rawData, unsafe.Slice((*byte)(unsafe.Pointer(&length)), sizeOfElementSize)...) + appendRowLength += int64(sizeOfElementSize) } // 2. fill serialized key if needed if !rowTableMeta.isJoinKeysInlined { // if join_key is not inlined: `serialized_key` need to be written in rawData if hasValidKey { seg.rawData = append(seg.rawData, b.serializedKeyVectorBuffer[logicalRowIndex]...) - appendRowLength += len(b.serializedKeyVectorBuffer[logicalRowIndex]) + appendRowLength += int64(len(b.serializedKeyVectorBuffer[logicalRowIndex])) } else { // if there is no valid key, and the key is fixed length, then write a fake key if rowTableMeta.isJoinKeysFixedLength { seg.rawData = append(seg.rawData, rowTableMeta.fakeKeyByte...) - appendRowLength += rowTableMeta.joinKeysLength + appendRowLength += int64(rowTableMeta.joinKeysLength) } // otherwise don't need to write since length is 0 } @@ -286,21 +318,21 @@ func (b *rowTableBuilder) fillSerializedKeyAndKeyLengthIfNeeded(rowTableMeta *jo return appendRowLength } -func fillRowData(rowTableMeta *joinTableMeta, row *chunk.Row, seg *rowTableSegment) int { - appendRowLength := 0 +func fillRowData(rowTableMeta *joinTableMeta, row *chunk.Row, seg *rowTableSegment) int64 { + appendRowLength := int64(0) for index, colIdx := range rowTableMeta.rowColumnsOrder { if rowTableMeta.columnsSize[index] > 0 { // fixed size seg.rawData = append(seg.rawData, row.GetRaw(colIdx)...) - appendRowLength += rowTableMeta.columnsSize[index] + appendRowLength += int64(rowTableMeta.columnsSize[index]) } else { // length, raw_data raw := row.GetRaw(colIdx) - length := uint64(len(raw)) - seg.rawData = append(seg.rawData, unsafe.Slice((*byte)(unsafe.Pointer(&length)), sizeOfLengthField)...) - appendRowLength += sizeOfLengthField + length := uint32(len(raw)) + seg.rawData = append(seg.rawData, unsafe.Slice((*byte)(unsafe.Pointer(&length)), sizeOfElementSize)...) + appendRowLength += int64(sizeOfElementSize) seg.rawData = append(seg.rawData, raw...) - appendRowLength += int(length) + appendRowLength += int64(length) } } return appendRowLength @@ -337,11 +369,11 @@ func (b *rowTableBuilder) appendToRowTable(chk *chunk.Chunk, hashJoinCtx *HashJo } seg.hashValues = append(seg.hashValues, b.hashValue[logicalRowIndex]) seg.rowStartOffset = append(seg.rowStartOffset, uint64(len(seg.rawData))) - rowLength := 0 + rowLength := int64(0) // fill next_row_ptr field - rowLength += fillNextRowPtr(seg) + rowLength += int64(fillNextRowPtr(seg)) // fill null_map - rowLength += fillNullMap(rowTableMeta, &row, seg) + rowLength += int64(fillNullMap(rowTableMeta, &row, seg)) // fill serialized key and key length if needed rowLength += b.fillSerializedKeyAndKeyLengthIfNeeded(rowTableMeta, hasValidKey, logicalRowIndex, seg) // fill row data diff --git a/pkg/executor/join/semi_join_probe.go b/pkg/executor/join/semi_join_probe.go new file mode 100644 index 0000000000000..0c328105e996a --- /dev/null +++ b/pkg/executor/join/semi_join_probe.go @@ -0,0 +1,347 @@ +// Copyright 2024 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 join + +import ( + "unsafe" + + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/sqlkiller" +) + +type semiJoinProbe struct { + baseSemiJoin + + // Used for right side build without other condition + offsets []int +} + +func newSemiJoinProbe(base baseJoinProbe, isLeftSideBuild bool) *semiJoinProbe { + ret := &semiJoinProbe{ + baseSemiJoin: *newBaseSemiJoin(base, isLeftSideBuild), + } + return ret +} + +func (s *semiJoinProbe) InitForScanRowTable() { + if !s.isLeftSideBuild { + panic("should not reach here") + } + s.rowIter = commonInitForScanRowTable(&s.baseJoinProbe) +} + +func (s *semiJoinProbe) SetChunkForProbe(chk *chunk.Chunk) (err error) { + err = s.baseJoinProbe.SetChunkForProbe(chk) + if err != nil { + return err + } + + s.resetProbeState() + return nil +} + +func (s *semiJoinProbe) SetRestoredChunkForProbe(chk *chunk.Chunk) error { + err := s.baseJoinProbe.SetRestoredChunkForProbe(chk) + if err != nil { + return err + } + + s.resetProbeState() + return nil +} + +func (s *semiJoinProbe) NeedScanRowTable() bool { + return s.isLeftSideBuild +} + +func (s *semiJoinProbe) IsScanRowTableDone() bool { + if !s.isLeftSideBuild { + panic("should not reach here") + } + return s.rowIter.isEnd() +} + +func (s *semiJoinProbe) ScanRowTable(joinResult *hashjoinWorkerResult, sqlKiller *sqlkiller.SQLKiller) *hashjoinWorkerResult { + if !s.isLeftSideBuild { + panic("should not reach here") + } + if joinResult.chk.IsFull() { + return joinResult + } + if s.rowIter == nil { + panic("scanRowTable before init") + } + s.nextCachedBuildRowIndex = 0 + meta := s.ctx.hashTableMeta + insertedRows := 0 + remainCap := joinResult.chk.RequiredRows() - joinResult.chk.NumRows() + for insertedRows < remainCap && !s.rowIter.isEnd() { + currentRow := s.rowIter.getValue() + if meta.isCurrentRowUsed(currentRow) { + // append build side of this row + s.appendBuildRowToCachedBuildRowsV1(0, currentRow, joinResult.chk, 0, false) + insertedRows++ + } + s.rowIter.next() + } + err := checkSQLKiller(sqlKiller, "killedDuringProbe") + if err != nil { + joinResult.err = err + return joinResult + } + if s.nextCachedBuildRowIndex > 0 { + s.batchConstructBuildRows(joinResult.chk, 0, false) + } + return joinResult +} + +func (s *semiJoinProbe) ResetProbe() { + s.rowIter = nil + s.baseJoinProbe.ResetProbe() +} + +func (s *semiJoinProbe) Probe(joinResult *hashjoinWorkerResult, sqlKiller *sqlkiller.SQLKiller) (ok bool, _ *hashjoinWorkerResult) { + if joinResult.chk.IsFull() { + return true, joinResult + } + + joinedChk, remainCap, err := s.prepareForProbe(joinResult.chk) + if err != nil { + joinResult.err = err + return false, joinResult + } + + hasOtherCondition := s.ctx.hasOtherCondition() + if s.isLeftSideBuild { + if hasOtherCondition { + err = s.probeForLeftSideBuildHasOtherCondition(joinedChk, sqlKiller) + } else { + err = s.probeForLeftSideBuildNoOtherCondition(sqlKiller) + } + } else { + if hasOtherCondition { + err = s.probeForRightSideBuildHasOtherCondition(joinResult.chk, joinedChk, remainCap, sqlKiller) + } else { + err = s.probeForRightSideBuildNoOtherCondition(joinResult.chk, remainCap, sqlKiller) + } + } + if err != nil { + joinResult.err = err + return false, joinResult + } + return true, joinResult +} + +func (s *semiJoinProbe) setIsMatchedRows() { + for i, res := range s.selected { + if !res { + continue + } + + s.isMatchedRows[s.rowIndexInfos[i].probeRowIndex] = true + } +} + +func (s *semiJoinProbe) probeForLeftSideBuildHasOtherCondition(joinedChk *chunk.Chunk, sqlKiller *sqlkiller.SQLKiller) (err error) { + err = s.concatenateProbeAndBuildRows(joinedChk, sqlKiller, false) + if err != nil { + return err + } + + meta := s.ctx.hashTableMeta + if joinedChk.NumRows() > 0 { + s.selected, err = expression.VectorizedFilter(s.ctx.SessCtx.GetExprCtx().GetEvalCtx(), s.ctx.SessCtx.GetSessionVars().EnableVectorizedExpression, s.ctx.OtherCondition, chunk.NewIterator4Chunk(joinedChk), s.selected) + if err != nil { + return err + } + + for index, result := range s.selected { + if result { + meta.setUsedFlag(*(*unsafe.Pointer)(unsafe.Pointer(&s.rowIndexInfos[index].buildRowStart))) + } + } + } + + if s.unFinishedProbeRowIdxQueue.IsEmpty() { + // To avoid `Previous chunk is not probed yet` error + s.currentProbeRow = s.chunkRows + } + + return +} + +func (s *semiJoinProbe) probeForLeftSideBuildNoOtherCondition(sqlKiller *sqlkiller.SQLKiller) (err error) { + meta := s.ctx.hashTableMeta + tagHelper := s.ctx.hashTableContext.tagHelper + + loopCnt := 0 + + for s.currentProbeRow < s.chunkRows { + if s.matchedRowsHeaders[s.currentProbeRow] != 0 { + candidateRow := tagHelper.toUnsafePointer(s.matchedRowsHeaders[s.currentProbeRow]) + if !meta.isCurrentRowUsedWithAtomic(candidateRow) { + if isKeyMatched(meta.keyMode, s.serializedKeys[s.currentProbeRow], candidateRow, meta) { + meta.setUsedFlag(candidateRow) + } else { + s.probeCollision++ + } + } + s.matchedRowsHeaders[s.currentProbeRow] = getNextRowAddress(candidateRow, tagHelper, s.matchedRowsHashValue[s.currentProbeRow]) + } else { + s.currentProbeRow++ + } + + loopCnt++ + if loopCnt%2000 == 0 { + err = checkSQLKiller(sqlKiller, "killedDuringProbe") + if err != nil { + return err + } + } + } + + err = checkSQLKiller(sqlKiller, "killedDuringProbe") + if err != nil { + return err + } + + return +} + +func (s *semiJoinProbe) produceResult(joinedChk *chunk.Chunk, sqlKiller *sqlkiller.SQLKiller) (err error) { + err = s.concatenateProbeAndBuildRows(joinedChk, sqlKiller, true) + if err != nil { + return err + } + + if joinedChk.NumRows() > 0 { + s.selected = s.selected[:0] + s.selected, err = expression.VectorizedFilter(s.ctx.SessCtx.GetExprCtx().GetEvalCtx(), s.ctx.SessCtx.GetSessionVars().EnableVectorizedExpression, s.ctx.OtherCondition, chunk.NewIterator4Chunk(joinedChk), s.selected) + if err != nil { + return err + } + + s.setIsMatchedRows() + } + return nil +} + +func (s *semiJoinProbe) probeForRightSideBuildHasOtherCondition(chk, joinedChk *chunk.Chunk, remainCap int, sqlKiller *sqlkiller.SQLKiller) (err error) { + if !s.unFinishedProbeRowIdxQueue.IsEmpty() { + err = s.produceResult(joinedChk, sqlKiller) + if err != nil { + return err + } + s.currentProbeRow = 0 + } + + if s.unFinishedProbeRowIdxQueue.IsEmpty() { + for remainCap > 0 && (s.currentProbeRow < s.chunkRows) { + rowNumToTryAppend := min(remainCap, s.chunkRows-s.currentProbeRow) + start := s.currentProbeRow + end := s.currentProbeRow + rowNumToTryAppend + + for index, usedColIdx := range s.lUsed { + dstCol := chk.Column(index) + srcCol := s.currentChunk.Column(usedColIdx) + chunk.CopySelectedRowsWithRowIDFunc(dstCol, srcCol, s.isMatchedRows, start, end, func(i int) int { + return s.usedRows[i] + }) + } + + if len(s.lUsed) == 0 { + // For calculating virtual row num + virtualRowNum := chk.GetNumVirtualRows() + for i := start; i < end; i++ { + if s.isMatchedRows[i] { + virtualRowNum++ + } + } + + // When `len(s.lUsed) == 0`, column number in chk is 0 + // We need to manually calculate virtual row number. + chk.SetNumVirtualRows(virtualRowNum) + } else { + chk.SetNumVirtualRows(chk.NumRows()) + } + + s.currentProbeRow += rowNumToTryAppend + remainCap = chk.RequiredRows() - chk.NumRows() + } + } + return +} + +func (s *semiJoinProbe) probeForRightSideBuildNoOtherCondition(chk *chunk.Chunk, remainCap int, sqlKiller *sqlkiller.SQLKiller) (err error) { + meta := s.ctx.hashTableMeta + tagHelper := s.ctx.hashTableContext.tagHelper + + if cap(s.offsets) == 0 { + s.offsets = make([]int, 0, remainCap) + } + + s.offsets = s.offsets[:0] + + for remainCap > 0 && s.currentProbeRow < s.chunkRows { + if s.matchedRowsHeaders[s.currentProbeRow] != 0 { + candidateRow := tagHelper.toUnsafePointer(s.matchedRowsHeaders[s.currentProbeRow]) + if isKeyMatched(meta.keyMode, s.serializedKeys[s.currentProbeRow], candidateRow, meta) { + s.matchedRowsHeaders[s.currentProbeRow] = 0 + s.offsets = append(s.offsets, s.usedRows[s.currentProbeRow]) + remainCap-- + s.currentProbeRow++ + } else { + s.probeCollision++ + s.matchedRowsHeaders[s.currentProbeRow] = getNextRowAddress(candidateRow, tagHelper, s.matchedRowsHashValue[s.currentProbeRow]) + } + } else { + s.currentProbeRow++ + } + } + + err = checkSQLKiller(sqlKiller, "killedDuringProbe") + if err != nil { + return err + } + + s.generateResultChkForRightBuildNoOtherCondition(chk) + return +} + +func (s *semiJoinProbe) generateResultChkForRightBuildNoOtherCondition(resultChk *chunk.Chunk) { + if len(s.offsets) == 0 { + return + } + + for index, colIndex := range s.lUsed { + srcCol := s.currentChunk.Column(colIndex) + dstCol := resultChk.Column(index) + chunk.CopyRows(dstCol, srcCol, s.offsets) + } + + if len(s.lUsed) == 0 { + resultChk.SetNumVirtualRows(resultChk.NumRows() + len(s.offsets)) + } else { + resultChk.SetNumVirtualRows(resultChk.NumRows()) + } +} + +func (s *semiJoinProbe) IsCurrentChunkProbeDone() bool { + if s.ctx.hasOtherCondition() && !s.unFinishedProbeRowIdxQueue.IsEmpty() { + return false + } + return s.baseJoinProbe.IsCurrentChunkProbeDone() +} diff --git a/pkg/executor/join/semi_join_probe_test.go b/pkg/executor/join/semi_join_probe_test.go new file mode 100644 index 0000000000000..d5d3eb908fb1c --- /dev/null +++ b/pkg/executor/join/semi_join_probe_test.go @@ -0,0 +1,430 @@ +// Copyright 2024 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 join + +import ( + "math/rand" + "testing" + + "github.com/pingcap/tidb/pkg/executor/internal/testutil" + "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/planner/core/operator/logicalop" + "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/mock" + "github.com/stretchr/testify/require" +) + +const maxChunkSizeInTest = 32 + +var semiJoinleftCols = []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, +} + +var semiJoinrightCols = []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, +} + +var semiJoinRetTypes = []*types.FieldType{ + types.NewFieldType(mysql.TypeLonglong), + types.NewFieldType(mysql.TypeLonglong), +} + +func buildLeftAndRightSemiDataSource(ctx sessionctx.Context, leftCols []*expression.Column, rightCols []*expression.Column, hasSel bool) (*testutil.MockDataSource, *testutil.MockDataSource) { + leftSchema := expression.NewSchema(leftCols...) + rightSchema := expression.NewSchema(rightCols...) + + joinKeyleftIntDatums := buildJoinKeyIntDatums(10000) + joinKeyrightIntDatums := buildJoinKeyIntDatums(10000) + leftMockSrcParm := testutil.MockDataSourceParameters{DataSchema: leftSchema, Ctx: ctx, Rows: 50000, Ndvs: []int{-1, -1}, Datums: [][]any{joinKeyleftIntDatums, joinKeyleftIntDatums}, HasSel: hasSel} + rightMockSrcParm := testutil.MockDataSourceParameters{DataSchema: rightSchema, Ctx: ctx, Rows: 50000, Ndvs: []int{-1, -1}, Datums: [][]any{joinKeyrightIntDatums, joinKeyrightIntDatums}, HasSel: hasSel} + return testutil.BuildMockDataSource(leftMockSrcParm), testutil.BuildMockDataSource(rightMockSrcParm) +} + +func buildSemiDataSourceAndExpectResult(ctx sessionctx.Context, leftCols []*expression.Column, rightCols []*expression.Column, rightAsBuildSide bool, hasOtherCondition bool, hasDuplicateKey bool, isAntiSemiJoin bool) (*testutil.MockDataSource, *testutil.MockDataSource, []chunk.Row) { + leftSchema := expression.NewSchema(leftCols...) + rightSchema := expression.NewSchema(rightCols...) + + rowNum := int64(50000) + leftCol0Datums := make([]any, 0, rowNum) + leftCol1Datums := make([]any, 0, rowNum) + rightCol0Datums := make([]any, 0, rowNum) + rightCol1Datums := make([]any, 0, rowNum) + + intTp := types.NewFieldType(mysql.TypeLonglong) + expectResultChunk := chunk.NewChunkWithCapacity([]*types.FieldType{intTp, intTp}, 10000) + expectResult := make([]chunk.Row, 0, 100000) + + if hasDuplicateKey { + if hasOtherCondition { + if rightAsBuildSide { + differentKeyNum := int64(10000) + for i := int64(0); i < differentKeyNum; i++ { + leftCol0Datums = append(leftCol0Datums, i) + leftCol1Datums = append(leftCol1Datums, int64(1)) + + singleKeyNum := rand.Int31n(2 * maxChunkSizeInTest) + if singleKeyNum == 0 { + if isAntiSemiJoin { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 1) + } + continue + } + + canOtherConditionSuccess := rand.Int31n(10) < 5 + if canOtherConditionSuccess { + if !isAntiSemiJoin { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 1) + } + + otherConditionSuccessNum := rand.Int31n(singleKeyNum) + 1 + for j := 0; j < int(singleKeyNum); j++ { + rightCol0Datums = append(rightCol0Datums, i) + if j < int(otherConditionSuccessNum) { + rightCol1Datums = append(rightCol1Datums, int64(0)) + } else { + rightCol1Datums = append(rightCol1Datums, int64(1)) + } + } + } else { + if isAntiSemiJoin { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 1) + } + + for j := 0; j < int(singleKeyNum); j++ { + rightCol0Datums = append(rightCol0Datums, i) + rightCol1Datums = append(rightCol1Datums, int64(1)) + } + } + } + } else { + differentKeyNum := int64(10000) + for i := int64(0); i < differentKeyNum; i++ { + rightCol0Datums = append(rightCol0Datums, i) + rightCol1Datums = append(rightCol1Datums, int64(0)) + + singleKeyNum := rand.Int31n(2 * maxChunkSizeInTest) + if singleKeyNum == 0 { + continue + } + + canOtherConditionSuccess := rand.Int31n(10) < 5 + if canOtherConditionSuccess { + otherConditionSuccessNum := rand.Int31n(singleKeyNum) + 1 + for j := 0; j < int(singleKeyNum); j++ { + leftCol0Datums = append(leftCol0Datums, i) + if j < int(otherConditionSuccessNum) { + leftCol1Datums = append(leftCol1Datums, int64(1)) + if !isAntiSemiJoin { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 1) + } + } else { + leftCol1Datums = append(leftCol1Datums, int64(0)) + if isAntiSemiJoin { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 0) + } + } + } + } else { + for j := 0; j < int(singleKeyNum); j++ { + leftCol0Datums = append(leftCol0Datums, i) + leftCol1Datums = append(leftCol1Datums, int64(0)) + if isAntiSemiJoin { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 0) + } + } + } + } + } + } else { + differentKeyNum := int64(10000) + for i := int64(0); i < differentKeyNum; i++ { + leftSingleKeyNum := rand.Int31n(2*maxChunkSizeInTest) + 1 + rightSingleKeyNum := rand.Int31n(2*maxChunkSizeInTest) + 1 + + for j := 0; j < int(leftSingleKeyNum); j++ { + leftCol0Datums = append(leftCol0Datums, i) + leftCol1Datums = append(leftCol1Datums, int64(0)) + } + + if i%2 == 0 { + for j := 0; j < int(rightSingleKeyNum); j++ { + rightCol0Datums = append(rightCol0Datums, i) + rightCol1Datums = append(rightCol1Datums, int64(0)) + } + + if !isAntiSemiJoin { + for j := 0; j < int(leftSingleKeyNum); j++ { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 0) + } + } + } else { + if isAntiSemiJoin { + for j := 0; j < int(leftSingleKeyNum); j++ { + expectResultChunk.AppendInt64(0, i) + expectResultChunk.AppendInt64(1, 0) + } + } + } + } + } + } else { + leftCol0StartNum := int64(30000) + for i := int64(0); i < rowNum; i++ { + leftCol0AppendedData := leftCol0StartNum + i + leftCol0Datums = append(leftCol0Datums, leftCol0AppendedData) + + if hasOtherCondition { + if leftCol0AppendedData%2 == 0 { + leftCol1Datums = append(leftCol1Datums, int64(1)) + if isAntiSemiJoin { + if leftCol0AppendedData >= rowNum { + expectResultChunk.AppendInt64(0, leftCol0AppendedData) + expectResultChunk.AppendInt64(1, 1) + } + } else { + if leftCol0AppendedData < rowNum { + expectResultChunk.AppendInt64(0, leftCol0AppendedData) + expectResultChunk.AppendInt64(1, 1) + } + } + } else { + leftCol1Datums = append(leftCol1Datums, int64(0)) + if isAntiSemiJoin { + expectResultChunk.AppendInt64(0, leftCol0AppendedData) + expectResultChunk.AppendInt64(1, 0) + } + } + } else { + leftCol1Datums = append(leftCol1Datums, int64(1)) + if isAntiSemiJoin { + if leftCol0AppendedData >= rowNum { + expectResultChunk.AppendInt64(0, leftCol0AppendedData) + expectResultChunk.AppendInt64(1, 1) + } + } else { + if leftCol0AppendedData < rowNum { + expectResultChunk.AppendInt64(0, leftCol0AppendedData) + expectResultChunk.AppendInt64(1, 1) + } + } + } + + rightCol0Datums = append(rightCol0Datums, i) + rightCol1Datums = append(rightCol1Datums, int64(0)) + } + } + + leftLen := len(leftCol0Datums) + rightLen := len(rightCol0Datums) + + // Shuffle + for i := int64(0); i < int64(leftLen); i++ { + j := rand.Int63n(i + 1) + leftCol0Datums[i], leftCol0Datums[j] = leftCol0Datums[j], leftCol0Datums[i] + leftCol1Datums[i], leftCol1Datums[j] = leftCol1Datums[j], leftCol1Datums[i] + } + + for i := int64(0); i < int64(rightLen); i++ { + j := rand.Int63n(i + 1) + rightCol0Datums[i], rightCol0Datums[j] = rightCol0Datums[j], rightCol0Datums[i] + rightCol1Datums[i], rightCol1Datums[j] = rightCol1Datums[j], rightCol1Datums[i] + } + + if isAntiSemiJoin { + expectResult = sortRows([]*chunk.Chunk{expectResultChunk}, semiJoinRetTypes) + } else { + resultRowNum := expectResultChunk.NumRows() + for i := 0; i < resultRowNum; i++ { + expectResult = append(expectResult, expectResultChunk.GetRow(i)) + } + } + + leftMockSrcParm := testutil.MockDataSourceParameters{DataSchema: leftSchema, Ctx: ctx, Rows: leftLen, Ndvs: []int{-2, -2}, Datums: [][]any{leftCol0Datums, leftCol1Datums}, HasSel: false} + rightMockSrcParm := testutil.MockDataSourceParameters{DataSchema: rightSchema, Ctx: ctx, Rows: rightLen, Ndvs: []int{-2, -2}, Datums: [][]any{rightCol0Datums, rightCol1Datums}, HasSel: false} + return testutil.BuildMockDataSource(leftMockSrcParm), testutil.BuildMockDataSource(rightMockSrcParm), expectResult +} + +func testSemiJoin(t *testing.T, rightAsBuildSide bool, hasOtherCondition bool, hasDuplicateKey bool) { + testSemiOrAntiSemiJoin(t, rightAsBuildSide, hasOtherCondition, hasDuplicateKey, false) +} + +func testSemiOrAntiSemiJoin(t *testing.T, rightAsBuildSide bool, hasOtherCondition bool, hasDuplicateKey bool, isAntiSemiJoin bool) { + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = maxChunkSizeInTest + ctx.GetSessionVars().MaxChunkSize = maxChunkSizeInTest + leftDataSource, rightDataSource, expectedResult := buildSemiDataSourceAndExpectResult(ctx, semiJoinleftCols, semiJoinrightCols, rightAsBuildSide, hasOtherCondition, hasDuplicateKey, isAntiSemiJoin) + + maxRowTableSegmentSize = 100 + + intTp := types.NewFieldType(mysql.TypeLonglong) + + leftKeys := []*expression.Column{ + {Index: 0, RetType: intTp}, + } + + rightKeys := []*expression.Column{ + {Index: 0, RetType: intTp}, + } + + var buildKeys []*expression.Column + var probeKeys []*expression.Column + if rightAsBuildSide { + buildKeys = rightKeys + probeKeys = leftKeys + } else { + buildKeys = leftKeys + probeKeys = rightKeys + } + + var otherCondition expression.CNFExprs + lUsedInOtherCondition := []int{} + rUsedInOtherCondition := []int{} + if hasOtherCondition { + lUsedInOtherCondition = append(lUsedInOtherCondition, 1) + rUsedInOtherCondition = append(rUsedInOtherCondition, 1) + + tinyTp := types.NewFieldType(mysql.TypeTiny) + a := &expression.Column{Index: 1, RetType: intTp} + b := &expression.Column{Index: 3, RetType: intTp} + sf, err := expression.NewFunction(mock.NewContext(), ast.GT, tinyTp, a, b) + require.NoError(t, err, "error when create other condition") + otherCondition = append(otherCondition, sf) + } + + var joinType logicalop.JoinType + if isAntiSemiJoin { + joinType = logicalop.AntiSemiJoin + } else { + joinType = logicalop.SemiJoin + } + + info := &hashJoinInfo{ + ctx: ctx, + schema: buildSchema(semiJoinRetTypes), + leftExec: leftDataSource, + rightExec: rightDataSource, + joinType: joinType, + rightAsBuildSide: rightAsBuildSide, + buildKeys: buildKeys, + probeKeys: probeKeys, + lUsed: []int{0, 1}, + rUsed: []int{}, + otherCondition: otherCondition, + lUsedInOtherCondition: lUsedInOtherCondition, + rUsedInOtherCondition: rUsedInOtherCondition, + } + + leftDataSource.PrepareChunks() + rightDataSource.PrepareChunks() + + hashJoinExec := buildHashJoinV2Exec(info) + result := getSortedResults(t, hashJoinExec, semiJoinRetTypes) + checkResults(t, semiJoinRetTypes, result, expectedResult) +} + +func TestSemiJoinBasic(t *testing.T) { + testSemiJoin(t, false, false, false) // Left side build without other condition + testSemiJoin(t, false, true, false) // Left side build with other condition + testSemiJoin(t, true, false, false) // Right side build without other condition + testSemiJoin(t, true, true, false) // Right side build with other condition +} + +func TestSemiJoinDuplicateKeys(t *testing.T) { + testSemiJoin(t, false, false, true) // Left side build without other condition + testSemiJoin(t, false, true, true) // Left side build with other condition + testSemiJoin(t, true, false, true) // Right side build without other condition + testSemiJoin(t, true, true, true) // Right side build with other condition +} + +func TestSemiSpill(t *testing.T) { + var leftCols = []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, + } + + var rightCols = []*expression.Column{ + {Index: 0, RetType: types.NewFieldType(mysql.TypeLonglong)}, + {Index: 1, RetType: types.NewFieldType(mysql.TypeLonglong)}, + } + + ctx := mock.NewContext() + ctx.GetSessionVars().InitChunkSize = 32 + ctx.GetSessionVars().MaxChunkSize = 32 + leftDataSource, rightDataSource := buildLeftAndRightSemiDataSource(ctx, leftCols, rightCols, false) + + intTp := types.NewFieldType(mysql.TypeLonglong) + + leftTypes := []*types.FieldType{intTp, intTp} + rightTypes := []*types.FieldType{intTp, intTp} + + leftKeys := []*expression.Column{ + {Index: 0, RetType: intTp}, + } + rightKeys := []*expression.Column{ + {Index: 0, RetType: intTp}, + } + + tinyTp := types.NewFieldType(mysql.TypeTiny) + a := &expression.Column{Index: 1, RetType: intTp} + b := &expression.Column{Index: 3, RetType: intTp} + sf, err := expression.NewFunction(mock.NewContext(), ast.GT, tinyTp, a, b) + require.NoError(t, err, "error when create other condition") + otherCondition := make(expression.CNFExprs, 0) + otherCondition = append(otherCondition, sf) + + maxRowTableSegmentSize = 100 + spillChunkSize = 100 + + joinTypes := []logicalop.JoinType{logicalop.SemiJoin} + params := []spillTestParam{ + // basic case + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1}, []int{}, nil, nil, nil, []int64{1800000, 1500000, 3000000, 100000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1}, []int{}, nil, nil, nil, []int64{1800000, 1500000, 3500000, 100000, 10000}}, + // with other condition + {true, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1}, []int{}, otherCondition, []int{1}, []int{1}, []int64{1800000, 1500000, 3500000, 100000, 10000}}, + {false, leftKeys, rightKeys, leftTypes, rightTypes, []int{0, 1}, []int{}, otherCondition, []int{1}, []int{1}, []int64{1800000, 1500000, 3500000, 100000, 10000}}, + } + + for _, joinType := range joinTypes { + for _, param := range params { + testSpill(t, ctx, joinType, leftDataSource, rightDataSource, param) + } + } +} + +func TestSemiJoinProbeBasic(t *testing.T) { + testLeftOuterSemiOrSemiJoinProbeBasic(t, false) +} + +func TestSemiJoinProbeAllJoinKeys(t *testing.T) { + testLeftOuterSemiJoinProbeAllJoinKeys(t, false) +} + +func TestSemiJoinProbeWithSel(t *testing.T) { + testLeftOuterSemiJoinProbeWithSel(t, false) +} diff --git a/pkg/executor/load_data.go b/pkg/executor/load_data.go index e56cefa607993..e034098518532 100644 --- a/pkg/executor/load_data.go +++ b/pkg/executor/load_data.go @@ -153,6 +153,7 @@ func setNonRestrictiveFlags(stmtCtx *stmtctx.StatementContext) { levels := stmtCtx.ErrLevels() levels[errctx.ErrGroupDupKey] = errctx.LevelWarn levels[errctx.ErrGroupBadNull] = errctx.LevelWarn + levels[errctx.ErrGroupNoDefault] = errctx.LevelWarn stmtCtx.SetErrLevels(levels) stmtCtx.SetTypeFlags(stmtCtx.TypeFlags().WithTruncateAsWarning(true)) } diff --git a/pkg/executor/load_stats.go b/pkg/executor/load_stats.go index 3ef7ae5782f78..33ef417262967 100644 --- a/pkg/executor/load_stats.go +++ b/pkg/executor/load_stats.go @@ -23,7 +23,7 @@ import ( "github.com/pingcap/tidb/pkg/executor/internal/exec" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/util/chunk" ) diff --git a/pkg/executor/main_test.go b/pkg/executor/main_test.go index 8a2cf20bb83be..30b387cf7c219 100644 --- a/pkg/executor/main_test.go +++ b/pkg/executor/main_test.go @@ -59,6 +59,8 @@ func TestMain(m *testing.M) { goleak.IgnoreTopFunction("github.com/pingcap/tidb/pkg/ttl/ttlworker.(*ttlScanWorker).loop"), goleak.IgnoreTopFunction("github.com/pingcap/tidb/pkg/ttl/client.(*mockClient).WatchCommand.func1"), goleak.IgnoreTopFunction("github.com/pingcap/tidb/pkg/ttl/ttlworker.(*JobManager).jobLoop"), + // backoff function will lead to sleep, so there is a high probability of goroutine leak while it's doing backoff. + goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/config/retry.(*Config).createBackoffFn.newBackoffFn.func2"), } callback := func(i int) int { testDataMap.GenerateOutputIfNeeded() diff --git a/pkg/executor/mem_reader.go b/pkg/executor/mem_reader.go index a86da267c92af..7fb687672ee57 100644 --- a/pkg/executor/mem_reader.go +++ b/pkg/executor/mem_reader.go @@ -345,7 +345,6 @@ func (iter *txnMemBufferIter) Valid() bool { if iter.curr.Valid() { return true } - iter.curr = nil iter.idx++ } for iter.idx < len(iter.kvRanges) { @@ -372,7 +371,6 @@ func (iter *txnMemBufferIter) Valid() bool { if iter.curr.Valid() { return true } - iter.curr = nil iter.idx++ } return false @@ -398,7 +396,10 @@ func (iter *txnMemBufferIter) Value() []byte { return iter.curr.Value() } -func (*txnMemBufferIter) Close() { +func (iter *txnMemBufferIter) Close() { + if iter.curr != nil { + iter.curr.Close() + } } func (m *memTableReader) getMemRowsIter(ctx context.Context) (memRowsIter, error) { @@ -882,6 +883,8 @@ func buildMemIndexMergeReader(ctx context.Context, us *UnionScanExec, indexMerge type memRowsIter interface { Next() ([]types.Datum, error) + // Close will release the snapshot it holds, so be sure to call Close. + Close() } type defaultRowsIter struct { @@ -898,6 +901,8 @@ func (iter *defaultRowsIter) Next() ([]types.Datum, error) { return nil, nil } +func (*defaultRowsIter) Close() {} + // memRowsIterForTable combine a kv.Iterator and a kv decoder to get a memRowsIter. type memRowsIterForTable struct { kvIter *txnMemBufferIter // txnMemBufferIter is the kv.Iterator @@ -966,6 +971,12 @@ func (iter *memRowsIterForTable) Next() ([]types.Datum, error) { return ret, nil } +func (iter *memRowsIterForTable) Close() { + if iter.kvIter != nil { + iter.kvIter.Close() + } +} + type memRowsIterForIndex struct { kvIter *txnMemBufferIter tps []*types.FieldType @@ -1018,6 +1029,12 @@ func (iter *memRowsIterForIndex) Next() ([]types.Datum, error) { return ret, nil } +func (iter *memRowsIterForIndex) Close() { + if iter.kvIter != nil { + iter.kvIter.Close() + } +} + func (m *memIndexMergeReader) getMemRowsIter(ctx context.Context) (memRowsIter, error) { data, err := m.getMemRows(ctx) if err != nil { diff --git a/pkg/executor/memtable_reader.go b/pkg/executor/memtable_reader.go index 5601e686a4c3b..ef2a214a80a96 100644 --- a/pkg/executor/memtable_reader.go +++ b/pkg/executor/memtable_reader.go @@ -93,6 +93,22 @@ func (*MemTableReaderExec) isInspectionCacheableTable(tblName string) bool { } } +// Open implements the Executor Open interface. +func (e *MemTableReaderExec) Open(ctx context.Context) error { + err := e.BaseExecutor.Open(ctx) + if err != nil { + return errors.Trace(err) + } + + // Activate the transaction, otherwise SELECT .. FROM INFORMATION_SCHEMA.XX .. does not block GC worker. + // And if the query last too long (10min), it causes error "GC life time is shorter than transaction duration" + if txn, err1 := e.Ctx().Txn(false); err1 == nil && txn != nil && txn.Valid() { + // Call e.Ctx().Txn(true) may panic, it's too difficult to debug all the callers. + _, err = e.Ctx().Txn(true) + } + return err +} + // Next implements the Executor Next interface. func (e *MemTableReaderExec) Next(ctx context.Context, req *chunk.Chunk) error { var ( diff --git a/pkg/executor/operate_ddl_jobs.go b/pkg/executor/operate_ddl_jobs.go index 5bb04fb900a5e..2553f71ac5c0a 100644 --- a/pkg/executor/operate_ddl_jobs.go +++ b/pkg/executor/operate_ddl_jobs.go @@ -19,8 +19,16 @@ import ( "fmt" "strconv" + "github.com/pingcap/errors" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/ddl" + sess "github.com/pingcap/tidb/pkg/ddl/session" + "github.com/pingcap/tidb/pkg/ddl/util" "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/chunk" ) @@ -85,3 +93,132 @@ type PauseDDLJobsExec struct { type ResumeDDLJobsExec struct { *CommandDDLJobsExec } + +// AlterDDLJobExec indicates an Executor for alter config of a DDL Job. +type AlterDDLJobExec struct { + exec.BaseExecutor + jobID int64 + AlterOpts []*core.AlterDDLJobOpt +} + +// Open implements the Executor Open interface. +func (e *AlterDDLJobExec) Open(ctx context.Context) error { + newSess, err := e.GetSysSession() + if err != nil { + return err + } + defer e.ReleaseSysSession(kv.WithInternalSourceType(context.Background(), kv.InternalTxnDDL), newSess) + + return e.processAlterDDLJobConfig(ctx, newSess) +} + +func getJobMetaFromTable( + ctx context.Context, + se *sess.Session, + jobID int64, +) (*model.Job, error) { + sql := fmt.Sprintf("select job_meta from mysql.%s where job_id = %s", + ddl.JobTable, strconv.FormatInt(jobID, 10)) + rows, err := se.Execute(ctx, sql, "get_job_by_id") + if err != nil { + return nil, errors.Trace(err) + } + if len(rows) == 0 { + return nil, fmt.Errorf("ddl job %d is not running", jobID) + } + jobBinary := rows[0].GetBytes(0) + job := model.Job{} + err = job.Decode(jobBinary) + if err != nil { + return nil, errors.Trace(err) + } + return &job, nil +} + +func updateJobMeta2Table( + ctx context.Context, + se *sess.Session, + job *model.Job, +) error { + b, err := job.Encode(false) + if err != nil { + return err + } + sql := fmt.Sprintf("update mysql.%s set job_meta = %s where job_id = %d", + ddl.JobTable, util.WrapKey2String(b), job.ID) + _, err = se.Execute(ctx, sql, "update_job") + return errors.Trace(err) +} + +const alterDDLJobMaxRetryCnt = 3 + +// processAlterDDLJobConfig try to alter the ddl job configs. +// In case of failure, it will retry alterDDLJobMaxRetryCnt times. +func (e *AlterDDLJobExec) processAlterDDLJobConfig( + ctx context.Context, + sessCtx sessionctx.Context, +) (err error) { + ns := sess.NewSession(sessCtx) + var job *model.Job + for tryN := uint(0); tryN < alterDDLJobMaxRetryCnt; tryN++ { + if err = ns.Begin(ctx); err != nil { + continue + } + job, err = getJobMetaFromTable(ctx, ns, e.jobID) + if err != nil { + continue + } + if !job.IsAlterable() { + return fmt.Errorf("unsupported DDL operation: %s. "+ + "Supported DDL operations are: ADD INDEX (with tidb_enable_dist_task=OFF), MODIFY COLUMN, and ALTER TABLE REORGANIZE PARTITION", job.Type.String()) + } + if err = e.updateReorgMeta(job, model.AdminCommandByEndUser); err != nil { + continue + } + if err = updateJobMeta2Table(ctx, ns, job); err != nil { + continue + } + + failpoint.Inject("mockAlterDDLJobCommitFailed", func(val failpoint.Value) { + if val.(bool) { + ns.Rollback() + failpoint.Return(errors.New("mock commit failed on admin alter ddl jobs")) + } + }) + + if err = ns.Commit(ctx); err != nil { + ns.Rollback() + continue + } + return nil + } + return err +} + +func (e *AlterDDLJobExec) updateReorgMeta(job *model.Job, byWho model.AdminCommandOperator) error { + for _, opt := range e.AlterOpts { + if opt.Value == nil { + continue + } + switch opt.Name { + case core.AlterDDLJobThread: + cons := opt.Value.(*expression.Constant) + job.ReorgMeta.SetConcurrency(int(cons.Value.GetInt64())) + job.AdminOperator = byWho + case core.AlterDDLJobBatchSize: + cons := opt.Value.(*expression.Constant) + job.ReorgMeta.SetBatchSize(int(cons.Value.GetInt64())) + job.AdminOperator = byWho + case core.AlterDDLJobMaxWriteSpeed: + speed, err := core.GetMaxWriteSpeedFromExpression(opt) + if err != nil { + return err + } + job.ReorgMeta.SetMaxWriteSpeed(int(speed)) + job.AdminOperator = byWho + default: + return errors.Errorf("unsupported admin alter ddl jobs config: %s", opt.Name) + } + } + return nil +} diff --git a/pkg/executor/plan_replayer.go b/pkg/executor/plan_replayer.go index 06c160f942850..75fcd3897037e 100644 --- a/pkg/executor/plan_replayer.go +++ b/pkg/executor/plan_replayer.go @@ -34,7 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/sessiontxn" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/replayer" diff --git a/pkg/executor/point_get.go b/pkg/executor/point_get.go index cea86884a841e..fba16bc25d255 100644 --- a/pkg/executor/point_get.go +++ b/pkg/executor/point_get.go @@ -19,6 +19,7 @@ import ( "fmt" "sort" "strconv" + "time" "github.com/pingcap/errors" "github.com/pingcap/failpoint" @@ -197,6 +198,15 @@ func matchPartitionNames(pid int64, partitionNames []pmodel.CIStr, pi *model.Par return false } +// Recreated based on Init, change baseExecutor fields also +func (e *PointGetExecutor) Recreated(p *plannercore.PointGetPlan) { + e.Init(p) + // It's necessary to at least reset the `runtimeStats` of the `BaseExecutor`. + // As the `StmtCtx` may have changed, a new index usage reporter should also be created. + e.BaseExecutor = exec.NewBaseExecutor(e.Ctx(), p.Schema(), p.ID()) + e.indexUsageReporter = buildIndexUsageReporter(e.Ctx(), p) +} + // Init set fields needed for PointGetExecutor reuse, this does NOT change baseExecutor field func (e *PointGetExecutor) Init(p *plannercore.PointGetPlan) { decoder := NewRowDecoder(e.Ctx(), p.Schema(), p.TblInfo) @@ -217,11 +227,6 @@ func (e *PointGetExecutor) Init(p *plannercore.PointGetPlan) { e.partitionDefIdx = p.PartitionIdx e.columns = p.Columns e.buildVirtualColumnInfo() - - // It's necessary to at least reset the `runtimeStats` of the `BaseExecutor`. - // As the `StmtCtx` may have changed, a new index usage reporter should also be created. - e.BaseExecutor = exec.NewBaseExecutor(e.Ctx(), p.Schema(), p.ID()) - e.indexUsageReporter = buildIndexUsageReporter(e.Ctx(), p) } // buildVirtualColumnInfo saves virtual column indices and sort them in definition order @@ -268,10 +273,11 @@ func (e *PointGetExecutor) Close() error { tableID := e.tblInfo.ID physicalTableID := GetPhysID(e.tblInfo, e.partitionDefIdx) kvReqTotal := e.stats.SnapshotRuntimeStats.GetCmdRPCCount(tikvrpc.CmdGet) + rows := e.RuntimeStats().GetActRows() if e.idxInfo != nil { - e.indexUsageReporter.ReportPointGetIndexUsage(tableID, physicalTableID, e.idxInfo.ID, e.ID(), kvReqTotal) + e.indexUsageReporter.ReportPointGetIndexUsage(tableID, physicalTableID, e.idxInfo.ID, kvReqTotal, rows) } else { - e.indexUsageReporter.ReportPointGetIndexUsageForHandle(e.tblInfo, physicalTableID, e.ID(), kvReqTotal) + e.indexUsageReporter.ReportPointGetIndexUsageForHandle(e.tblInfo, physicalTableID, kvReqTotal, rows) } } e.done = false @@ -672,6 +678,12 @@ func (e *PointGetExecutor) get(ctx context.Context, key kv.Key) ([]byte, error) } } // if not read lock or table was unlock then snapshot get + if e.Ctx().GetSessionVars().MaxExecutionTime > 0 { + // if the query has max execution time set, we need to set the context deadline for the get request + ctxWithTimeout, cancel := context.WithTimeout(ctx, time.Duration(e.Ctx().GetSessionVars().MaxExecutionTime)*time.Millisecond) + defer cancel() + return e.snapshot.Get(ctxWithTimeout, key) + } return e.snapshot.Get(ctx, key) } diff --git a/pkg/executor/recover_test.go b/pkg/executor/recover_test.go index 1aefb857a1bc7..e5eff24421f4f 100644 --- a/pkg/executor/recover_test.go +++ b/pkg/executor/recover_test.go @@ -136,7 +136,7 @@ func TestRecoverTable(t *testing.T) { tk.MustExec("drop table if exists t_recover2") tk.MustExec("create table t_recover2 (a int);") jobID := int64(0) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionDropTable && jobID == 0 { jobID = job.ID } diff --git a/pkg/executor/revoke.go b/pkg/executor/revoke.go index 79391c43bb7a8..ca631d08f6383 100644 --- a/pkg/executor/revoke.go +++ b/pkg/executor/revoke.go @@ -125,7 +125,16 @@ func (e *RevokeExec) Next(ctx context.Context, _ *chunk.Chunk) error { return err } isCommit = true - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + users := userSpecToUserList(e.Users) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(users) +} + +func userSpecToUserList(specs []*ast.UserSpec) []string { + users := make([]string, 0, len(specs)) + for _, user := range specs { + users = append(users, user.User.Username) + } + return users } // Checks that dynamic privileges are only of global scope. diff --git a/pkg/executor/sample_test.go b/pkg/executor/sample_test.go index 83c4ef26900ba..86727861aafdf 100644 --- a/pkg/executor/sample_test.go +++ b/pkg/executor/sample_test.go @@ -19,9 +19,11 @@ import ( "sync/atomic" "testing" + "github.com/pingcap/kvproto/pkg/keyspacepb" "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" ) @@ -128,3 +130,32 @@ func TestMaxChunkSize(t *testing.T) { rows := tk.MustQuery("select * from t tablesample regions();").Rows() require.Len(t, rows, 4) } + +func TestKeyspaceSample(t *testing.T) { + // Build an exist keyspace. + keyspaceMeta := keyspacepb.KeyspaceMeta{} + keyspaceMeta.Id = 2 + keyspaceMeta.Name = "test_ks_name2" + + opts := mockstore.WithKeyspaceMeta(&keyspaceMeta) + store := testkit.CreateMockStore(t, opts) + tk := createSampleTestkit(t, store) + tk.MustExec("create table t (a int);") + tk.MustExec("insert into t values (1),(2);") + tk.MustQuery("select a from t;").Check(testkit.Rows("1", "2")) + + // Build another exist keyspace. + keyspaceMeta02 := keyspacepb.KeyspaceMeta{} + keyspaceMeta02.Id = 3 + keyspaceMeta02.Name = "test_ks_name3" + + opts02 := mockstore.WithKeyspaceMeta(&keyspaceMeta02) + store02 := testkit.CreateMockStore(t, opts02) + + tk02 := createSampleTestkit(t, store02) + tk02.MustExec("create table t (a int);") + + // Tables with the same name in different keyspaces have isolated data. + tk02.MustExec("insert into t values (3),(4);") + tk02.MustQuery("select a from t;").Check(testkit.Rows("3", "4")) +} diff --git a/pkg/executor/select.go b/pkg/executor/select.go index 07957408d577d..c27b7e498047c 100644 --- a/pkg/executor/select.go +++ b/pkg/executor/select.go @@ -419,6 +419,7 @@ type LimitExec struct { // columnIdxsUsedByChild keep column indexes of child executor used for inline projection columnIdxsUsedByChild []int + columnSwapHelper *chunk.ColumnSwapHelper // Log the close time when opentracing is enabled. span opentracing.Span @@ -480,10 +481,9 @@ func (e *LimitExec) Next(ctx context.Context, req *chunk.Chunk) error { e.cursor += batchSize if e.columnIdxsUsedByChild != nil { - for i, childIdx := range e.columnIdxsUsedByChild { - if err = req.SwapColumn(i, e.childResult, childIdx); err != nil { - return err - } + err = e.columnSwapHelper.SwapColumns(e.childResult, req) + if err != nil { + return err } } else { req.SwapColumns(e.childResult) @@ -1067,7 +1067,11 @@ func ResetContextOfStmt(ctx sessionctx.Context, s ast.StmtNode) (err error) { errLevels[errctx.ErrGroupAutoIncReadFailed] = errctx.LevelWarn errLevels[errctx.ErrGroupNoMatchedPartition] = errctx.LevelWarn } - errLevels[errctx.ErrGroupBadNull] = errctx.ResolveErrLevel(false, !strictSQLMode || stmt.IgnoreErr) + // For single-row INSERT statements, ignore non-strict mode + // See https://dev.mysql.com/doc/refman/5.7/en/constraint-invalid-data.html + isSingleInsert := len(stmt.Lists) == 1 + errLevels[errctx.ErrGroupBadNull] = errctx.ResolveErrLevel(false, (!strictSQLMode && !isSingleInsert) || stmt.IgnoreErr) + errLevels[errctx.ErrGroupNoDefault] = errctx.ResolveErrLevel(false, !strictSQLMode || stmt.IgnoreErr) errLevels[errctx.ErrGroupDividedByZero] = errctx.ResolveErrLevel( !vars.SQLMode.HasErrorForDivisionByZeroMode(), !strictSQLMode || stmt.IgnoreErr, @@ -1212,6 +1216,7 @@ func ResetUpdateStmtCtx(sc *stmtctx.StatementContext, stmt *ast.UpdateStmt, vars errLevels := sc.ErrLevels() errLevels[errctx.ErrGroupDupKey] = errctx.ResolveErrLevel(false, stmt.IgnoreErr) errLevels[errctx.ErrGroupBadNull] = errctx.ResolveErrLevel(false, !strictSQLMode || stmt.IgnoreErr) + errLevels[errctx.ErrGroupNoDefault] = errLevels[errctx.ErrGroupBadNull] errLevels[errctx.ErrGroupDividedByZero] = errctx.ResolveErrLevel( !vars.SQLMode.HasErrorForDivisionByZeroMode(), !strictSQLMode || stmt.IgnoreErr, @@ -1233,6 +1238,7 @@ func ResetDeleteStmtCtx(sc *stmtctx.StatementContext, stmt *ast.DeleteStmt, vars errLevels := sc.ErrLevels() errLevels[errctx.ErrGroupDupKey] = errctx.ResolveErrLevel(false, stmt.IgnoreErr) errLevels[errctx.ErrGroupBadNull] = errctx.ResolveErrLevel(false, !strictSQLMode || stmt.IgnoreErr) + errLevels[errctx.ErrGroupNoDefault] = errLevels[errctx.ErrGroupBadNull] errLevels[errctx.ErrGroupDividedByZero] = errctx.ResolveErrLevel( !vars.SQLMode.HasErrorForDivisionByZeroMode(), !strictSQLMode || stmt.IgnoreErr, diff --git a/pkg/executor/set.go b/pkg/executor/set.go index 8d88a2d782b45..d39ce5bffe43c 100644 --- a/pkg/executor/set.go +++ b/pkg/executor/set.go @@ -222,10 +222,8 @@ func (e *SetExecutor) setSysVariable(ctx context.Context, name string, v *expres newSnapshotTS := getSnapshotTSByName() newSnapshotIsSet := newSnapshotTS > 0 && newSnapshotTS != oldSnapshotTS if newSnapshotIsSet { - if name == variable.TiDBTxnReadTS { - err = sessionctx.ValidateStaleReadTS(ctx, e.Ctx().GetSessionVars().StmtCtx, e.Ctx().GetStore(), newSnapshotTS) - } else { - err = sessionctx.ValidateSnapshotReadTS(ctx, e.Ctx(), newSnapshotTS) + err = sessionctx.ValidateSnapshotReadTS(ctx, e.Ctx().GetStore(), newSnapshotTS) + if name != variable.TiDBTxnReadTS { // Also check gc safe point for snapshot read. // We don't check snapshot with gc safe point for read_ts // Client-go will automatically check the snapshotTS with gc safe point. It's unnecessary to check gc safe point during set executor. diff --git a/pkg/executor/set_test.go b/pkg/executor/set_test.go index e24f8f1a6b2c7..1adf972922504 100644 --- a/pkg/executor/set_test.go +++ b/pkg/executor/set_test.go @@ -470,6 +470,12 @@ func TestSetVar(t *testing.T) { tk.MustExec("set session tidb_dml_batch_size = -120") tk.MustQuery(`show warnings`).Check(testkit.Rows("Warning 1292 Truncated incorrect tidb_dml_batch_size value: '-120'")) // without redaction + tk.MustExec("set global tidb_gogc_tuner_min_value=300") + tk.MustQuery("show warnings").Check(testkit.Rows()) + tk.MustExec("set global tidb_gogc_tuner_max_value=600") + tk.MustQuery("show warnings").Check(testkit.Rows()) + tk.MustExec("set global tidb_gogc_tuner_max_value=600000000000000000") + tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1292 Truncated incorrect tidb_gogc_tuner_max_value value: '600000000000000000'")) tk.MustExec("set @@session.tidb_dml_batch_size = 120") tk.MustExec("set @@global.tidb_dml_batch_size = 200") // now permitted due to TiDB #19809 tk.MustQuery("select @@tidb_dml_batch_size;").Check(testkit.Rows("120")) // global only applies to new sessions diff --git a/pkg/executor/show.go b/pkg/executor/show.go index 5782ff434a8bc..35826630ef0c4 100644 --- a/pkg/executor/show.go +++ b/pkg/executor/show.go @@ -200,7 +200,7 @@ func (e *ShowExec) fetchAll(ctx context.Context) error { case ast.ShowEngines: return e.fetchShowEngines(ctx) case ast.ShowGrants: - return e.fetchShowGrants() + return e.fetchShowGrants(ctx) case ast.ShowIndex: return e.fetchShowIndex() case ast.ShowProcedureStatus: @@ -1429,7 +1429,10 @@ func constructResultOfShowCreateTable(ctx sessionctx.Context, dbName *pmodel.CIS restoreCtx.WriteKeyWord("TTL_JOB_INTERVAL") restoreCtx.WritePlain("=") if len(tableInfo.TTLInfo.JobInterval) == 0 { - restoreCtx.WriteString(model.DefaultJobIntervalStr) + // This only happens when the table is created from 6.5 in which the `tidb_job_interval` is not introduced yet. + // We use `OldDefaultTTLJobInterval` as the return value to ensure a consistent behavior for the + // upgrades: v6.5 -> v8.5(or previous version) -> newer version than v8.5. + restoreCtx.WriteString(model.OldDefaultTTLJobInterval) } else { restoreCtx.WriteString(tableInfo.TTLInfo.JobInterval) } @@ -1842,7 +1845,7 @@ func (e *ShowExec) fetchShowCreateUser(ctx context.Context) error { require = privValue.RequireStr() } - authData := checker.GetEncodedPassword(e.User.Username, e.User.Hostname) + authData := checker.GetEncodedPassword(ctx, e.User.Username, e.User.Hostname) authStr := "" if !(authPlugin == mysql.AuthSocket && authData == "") { authStr = fmt.Sprintf(" AS '%s'", authData) @@ -1855,7 +1858,7 @@ func (e *ShowExec) fetchShowCreateUser(ctx context.Context) error { return nil } -func (e *ShowExec) fetchShowGrants() error { +func (e *ShowExec) fetchShowGrants(ctx context.Context) error { vars := e.Ctx().GetSessionVars() checker := privilege.GetPrivilegeManager(e.Ctx()) if checker == nil { @@ -1884,11 +1887,11 @@ func (e *ShowExec) fetchShowGrants() error { if r.Hostname == "" { r.Hostname = "%" } - if !checker.FindEdge(e.Ctx(), r, e.User) { + if !checker.FindEdge(ctx, r, e.User) { return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(r.String(), e.User.String()) } } - gs, err := checker.ShowGrants(e.Ctx(), e.User, e.Roles) + gs, err := checker.ShowGrants(ctx, e.Ctx(), e.User, e.Roles) if err != nil { return errors.Trace(err) } diff --git a/pkg/executor/show_ddl_jobs.go b/pkg/executor/show_ddl_jobs.go index 9d07679a59877..a885d5d5e18c9 100644 --- a/pkg/executor/show_ddl_jobs.go +++ b/pkg/executor/show_ddl_jobs.go @@ -33,6 +33,7 @@ import ( "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/privilege" "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/chunk" @@ -90,7 +91,7 @@ func (e *ShowDDLJobsExec) Next(_ context.Context, req *chunk.Chunk) error { if e.cursor < len(e.runningJobs) { numCurBatch := min(req.Capacity(), len(e.runningJobs)-e.cursor) for i := e.cursor; i < e.cursor+numCurBatch; i++ { - e.appendJobToChunk(req, e.runningJobs[i], nil) + e.appendJobToChunk(req, e.runningJobs[i], nil, true) } e.cursor += numCurBatch count += numCurBatch @@ -107,7 +108,7 @@ func (e *ShowDDLJobsExec) Next(_ context.Context, req *chunk.Chunk) error { return err } for _, job := range e.cacheJobs { - e.appendJobToChunk(req, job, nil) + e.appendJobToChunk(req, job, nil, true) } e.cursor += len(e.cacheJobs) } @@ -185,7 +186,7 @@ func (e *DDLJobRetriever) initial(txn kv.Transaction, sess sessionctx.Context) e return nil } -func (e *DDLJobRetriever) appendJobToChunk(req *chunk.Chunk, job *model.Job, checker privilege.Manager) { +func (e *DDLJobRetriever) appendJobToChunk(req *chunk.Chunk, job *model.Job, checker privilege.Manager, inShowStmt bool) { schemaName := job.SchemaName tableName := "" finishTS := uint64(0) @@ -231,7 +232,7 @@ func (e *DDLJobRetriever) appendJobToChunk(req *chunk.Chunk, job *model.Job, che req.AppendInt64(0, job.ID) req.AppendString(1, schemaName) req.AppendString(2, tableName) - req.AppendString(3, job.Type.String()+showAddIdxReorgTp(job)) + req.AppendString(3, job.Type.String()) req.AppendString(4, job.SchemaState.String()) req.AppendInt64(5, job.SchemaID) req.AppendInt64(6, job.TableID) @@ -249,12 +250,16 @@ func (e *DDLJobRetriever) appendJobToChunk(req *chunk.Chunk, job *model.Job, che } req.AppendString(11, job.State.String()) if job.Type == model.ActionMultiSchemaChange { - isDistTask := job.ReorgMeta != nil && job.ReorgMeta.IsDistReorg + var useDXF, isCloud bool + if job.ReorgMeta != nil { + useDXF = job.ReorgMeta.IsDistReorg + isCloud = job.ReorgMeta.UseCloudStorage + } for _, subJob := range job.MultiSchemaInfo.SubJobs { req.AppendInt64(0, job.ID) req.AppendString(1, schemaName) req.AppendString(2, tableName) - req.AppendString(3, subJob.Type.String()+" /* subjob */"+showAddIdxReorgTpInSubJob(subJob, isDistTask)) + req.AppendString(3, subJob.Type.String()+" /* subjob */") req.AppendString(4, subJob.SchemaState.String()) req.AppendInt64(5, job.SchemaID) req.AppendInt64(6, job.TableID) @@ -272,46 +277,76 @@ func (e *DDLJobRetriever) appendJobToChunk(req *chunk.Chunk, job *model.Job, che req.AppendNull(10) } req.AppendString(11, subJob.State.String()) + if inShowStmt { + req.AppendString(12, showCommentsFromSubjob(subJob, useDXF, isCloud)) + } else { + req.AppendString(12, job.Query) + } } } + if inShowStmt { + req.AppendString(12, showCommentsFromJob(job)) + } else { + req.AppendString(12, job.Query) + } } -func showAddIdxReorgTp(job *model.Job) string { - if job.Type == model.ActionAddIndex || job.Type == model.ActionAddPrimaryKey { - if job.ReorgMeta != nil { - sb := strings.Builder{} - tp := job.ReorgMeta.ReorgTp.String() - if len(tp) > 0 { - sb.WriteString(" /* ") - sb.WriteString(tp) - if job.ReorgMeta.ReorgTp == model.ReorgTypeLitMerge && - job.ReorgMeta.IsDistReorg && - job.ReorgMeta.UseCloudStorage { - sb.WriteString(" cloud") - } - sb.WriteString(" */") +func showCommentsFromJob(job *model.Job) string { + m := job.ReorgMeta + if m == nil { + return "" + } + var labels []string + if job.Type == model.ActionAddIndex || + job.Type == model.ActionAddPrimaryKey { + switch m.ReorgTp { + case model.ReorgTypeTxn: + labels = append(labels, model.ReorgTypeTxn.String()) + case model.ReorgTypeLitMerge: + labels = append(labels, model.ReorgTypeLitMerge.String()) + if m.IsDistReorg { + labels = append(labels, "DXF") + } + if m.UseCloudStorage { + labels = append(labels, "cloud") } - return sb.String() + case model.ReorgTypeTxnMerge: + labels = append(labels, model.ReorgTypeTxnMerge.String()) } } - return "" + if job.MayNeedReorg() { + concurrency := m.GetConcurrencyOrDefault(int(variable.GetDDLReorgWorkerCounter())) + batchSize := m.GetBatchSizeOrDefault(int(variable.GetDDLReorgBatchSize())) + maxWriteSpeed := m.GetMaxWriteSpeedOrDefault() + if concurrency != variable.DefTiDBDDLReorgWorkerCount { + labels = append(labels, fmt.Sprintf("thread=%d", concurrency)) + } + if batchSize != variable.DefTiDBDDLReorgBatchSize { + labels = append(labels, fmt.Sprintf("batch_size=%d", batchSize)) + } + if maxWriteSpeed != variable.DefTiDBDDLReorgMaxWriteSpeed { + labels = append(labels, fmt.Sprintf("max_write_speed=%d", maxWriteSpeed)) + } + if m.TargetScope != "" { + labels = append(labels, fmt.Sprintf("service_scope=%s", m.TargetScope)) + } + } + return strings.Join(labels, ", ") } -func showAddIdxReorgTpInSubJob(subJob *model.SubJob, useDistTask bool) string { - if subJob.Type == model.ActionAddIndex || subJob.Type == model.ActionAddPrimaryKey { - sb := strings.Builder{} - tp := subJob.ReorgTp.String() - if len(tp) > 0 { - sb.WriteString(" /* ") - sb.WriteString(tp) - if subJob.ReorgTp == model.ReorgTypeLitMerge && useDistTask && subJob.UseCloud { - sb.WriteString(" cloud") - } - sb.WriteString(" */") - } - return sb.String() +func showCommentsFromSubjob(sub *model.SubJob, useDXF, useCloud bool) string { + var labels []string + if sub.ReorgTp == model.ReorgTypeNone { + return "" + } + labels = append(labels, sub.ReorgTp.String()) + if useDXF { + labels = append(labels, "DXF") + } + if useDXF && useCloud { + labels = append(labels, "cloud") } - return "" + return strings.Join(labels, ", ") } func ts2Time(timestamp uint64, loc *time.Location) types.Time { diff --git a/pkg/executor/show_ddl_jobs_test.go b/pkg/executor/show_ddl_jobs_test.go new file mode 100644 index 0000000000000..a5105f0588841 --- /dev/null +++ b/pkg/executor/show_ddl_jobs_test.go @@ -0,0 +1,122 @@ +// Copyright 2024 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 ( + "testing" + + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/stretchr/testify/require" +) + +func TestShowCommentsFromJob(t *testing.T) { + job := &model.Job{} + job.Type = model.ActionAddCheckConstraint + res := showCommentsFromJob(job) + require.Equal(t, "", res) // No reorg meta + + job.Type = model.ActionAddIndex + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeTxn, + } + res = showCommentsFromJob(job) + require.Equal(t, "txn", res) + + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeTxn, + IsDistReorg: true, + } + res = showCommentsFromJob(job) + require.Equal(t, "txn", res) + + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeTxnMerge, + IsDistReorg: true, + } + res = showCommentsFromJob(job) + require.Equal(t, "txn-merge", res) + + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeLitMerge, + IsDistReorg: true, + } + res = showCommentsFromJob(job) + require.Equal(t, "ingest, DXF", res) + + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeLitMerge, + IsDistReorg: true, + UseCloudStorage: true, + } + res = showCommentsFromJob(job) + require.Equal(t, "ingest, DXF, cloud", res) + + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeLitMerge, + IsDistReorg: true, + UseCloudStorage: true, + } + job.ReorgMeta.Concurrency.Store(8) + job.ReorgMeta.BatchSize.Store(1024) + job.ReorgMeta.MaxWriteSpeed.Store(1024 * 1024) + res = showCommentsFromJob(job) + require.Equal(t, "ingest, DXF, cloud, thread=8, batch_size=1024, max_write_speed=1048576", res) + + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeLitMerge, + IsDistReorg: true, + UseCloudStorage: true, + } + job.ReorgMeta.Concurrency.Store(variable.DefTiDBDDLReorgWorkerCount) + job.ReorgMeta.BatchSize.Store(variable.DefTiDBDDLReorgBatchSize) + job.ReorgMeta.MaxWriteSpeed.Store(variable.DefTiDBDDLReorgMaxWriteSpeed) + res = showCommentsFromJob(job) + require.Equal(t, "ingest, DXF, cloud", res) + + job.ReorgMeta = &model.DDLReorgMeta{ + ReorgTp: model.ReorgTypeLitMerge, + IsDistReorg: true, + UseCloudStorage: true, + TargetScope: "background", + } + job.ReorgMeta.Concurrency.Store(variable.DefTiDBDDLReorgWorkerCount) + job.ReorgMeta.BatchSize.Store(variable.DefTiDBDDLReorgBatchSize) + job.ReorgMeta.MaxWriteSpeed.Store(variable.DefTiDBDDLReorgMaxWriteSpeed) + res = showCommentsFromJob(job) + require.Equal(t, "ingest, DXF, cloud, service_scope=background", res) +} + +func TestShowCommentsFromSubJob(t *testing.T) { + subJob := &model.SubJob{ + Type: model.ActionAddPrimaryKey, + } + subJob.ReorgTp = model.ReorgTypeNone + res := showCommentsFromSubjob(subJob, false, false) + require.Equal(t, "", res) + + subJob.ReorgTp = model.ReorgTypeLitMerge + res = showCommentsFromSubjob(subJob, false, false) + require.Equal(t, "ingest", res) + + res = showCommentsFromSubjob(subJob, true, false) + require.Equal(t, "ingest, DXF", res) + + res = showCommentsFromSubjob(subJob, true, true) + require.Equal(t, "ingest, DXF, cloud", res) + + res = showCommentsFromSubjob(subJob, false, true) + require.Equal(t, "ingest", res) +} diff --git a/pkg/executor/simple.go b/pkg/executor/simple.go index 147888a307910..3f9b17fdf5bff 100644 --- a/pkg/executor/simple.go +++ b/pkg/executor/simple.go @@ -176,7 +176,7 @@ func (e *SimpleExec) Next(ctx context.Context, _ *chunk.Chunk) (err error) { case *ast.DropStatsStmt: err = e.executeDropStats(ctx, x) case *ast.SetRoleStmt: - err = e.executeSetRole(x) + err = e.executeSetRole(ctx, x) case *ast.RevokeRoleStmt: err = e.executeRevokeRole(ctx, x) case *ast.SetDefaultRoleStmt: @@ -274,7 +274,7 @@ func (e *SimpleExec) setDefaultRoleRegular(ctx context.Context, s *ast.SetDefaul } for _, role := range s.RoleList { checker := privilege.GetPrivilegeManager(e.Ctx()) - ok := checker.FindEdge(e.Ctx(), role, user) + ok := checker.FindEdge(ctx, role, user) if !ok { if _, rollbackErr := sqlExecutor.ExecuteInternal(internalCtx, "rollback"); rollbackErr != nil { return rollbackErr @@ -348,7 +348,7 @@ func (e *SimpleExec) setDefaultRoleAll(ctx context.Context, s *ast.SetDefaultRol return nil } -func (e *SimpleExec) setDefaultRoleForCurrentUser(s *ast.SetDefaultRoleStmt) (err error) { +func (e *SimpleExec) setDefaultRoleForCurrentUser(ctx context.Context, s *ast.SetDefaultRoleStmt) (err error) { checker := privilege.GetPrivilegeManager(e.Ctx()) user := s.UserList[0] if user.Hostname == "" { @@ -358,7 +358,7 @@ func (e *SimpleExec) setDefaultRoleForCurrentUser(s *ast.SetDefaultRoleStmt) (er if err != nil { return err } - ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnPrivilege) + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnPrivilege) defer e.ReleaseSysSession(ctx, restrictedCtx) sqlExecutor := restrictedCtx.GetSQLExecutor() @@ -388,7 +388,7 @@ func (e *SimpleExec) setDefaultRoleForCurrentUser(s *ast.SetDefaultRoleStmt) (er if i > 0 { sqlescape.MustFormatSQL(sql, ",") } - ok := checker.FindEdge(e.Ctx(), role, user) + ok := checker.FindEdge(ctx, role, user) if !ok { return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(role.String(), user.String()) } @@ -409,6 +409,14 @@ func (e *SimpleExec) setDefaultRoleForCurrentUser(s *ast.SetDefaultRoleStmt) (er return nil } +func userIdentityToUserList(specs []*auth.UserIdentity) []string { + users := make([]string, 0, len(specs)) + for _, user := range specs { + users = append(users, user.Username) + } + return users +} + func (e *SimpleExec) executeSetDefaultRole(ctx context.Context, s *ast.SetDefaultRoleStmt) (err error) { sessionVars := e.Ctx().GetSessionVars() checker := privilege.GetPrivilegeManager(e.Ctx()) @@ -419,11 +427,12 @@ func (e *SimpleExec) executeSetDefaultRole(ctx context.Context, s *ast.SetDefaul if len(s.UserList) == 1 && sessionVars.User != nil { u, h := s.UserList[0].Username, s.UserList[0].Hostname if u == sessionVars.User.Username && h == sessionVars.User.AuthHostname { - err = e.setDefaultRoleForCurrentUser(s) + err = e.setDefaultRoleForCurrentUser(ctx, s) if err != nil { return err } - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + users := userIdentityToUserList(s.UserList) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(users) } } @@ -445,10 +454,11 @@ func (e *SimpleExec) executeSetDefaultRole(ctx context.Context, s *ast.SetDefaul if err != nil { return } - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + users := userIdentityToUserList(s.UserList) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(users) } -func (e *SimpleExec) setRoleRegular(s *ast.SetRoleStmt) error { +func (e *SimpleExec) setRoleRegular(ctx context.Context, s *ast.SetRoleStmt) error { // Deal with SQL like `SET ROLE role1, role2;` checkDup := make(map[string]*auth.RoleIdentity, len(s.RoleList)) // Check whether RoleNameList contain duplicate role name. @@ -462,7 +472,7 @@ func (e *SimpleExec) setRoleRegular(s *ast.SetRoleStmt) error { } checker := privilege.GetPrivilegeManager(e.Ctx()) - ok, roleName := checker.ActiveRoles(e.Ctx(), roleList) + ok, roleName := checker.ActiveRoles(ctx, e.Ctx(), roleList) if !ok { u := e.Ctx().GetSessionVars().User return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(roleName, u.String()) @@ -470,12 +480,12 @@ func (e *SimpleExec) setRoleRegular(s *ast.SetRoleStmt) error { return nil } -func (e *SimpleExec) setRoleAll() error { +func (e *SimpleExec) setRoleAll(ctx context.Context) error { // Deal with SQL like `SET ROLE ALL;` checker := privilege.GetPrivilegeManager(e.Ctx()) user, host := e.Ctx().GetSessionVars().User.AuthUsername, e.Ctx().GetSessionVars().User.AuthHostname roles := checker.GetAllRoles(user, host) - ok, roleName := checker.ActiveRoles(e.Ctx(), roles) + ok, roleName := checker.ActiveRoles(ctx, e.Ctx(), roles) if !ok { u := e.Ctx().GetSessionVars().User return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(roleName, u.String()) @@ -483,7 +493,7 @@ func (e *SimpleExec) setRoleAll() error { return nil } -func (e *SimpleExec) setRoleAllExcept(s *ast.SetRoleStmt) error { +func (e *SimpleExec) setRoleAllExcept(ctx context.Context, s *ast.SetRoleStmt) error { // Deal with SQL like `SET ROLE ALL EXCEPT role1, role2;` for _, r := range s.RoleList { if r.Hostname == "" { @@ -514,7 +524,7 @@ func (e *SimpleExec) setRoleAllExcept(s *ast.SetRoleStmt) error { } afterExcept := filter(roles, banned) - ok, roleName := checker.ActiveRoles(e.Ctx(), afterExcept) + ok, roleName := checker.ActiveRoles(ctx, e.Ctx(), afterExcept) if !ok { u := e.Ctx().GetSessionVars().User return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(roleName, u.String()) @@ -522,12 +532,12 @@ func (e *SimpleExec) setRoleAllExcept(s *ast.SetRoleStmt) error { return nil } -func (e *SimpleExec) setRoleDefault() error { +func (e *SimpleExec) setRoleDefault(ctx context.Context) error { // Deal with SQL like `SET ROLE DEFAULT;` checker := privilege.GetPrivilegeManager(e.Ctx()) user, host := e.Ctx().GetSessionVars().User.AuthUsername, e.Ctx().GetSessionVars().User.AuthHostname - roles := checker.GetDefaultRoles(user, host) - ok, roleName := checker.ActiveRoles(e.Ctx(), roles) + roles := checker.GetDefaultRoles(ctx, user, host) + ok, roleName := checker.ActiveRoles(ctx, e.Ctx(), roles) if !ok { u := e.Ctx().GetSessionVars().User return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(roleName, u.String()) @@ -535,11 +545,11 @@ func (e *SimpleExec) setRoleDefault() error { return nil } -func (e *SimpleExec) setRoleNone() error { +func (e *SimpleExec) setRoleNone(ctx context.Context) error { // Deal with SQL like `SET ROLE NONE;` checker := privilege.GetPrivilegeManager(e.Ctx()) roles := make([]*auth.RoleIdentity, 0) - ok, roleName := checker.ActiveRoles(e.Ctx(), roles) + ok, roleName := checker.ActiveRoles(ctx, e.Ctx(), roles) if !ok { u := e.Ctx().GetSessionVars().User return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(roleName, u.String()) @@ -547,18 +557,18 @@ func (e *SimpleExec) setRoleNone() error { return nil } -func (e *SimpleExec) executeSetRole(s *ast.SetRoleStmt) error { +func (e *SimpleExec) executeSetRole(ctx context.Context, s *ast.SetRoleStmt) error { switch s.SetRoleOpt { case ast.SetRoleRegular: - return e.setRoleRegular(s) + return e.setRoleRegular(ctx, s) case ast.SetRoleAll: - return e.setRoleAll() + return e.setRoleAll(ctx) case ast.SetRoleAllExcept: - return e.setRoleAllExcept(s) + return e.setRoleAllExcept(ctx, s) case ast.SetRoleNone: - return e.setRoleNone() + return e.setRoleNone(ctx) case ast.SetRoleDefault: - return e.setRoleDefault() + return e.setRoleDefault(ctx) } return nil } @@ -754,11 +764,12 @@ func (e *SimpleExec) executeRevokeRole(ctx context.Context, s *ast.RevokeRoleStm if checker == nil { return errors.New("miss privilege checker") } - if ok, roleName := checker.ActiveRoles(e.Ctx(), activeRoles); !ok { + if ok, roleName := checker.ActiveRoles(ctx, e.Ctx(), activeRoles); !ok { u := e.Ctx().GetSessionVars().User return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(roleName, u.String()) } - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + userList := userIdentityToUserList(s.Users) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(userList) } func (e *SimpleExec) executeCommit() { @@ -1269,7 +1280,8 @@ func (e *SimpleExec) executeCreateUser(ctx context.Context, s *ast.CreateUserStm if _, err := sqlExecutor.ExecuteInternal(internalCtx, "commit"); err != nil { return errors.Trace(err) } - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + userList := userIdentityToUserList(users) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(userList) } func isRole(ctx context.Context, sqlExecutor sqlexec.SQLExecutor, name, host string) (bool, error) { @@ -1766,15 +1778,15 @@ func (e *SimpleExec) executeAlterUser(ctx context.Context, s *ast.AlterUserStmt) if !(hasCreateUserPriv || hasSystemSchemaPriv) { return plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs("CREATE USER") } - if checker.RequestDynamicVerificationWithUser("SYSTEM_USER", false, spec.User) && !(hasSystemUserPriv || hasRestrictedUserPriv) { + if checker.RequestDynamicVerificationWithUser(ctx, "SYSTEM_USER", false, spec.User) && !(hasSystemUserPriv || hasRestrictedUserPriv) { return plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs("SYSTEM_USER or SUPER") } - if sem.IsEnabled() && checker.RequestDynamicVerificationWithUser("RESTRICTED_USER_ADMIN", false, spec.User) && !hasRestrictedUserPriv { + if sem.IsEnabled() && checker.RequestDynamicVerificationWithUser(ctx, "RESTRICTED_USER_ADMIN", false, spec.User) && !hasRestrictedUserPriv { return plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs("RESTRICTED_USER_ADMIN") } } - exists, err := userExistsInternal(ctx, sqlExecutor, spec.User.Username, spec.User.Hostname) + exists, _, err := userExistsInternal(ctx, sqlExecutor, spec.User.Username, spec.User.Hostname) if err != nil { return err } @@ -1783,6 +1795,10 @@ func (e *SimpleExec) executeAlterUser(ctx context.Context, s *ast.AlterUserStmt) failedUsers = append(failedUsers, user) continue } + currentAuthPlugin, err := privilege.GetPrivilegeManager(e.Ctx()).GetAuthPlugin(ctx, spec.User.Username, spec.User.Hostname) + if err != nil { + return err + } type AuthTokenOptionHandler int const ( @@ -1795,10 +1811,6 @@ func (e *SimpleExec) executeAlterUser(ctx context.Context, s *ast.AlterUserStmt) RequireAuthTokenOptions ) authTokenOptionHandler := noNeedAuthTokenOptions - currentAuthPlugin, err := privilege.GetPrivilegeManager(e.Ctx()).GetAuthPlugin(spec.User.Username, spec.User.Hostname) - if err != nil { - return err - } if currentAuthPlugin == mysql.AuthTiDBAuthToken { authTokenOptionHandler = OptionalAuthTokenOptions } @@ -2029,7 +2041,8 @@ func (e *SimpleExec) executeAlterUser(ctx context.Context, s *ast.AlterUserStmt) if _, err := sqlExecutor.ExecuteInternal(ctx, "commit"); err != nil { return err } - if err = domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(); err != nil { + users := userSpecToUserList(s.Specs) + if err = domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(users); err != nil { return err } if disableSandBoxMode { @@ -2105,7 +2118,8 @@ func (e *SimpleExec) executeGrantRole(ctx context.Context, s *ast.GrantRoleStmt) if _, err := sqlExecutor.ExecuteInternal(internalCtx, "commit"); err != nil { return err } - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + userList := userIdentityToUserList(s.Users) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(userList) } // Should cover same internal mysql.* tables as DROP USER, so this function is very similar @@ -2130,7 +2144,7 @@ func (e *SimpleExec) executeRenameUser(s *ast.RenameUserStmt) error { if len(newUser.Hostname) > auth.HostNameMaxLength { return exeerrors.ErrWrongStringLength.GenWithStackByArgs(newUser.Hostname, "host name", auth.HostNameMaxLength) } - exists, err := userExistsInternal(ctx, sqlExecutor, oldUser.Username, oldUser.Hostname) + exists, _, err := userExistsInternal(ctx, sqlExecutor, oldUser.Username, oldUser.Hostname) if err != nil { return err } @@ -2139,7 +2153,7 @@ func (e *SimpleExec) executeRenameUser(s *ast.RenameUserStmt) error { break } - exists, err = userExistsInternal(ctx, sqlExecutor, newUser.Username, newUser.Hostname) + exists, _, err = userExistsInternal(ctx, sqlExecutor, newUser.Username, newUser.Hostname) if err != nil { return err } @@ -2220,7 +2234,13 @@ func (e *SimpleExec) executeRenameUser(s *ast.RenameUserStmt) error { if _, err := sqlExecutor.ExecuteInternal(ctx, "commit"); err != nil { return err } - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + + userList := make([]string, 0, len(s.UserToUsers)*2) + for _, users := range s.UserToUsers { + userList = append(userList, users.OldUser.Username) + userList = append(userList, users.NewUser.Username) + } + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(userList) } func renameUserHostInSystemTable(sqlExecutor sqlexec.SQLExecutor, tableName, usernameColumn, hostColumn string, users *ast.UserToUser) error { @@ -2291,7 +2311,7 @@ func (e *SimpleExec) executeDropUser(ctx context.Context, s *ast.DropUserStmt) e // Because in TiDB SUPER can be used as a substitute for any dynamic privilege, this effectively means that // any user with SUPER requires a user with SUPER to be able to DROP the user. // We also allow RESTRICTED_USER_ADMIN to count for simplicity. - if checker.RequestDynamicVerificationWithUser("SYSTEM_USER", false, user) && !(hasSystemUserPriv || hasRestrictedUserPriv) { + if checker.RequestDynamicVerificationWithUser(ctx, "SYSTEM_USER", false, user) && !(hasSystemUserPriv || hasRestrictedUserPriv) { if _, err := sqlExecutor.ExecuteInternal(internalCtx, "rollback"); err != nil { return err } @@ -2412,12 +2432,13 @@ func (e *SimpleExec) executeDropUser(ctx context.Context, s *ast.DropUserStmt) e } if s.IsDropRole { // apply new activeRoles - if ok, roleName := checker.ActiveRoles(e.Ctx(), activeRoles); !ok { + if ok, roleName := checker.ActiveRoles(ctx, e.Ctx(), activeRoles); !ok { u := e.Ctx().GetSessionVars().User return exeerrors.ErrRoleNotGranted.GenWithStackByArgs(roleName, u.String()) } } - return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + userList := userIdentityToUserList(s.UserList) + return domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege(userList) } func userExists(ctx context.Context, sctx sessionctx.Context, name string, host string) (bool, error) { @@ -2431,12 +2452,12 @@ func userExists(ctx context.Context, sctx sessionctx.Context, name string, host } // use the same internal executor to read within the same transaction, otherwise same as userExists -func userExistsInternal(ctx context.Context, sqlExecutor sqlexec.SQLExecutor, name string, host string) (bool, error) { +func userExistsInternal(ctx context.Context, sqlExecutor sqlexec.SQLExecutor, name string, host string) (bool, string, error) { sql := new(strings.Builder) sqlescape.MustFormatSQL(sql, `SELECT * FROM %n.%n WHERE User=%? AND Host=%? FOR UPDATE;`, mysql.SystemDB, mysql.UserTable, name, strings.ToLower(host)) recordSet, err := sqlExecutor.ExecuteInternal(ctx, sql.String()) if err != nil { - return false, err + return false, "", err } req := recordSet.NewChunk(nil) err = recordSet.Next(ctx, req) @@ -2444,11 +2465,27 @@ func userExistsInternal(ctx context.Context, sqlExecutor sqlexec.SQLExecutor, na if err == nil { rows = req.NumRows() } + + var authPlugin string + colIdx := -1 + for i, f := range recordSet.Fields() { + if f.ColumnAsName.L == "plugin" { + colIdx = i + } + } + if rows == 1 { + // rows can only be 0 or 1 + // When user + host does not exist, the rows is 0 + // When user + host exists, the rows is 1 because user + host is primary key of the table. + row := req.GetRow(0) + authPlugin = row.GetString(colIdx) + } + errClose := recordSet.Close() if errClose != nil { - return false, errClose + return false, "", errClose } - return rows > 0, err + return rows > 0, authPlugin, err } func (e *SimpleExec) executeSetPwd(ctx context.Context, s *ast.SetPwdStmt) error { @@ -2485,13 +2522,14 @@ func (e *SimpleExec) executeSetPwd(ctx context.Context, s *ast.SetPwdStmt) error h = s.User.Hostname checker := privilege.GetPrivilegeManager(e.Ctx()) + checker.MatchIdentity(ctx, u, h, false) activeRoles := e.Ctx().GetSessionVars().ActiveRoles if checker != nil && !checker.RequestVerification(activeRoles, "", "", "", mysql.SuperPriv) { currUser := e.Ctx().GetSessionVars().User return exeerrors.ErrDBaccessDenied.GenWithStackByArgs(currUser.Username, currUser.Hostname, "mysql") } } - exists, err := userExistsInternal(ctx, sqlExecutor, u, h) + exists, _, err := userExistsInternal(ctx, sqlExecutor, u, h) if err != nil { return err } @@ -2506,7 +2544,7 @@ func (e *SimpleExec) executeSetPwd(ctx context.Context, s *ast.SetPwdStmt) error disableSandboxMode = true } - authplugin, err := privilege.GetPrivilegeManager(e.Ctx()).GetAuthPlugin(u, h) + authplugin, err := privilege.GetPrivilegeManager(e.Ctx()).GetAuthPlugin(ctx, u, h) if err != nil { return err } @@ -2570,7 +2608,7 @@ func (e *SimpleExec) executeSetPwd(ctx context.Context, s *ast.SetPwdStmt) error if _, err := sqlExecutor.ExecuteInternal(ctx, "commit"); err != nil { return err } - err = domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege() + err = domain.GetDomain(e.Ctx()).NotifyUpdatePrivilege([]string{u}) if err != nil { return err } @@ -2702,7 +2740,7 @@ func (e *SimpleExec) executeFlush(s *ast.FlushStmt) error { } case ast.FlushPrivileges: dom := domain.GetDomain(e.Ctx()) - return dom.NotifyUpdatePrivilege() + return dom.NotifyUpdateAllUsersPrivilege() case ast.FlushTiDBPlugin: dom := domain.GetDomain(e.Ctx()) for _, pluginName := range s.Plugins { diff --git a/pkg/executor/stale_txn_test.go b/pkg/executor/stale_txn_test.go index 0b5f959f09d40..3de2cdb16ea64 100644 --- a/pkg/executor/stale_txn_test.go +++ b/pkg/executor/stale_txn_test.go @@ -18,6 +18,7 @@ import ( "bytes" "context" "fmt" + "strconv" "testing" "time" @@ -1372,14 +1373,30 @@ func TestStaleTSO(t *testing.T) { tk.MustExec("create table t (id int)") tk.MustExec("insert into t values(1)") + ts1, err := strconv.ParseUint(tk.MustQuery("select json_extract(@@tidb_last_txn_info, '$.commit_ts')").Rows()[0][0].(string), 10, 64) + require.NoError(t, err) + + // Wait until the physical advances for 1s + var currentTS uint64 + for { + tk.MustExec("begin") + currentTS, err = strconv.ParseUint(tk.MustQuery("select @@tidb_current_ts").Rows()[0][0].(string), 10, 64) + require.NoError(t, err) + tk.MustExec("rollback") + if oracle.GetTimeFromTS(currentTS).After(oracle.GetTimeFromTS(ts1).Add(time.Second)) { + break + } + time.Sleep(time.Millisecond * 100) + } asOfExprs := []string{ - "now(3) - interval 1 second", - "current_time() - interval 1 second", - "curtime() - interval 1 second", + "now(3) - interval 10 second", + "current_time() - interval 10 second", + "curtime() - interval 10 second", } - nextTSO := oracle.GoTimeToTS(time.Now().Add(2 * time.Second)) + nextPhysical := oracle.GetPhysical(oracle.GetTimeFromTS(currentTS).Add(10 * time.Second)) + nextTSO := oracle.ComposeTS(nextPhysical, oracle.ExtractLogical(currentTS)) require.Nil(t, failpoint.Enable("github.com/pingcap/tidb/pkg/sessiontxn/staleread/mockStaleReadTSO", fmt.Sprintf("return(%d)", nextTSO))) defer failpoint.Disable("github.com/pingcap/tidb/pkg/sessiontxn/staleread/mockStaleReadTSO") for _, expr := range asOfExprs { diff --git a/pkg/executor/stmtsummary.go b/pkg/executor/stmtsummary.go index 6bea11a1699b4..990a1808a66f3 100644 --- a/pkg/executor/stmtsummary.go +++ b/pkg/executor/stmtsummary.go @@ -159,10 +159,11 @@ func (e *stmtSummaryRetriever) initSummaryRowsReader(sctx sessionctx.Context) (* } var rows [][]types.Datum - if isCurrentTable(e.table.Name.O) { + if isCumulativeTable(e.table.Name.O) { + rows = reader.GetStmtSummaryCumulativeRows() + } else if isCurrentTable(e.table.Name.O) { rows = reader.GetStmtSummaryCurrentRows() - } - if isHistoryTable(e.table.Name.O) { + } else if isHistoryTable(e.table.Name.O) { rows = reader.GetStmtSummaryHistoryRows() } return newSimpleRowsReader(rows), nil @@ -345,7 +346,18 @@ func isClusterTable(originalTableName string) bool { switch originalTableName { case infoschema.ClusterTableStatementsSummary, infoschema.ClusterTableStatementsSummaryHistory, - infoschema.ClusterTableStatementsSummaryEvicted: + infoschema.ClusterTableStatementsSummaryEvicted, + infoschema.ClusterTableTiDBStatementsStats: + return true + } + + return false +} + +func isCumulativeTable(originalTableName string) bool { + switch originalTableName { + case infoschema.TableTiDBStatementsStats, + infoschema.ClusterTableTiDBStatementsStats: return true } diff --git a/pkg/executor/temporary_table_test.go b/pkg/executor/temporary_table_test.go index 0add5255f507f..4a7f7808b2517 100644 --- a/pkg/executor/temporary_table_test.go +++ b/pkg/executor/temporary_table_test.go @@ -93,13 +93,13 @@ func assertTemporaryTableNoNetwork(t *testing.T, createTable func(*testkit.TestK tk.MustExec("insert into tmp_t values (1, 1, 1)") tk.MustExec("insert into tmp_t values (2, 2, 2)") - // Make sure the fail point works. - // With that failpoint, all requests to the TiKV is discard. - rs, err := tk1.Exec("select * from normal") + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + rs, err := tk1.ExecWithContext(ctx, "select * from normal") require.NoError(t, err) blocked := make(chan struct{}, 1) - ctx, cancelFunc := context.WithCancel(context.Background()) done.Add(1) go func() { defer done.Done() @@ -109,10 +109,10 @@ func assertTemporaryTableNoNetwork(t *testing.T, createTable func(*testkit.TestK select { case <-blocked: - cancelFunc() + cancel() require.FailNow(t, "The query should block when the failpoint is enabled.") case <-time.After(200 * time.Millisecond): - cancelFunc() + cancel() } // Check the temporary table do not send request to TiKV. diff --git a/pkg/executor/test/admintest/BUILD.bazel b/pkg/executor/test/admintest/BUILD.bazel index f7a58178265aa..f0794f6281482 100644 --- a/pkg/executor/test/admintest/BUILD.bazel +++ b/pkg/executor/test/admintest/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 23, + shard_count = 24, deps = [ "//pkg/config", "//pkg/ddl", diff --git a/pkg/executor/test/admintest/admin_test.go b/pkg/executor/test/admintest/admin_test.go index 5abeac81b11a0..bf90c761f1bc5 100644 --- a/pkg/executor/test/admintest/admin_test.go +++ b/pkg/executor/test/admintest/admin_test.go @@ -2085,16 +2085,58 @@ func TestAdminCheckGlobalIndexDuringDDL(t *testing.T) { tk.MustExec(fmt.Sprintf("insert admin_test values (%d, %d, %d)", i*5+1, i, i*5+1)) } - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", onJobUpdatedExportedFunc) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", onJobUpdatedExportedFunc) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockDMLExecution", "1*return(true)->return(false)")) tk.MustExec("alter table admin_test truncate partition p1") require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/mockDMLExecution")) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") - // Should have 3 different schema states, `none`, `deleteOnly`, `deleteReorg` - require.Len(t, schemaMap, 3) + // Should have 4 different schema states, `none`, `writeOnly`, `deleteOnly`, `deleteReorg` + require.Len(t, schemaMap, 4) for ss := range schemaMap { delete(schemaMap, ss) } } } + +func TestAdminCheckGeneratedColumns(t *testing.T) { + store, domain := testkit.CreateMockStoreAndDomain(t) + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("DROP TABLE IF EXISTS t") + tk.MustExec("CREATE TABLE t(pk int PRIMARY KEY CLUSTERED, val int, gen int GENERATED ALWAYS AS (val * pk) VIRTUAL, KEY idx_gen(gen))") + tk.MustExec("INSERT INTO t(pk, val) VALUES (2, 5)") + tk.MustExec("ADMIN CHECK TABLE t") + + // Make some corrupted index. Build the index information. + sctx := mock.NewContext() + sctx.Store = store + ctx := sctx.GetTableCtx() + is := domain.InfoSchema() + dbName := pmodel.NewCIStr("test") + tblName := pmodel.NewCIStr("t") + tbl, err := is.TableByName(context.Background(), dbName, tblName) + require.NoError(t, err) + tblInfo := tbl.Meta() + idxInfo := tblInfo.Indices[0] + tk.Session().GetSessionVars().IndexLookupSize = 3 + tk.Session().GetSessionVars().MaxChunkSize = 3 + + // Simulate inconsistent index column + indexOpr := tables.NewIndex(tblInfo.ID, tblInfo, idxInfo) + txn, err := store.Begin() + require.NoError(t, err) + err = indexOpr.Delete(ctx, txn, types.MakeDatums(10), kv.IntHandle(2)) + require.NoError(t, err) + _, err = indexOpr.Create(ctx, txn, types.MakeDatums(5), kv.IntHandle(2), nil) + require.NoError(t, err) + err = txn.Commit(context.Background()) + require.NoError(t, err) + + for _, enabled := range []bool{false, true} { + tk.MustExec(fmt.Sprintf("set tidb_enable_fast_table_check = %v", enabled)) + err = tk.ExecToErr("admin check table t") + require.Error(t, err) + } +} diff --git a/pkg/executor/test/analyzetest/analyze_test.go b/pkg/executor/test/analyzetest/analyze_test.go index 6e0d1d96f1acc..96428dd711c4a 100644 --- a/pkg/executor/test/analyzetest/analyze_test.go +++ b/pkg/executor/test/analyzetest/analyze_test.go @@ -3021,7 +3021,7 @@ func TestAnalyzeMVIndex(t *testing.T) { tk.MustQuery("show stats_meta").CheckAt([]int{0, 1, 4, 5}, testkit.Rows("test t 0 27")) tk.MustQuery("show stats_histograms").Sort().CheckAt([]int{0, 1, 3, 4, 6, 7, 8, 9, 10}, testkit.Rows( // db_name, table_name, column_name, is_index, distinct_count, null_count, avg_col_size, correlation, load_status - "test t a 0 1 0 1 1 allEvicted", + "test t a 0 1 0 1 1 allLoaded", "test t ia 1 1 0 0 0 allLoaded", "test t ij_binary 1 15 0 0 0 allLoaded", "test t ij_char 1 11 0 0 0 allLoaded", @@ -3031,6 +3031,7 @@ func TestAnalyzeMVIndex(t *testing.T) { )) tk.MustQuery("show stats_topn").Check(testkit.Rows( // db_name, table_name, partition_name, column_name, is_index, value, count + "test t a 0 1 27", "test t ia 1 1 27", "test t ij_signed 1 0 27", "test t ij_signed 1 1 27", diff --git a/pkg/executor/test/ddl/BUILD.bazel b/pkg/executor/test/ddl/BUILD.bazel index 0b1818981dd53..1af675ad75759 100644 --- a/pkg/executor/test/ddl/BUILD.bazel +++ b/pkg/executor/test/ddl/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 20, + shard_count = 21, deps = [ "//pkg/config", "//pkg/ddl/schematracker", @@ -32,6 +32,7 @@ go_test( "//pkg/util/chunk", "//pkg/util/dbterror", "//pkg/util/dbterror/plannererrors", + "@com_github_docker_go_units//:go-units", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//tikv", diff --git a/pkg/executor/test/ddl/ddl_test.go b/pkg/executor/test/ddl/ddl_test.go index ff2262c45e9a3..b1c6eea312c8f 100644 --- a/pkg/executor/test/ddl/ddl_test.go +++ b/pkg/executor/test/ddl/ddl_test.go @@ -22,6 +22,7 @@ import ( "testing" "time" + "github.com/docker/go-units" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/ddl/schematracker" ddltestutil "github.com/pingcap/tidb/pkg/ddl/testutil" @@ -888,6 +889,31 @@ func TestSetDDLErrorCountLimit(t *testing.T) { res.Check(testkit.Rows("100")) } +func TestSetDDLReorgMaxWriteSpeed(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + require.Equal(t, int64(variable.DefTiDBDDLReorgMaxWriteSpeed), variable.DDLReorgMaxWriteSpeed.Load()) + + // valid values + for _, val := range []int64{1, 0, 100, 1024 * 1024, 2147483647, units.PiB} { + tk.MustExec(fmt.Sprintf("set @@global.tidb_ddl_reorg_max_write_speed = %d", val)) + require.Equal(t, val, variable.DDLReorgMaxWriteSpeed.Load()) + tk.MustQuery("select @@global.tidb_ddl_reorg_max_write_speed").Check(testkit.Rows(strconv.FormatInt(val, 10))) + } + for _, val := range []string{"1", "0", "100", "2KB", "3MiB", "4 gb", "2147483647", "1125899906842624" /* 1PiB */} { + tk.MustExec(fmt.Sprintf("set @@global.tidb_ddl_reorg_max_write_speed = '%s'", val)) + expected, err := units.RAMInBytes(val) + require.NoError(t, err) + require.Equal(t, expected, variable.DDLReorgMaxWriteSpeed.Load()) + tk.MustQuery("select @@global.tidb_ddl_reorg_max_write_speed").Check(testkit.Rows(strconv.FormatInt(expected, 10))) + } + + // invalid values + tk.MustExecToErr("set @@global.tidb_ddl_reorg_max_write_speed = -1") + tk.MustExecToErr("set @@global.tidb_ddl_reorg_max_write_speed = invalid_val") + tk.MustExecToErr("set @@global.tidb_ddl_reorg_max_write_speed = %d", units.PiB+1) +} + func TestLoadDDLDistributeVars(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/executor/test/executor/executor_test.go b/pkg/executor/test/executor/executor_test.go index b9efca75dd47d..b438127b59571 100644 --- a/pkg/executor/test/executor/executor_test.go +++ b/pkg/executor/test/executor/executor_test.go @@ -1972,6 +1972,14 @@ func TestAdapterStatement(t *testing.T) { require.NoError(t, err) require.Equal(t, "select 1", stmt.OriginText()) + gbkSQL := "select '\xb1\xed1'" + stmts, _, err := s.ParseSQL(gbkSQL, parser.CharsetClient("gbk")) + require.NoError(t, err) + stmt, err = compiler.Compile(context.TODO(), stmts[0]) + require.NoError(t, err) + require.Equal(t, "select '表1'", stmt.Text()) + require.Equal(t, gbkSQL, stmt.OriginText()) + stmtNode, err = s.ParseOneStmt("create table test.t (a int)", "", "") require.NoError(t, err) stmt, err = compiler.Compile(context.TODO(), stmtNode) @@ -2441,7 +2449,7 @@ func TestAdmin(t *testing.T) { err = r.Next(ctx, req) require.NoError(t, err) row = req.GetRow(0) - require.Equal(t, 12, row.Len()) + require.Equal(t, 13, row.Len()) txn, err := store.Begin() require.NoError(t, err) historyJobs, err := ddl.GetLastNHistoryDDLJobs(meta.NewMutator(txn), ddl.DefNumHistoryJobs) @@ -2457,7 +2465,7 @@ func TestAdmin(t *testing.T) { err = r.Next(ctx, req) require.NoError(t, err) row = req.GetRow(0) - require.Equal(t, 12, row.Len()) + require.Equal(t, 13, row.Len()) require.Equal(t, historyJobs[0].ID, row.GetInt64(0)) require.NoError(t, err) @@ -3002,7 +3010,6 @@ func TestIssue48756(t *testing.T) { )) tk.MustQuery("show warnings").Check(testkit.Rows( "Warning 1292 Incorrect time value: '120120519090607'", - "Warning 1105 ", )) } diff --git a/pkg/executor/test/issuetest/BUILD.bazel b/pkg/executor/test/issuetest/BUILD.bazel index ddc7f5d16aa03..b979be403744f 100644 --- a/pkg/executor/test/issuetest/BUILD.bazel +++ b/pkg/executor/test/issuetest/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 23, + shard_count = 24, deps = [ "//pkg/autoid_service", "//pkg/config", diff --git a/pkg/executor/test/issuetest/executor_issue_test.go b/pkg/executor/test/issuetest/executor_issue_test.go index ea5619bc8d11b..67a16041ac984 100644 --- a/pkg/executor/test/issuetest/executor_issue_test.go +++ b/pkg/executor/test/issuetest/executor_issue_test.go @@ -72,8 +72,10 @@ func TestIssue24210(t *testing.T) { func TestUnionIssue(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) - // Issue25506 + // Issue56640 tk.MustExec("use test") + tk.MustQuery("(select cast('abcdefghijklmnopqrstuvwxyz' as char) as c1) union all (select 1 where false)").Check(testkit.Rows("abcdefghijklmnopqrstuvwxyz")) + // Issue25506 tk.MustExec("drop table if exists tbl_3, tbl_23") tk.MustExec("create table tbl_3 (col_15 bit(20))") tk.MustExec("insert into tbl_3 values (0xFFFF)") @@ -90,6 +92,10 @@ func TestUnionIssue(t *testing.T) { tk.MustExec("drop table if exists t1, t2") tk.MustExec("create table t1 (id int);") tk.MustExec("create table t2 (id int, c int);") + // Issue56587 + tk.MustQuery("select quote(cast('abc' as char)) union all select '1'").Sort().Check(testkit.Rows("'abc'", "1")) + tk.MustQuery(`select elt(2, "1", cast('abc' as char)) union all select "12" where false`).Check(testkit.Rows("abc")) + tk.MustQuery(`select hex(cast('1' as char)) union all select '1'`).Sort().Check(testkit.Rows("1", "31")) testCases := []struct { sql string @@ -315,12 +321,14 @@ func TestIndexJoin31494(t *testing.T) { insertStr += fmt.Sprintf(", (%d, %d)", i, i) } tk.MustExec(insertStr) + tk.MustExec("analyze table t1") tk.MustExec("create table t2(a int(11) default null, b int(11) default null, c int(11) default null)") insertStr = "insert into t2 values(1, 1, 1)" for i := 1; i < 32768; i++ { insertStr += fmt.Sprintf(", (%d, %d, %d)", i, i, i) } tk.MustExec(insertStr) + tk.MustExec("analyze table t2") sm := &testkit.MockSessionManager{ PS: make([]*util.ProcessInfo, 0), } @@ -745,3 +753,22 @@ func TestCalculateBatchSize(t *testing.T) { require.Equal(t, 258, executor.CalculateBatchSize(10, 1024, 258)) require.Equal(t, 1024, executor.CalculateBatchSize(0, 1024, 20000)) } + +func TestIssue55881(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test;") + tk.MustExec("drop table if exists aaa;") + tk.MustExec("drop table if exists bbb;") + tk.MustExec("create table aaa(id int, value int);") + tk.MustExec("create table bbb(id int, value int);") + tk.MustExec("insert into aaa values(1,2),(2,3)") + tk.MustExec("insert into bbb values(1,2),(2,3),(3,4)") + // set tidb_executor_concurrency to 1 to let the issue happens with high probability. + tk.MustExec("set tidb_executor_concurrency=1;") + // this is a random issue, so run it 100 times to increase the probability of the issue. + for i := 0; i < 100; i++ { + tk.MustQuery("with cte as (select * from aaa) select id, (select id from (select * from aaa where aaa.id != bbb.id union all select * from cte union all select * from cte) d limit 1)," + + "(select max(value) from (select * from cte union all select * from cte union all select * from aaa where aaa.id > bbb.id)) from bbb;") + } +} diff --git a/pkg/executor/test/jointest/hashjoin/hash_join_test.go b/pkg/executor/test/jointest/hashjoin/hash_join_test.go index e7550657e94ef..ccb369c84140e 100644 --- a/pkg/executor/test/jointest/hashjoin/hash_join_test.go +++ b/pkg/executor/test/jointest/hashjoin/hash_join_test.go @@ -55,7 +55,7 @@ func TestIndexNestedLoopHashJoin(t *testing.T) { tk.MustExec("analyze table s all columns") // Test IndexNestedLoopHashJoin keepOrder. tk.MustQuery("explain format = 'brief' select /*+ INL_HASH_JOIN(s) */ * from t left join s on t.a=s.a order by t.pk").Check(testkit.Rows( - "IndexHashJoin 100.00 root left outer join, inner:TableReader, outer key:test.t.a, inner key:test.s.a, equal cond:eq(test.t.a, test.s.a)", + "IndexHashJoin 100.00 root left outer join, inner:TableReader, left side:TableReader, outer key:test.t.a, inner key:test.s.a, equal cond:eq(test.t.a, test.s.a)", "├─TableReader(Build) 100.00 root data:TableFullScan", "│ └─TableFullScan 100.00 cop[tikv] table:t keep order:true", "└─TableReader(Probe) 100.00 root data:TableRangeScan", @@ -91,7 +91,7 @@ func TestIndexNestedLoopHashJoin(t *testing.T) { tk.MustExec("set @@tidb_index_join_batch_size=2") tk.MustQuery("desc format = 'brief' 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( "Sort 7.20 root test.t.l_orderkey, test.t.l_linenumber", - "└─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)", + "└─IndexHashJoin 7.20 root semi join, inner:IndexLookUp, left side:TableReader, 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))", " │ └─TableFullScan 9.00 cop[tikv] table:l1 keep order:false", @@ -102,7 +102,7 @@ func TestIndexNestedLoopHashJoin(t *testing.T) { 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", - "└─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)", + "└─IndexHashJoin 7.20 root semi join, inner:IndexLookUp, left side:TableReader, 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))", " │ └─TableFullScan 9.00 cop[tikv] table:l1 keep order:false", @@ -235,7 +235,7 @@ func TestOuterTableBuildHashTableIsuse13933(t *testing.T) { tk.MustExec("insert into s values (1,2),(2,1),(11,11)") tk.MustQuery("select /*+ HASH_JOIN_BUILD(t) */ * from t left join s on s.a > t.a").Sort().Check(testkit.Rows("1 2 11 11", "1 2 2 1", "11 11 ")) tk.MustQuery("explain format = 'brief' select /*+ HASH_JOIN_BUILD(t) */ * from t left join s on s.a > t.a").Check(testkit.Rows( - "HashJoin 99900000.00 root CARTESIAN left outer join, other cond:gt(test.s.a, test.t.a)", + "HashJoin 99900000.00 root CARTESIAN left outer join, left side:TableReader, other cond:gt(test.s.a, test.t.a)", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", "└─TableReader(Probe) 9990.00 root data:Selection", @@ -248,7 +248,7 @@ func TestOuterTableBuildHashTableIsuse13933(t *testing.T) { tk.MustExec("Insert into t values (11,2),(1,2),(5,2)") tk.MustQuery("select /*+ INL_HASH_JOIN(s) */ * from t left join s on s.b=t.b and s.a < t.a;").Sort().Check(testkit.Rows("1 2 ", "11 2 1 2", "5 2 1 2")) tk.MustQuery("explain format = 'brief' select /*+ INL_HASH_JOIN(s) */ * from t left join s on s.b=t.b and s.a < t.a;").Check(testkit.Rows( - "IndexHashJoin 12475.01 root left outer join, inner:IndexLookUp, outer key:test.t.b, inner key:test.s.b, equal cond:eq(test.t.b, test.s.b), other cond:lt(test.s.a, test.t.a)", + "IndexHashJoin 12475.01 root left outer join, inner:IndexLookUp, left side:TableReader, outer key:test.t.b, inner key:test.s.b, equal cond:eq(test.t.b, test.s.b), other cond:lt(test.s.a, test.t.a)", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", "└─IndexLookUp(Probe) 12475.01 root ", diff --git a/pkg/executor/test/oomtest/oom_test.go b/pkg/executor/test/oomtest/oom_test.go index 9644a1aa2dab6..6b41fc80730a2 100644 --- a/pkg/executor/test/oomtest/oom_test.go +++ b/pkg/executor/test/oomtest/oom_test.go @@ -102,6 +102,10 @@ func TestMemTracker4InsertAndReplaceExec(t *testing.T) { tk.Session().GetSessionVars().MemQuotaQuery = -1 oom.ClearMessageFilter() + oom.AddMessageFilter( + "background process exited", + "initialize slot capacity", + ) oom.SetTracker("") tk.MustExec("insert into t_MemTracker4InsertAndReplaceExec select * from t") diff --git a/pkg/executor/test/passwordtest/password_management_test.go b/pkg/executor/test/passwordtest/password_management_test.go index 1a2e04dde5b45..1d66178004d54 100644 --- a/pkg/executor/test/passwordtest/password_management_test.go +++ b/pkg/executor/test/passwordtest/password_management_test.go @@ -218,7 +218,7 @@ func TestPasswordManagement(t *testing.T) { rootTK.MustExec(`set global validate_password.enable = OFF`) rootTK.MustExec(`update mysql.user set Password_last_changed = date_sub(Password_last_changed,interval '3 0:0:1' DAY_SECOND) where user = 'u2' and host = '%'`) - err = domain.GetDomain(rootTK.Session()).NotifyUpdatePrivilege() + err = domain.GetDomain(rootTK.Session()).NotifyUpdateAllUsersPrivilege() require.NoError(t, err) // Password expires and takes effect. err = tk.Session().Auth(&auth.UserIdentity{Username: "u2", Hostname: "%"}, sha1Password("Uu3@22222"), nil, nil) @@ -723,7 +723,7 @@ func TestFailedLoginTrackingAlterUser(t *testing.T) { "JSON_EXTRACT(user_attributes, '$.Password_locking.failed_login_count')," + "JSON_EXTRACT(user_attributes, '$.Password_locking.password_lock_time_days')," + "JSON_EXTRACT(user_attributes, '$.metadata')from mysql.user where user= %? and host = %?" - err := domain.GetDomain(rootTK.Session()).NotifyUpdatePrivilege() + err := domain.GetDomain(rootTK.Session()).NotifyUpdateAllUsersPrivilege() require.NoError(t, err) rootTK.MustExec(`CREATE USER test1 IDENTIFIED BY '1234' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 3 COMMENT 'test'`) err = tk.Session().Auth(&auth.UserIdentity{Username: "test1", Hostname: "%"}, sha1Password("1234"), nil, nil) @@ -924,7 +924,7 @@ func changeAutoLockedLastChanged(tk *testkit.TestKit, ds, user string) { changeTime := time.Now().Add(d).Format(time.UnixDate) SQL = fmt.Sprintf(SQL, changeTime, user) tk.MustExec(SQL) - domain.GetDomain(tk.Session()).NotifyUpdatePrivilege() + domain.GetDomain(tk.Session()).NotifyUpdateAllUsersPrivilege() } func checkUserUserAttributes(tk *testkit.TestKit, user, host, row string) { diff --git a/pkg/executor/test/seqtest/seq_executor_test.go b/pkg/executor/test/seqtest/seq_executor_test.go index 345d3d4aba5cf..1fc1e69803338 100644 --- a/pkg/executor/test/seqtest/seq_executor_test.go +++ b/pkg/executor/test/seqtest/seq_executor_test.go @@ -796,30 +796,34 @@ func HelperTestAdminShowNextID(t *testing.T, store kv.Storage, str string) { tk.MustExec("create table tt(id int primary key auto_increment, c int)") // Start handle is 1. r = tk.MustQuery(str + " tt next_row_id") - r.Check(testkit.Rows("test tt id 1 _TIDB_ROWID", "test tt id 1 AUTO_INCREMENT")) + r.Check(testkit.Rows("test tt id 1 _TIDB_ROWID")) // After rebasing auto ID, row ID is 20 + step + 1. tk.MustExec("insert into tt values(20, 1)") r = tk.MustQuery(str + " tt next_row_id") - r.Check(testkit.Rows("test tt id 31 _TIDB_ROWID", "test tt id 1 AUTO_INCREMENT")) + r.Check(testkit.Rows("test tt id 31 _TIDB_ROWID")) // test for renaming the table tk.MustExec("drop database if exists test1") tk.MustExec("create database test1") tk.MustExec("rename table test.tt to test1.tt") tk.MustExec("use test1") r = tk.MustQuery(str + " tt next_row_id") - r.Check(testkit.Rows("test1 tt id 31 _TIDB_ROWID", "test1 tt id 1 AUTO_INCREMENT")) + r.Check(testkit.Rows("test1 tt id 31 _TIDB_ROWID")) tk.MustQuery(`select * from tt`).Sort().Check(testkit.Rows("20 1")) tk.MustExec("insert test1.tt values ()") r = tk.MustQuery(str + " tt next_row_id") - r.Check(testkit.Rows("test1 tt id 31 _TIDB_ROWID", "test1 tt id 1 AUTO_INCREMENT")) + r.Check(testkit.Rows("test1 tt id 31 _TIDB_ROWID")) tk.MustQuery(`select * from tt`).Sort().Check(testkit.Rows("20 1", "21 ")) tk.MustExec("drop table tt") + tk.MustExec("create table tt(id int primary key auto_increment, c int) auto_id_cache = 1;") + r = tk.MustQuery(str + " tt next_row_id") + r.Check(testkit.Rows("test1 tt id 1 AUTO_INCREMENT")) + tk.MustExec("drop table tt") + tk.MustExec("drop table if exists t;") tk.MustExec("create table t (a int auto_increment primary key nonclustered, b int);") tk.MustQuery("show table t next_row_id;").Check(testkit.Rows( - "test1 t _tidb_rowid 1 _TIDB_ROWID", - "test1 t _tidb_rowid 1 AUTO_INCREMENT")) + "test1 t _tidb_rowid 1 _TIDB_ROWID")) tk.MustExec("set @@allow_auto_random_explicit_insert = true") diff --git a/pkg/executor/test/tiflashtest/tiflash_test.go b/pkg/executor/test/tiflashtest/tiflash_test.go index 2a146f63b0cfc..3a2aff1afd89b 100644 --- a/pkg/executor/test/tiflashtest/tiflash_test.go +++ b/pkg/executor/test/tiflashtest/tiflash_test.go @@ -92,6 +92,8 @@ func TestReadPartitionTable(t *testing.T) { tk.MustExec("insert into t values(2,0)") tk.MustExec("insert into t values(3,0)") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") @@ -131,6 +133,8 @@ func TestAggPushDownApplyAll(t *testing.T) { tk.MustExec("set @@session.tidb_allow_mpp=1") tk.MustExec("set @@session.tidb_enforce_mpp=1") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustQuery("select * from foo where a=all(select a from bar where bar.b=foo.b)").Check(testkit.Rows("0 ")) } @@ -165,6 +169,8 @@ func TestReadUnsigedPK(t *testing.T) { tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustExec("set @@session.tidb_allow_mpp=ON") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") @@ -199,6 +205,8 @@ func TestJoinRace(t *testing.T) { tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustExec("set @@session.tidb_enforce_mpp=ON") tk.MustExec("set @@tidb_opt_broadcast_cartesian_join=0") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustQuery("select count(*) from (select count(a) x from t group by b) t1 join (select count(a) x from t group by b) t2 on t1.x > t2.x").Check(testkit.Rows("6")) } @@ -358,6 +366,8 @@ func TestTiFlashPartitionTableShuffledHashJoin(t *testing.T) { // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") lr := func() (int, int) { l, r := rand.Intn(400), rand.Intn(400) @@ -418,6 +428,8 @@ func TestTiFlashPartitionTableReader(t *testing.T) { // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") vals := make([]string, 0, 500) for i := 0; i < 500; i++ { @@ -564,6 +576,8 @@ func TestMppEnum(t *testing.T) { tk.MustExec("insert into t values(3,'zca')") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustExec("set @@session.tidb_allow_mpp=ON") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") @@ -583,6 +597,8 @@ func TestTiFlashPlanCacheable(t *testing.T) { err := domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) require.NoError(t, err) tk.MustExec("set @@session.tidb_isolation_read_engines = 'tikv, tiflash'") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("insert into t values(1);") tk.MustExec("prepare stmt from 'select /*+ read_from_storage(tiflash[t]) */ * from t;';") tk.MustQuery("execute stmt;").Check(testkit.Rows("1")) @@ -679,6 +695,8 @@ func TestCancelMppTasks(t *testing.T) { require.NoError(t, err) tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustExec("set @@session.tidb_allow_mpp=ON") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") @@ -727,6 +745,8 @@ func TestMppGoroutinesExitFromErrors(t *testing.T) { tk.MustExec("insert into t1 values(3,0)") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustExec("set @@session.tidb_allow_mpp=ON") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") @@ -815,6 +835,8 @@ func TestUnionWithEmptyDualTable(t *testing.T) { tk.MustExec("insert into t values(1,2,3)") tk.MustExec("insert into t1 values(1,2,3)") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_enforce_mpp=ON") tk.MustQuery("select count(*) from (select a , b from t union all select a , c from t1 where false) tt").Check(testkit.Rows("1")) } @@ -836,6 +858,8 @@ func TestAvgOverflow(t *testing.T) { } tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustExec("set @@session.tidb_enforce_mpp=ON") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustQuery("select avg(a) from t group by a").Check(testkit.Rows("9.0000")) tk.MustExec("drop table if exists t") @@ -885,6 +909,8 @@ func TestMppApply(t *testing.T) { tk.MustExec("analyze table x1, x2;") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_allow_mpp=ON") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side @@ -922,6 +948,8 @@ func TestTiFlashVirtualColumn(t *testing.T) { tk.MustExec("insert into t3(a,b) values(b'01',b'01'),(b'10',b'10'),(b'11',b'11')") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_allow_mpp=ON") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side @@ -970,6 +998,8 @@ func TestTiFlashPartitionTableShuffledHashAggregation(t *testing.T) { tk.MustExec(fmt.Sprintf("analyze table %v", tbl)) } tk.MustExec("set @@session.tidb_isolation_read_engines='tiflash'") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_enforce_mpp=1") // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side @@ -1014,6 +1044,8 @@ func TestIssue57149(t *testing.T) { tk.MustExec("INSERT INTO t1(i, j) VALUES (1, '{\"a\": 2}')") tk.MustExec("analyze table test.t1") tk.MustExec("set @@tidb_isolation_read_engines = 'tiflash'") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@tidb_enforce_mpp = 1") result := tk.MustQuery("SELECT i, (j = (SELECT j FROM t1 WHERE j = CAST('null' AS JSON))) AS c11, (j = (SELECT j FROM t1 WHERE 1<>1)) AS c13 from t1 ORDER BY i limit 1") require.Len(t, result.Rows(), 1) @@ -1039,7 +1071,7 @@ func TestTiFlashPartitionTableBroadcastJoin(t *testing.T) { tk.MustExec(`create table tlist (a int, b int) partition by list(a) ( partition p0 values in (` + listPartitions[0] + `), partition p1 values in (` + listPartitions[1] + `), partition p2 values in (` + listPartitions[2] + `), partition p3 values in (` + listPartitions[3] + `))`) - tk.MustExec(`create table tnormal (a int, b int) partition by hash(a) partitions 4`) + tk.MustExec(`create table tnormal (a int, b int)`) for _, tbl := range []string{`thash`, `trange`, `tlist`, `tnormal`} { tk.MustExec("alter table " + tbl + " set tiflash replica 1") @@ -1061,6 +1093,8 @@ func TestTiFlashPartitionTableBroadcastJoin(t *testing.T) { // mock executor does not support use outer table as build side for outer join, so need to // force the inner table as build side tk.MustExec("set tidb_opt_mpp_outer_join_fixed_build_side=1") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") lr := func() (int, int) { l, r := rand.Intn(400), rand.Intn(400) @@ -1190,6 +1224,8 @@ func TestTiflashPartitionTableScan(t *testing.T) { tk.MustExec("insert into t values(1),(11),(21),(31),(41);") tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic';") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\";") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_allow_tiflash_cop=ON") // MPP tk.MustExec("set @@session.tidb_allow_mpp=ON;") @@ -1355,6 +1391,8 @@ func TestTiflashEmptyDynamicPruneResult(t *testing.T) { tk.MustExec("insert into IDT_RP24833 values(-8448770111093677011, \"郇鋺篤堯擈斥鍮啸赠璭饱磟朅闑傒聎疫ᛄ怖霃\", \"8781-05-02 04:23:03\", -27252736532807028, -1.34554e38);") tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic';") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\";") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_allow_mpp=ON;") tk.MustExec("set @@session.tidb_enforce_mpp = on;") tk.MustQuery("select /*+ read_from_storage(tiflash[t1]) */ * from IDT_RP24833 partition(p3, p4) t1 where t1. col1 between -8448770111093677011 and -8448770111093677011;").Check(testkit.Rows()) @@ -1384,6 +1422,8 @@ func TestDisaggregatedTiFlash(t *testing.T) { err = domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) require.NoError(t, err) tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") err = tk.ExecToErr("select * from t;") // Expect error, because TestAutoScaler return empty topo. @@ -1421,6 +1461,8 @@ func TestDisaggregatedTiFlashNonAutoScaler(t *testing.T) { err = domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) require.NoError(t, err) tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") err = tk.ExecToErr("select * from t;") // This error message means we use PD instead of AutoScaler. @@ -1544,6 +1586,8 @@ func TestTiFlashComputeDispatchPolicy(t *testing.T) { err = domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) require.NoError(t, err) tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") err = tiflashcompute.InitGlobalTopoFetcher(tiflashcompute.TestASStr, "tmpAddr", "tmpClusterID", false) require.NoError(t, err) @@ -1596,6 +1640,8 @@ func TestDisaggregatedTiFlashGeneratedColumn(t *testing.T) { err = domain.GetDomain(tk.Session()).DDLExecutor().UpdateTableReplicaInfo(tk.Session(), tb.Meta().ID, true) require.NoError(t, err) tk.MustExec("alter table t2 add index idx2((lower(c2)));") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") nthPlan := 100 test1 := func(forceTiFlash bool) { @@ -1910,6 +1956,8 @@ func TestMPPRecovery(t *testing.T) { } tk.MustExec(insertStr) tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") sql := "select * from t order by 1, 2" const packagePath = "github.com/pingcap/tidb/pkg/executor/internal/mpp/" @@ -2001,6 +2049,8 @@ func TestIssue50358(t *testing.T) { tk.MustExec("insert into t1 values(3)") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_allow_mpp=ON") for i := 0; i < 20; i++ { // test if it is stable. @@ -2028,6 +2078,8 @@ func TestMppAggShouldAlignFinalMode(t *testing.T) { err = failpoint.Enable("github.com/pingcap/tidb/pkg/expression/aggregation/show-agg-mode", "return(true)") require.Nil(t, err) + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustQuery("explain format='brief' select 1 from (" + " select /*+ read_from_storage(tiflash[t]) */ sum(1)" + @@ -2079,6 +2131,8 @@ func TestMppTableReaderCacheForSingleSQL(t *testing.T) { tk.MustExec("insert into t2 values(4, 4)") tk.MustExec("insert into t2 values(5, 5)") + // unistore does not support later materialization + tk.MustExec("set tidb_opt_enable_late_materialization=0") tk.MustExec("set @@session.tidb_isolation_read_engines=\"tiflash\"") tk.MustExec("set @@session.tidb_allow_mpp=ON") tk.MustExec("set @@session.tidb_enforce_mpp=ON") diff --git a/pkg/executor/test/writetest/write_test.go b/pkg/executor/test/writetest/write_test.go index d4013c145afc4..98def043bcea3 100644 --- a/pkg/executor/test/writetest/write_test.go +++ b/pkg/executor/test/writetest/write_test.go @@ -230,16 +230,17 @@ func TestIssue18681(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("use test") createSQL := `drop table if exists load_data_test; - create table load_data_test (a bit(1),b bit(1),c bit(1),d bit(1));` + create table load_data_test (a bit(1),b bit(1),c bit(1),d bit(1),e bit(32),f bit(1));` tk.MustExec(createSQL) loadSQL := "load data local infile '/tmp/nonexistence.csv' ignore into table load_data_test" ctx := tk.Session().(sessionctx.Context) deleteSQL := "delete from load_data_test" - selectSQL := "select bin(a), bin(b), bin(c), bin(d) from load_data_test;" + selectSQL := "select bin(a), bin(b), bin(c), bin(d), bin(e), bin(f) from load_data_test;" levels := ctx.GetSessionVars().StmtCtx.ErrLevels() levels[errctx.ErrGroupDupKey] = errctx.LevelWarn levels[errctx.ErrGroupBadNull] = errctx.LevelWarn + levels[errctx.ErrGroupNoDefault] = errctx.LevelWarn sc := ctx.GetSessionVars().StmtCtx oldTypeFlags := sc.TypeFlags() @@ -248,7 +249,7 @@ func TestIssue18681(t *testing.T) { }() sc.SetTypeFlags(oldTypeFlags.WithIgnoreTruncateErr(true)) tests := []testCase{ - {[]byte("true\tfalse\t0\t1\n"), []string{"1|0|0|1"}, "Records: 1 Deleted: 0 Skipped: 0 Warnings: 0"}, + {[]byte("true\tfalse\t0\t1\tb'1'\tb'1'\n"), []string{"1|1|1|1|1100010001001110011000100100111|1"}, "Records: 1 Deleted: 0 Skipped: 0 Warnings: 5"}, } checkCases(tests, loadSQL, t, tk, ctx, selectSQL, deleteSQL) require.Equal(t, uint16(0), sc.WarningCount()) diff --git a/pkg/executor/traffic.go b/pkg/executor/traffic.go new file mode 100644 index 0000000000000..8bed2313691f6 --- /dev/null +++ b/pkg/executor/traffic.go @@ -0,0 +1,159 @@ +// Copyright 2024 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" + "io" + "net" + "net/http" + "net/url" + "strings" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/domain/infosync" + "github.com/pingcap/tidb/pkg/executor/internal/exec" + "github.com/pingcap/tidb/pkg/parser/terror" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/logutil" + "go.uber.org/zap" +) + +// The keys for the mocked data that stored in context. They are only used for test. +type tiproxyAddrKeyType struct{} + +var tiproxyAddrKey tiproxyAddrKeyType + +// TrafficCaptureExec sends capture traffic requests to TiProxy. +type TrafficCaptureExec struct { + exec.BaseExecutor + Args map[string]string +} + +// Next implements the Executor Next interface. +func (e *TrafficCaptureExec) Next(ctx context.Context, _ *chunk.Chunk) error { + form := getForm(e.Args) + return request(ctx, e.BaseExecutor, strings.NewReader(form), http.MethodPost, "api/traffic/capture") +} + +// TrafficReplayExec sends replay traffic requests to TiProxy. +type TrafficReplayExec struct { + exec.BaseExecutor + Args map[string]string +} + +// Next implements the Executor Next interface. +func (e *TrafficReplayExec) Next(ctx context.Context, _ *chunk.Chunk) error { + form := getForm(e.Args) + return request(ctx, e.BaseExecutor, strings.NewReader(form), http.MethodPost, "api/traffic/replay") +} + +// TrafficCancelExec sends cancel traffic job requests to TiProxy. +type TrafficCancelExec struct { + exec.BaseExecutor +} + +// Next implements the Executor Next interface. +func (e *TrafficCancelExec) Next(ctx context.Context, _ *chunk.Chunk) error { + return request(ctx, e.BaseExecutor, nil, http.MethodPost, "api/traffic/cancel") +} + +// TrafficShowExec sends show traffic job requests to TiProxy. +type TrafficShowExec struct { + exec.BaseExecutor +} + +// Next implements the Executor Next interface. +func (e *TrafficShowExec) Next(ctx context.Context, _ *chunk.Chunk) error { + return request(ctx, e.BaseExecutor, nil, http.MethodGet, "api/traffic/show") +} + +func request(ctx context.Context, exec exec.BaseExecutor, reader io.Reader, method, path string) error { + addrs, err := getTiProxyAddrs(ctx) + if err != nil { + return err + } + for _, addr := range addrs { + resp, requestErr := requestOne(method, addr, path, reader) + if requestErr != nil { + exec.Ctx().GetSessionVars().StmtCtx.AppendError(requestErr) + logutil.Logger(ctx).Error("traffic request to tiproxy failed", zap.String("method", method), + zap.String("path", path), zap.String("addr", addr), zap.String("resp", resp), zap.Error(requestErr)) + if err == nil { + err = requestErr + } + } + } + if err == nil { + logutil.Logger(ctx).Info("traffic request to tiproxy succeeds", zap.Any("addrs", addrs), zap.String("path", path)) + } + return err +} + +func getTiProxyAddrs(ctx context.Context) ([]string, error) { + var tiproxyNodes map[string]*infosync.TiProxyServerInfo + var err error + if v := ctx.Value(tiproxyAddrKey); v != nil { + tiproxyNodes = v.(map[string]*infosync.TiProxyServerInfo) + } else { + tiproxyNodes, err = infosync.GetTiProxyServerInfo(ctx) + } + if err != nil { + return nil, errors.Trace(err) + } + if len(tiproxyNodes) == 0 { + return nil, errors.Errorf("no tiproxy server found") + } + servers := make([]string, 0, len(tiproxyNodes)) + for _, node := range tiproxyNodes { + servers = append(servers, net.JoinHostPort(node.IP, node.StatusPort)) + } + return servers, nil +} + +func requestOne(method, addr, path string, rd io.Reader) (string, error) { + url := fmt.Sprintf("%s://%s/%s", util.InternalHTTPSchema(), addr, path) + req, err := http.NewRequest(method, url, rd) + if err != nil { + return "", errors.Trace(err) + } + if method == http.MethodPost { + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + } + resp, err := util.InternalHTTPClient().Do(req) + if err != nil { + return "", errors.Trace(err) + } + defer func() { + terror.Log(resp.Body.Close()) + }() + resb, err := io.ReadAll(resp.Body) + switch resp.StatusCode { + case http.StatusOK: + return string(resb), err + default: + return string(resb), errors.Errorf("request %s failed: %s", url, resp.Status) + } +} + +func getForm(m map[string]string) string { + form := url.Values{} + for key, value := range m { + form.Add(key, value) + } + return form.Encode() +} diff --git a/pkg/executor/traffic_test.go b/pkg/executor/traffic_test.go new file mode 100644 index 0000000000000..a722bc9cb2374 --- /dev/null +++ b/pkg/executor/traffic_test.go @@ -0,0 +1,210 @@ +// Copyright 2024 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" + "net" + "net/http" + "net/url" + "strconv" + "sync" + "testing" + + "github.com/pingcap/tidb/pkg/domain/infosync" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/util/hint" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/stretchr/testify/require" +) + +func TestTrafficForm(t *testing.T) { + tests := []struct { + sql string + method string + path string + form url.Values + }{ + { + sql: "traffic capture to '/tmp' duration='1s' encryption_method='aes' compress=false", + method: http.MethodPost, + path: "/api/traffic/capture", + form: url.Values{ + "output": []string{"/tmp"}, + "duration": []string{"1s"}, + "encrypt-method": []string{"aes"}, + "compress": []string{"false"}, + }, + }, + { + sql: "traffic capture to '/tmp' duration='1s'", + method: http.MethodPost, + path: "/api/traffic/capture", + form: url.Values{ + "output": []string{"/tmp"}, + "duration": []string{"1s"}, + }, + }, + { + sql: "traffic replay from '/tmp' user='root' password='123456' speed=1.0 read_only=true", + method: http.MethodPost, + path: "/api/traffic/replay", + form: url.Values{ + "input": []string{"/tmp"}, + "username": []string{"root"}, + "password": []string{"123456"}, + "speed": []string{"1.0"}, + "readonly": []string{"true"}, + }, + }, + { + sql: "traffic replay from '/tmp' user='root'", + method: http.MethodPost, + path: "/api/traffic/replay", + form: url.Values{ + "input": []string{"/tmp"}, + "username": []string{"root"}, + }, + }, + { + sql: "cancel traffic jobs", + method: http.MethodPost, + path: "/api/traffic/cancel", + form: url.Values{}, + }, + { + sql: "show traffic jobs", + method: http.MethodGet, + path: "/api/traffic/show", + form: url.Values{}, + }, + } + + parser := parser.New() + sctx := mock.NewContext() + ctx := context.TODO() + is := infoschema.MockInfoSchema([]*model.TableInfo{plannercore.MockSignedTable(), plannercore.MockUnsignedTable()}) + builder, _ := plannercore.NewPlanBuilder().Init(sctx, nil, hint.NewQBHintHandler(nil)) + httpHandler := &mockHTTPHandler{t: t, httpOK: true} + server, port := runServer(t, httpHandler) + defer server.Close() + ctx = fillCtxWithTiProxyAddr(ctx, []int{port}) + for _, test := range tests { + stmt, err := parser.ParseOneStmt(test.sql, "", "") + require.NoError(t, err) + p, err := builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + executorBuilder := NewMockExecutorBuilderForTest(sctx, is) + exec := executorBuilder.build(p) + require.NotEmpty(t, exec) + require.NoError(t, exec.Next(ctx, nil)) + require.Equal(t, test.method, httpHandler.getMethod()) + require.Equal(t, test.path, httpHandler.getPath()) + require.Equal(t, test.form, httpHandler.getForm()) + } +} + +func TestTrafficError(t *testing.T) { + sctx := mock.NewContext() + ctx := context.TODO() + is := infoschema.MockInfoSchema([]*model.TableInfo{plannercore.MockSignedTable(), plannercore.MockUnsignedTable()}) + builder, _ := plannercore.NewPlanBuilder().Init(sctx, nil, hint.NewQBHintHandler(nil)) + stmt, err := parser.New().ParseOneStmt("cancel traffic jobs", "", "") + require.NoError(t, err) + p, err := builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + executorBuilder := NewMockExecutorBuilderForTest(sctx, is) + exec := executorBuilder.build(p) + require.NotEmpty(t, exec) + + // no tiproxy + m := make(map[string]*infosync.TiProxyServerInfo) + tempCtx := context.WithValue(ctx, tiproxyAddrKey, m) + require.ErrorContains(t, exec.Next(tempCtx, nil), "no tiproxy server found") + + // tiproxy no response + m["127.0.0.1:0"] = &infosync.TiProxyServerInfo{IP: "127.0.0.1", StatusPort: "0"} + require.ErrorContains(t, exec.Next(tempCtx, nil), "dial tcp") + + // tiproxy responds with error + httpHandler := &mockHTTPHandler{t: t, httpOK: false} + server, port := runServer(t, httpHandler) + defer server.Close() + tempCtx = fillCtxWithTiProxyAddr(ctx, []int{port}) + require.ErrorContains(t, exec.Next(tempCtx, nil), "500 Internal Server Error") +} + +type mockHTTPHandler struct { + t *testing.T + sync.Mutex + form url.Values + method string + path string + httpOK bool +} + +func (handler *mockHTTPHandler) getForm() url.Values { + handler.Lock() + defer handler.Unlock() + return handler.form +} + +func (handler *mockHTTPHandler) getMethod() string { + handler.Lock() + defer handler.Unlock() + return handler.method +} + +func (handler *mockHTTPHandler) getPath() string { + handler.Lock() + defer handler.Unlock() + return handler.path +} + +func (handler *mockHTTPHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + handler.Lock() + defer handler.Unlock() + handler.method = r.Method + handler.path = r.URL.Path + require.NoError(handler.t, r.ParseForm()) + handler.form = r.PostForm + if handler.httpOK { + w.WriteHeader(http.StatusOK) + } else { + w.WriteHeader(http.StatusInternalServerError) + } +} + +func runServer(t *testing.T, handler http.Handler) (*http.Server, int) { + listener, err := net.Listen("tcp", ":0") + require.NoError(t, err) + server := &http.Server{Addr: listener.Addr().String(), Handler: handler} + go server.Serve(listener) + return server, listener.Addr().(*net.TCPAddr).Port +} + +func fillCtxWithTiProxyAddr(ctx context.Context, ports []int) context.Context { + m := make(map[string]*infosync.TiProxyServerInfo) + for _, port := range ports { + addr := fmt.Sprintf("127.0.0.1:%d", port) + m[addr] = &infosync.TiProxyServerInfo{IP: "127.0.0.1", StatusPort: strconv.Itoa(port)} + } + return context.WithValue(ctx, tiproxyAddrKey, m) +} diff --git a/pkg/executor/union_scan.go b/pkg/executor/union_scan.go index 5799ad478093f..5f6d0cd8c26d6 100644 --- a/pkg/executor/union_scan.go +++ b/pkg/executor/union_scan.go @@ -191,6 +191,9 @@ func (us *UnionScanExec) Close() error { us.cursor4AddRows = nil us.cursor4SnapshotRows = 0 us.snapshotRows = us.snapshotRows[:0] + if us.addedRowsIter != nil { + us.addedRowsIter.Close() + } return exec.Close(us.Children(0)) } diff --git a/pkg/executor/union_scan_test.go b/pkg/executor/union_scan_test.go index f42696db283e6..2a1f982ebf76c 100644 --- a/pkg/executor/union_scan_test.go +++ b/pkg/executor/union_scan_test.go @@ -360,6 +360,21 @@ func TestIssue32422(t *testing.T) { tk.MustExec("rollback") } +func TestSnapshotWithConcurrentWrite(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1 (id int auto_increment key, b int, index(b));") + + tk.MustExec("begin") + tk.MustExec("insert into t1 (b) values (1),(2),(3),(4),(5),(6),(7),(8);") + for j := 0; j < 16; j++ { + tk.MustExec("insert into t1 (b) select /*+ use_index(t1, b) */ id from t1;") + } + tk.MustQuery("select count(1) from t1").Check(testkit.Rows("524288")) // 8 * 2^16 rows + tk.MustExec("rollback") +} + func BenchmarkUnionScanRead(b *testing.B) { store := testkit.CreateMockStore(b) diff --git a/pkg/expression/aggregation/base_func.go b/pkg/expression/aggregation/base_func.go index 158251754ee54..3ae05057a6fe2 100644 --- a/pkg/expression/aggregation/base_func.go +++ b/pkg/expression/aggregation/base_func.go @@ -64,13 +64,16 @@ func (a *baseFuncDesc) Hash64(h base.Hasher) { // Equals implements the base.Equals interface. func (a *baseFuncDesc) Equals(other any) bool { - if other == nil { - return false - } a2, ok := other.(*baseFuncDesc) if !ok { return false } + if a == nil { + return a2 == nil + } + if a2 == nil { + return false + } ok = a.Name == a2.Name && len(a.Args) == len(a2.Args) && ((a.RetTp == nil && a2.RetTp == nil) || (a.RetTp != nil && a2.RetTp != nil && a.RetTp.Equals(a2.RetTp))) if !ok { return false diff --git a/pkg/expression/aggregation/descriptor.go b/pkg/expression/aggregation/descriptor.go index 19862ef04ec47..b762c5127be6e 100644 --- a/pkg/expression/aggregation/descriptor.go +++ b/pkg/expression/aggregation/descriptor.go @@ -74,13 +74,16 @@ func (a *AggFuncDesc) Hash64(h base.Hasher) { // Equals checks whether two aggregation function signatures are equal. func (a *AggFuncDesc) Equals(other any) bool { - if other == nil { - return false - } otherAgg, ok := other.(*AggFuncDesc) if !ok { return false } + if a == nil { + return otherAgg == nil + } + if otherAgg == nil { + return false + } if a.Mode != otherAgg.Mode || a.HasDistinct != otherAgg.HasDistinct || len(a.OrderByItems) != len(otherAgg.OrderByItems) { return false } @@ -89,7 +92,7 @@ func (a *AggFuncDesc) Equals(other any) bool { return false } } - return a.baseFuncDesc.Equals(otherAgg.baseFuncDesc) + return a.baseFuncDesc.Equals(&otherAgg.baseFuncDesc) } // StringWithCtx returns the string representation within given ctx. @@ -228,7 +231,7 @@ func (a *AggFuncDesc) Split(ordinal []int) (partialAggDesc, finalAggDesc *AggFun // +------+-----------+---------+---------+------------+-------------+------------+---------+---------+------+----------+ // | 1 | 1 | 95 | 95.0000 | 95 | 95 | 95 | 95 | 95 | NULL | NULL | // +------+-----------+---------+---------+------------+-------------+------------+---------+---------+------+----------+ -func (a *AggFuncDesc) EvalNullValueInOuterJoin(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool) { +func (a *AggFuncDesc) EvalNullValueInOuterJoin(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool, error) { switch a.Name { case ast.AggFuncCount: return a.evalNullValueInOuterJoin4Count(ctx, schema) @@ -236,7 +239,7 @@ func (a *AggFuncDesc) EvalNullValueInOuterJoin(ctx expression.BuildContext, sche ast.AggFuncFirstRow: return a.evalNullValueInOuterJoin4Sum(ctx, schema) case ast.AggFuncAvg, ast.AggFuncGroupConcat: - return types.Datum{}, false + return types.Datum{}, false, nil case ast.AggFuncBitAnd: return a.evalNullValueInOuterJoin4BitAnd(ctx, schema) case ast.AggFuncBitOr, ast.AggFuncBitXor: @@ -275,42 +278,54 @@ func (a *AggFuncDesc) GetAggFunc(ctx expression.AggFuncBuildContext) Aggregation } } -func (a *AggFuncDesc) evalNullValueInOuterJoin4Count(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool) { +func (a *AggFuncDesc) evalNullValueInOuterJoin4Count(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool, error) { for _, arg := range a.Args { - result := expression.EvaluateExprWithNull(ctx, schema, arg) + result, err := expression.EvaluateExprWithNull(ctx, schema, arg) + if err != nil { + return types.Datum{}, false, err + } con, ok := result.(*expression.Constant) if !ok || con.Value.IsNull() { - return types.Datum{}, ok + return types.Datum{}, ok, nil } } - return types.NewDatum(1), true + return types.NewDatum(1), true, nil } -func (a *AggFuncDesc) evalNullValueInOuterJoin4Sum(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool) { - result := expression.EvaluateExprWithNull(ctx, schema, a.Args[0]) +func (a *AggFuncDesc) evalNullValueInOuterJoin4Sum(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool, error) { + result, err := expression.EvaluateExprWithNull(ctx, schema, a.Args[0]) + if err != nil { + return types.Datum{}, false, err + } con, ok := result.(*expression.Constant) if !ok || con.Value.IsNull() { - return types.Datum{}, ok + return types.Datum{}, ok, nil } - return con.Value, true + return con.Value, true, nil } -func (a *AggFuncDesc) evalNullValueInOuterJoin4BitAnd(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool) { - result := expression.EvaluateExprWithNull(ctx, schema, a.Args[0]) +func (a *AggFuncDesc) evalNullValueInOuterJoin4BitAnd(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool, error) { + result, err := expression.EvaluateExprWithNull(ctx, schema, a.Args[0]) + if err != nil { + return types.Datum{}, false, err + } con, ok := result.(*expression.Constant) if !ok || con.Value.IsNull() { - return types.NewDatum(uint64(math.MaxUint64)), true + return types.NewDatum(uint64(math.MaxUint64)), true, nil } - return con.Value, true + return con.Value, true, nil } -func (a *AggFuncDesc) evalNullValueInOuterJoin4BitOr(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool) { - result := expression.EvaluateExprWithNull(ctx, schema, a.Args[0]) +func (a *AggFuncDesc) evalNullValueInOuterJoin4BitOr(ctx expression.BuildContext, schema *expression.Schema) (types.Datum, bool, error) { + result, err := expression.EvaluateExprWithNull(ctx, schema, a.Args[0]) + if err != nil { + return types.Datum{}, false, err + } con, ok := result.(*expression.Constant) if !ok || con.Value.IsNull() { - return types.NewDatum(0), true + return types.NewDatum(0), true, nil } - return con.Value, true + return con.Value, true, nil } // UpdateNotNullFlag4RetType checks if we should remove the NotNull flag for the return type of the agg. diff --git a/pkg/expression/builtin_cast.go b/pkg/expression/builtin_cast.go index f4419dc96c4b5..c1a9aec8eae50 100644 --- a/pkg/expression/builtin_cast.go +++ b/pkg/expression/builtin_cast.go @@ -300,10 +300,20 @@ func (c *castAsStringFunctionClass) getFunction(ctx BuildContext, args []Express if err != nil { return nil, err } - if args[0].GetType(ctx.GetEvalCtx()).Hybrid() { - sig = &builtinCastStringAsStringSig{bf} - sig.setPbCode(tipb.ScalarFuncSig_CastStringAsString) - return sig, nil + if ft := args[0].GetType(ctx.GetEvalCtx()); ft.Hybrid() { + castBitAsUnBinary := ft.GetType() == mysql.TypeBit && c.tp.GetCharset() != charset.CharsetBin + if !castBitAsUnBinary { + sig = &builtinCastStringAsStringSig{bf} + sig.setPbCode(tipb.ScalarFuncSig_CastStringAsString) + return sig, nil + } + // for type BIT, it maybe an invalid value for the specified charset, we need to convert it to binary first, + // and then convert it to the specified charset with `HandleBinaryLiteral` in the following code. + tp := types.NewFieldType(mysql.TypeString) + tp.SetCharset(charset.CharsetBin) + tp.SetCollate(charset.CollationBin) + tp.AddFlag(mysql.BinaryFlag) + args[0] = BuildCastFunction(ctx, args[0], tp) } argTp := args[0].GetType(ctx.GetEvalCtx()).EvalType() switch argTp { diff --git a/pkg/expression/builtin_convert_charset.go b/pkg/expression/builtin_convert_charset.go index 24b4acd054bd6..33524d80dcdb7 100644 --- a/pkg/expression/builtin_convert_charset.go +++ b/pkg/expression/builtin_convert_charset.go @@ -173,6 +173,7 @@ type builtinInternalFromBinarySig struct { func (b *builtinInternalFromBinarySig) Clone() builtinFunc { newSig := &builtinInternalFromBinarySig{} newSig.cloneFrom(&b.baseBuiltinFunc) + newSig.cannotConvertStringAsWarning = b.cannotConvertStringAsWarning return newSig } diff --git a/pkg/expression/builtin_json.go b/pkg/expression/builtin_json.go index 5030c128b6865..179c948baa98c 100644 --- a/pkg/expression/builtin_json.go +++ b/pkg/expression/builtin_json.go @@ -18,6 +18,7 @@ import ( "bytes" "context" goJSON "encoding/json" + "strconv" "strings" "github.com/pingcap/errors" @@ -108,7 +109,7 @@ func (b *builtinJSONTypeSig) Clone() builtinFunc { } func (c *jsonTypeFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { - if err := c.verifyArgs(args); err != nil { + if err := c.verifyArgs(ctx.GetEvalCtx(), args); err != nil { return nil, err } bf, err := newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETString, types.ETJson) @@ -125,6 +126,51 @@ func (c *jsonTypeFunctionClass) getFunction(ctx BuildContext, args []Expression) return sig, nil } +func (c *jsonTypeFunctionClass) verifyArgs(ctx EvalContext, args []Expression) error { + if err := c.baseFunctionClass.verifyArgs(args); err != nil { + return err + } + return verifyJSONArgsType(ctx, c.funcName, true, args, 0) +} + +// verifyJSONArgsType verifies that all args specified in `jsonArgsIndex` are JSON or non-binary string or NULL. +// the `useJSONErr` specifies to use `ErrIncorrectType` or `ErrInvalidTypeForJSON`. If it's true, the error will be `ErrInvalidTypeForJSON` +func verifyJSONArgsType(ctx EvalContext, funcName string, useJSONErr bool, args []Expression, jsonArgsIndex ...int) error { + if jsonArgsIndex == nil { + // if no index is specified, verify all args + jsonArgsIndex = make([]int, len(args)) + for i := 0; i < len(args); i++ { + jsonArgsIndex[i] = i + } + } + for _, argIndex := range jsonArgsIndex { + arg := args[argIndex] + + typ := arg.GetType(ctx) + if typ.GetType() == mysql.TypeNull { + continue + } + + evalType := typ.EvalType() + switch evalType { + case types.ETString: + cs := typ.GetCharset() + if cs == charset.CharsetBin { + return types.ErrInvalidJSONCharset.GenWithStackByArgs(cs) + } + continue + case types.ETJson: + continue + default: + if useJSONErr { + return ErrInvalidTypeForJSON.GenWithStackByArgs(argIndex+1, funcName) + } + return ErrIncorrectType.GenWithStackByArgs(strconv.Itoa(argIndex+1), funcName) + } + } + return nil +} + func (b *builtinJSONTypeSig) evalString(ctx EvalContext, row chunk.Row) (val string, isNull bool, err error) { var j types.BinaryJSON j, isNull, err = b.args[0].EvalJSON(ctx, row) @@ -155,10 +201,7 @@ func (c *jsonExtractFunctionClass) verifyArgs(ctx EvalContext, args []Expression if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(1, "json_extract") - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args, 0) } func (c *jsonExtractFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -225,10 +268,7 @@ func (c *jsonUnquoteFunctionClass) verifyArgs(ctx EvalContext, args []Expression if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrIncorrectType.GenWithStackByArgs("1", "json_unquote") - } - return nil + return verifyJSONArgsType(ctx, c.funcName, false, args, 0) } func (c *jsonUnquoteFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -469,12 +509,7 @@ func (c *jsonMergeFunctionClass) verifyArgs(ctx EvalContext, args []Expression) if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - for i, arg := range args { - if evalType := arg.GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(i+1, "json_merge") - } - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args) } type builtinJSONMergeSig struct { @@ -682,10 +717,7 @@ func (c *jsonContainsPathFunctionClass) verifyArgs(ctx EvalContext, args []Expre if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(1, "json_contains_path") - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args, 0) } func (c *jsonContainsPathFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -801,10 +833,7 @@ func (c *jsonMemberOfFunctionClass) verifyArgs(ctx EvalContext, args []Expressio if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[1].GetType(ctx).EvalType(); evalType != types.ETJson && evalType != types.ETString { - return ErrInvalidTypeForJSON.GenWithStackByArgs(2, "member of") - } - return nil + return verifyJSONArgsType(ctx, "member of", true, args, 1) } func (c *jsonMemberOfFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -867,13 +896,7 @@ func (c *jsonContainsFunctionClass) verifyArgs(ctx EvalContext, args []Expressio if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETJson && evalType != types.ETString { - return ErrInvalidTypeForJSON.GenWithStackByArgs(1, "json_contains") - } - if evalType := args[1].GetType(ctx).EvalType(); evalType != types.ETJson && evalType != types.ETString { - return ErrInvalidTypeForJSON.GenWithStackByArgs(2, "json_contains") - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args, 0, 1) } func (c *jsonContainsFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -950,13 +973,7 @@ func (c *jsonOverlapsFunctionClass) verifyArgs(ctx EvalContext, args []Expressio if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETJson && evalType != types.ETString { - return ErrInvalidTypeForJSON.GenWithStackByArgs(1, "json_overlaps") - } - if evalType := args[1].GetType(ctx).EvalType(); evalType != types.ETJson && evalType != types.ETString { - return ErrInvalidTypeForJSON.GenWithStackByArgs(2, "json_overlaps") - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args, 0, 1) } func (c *jsonOverlapsFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -1089,7 +1106,8 @@ func (b *builtinJSONValidOthersSig) Clone() builtinFunc { // evalInt evals a builtinJSONValidOthersSig. // See https://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html#function_json-valid func (b *builtinJSONValidOthersSig) evalInt(ctx EvalContext, row chunk.Row) (val int64, isNull bool, err error) { - return 0, false, nil + datum, err := b.args[0].Eval(ctx, row) + return 0, datum.IsNull(), err } type jsonArrayAppendFunctionClass struct { @@ -1283,12 +1301,7 @@ func (c *jsonMergePatchFunctionClass) verifyArgs(ctx EvalContext, args []Express if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - for i, arg := range args { - if evalType := arg.GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(i+1, "json_merge_patch") - } - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args) } func (c *jsonMergePatchFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -1355,12 +1368,7 @@ func (c *jsonMergePreserveFunctionClass) verifyArgs(ctx EvalContext, args []Expr if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - for i, arg := range args { - if evalType := arg.GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(i+1, "json_merge_preserve") - } - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args) } func (c *jsonMergePreserveFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -1509,10 +1517,7 @@ func (c *jsonSearchFunctionClass) verifyArgs(ctx EvalContext, args []Expression) if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(1, "json_search") - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args, 0) } func (c *jsonSearchFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -1727,10 +1732,7 @@ func (c *jsonKeysFunctionClass) verifyArgs(ctx EvalContext, args []Expression) e if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(1, "json_keys") - } - return nil + return verifyJSONArgsType(ctx, c.funcName, true, args, 0) } func (c *jsonKeysFunctionClass) getFunction(ctx BuildContext, args []Expression) (builtinFunc, error) { @@ -1902,11 +1904,9 @@ func (c *jsonSchemaValidFunctionClass) verifyArgs(ctx EvalContext, args []Expres if err := c.baseFunctionClass.verifyArgs(args); err != nil { return err } - if evalType := args[0].GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(1, "json_schema_valid") - } - if evalType := args[1].GetType(ctx).EvalType(); evalType != types.ETString && evalType != types.ETJson { - return ErrInvalidTypeForJSON.GenWithStackByArgs(2, "json_schema_valid") + + if err := verifyJSONArgsType(ctx, c.funcName, true, args, 0, 1); err != nil { + return err } if c, ok := args[0].(*Constant); ok { // If args[0] is NULL, then don't check the length of *both* arguments. diff --git a/pkg/expression/builtin_math.go b/pkg/expression/builtin_math.go index fe9a8c5d373b5..0e53a432f6c79 100644 --- a/pkg/expression/builtin_math.go +++ b/pkg/expression/builtin_math.go @@ -1941,7 +1941,7 @@ func (b *builtinRadiansSig) evalReal(ctx EvalContext, row chunk.Row) (float64, b if isNull || err != nil { return 0, isNull, err } - return x * math.Pi / 180, false, nil + return x * (math.Pi / 180), false, nil } type sinFunctionClass struct { @@ -2047,7 +2047,10 @@ func (c *truncateFunctionClass) getFunction(ctx BuildContext, args []Expression) bf.tp.SetDecimalUnderLimit(calculateDecimal4RoundAndTruncate(ctx, args, argTp)) bf.tp.SetFlenUnderLimit(args[0].GetType(ctx.GetEvalCtx()).GetFlen() - args[0].GetType(ctx.GetEvalCtx()).GetDecimal() + bf.tp.GetDecimal()) } - bf.tp.AddFlag(args[0].GetType(ctx.GetEvalCtx()).GetFlag()) + argFieldTp := args[0].GetType(ctx.GetEvalCtx()) + if mysql.HasUnsignedFlag(argFieldTp.GetFlag()) { + bf.tp.AddFlag(mysql.UnsignedFlag) + } var sig builtinFunc switch argTp { diff --git a/pkg/expression/builtin_math_test.go b/pkg/expression/builtin_math_test.go index d18747cac8359..01d0d4a01a122 100644 --- a/pkg/expression/builtin_math_test.go +++ b/pkg/expression/builtin_math_test.go @@ -756,6 +756,8 @@ func TestRadians(t *testing.T) { {float64(180), float64(math.Pi)}, {-360, -2 * float64(math.Pi)}, {"180", float64(math.Pi)}, + {float64(1.0e308), float64(1.7453292519943295e306)}, + {float64(23), float64(0.4014257279586958)}, } Dtbl := tblToDtbl(tbl) diff --git a/pkg/expression/builtin_math_vec.go b/pkg/expression/builtin_math_vec.go index 755e0799e3eba..93aff90dc50b4 100644 --- a/pkg/expression/builtin_math_vec.go +++ b/pkg/expression/builtin_math_vec.go @@ -314,7 +314,7 @@ func (b *builtinRadiansSig) vecEvalReal(ctx EvalContext, input *chunk.Chunk, res if result.IsNull(i) { continue } - f64s[i] = f64s[i] * math.Pi / 180 + f64s[i] = f64s[i] * (math.Pi / 180) } return nil } diff --git a/pkg/expression/builtin_miscellaneous_vec_test.go b/pkg/expression/builtin_miscellaneous_vec_test.go index 308c6bd9226cb..05bcf8bcbc705 100644 --- a/pkg/expression/builtin_miscellaneous_vec_test.go +++ b/pkg/expression/builtin_miscellaneous_vec_test.go @@ -154,6 +154,7 @@ func TestSleepVectorized(t *testing.T) { // non-strict model var levels errctx.LevelMap levels[errctx.ErrGroupBadNull] = errctx.LevelWarn + levels[errctx.ErrGroupNoDefault] = errctx.LevelWarn sessVars.StmtCtx.SetErrLevels(levels) input.AppendFloat64(0, 1) err = vecEvalType(ctx, f, types.ETInt, input, result) @@ -188,6 +189,7 @@ func TestSleepVectorized(t *testing.T) { // for error case under the strict model levels[errctx.ErrGroupBadNull] = errctx.LevelError + levels[errctx.ErrGroupNoDefault] = errctx.LevelError sessVars.StmtCtx.SetErrLevels(levels) input.Reset() input.AppendNull(0) diff --git a/pkg/expression/builtin_string.go b/pkg/expression/builtin_string.go index f056267637b53..c23dbae5afa77 100644 --- a/pkg/expression/builtin_string.go +++ b/pkg/expression/builtin_string.go @@ -1703,21 +1703,28 @@ func (c *hexFunctionClass) getFunction(ctx BuildContext, args []Expression) (bui switch argTp { case types.ETString, types.ETDatetime, types.ETTimestamp, types.ETDuration, types.ETJson: bf, err := newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETString, types.ETString) + bf.tp.SetFlen(types.UnspecifiedLength) if err != nil { return nil, err } - argFieldTp := args[0].GetType(ctx.GetEvalCtx()) + argLen := args[0].GetType(ctx.GetEvalCtx()).GetFlen() // Use UTF8MB4 as default. - bf.tp.SetFlen(argFieldTp.GetFlen() * 4 * 2) + if argLen != types.UnspecifiedLength { + bf.tp.SetFlen(argLen * 4 * 2) + } sig := &builtinHexStrArgSig{bf} sig.setPbCode(tipb.ScalarFuncSig_HexStrArg) return sig, nil case types.ETInt, types.ETReal, types.ETDecimal: bf, err := newBaseBuiltinFuncWithTp(ctx, c.funcName, args, types.ETString, types.ETInt) + bf.tp.SetFlen(types.UnspecifiedLength) if err != nil { return nil, err } - bf.tp.SetFlen(args[0].GetType(ctx.GetEvalCtx()).GetFlen() * 2) + argLen := args[0].GetType(ctx.GetEvalCtx()).GetFlen() + if argLen != types.UnspecifiedLength { + bf.tp.SetFlen(argLen * 2) + } charset, collate := ctx.GetCharsetInfo() bf.tp.SetCharset(charset) bf.tp.SetCollate(collate) @@ -3072,7 +3079,12 @@ func (c *quoteFunctionClass) getFunction(ctx BuildContext, args []Expression) (b return nil, err } SetBinFlagOrBinStr(args[0].GetType(ctx.GetEvalCtx()), bf.tp) - bf.tp.SetFlen(2*args[0].GetType(ctx.GetEvalCtx()).GetFlen() + 2) + flen := args[0].GetType(ctx.GetEvalCtx()).GetFlen() + newFlen := 2*flen + 2 + if flen == types.UnspecifiedLength { + newFlen = types.UnspecifiedLength + } + bf.tp.SetFlen(newFlen) if bf.tp.GetFlen() > mysql.MaxBlobWidth { bf.tp.SetFlen(mysql.MaxBlobWidth) } @@ -3201,7 +3213,8 @@ func (c *eltFunctionClass) getFunction(ctx BuildContext, args []Expression) (bui if types.IsBinaryStr(argType) { types.SetBinChsClnFlag(bf.tp) } - if argType.GetFlen() > bf.tp.GetFlen() { + flen := argType.GetFlen() + if flen == types.UnspecifiedLength || flen > bf.tp.GetFlen() { bf.tp.SetFlen(argType.GetFlen()) } } diff --git a/pkg/expression/builtin_time.go b/pkg/expression/builtin_time.go index 7599a035ad7f6..b549f216f022d 100644 --- a/pkg/expression/builtin_time.go +++ b/pkg/expression/builtin_time.go @@ -4738,7 +4738,7 @@ func getBf4TimeAddSub(ctx BuildContext, funcName string, args []Expression) (tp1 case mysql.TypeDuration: argTp1, retTp = types.ETDuration, types.ETDuration case mysql.TypeDate: - argTp1, retTp = types.ETDuration, types.ETString + argTp1, retTp = types.ETDatetime, types.ETString default: argTp1, retTp = types.ETString, types.ETString } @@ -4969,11 +4969,20 @@ func (b *builtinAddDatetimeAndDurationSig) evalTime(ctx EvalContext, row chunk.R if isNull || err != nil { return types.ZeroDatetime, isNull, err } + + if arg0.IsZero() { + return types.ZeroDatetime, true, nil + } + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } result, err := arg0.Add(typeCtx(ctx), arg1) + if err != nil { + return types.ZeroDatetime, true, err + } + return result, err != nil, err } @@ -4997,6 +5006,11 @@ func (b *builtinAddDatetimeAndStringSig) evalTime(ctx EvalContext, row chunk.Row if isNull || err != nil { return types.ZeroDatetime, isNull, err } + + if arg0.IsZero() { + return types.ZeroDatetime, true, nil + } + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err @@ -5014,6 +5028,10 @@ func (b *builtinAddDatetimeAndStringSig) evalTime(ctx EvalContext, row chunk.Row return types.ZeroDatetime, true, err } result, err := arg0.Add(tc, arg1) + if err != nil { + return types.ZeroDatetime, true, err + } + return result, err != nil, err } @@ -5255,15 +5273,26 @@ func (b *builtinAddDateAndDurationSig) Clone() builtinFunc { // evalString evals a builtinAddDurationAndDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_addtime func (b *builtinAddDateAndDurationSig) evalString(ctx EvalContext, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return "", isNull, err } + + if arg0.IsZero() { + return "", true, nil + } + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - result, err := arg0.Add(arg1) + + arg0.SetType(mysql.TypeDatetime) + result, err := arg0.Add(typeCtx(ctx), arg1) + if err != nil { + return "", true, err + } + return result.String(), err != nil, err } @@ -5283,10 +5312,15 @@ func (b *builtinAddDateAndStringSig) Clone() builtinFunc { // evalString evals a builtinAddDateAndStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_addtime func (b *builtinAddDateAndStringSig) evalString(ctx EvalContext, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return "", isNull, err } + + if arg0.IsZero() { + return "", true, nil + } + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err @@ -5303,7 +5337,13 @@ func (b *builtinAddDateAndStringSig) evalString(ctx EvalContext, row chunk.Row) } return "", true, err } - result, err := arg0.Add(arg1) + + arg0.SetType(mysql.TypeDatetime) + result, err := arg0.Add(tc, arg1) + if err != nil { + return "", true, err + } + return result.String(), err != nil, err } @@ -5970,12 +6010,21 @@ func (b *builtinSubDatetimeAndDurationSig) evalTime(ctx EvalContext, row chunk.R if isNull || err != nil { return types.ZeroDatetime, isNull, err } + + if arg0.IsZero() { + return types.ZeroDatetime, true, nil + } + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err } tc := typeCtx(ctx) result, err := arg0.Add(tc, arg1.Neg()) + if err != nil { + return types.ZeroDatetime, true, err + } + return result, err != nil, err } @@ -5999,6 +6048,11 @@ func (b *builtinSubDatetimeAndStringSig) evalTime(ctx EvalContext, row chunk.Row if isNull || err != nil { return types.ZeroDatetime, isNull, err } + + if arg0.IsZero() { + return types.ZeroDatetime, true, nil + } + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return types.ZeroDatetime, isNull, err @@ -6016,6 +6070,10 @@ func (b *builtinSubDatetimeAndStringSig) evalTime(ctx EvalContext, row chunk.Row return types.ZeroDatetime, true, err } result, err := arg0.Add(tc, arg1.Neg()) + if err != nil { + return types.ZeroDatetime, true, err + } + return result, err != nil, err } @@ -6263,15 +6321,26 @@ func (b *builtinSubDateAndDurationSig) Clone() builtinFunc { // evalString evals a builtinSubDateAndDurationSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subtime func (b *builtinSubDateAndDurationSig) evalString(ctx EvalContext, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return "", isNull, err } + + if arg0.IsZero() { + return "", true, nil + } + arg1, isNull, err := b.args[1].EvalDuration(ctx, row) if isNull || err != nil { return "", isNull, err } - result, err := arg0.Sub(arg1) + + arg0.SetType(mysql.TypeDatetime) + result, err := arg0.Add(typeCtx(ctx), arg1.Neg()) + if err != nil { + return "", true, err + } + return result.String(), err != nil, err } @@ -6291,10 +6360,15 @@ func (b *builtinSubDateAndStringSig) Clone() builtinFunc { // evalString evals a builtinSubDateAndStringSig. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subtime func (b *builtinSubDateAndStringSig) evalString(ctx EvalContext, row chunk.Row) (string, bool, error) { - arg0, isNull, err := b.args[0].EvalDuration(ctx, row) + arg0, isNull, err := b.args[0].EvalTime(ctx, row) if isNull || err != nil { return "", isNull, err } + + if arg0.IsZero() { + return "", true, nil + } + s, isNull, err := b.args[1].EvalString(ctx, row) if isNull || err != nil { return "", isNull, err @@ -6311,11 +6385,14 @@ func (b *builtinSubDateAndStringSig) evalString(ctx EvalContext, row chunk.Row) } return "", true, err } - result, err := arg0.Sub(arg1) + + arg0.SetType(mysql.TypeDatetime) + result, err := arg0.Add(tc, arg1.Neg()) if err != nil { return "", true, err } - return result.String(), false, nil + + return result.String(), err != nil, err } type timeFormatFunctionClass struct { diff --git a/pkg/expression/builtin_time_test.go b/pkg/expression/builtin_time_test.go index 60505be7f916f..1de80bbb2cf34 100644 --- a/pkg/expression/builtin_time_test.go +++ b/pkg/expression/builtin_time_test.go @@ -1025,6 +1025,194 @@ func TestAddTimeSig(t *testing.T) { require.Equal(t, i+1+beforeWarnCnt, len(warnings)) require.Truef(t, terror.ErrorEqual(c.warning, warnings[i].Err), "err %v", warnings[i].Err) } + + addTimeTestForIssue56861(t, ctx, fc) +} + +func addTimeTestForIssue56861(t *testing.T, ctx *mock.Context, fc functionClass) { + dateStringCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 string + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "12:00:01.341300", false, "2024-11-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-12:00:01.341300", false, "2024-10-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "1 12:00:01.341300", false, "2024-11-02 12:00:01.341300", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-1 12:00:01.341300", false, "2024-10-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "12:00:01.341300", false, "1000-01-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-12:00:01.341300", false, "0999-12-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, "12:00:01.341300", false, "9999-12-31 12:00:01.341300", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-12:00:01.341300", false, "9999-12-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, "anuverivr", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, "", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "", true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, "", true, "", true}, + } + + for _, c := range dateStringCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewStringDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeVarString)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } + + dateDurationCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 types.Duration + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "2024-11-01 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "2024-10-31 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(36, 0, 1, 0, 0), false, "2024-11-02 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(36, 0, 1, 0, 0).Neg(), false, "2024-10-30 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(0, 0, 0, 0, 0), false, "2024-11-01 00:00:00", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "1000-01-01 12:00:01", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "0999-12-31 11:59:59", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "9999-12-31 12:00:01", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "9999-12-30 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, types.NewDuration(0, 0, 0, 0, 0), false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + } + + for _, c := range dateDurationCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewDurationDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeVarString)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } + + datetimeStringCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 string + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "12:00:01.341300", false, "2024-11-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-12:00:01.341300", false, "2024-10-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "1 12:00:01.341300", false, "2024-11-02 12:00:01.341300", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-1 12:00:01.341300", false, "2024-10-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "12:00:01.341300", false, "1000-01-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-12:00:01.341300", false, "0999-12-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "12:00:01.341300", false, "9999-12-31 12:00:01.341300", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-12:00:01.341300", false, "9999-12-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "anuverivr", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, "", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "", true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, "", true, "", true}, + } + + for _, c := range datetimeStringCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewStringDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeVarString)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } + + datetimeDurationCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 types.Duration + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "2024-11-01 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "2024-10-31 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(36, 0, 1, 0, 0), false, "2024-11-02 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(36, 0, 1, 0, 0).Neg(), false, "2024-10-30 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(0, 0, 0, 0, 0), false, "2024-11-01 00:00:00", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "1000-01-01 12:00:01", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "0999-12-31 11:59:59", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "9999-12-31 12:00:01", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "9999-12-30 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, types.NewDuration(0, 0, 0, 0, 0), false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + } + + for _, c := range datetimeDurationCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewDurationDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeVarString)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } } func TestSubTimeSig(t *testing.T) { @@ -1125,6 +1313,192 @@ func TestSubTimeSig(t *testing.T) { require.Equal(t, i+1+beforeWarnCnt, len(warnings)) require.Truef(t, terror.ErrorEqual(c.warning, warnings[i].Err), "err %v", warnings[i].Err) } + + subTimeTestForIssue56861(t, ctx, fc) +} + +func subTimeTestForIssue56861(t *testing.T, ctx *mock.Context, fc functionClass) { + dateStringCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 string + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "12:00:01.341300", false, "2024-10-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-12:00:01.341300", false, "2024-11-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "1 12:00:01.341300", false, "2024-10-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-1 12:00:01.341300", false, "2024-11-02 12:00:01.341300", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "12:00:01.341300", false, "0999-12-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-12:00:01.341300", false, "1000-01-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, "12:00:01.341300", false, "9999-12-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, "-12:00:01.341300", false, "9999-12-31 12:00:01.341300", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, "anuverivr", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, "", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, "", true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, "", true, "", true}, + } + + for _, c := range dateStringCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewStringDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeVarString)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } + + dateDurationCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 types.Duration + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "2024-10-31 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "2024-11-01 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(36, 0, 1, 0, 0), false, "2024-10-30 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(36, 0, 1, 0, 0).Neg(), false, "2024-11-02 12:00:01", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "0999-12-31 11:59:59", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "1000-01-01 12:00:01", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "9999-12-30 11:59:59", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "9999-12-31 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, types.NewDuration(0, 0, 0, 0, 0), false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), false, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDate, 0), true, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + } + + for _, c := range dateDurationCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewDurationDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeDuration)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } + + datetimeStringCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 string + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "12:00:01.341300", false, "2024-10-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-12:00:01.341300", false, "2024-11-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "1 12:00:01.341300", false, "2024-10-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-1 12:00:01.341300", false, "2024-11-02 12:00:01.341300", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "12:00:01.341300", false, "0999-12-31 11:59:58.658700", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-12:00:01.341300", false, "1000-01-01 12:00:01.341300", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "12:00:01.341300", false, "9999-12-30 11:59:58.658700", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "-12:00:01.341300", false, "9999-12-31 12:00:01.341300", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "anuverivr", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, "", false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, "", true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, "", true, "", true}, + } + + for _, c := range datetimeStringCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewStringDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeVarString)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } + + datetimeDurationCases := []struct { + arg0 types.Time + isArg0Null bool + arg1 types.Duration + isArg1Null bool + expect string + isExpectNull bool + }{ + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "2024-10-31 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "2024-11-01 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(36, 0, 1, 0, 0), false, "2024-10-30 11:59:59", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(36, 0, 1, 0, 0).Neg(), false, "2024-11-02 12:00:01", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "0999-12-31 11:59:59", false}, + {types.NewTime(types.FromDate(1000, 1, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "1000-01-01 12:00:01", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0), false, "9999-12-30 11:59:59", false}, + {types.NewTime(types.FromDate(9999, 12, 31, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(12, 0, 1, 0, 0).Neg(), false, "9999-12-31 12:00:01", false}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, types.NewDuration(0, 0, 0, 0, 0), false, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), false, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + {types.NewTime(types.FromDate(2024, 11, 1, 0, 0, 0, 0), mysql.TypeDatetime, 0), true, types.NewDuration(0, 0, 0, 0, 0), true, "", true}, + } + + for _, c := range datetimeDurationCases { + exprs := make([]Expression, 2) + arg0Datum := types.NewTimeDatum(c.arg0) + if c.isArg0Null { + arg0Datum.SetNull() + } + arg1Datum := types.NewDurationDatum(c.arg1) + if c.isArg1Null { + arg1Datum.SetNull() + } + exprs[0] = &Constant{Value: arg0Datum, RetType: types.NewFieldType(mysql.TypeDate)} + exprs[1] = &Constant{Value: arg1Datum, RetType: types.NewFieldType(mysql.TypeDuration)} + f, err := fc.getFunction(ctx, exprs) + require.NoError(t, err) + d, err := evalBuiltinFunc(f, ctx, chunk.Row{}) + if c.isExpectNull { + require.True(t, d.IsNull()) + continue + } + require.NoError(t, err) + result, _ := d.ToString() + require.Equal(t, c.expect, result) + } } func TestSysDate(t *testing.T) { diff --git a/pkg/expression/builtin_time_vec_generated.go b/pkg/expression/builtin_time_vec_generated.go index 0ce537d4faac9..6cb53c94e97c7 100644 --- a/pkg/expression/builtin_time_vec_generated.go +++ b/pkg/expression/builtin_time_vec_generated.go @@ -62,6 +62,11 @@ func (b *builtinAddDatetimeAndDurationSig) vecEvalTime(ctx EvalContext, input *c // calculate + if arg0.IsZero() { + result.SetNull(i, true) // fixed: true + continue + } + output, err := arg0.Add(typeCtx(ctx), types.Duration{Duration: arg1, Fsp: -1}) if err != nil { @@ -117,6 +122,11 @@ func (b *builtinAddDatetimeAndStringSig) vecEvalTime(ctx EvalContext, input *chu // calculate + if arg0.IsZero() { + result.SetNull(i, true) // fixed: true + continue + } + if !isDuration(arg1) { result.SetNull(i, true) // fixed: true continue @@ -340,7 +350,6 @@ func (b *builtinAddStringAndDurationSig) vecEvalString(ctx EvalContext, input *c return err } if isNull { - tc.AppendWarning(err) result.AppendNull() // fixed: false continue } @@ -438,7 +447,6 @@ func (b *builtinAddStringAndStringSig) vecEvalString(ctx EvalContext, input *chu return err } if isNull { - tc.AppendWarning(err) result.AppendNull() // fixed: false continue } @@ -464,7 +472,7 @@ func (b *builtinAddDateAndDurationSig) vecEvalString(ctx EvalContext, input *chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } @@ -479,7 +487,7 @@ func (b *builtinAddDateAndDurationSig) vecEvalString(ctx EvalContext, input *chu result.ReserveString(n) - arg0s := buf0.GoDurations() + arg0s := buf0.Times() arg1s := buf1.GoDurations() @@ -498,16 +506,25 @@ func (b *builtinAddDateAndDurationSig) vecEvalString(ctx EvalContext, input *chu // calculate - fsp0 := b.args[0].GetType(ctx).GetDecimal() + if arg0.IsZero() { + result.AppendNull() // fixed: false + continue + } + fsp1 := b.args[1].GetType(ctx).GetDecimal() arg1Duration := types.Duration{Duration: arg1, Fsp: fsp1} + tc := typeCtx(ctx) + arg0.SetType(mysql.TypeDatetime) - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Add(arg1Duration) + res, err := arg0.Add(tc, arg1Duration) if err != nil { - return err + tc.AppendWarning(err) + result.AppendNull() // fixed: false + continue } - output := sum.String() + + output := res.String() // commit result @@ -529,7 +546,7 @@ func (b *builtinAddDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } @@ -544,7 +561,7 @@ func (b *builtinAddDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk result.ReserveString(n) - arg0s := buf0.GoDurations() + arg0s := buf0.Times() for i := 0; i < n; i++ { @@ -561,6 +578,11 @@ func (b *builtinAddDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk // calculate + if arg0.IsZero() { + result.AppendNull() // fixed: false + continue + } + if !isDuration(arg1) { result.AppendNull() // fixed: false continue @@ -576,14 +598,17 @@ func (b *builtinAddDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk return err } - fsp0 := b.args[0].GetType(ctx).GetDecimal() + arg0.SetType(mysql.TypeDatetime) - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Add(arg1Duration) + res, err := arg0.Add(tc, arg1Duration) if err != nil { - return err + tc.AppendWarning(err) + result.AppendNull() // fixed: false + continue } - output := sum.String() + + output := res.String() // commit result @@ -675,6 +700,11 @@ func (b *builtinSubDatetimeAndDurationSig) vecEvalTime(ctx EvalContext, input *c // calculate + if arg0.IsZero() { + result.SetNull(i, true) // fixed: true + continue + } + tc := typeCtx(ctx) arg1Duration := types.Duration{Duration: arg1, Fsp: -1} output, err := arg0.Add(tc, arg1Duration.Neg()) @@ -732,6 +762,11 @@ func (b *builtinSubDatetimeAndStringSig) vecEvalTime(ctx EvalContext, input *chu // calculate + if arg0.IsZero() { + result.SetNull(i, true) // fixed: true + continue + } + if !isDuration(arg1) { result.SetNull(i, true) // fixed: true continue @@ -954,7 +989,6 @@ func (b *builtinSubStringAndDurationSig) vecEvalString(ctx EvalContext, input *c return err } if isNull { - tc.AppendWarning(err) result.AppendNull() // fixed: false continue } @@ -1052,7 +1086,6 @@ func (b *builtinSubStringAndStringSig) vecEvalString(ctx EvalContext, input *chu return err } if isNull { - tc.AppendWarning(err) result.AppendNull() // fixed: false continue } @@ -1078,7 +1111,7 @@ func (b *builtinSubDateAndDurationSig) vecEvalString(ctx EvalContext, input *chu return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } @@ -1093,7 +1126,7 @@ func (b *builtinSubDateAndDurationSig) vecEvalString(ctx EvalContext, input *chu result.ReserveString(n) - arg0s := buf0.GoDurations() + arg0s := buf0.Times() arg1s := buf1.GoDurations() @@ -1112,16 +1145,25 @@ func (b *builtinSubDateAndDurationSig) vecEvalString(ctx EvalContext, input *chu // calculate - fsp0 := b.args[0].GetType(ctx).GetDecimal() + if arg0.IsZero() { + result.AppendNull() // fixed: false + continue + } + fsp1 := b.args[1].GetType(ctx).GetDecimal() arg1Duration := types.Duration{Duration: arg1, Fsp: fsp1} + tc := typeCtx(ctx) + arg0.SetType(mysql.TypeDatetime) - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Sub(arg1Duration) + res, err := arg0.Add(tc, arg1Duration.Neg()) if err != nil { - return err + tc.AppendWarning(err) + result.AppendNull() // fixed: false + continue } - output := sum.String() + + output := res.String() // commit result @@ -1143,7 +1185,7 @@ func (b *builtinSubDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk return err } defer b.bufAllocator.put(buf0) - if err := b.args[0].VecEvalDuration(ctx, input, buf0); err != nil { + if err := b.args[0].VecEvalTime(ctx, input, buf0); err != nil { return err } @@ -1158,7 +1200,7 @@ func (b *builtinSubDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk result.ReserveString(n) - arg0s := buf0.GoDurations() + arg0s := buf0.Times() for i := 0; i < n; i++ { @@ -1175,6 +1217,11 @@ func (b *builtinSubDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk // calculate + if arg0.IsZero() { + result.AppendNull() // fixed: false + continue + } + if !isDuration(arg1) { result.AppendNull() // fixed: false continue @@ -1190,14 +1237,17 @@ func (b *builtinSubDateAndStringSig) vecEvalString(ctx EvalContext, input *chunk return err } - fsp0 := b.args[0].GetType(ctx).GetDecimal() + arg0.SetType(mysql.TypeDatetime) - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Sub(arg1Duration) + res, err := arg0.Add(tc, arg1Duration.Neg()) if err != nil { - return err + tc.AppendWarning(err) + result.AppendNull() // fixed: false + continue } - output := sum.String() + + output := res.String() // commit result diff --git a/pkg/expression/column.go b/pkg/expression/column.go index a1779f60cb98d..635f500717a55 100644 --- a/pkg/expression/column.go +++ b/pkg/expression/column.go @@ -263,16 +263,14 @@ func (col *CorrelatedColumn) Hash64(h base.Hasher) { // Equals implements HashEquals.<1st> interface. func (col *CorrelatedColumn) Equals(other any) bool { - if other == nil { + col2, ok := other.(*CorrelatedColumn) + if !ok { return false } - var col2 *CorrelatedColumn - switch x := other.(type) { - case CorrelatedColumn: - col2 = &x - case *CorrelatedColumn: - col2 = x - default: + if col == nil { + return col2 == nil + } + if col2 == nil { return false } return col.Column.Equals(&col2.Column) @@ -511,21 +509,19 @@ func (col *Column) Hash64(h base.Hasher) { // Equals implements HashEquals.<1st> interface. func (col *Column) Equals(other any) bool { - if other == nil { + col2, ok := other.(*Column) + if !ok { return false } - var col2 *Column - switch x := other.(type) { - case Column: - col2 = &x - case *Column: - col2 = x - default: + if col == nil { + return col2 == nil + } + if col2 == nil { return false } // when step into here, we could ensure that col1.RetType and col2.RetType are same type. // and we should ensure col1.RetType and col2.RetType is not nil ourselves. - ok := col.RetType == nil && col2.RetType == nil || col.RetType != nil && col2.RetType != nil && col.RetType.Equal(col2.RetType) + ok = col.RetType == nil && col2.RetType == nil || col.RetType != nil && col2.RetType != nil && col.RetType.Equal(col2.RetType) ok = ok && (col.VirtualExpr == nil && col2.VirtualExpr == nil || col.VirtualExpr != nil && col2.VirtualExpr != nil && col.VirtualExpr.Equals(col2.VirtualExpr)) return ok && col.ID == col2.ID && diff --git a/pkg/expression/column_test.go b/pkg/expression/column_test.go index 153cd6f929b43..a1babed68ab9a 100644 --- a/pkg/expression/column_test.go +++ b/pkg/expression/column_test.go @@ -493,3 +493,22 @@ func TestColumnHashEuqals4VirtualExpr(t *testing.T) { require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) require.True(t, col1.Equals(col2)) } + +func TestColumnEqualsWithNilWrappedInAny(t *testing.T) { + col1 := &Column{UniqueID: 1} + // Test: other is nil + require.False(t, col1.Equals(nil)) + // Test: other is *Column(nil) wrapped in any + var col2 *Column = nil + var col2AsAny any = col2 + require.False(t, col1.Equals(col2AsAny)) + // Test: both Columns are nil + var col3 *Column = nil + require.True(t, col3.Equals(col2AsAny)) + // Test: two Columns with the same values + col4 := &Column{UniqueID: 1} + require.True(t, col1.Equals(col4)) + // Test: two Columns with different values + col5 := &Column{UniqueID: 2} + require.False(t, col1.Equals(col5)) +} diff --git a/pkg/expression/constant.go b/pkg/expression/constant.go index 65ccce81a71af..d2e24734ee28d 100644 --- a/pkg/expression/constant.go +++ b/pkg/expression/constant.go @@ -32,7 +32,7 @@ import ( var _ base.HashEquals = &Constant{} -// NewOne stands for a number 1. +// NewOne stands for an unsigned number 1. func NewOne() *Constant { retT := types.NewFieldType(mysql.TypeTiny) retT.AddFlag(mysql.UnsignedFlag) // shrink range to avoid integral promotion @@ -44,7 +44,18 @@ func NewOne() *Constant { } } -// NewZero stands for a number 0. +// NewSignedOne stands for a signed number 1. +func NewSignedOne() *Constant { + retT := types.NewFieldType(mysql.TypeTiny) + retT.SetFlen(1) + retT.SetDecimal(0) + return &Constant{ + Value: types.NewDatum(1), + RetType: retT, + } +} + +// NewZero stands for an unsigned number 0. func NewZero() *Constant { retT := types.NewFieldType(mysql.TypeTiny) retT.AddFlag(mysql.UnsignedFlag) // shrink range to avoid integral promotion @@ -56,6 +67,17 @@ func NewZero() *Constant { } } +// NewSignedZero stands for a signed number 0. +func NewSignedZero() *Constant { + retT := types.NewFieldType(mysql.TypeTiny) + retT.SetFlen(1) + retT.SetDecimal(0) + return &Constant{ + Value: types.NewDatum(0), + RetType: retT, + } +} + // NewUInt64Const stands for constant of a given number. func NewUInt64Const(num int) *Constant { retT := types.NewFieldType(mysql.TypeLonglong) @@ -538,19 +560,17 @@ func (c *Constant) Hash64(h base.Hasher) { // Equals implements HashEquals.<1st> interface. func (c *Constant) Equals(other any) bool { - if other == nil { + c2, ok := other.(*Constant) + if !ok { return false } - var c2 *Constant - switch x := other.(type) { - case *Constant: - c2 = x - case Constant: - c2 = &x - default: + if c == nil { + return c2 == nil + } + if c2 == nil { return false } - ok := c.RetType == nil && c2.RetType == nil || c.RetType != nil && c2.RetType != nil && c.RetType.Equals(c2.RetType) + ok = c.RetType == nil && c2.RetType == nil || c.RetType != nil && c2.RetType != nil && c.RetType.Equals(c2.RetType) ok = ok && c.collationInfo.Equals(c2.collationInfo) ok = ok && (c.DeferredExpr == nil && c2.DeferredExpr == nil || c.DeferredExpr != nil && c2.DeferredExpr != nil && c.DeferredExpr.Equals(c2.DeferredExpr)) ok = ok && (c.ParamMarker == nil && c2.ParamMarker == nil || c.ParamMarker != nil && c2.ParamMarker != nil && c.ParamMarker.order == c2.ParamMarker.order) diff --git a/pkg/expression/evaluator.go b/pkg/expression/evaluator.go index a82bfb14f5a3f..13552b4f7ee36 100644 --- a/pkg/expression/evaluator.go +++ b/pkg/expression/evaluator.go @@ -15,127 +15,10 @@ package expression import ( - "sync/atomic" - "github.com/pingcap/tidb/pkg/expression/exprctx" "github.com/pingcap/tidb/pkg/util/chunk" - "github.com/pingcap/tidb/pkg/util/disjointset" - "github.com/pingcap/tidb/pkg/util/intest" ) -type columnEvaluator struct { - inputIdxToOutputIdxes map[int][]int - // mergedInputIdxToOutputIdxes is only determined in runtime when saw the input chunk. - mergedInputIdxToOutputIdxes atomic.Pointer[map[int][]int] -} - -// run evaluates "Column" expressions. -// NOTE: It should be called after all the other expressions are evaluated -// -// since it will change the content of the input Chunk. -func (e *columnEvaluator) run(ctx EvalContext, input, output *chunk.Chunk) error { - // mergedInputIdxToOutputIdxes only can be determined in runtime when we saw the input chunk structure. - if e.mergedInputIdxToOutputIdxes.Load() == nil { - e.mergeInputIdxToOutputIdxes(input, e.inputIdxToOutputIdxes) - } - for inputIdx, outputIdxes := range *e.mergedInputIdxToOutputIdxes.Load() { - if err := output.SwapColumn(outputIdxes[0], input, inputIdx); err != nil { - return err - } - for i, length := 1, len(outputIdxes); i < length; i++ { - output.MakeRef(outputIdxes[0], outputIdxes[i]) - } - } - return nil -} - -// mergeInputIdxToOutputIdxes merges separate inputIdxToOutputIdxes entries when column references -// are detected within the input chunk. This process ensures consistent handling of columns derived -// from the same original source. -// -// Consider the following scenario: -// -// Initial scan operation produces a column 'a': -// -// scan: a (addr: ???) -// -// This column 'a' is used in the first projection (proj1) to create two columns a1 and a2, both referencing 'a': -// -// proj1 -// / \ -// / \ -// / \ -// a1 (addr: 0xe) a2 (addr: 0xe) -// / \ -// / \ -// / \ -// proj2 proj2 -// / \ / \ -// / \ / \ -// a3 a4 a5 a6 -// -// (addr: 0xe) (addr: 0xe) (addr: 0xe) (addr: 0xe) -// -// Here, a1 and a2 share the same address (0xe), indicating they reference the same data from the original 'a'. -// -// When moving to the second projection (proj2), the system tries to project these columns further: -// - The first set (left side) consists of a3 and a4, derived from a1, both retaining the address (0xe). -// - The second set (right side) consists of a5 and a6, derived from a2, also starting with address (0xe). -// -// When proj1 is complete, the output chunk contains two columns [a1, a2], both derived from the single column 'a' from the scan. -// Since both a1 and a2 are column references with the same address (0xe), they are treated as referencing the same data. -// -// In proj2, two separate items are created: -// - <0, [0,1]>: This means the 0th input column (a1) is projected twice, into the 0th and 1st columns of the output chunk. -// - <1, [2,3]>: This means the 1st input column (a2) is projected twice, into the 2nd and 3rd columns of the output chunk. -// -// Due to the column swapping logic in each projection, after applying the <0, [0,1]> projection, -// the addresses for a1 and a2 may become swapped or invalid: -// -// proj1: a1 (addr: invalid) a2 (addr: invalid) -// -// This can lead to issues in proj2, where further operations on these columns may be unsafe: -// -// proj2: a3 (addr: 0xe) a4 (addr: 0xe) a5 (addr: ???) a6 (addr: ???) -// -// Therefore, it's crucial to identify and merge the original column references early, ensuring -// the final inputIdxToOutputIdxes mapping accurately reflects the shared origins of the data. -// For instance, <0, [0,1,2,3]> indicates that the 0th input column (original 'a') is referenced -// by all four output columns in the final output. -// -// mergeInputIdxToOutputIdxes merges inputIdxToOutputIdxes based on detected column references. -// This ensures that columns with the same reference are correctly handled in the output chunk. -func (e *columnEvaluator) mergeInputIdxToOutputIdxes(input *chunk.Chunk, inputIdxToOutputIdxes map[int][]int) { - originalDJSet := disjointset.NewSet[int](4) - flag := make([]bool, input.NumCols()) - // Detect self column-references inside the input chunk by comparing column addresses - for i := 0; i < input.NumCols(); i++ { - if flag[i] { - continue - } - for j := i + 1; j < input.NumCols(); j++ { - if input.Column(i) == input.Column(j) { - flag[j] = true - originalDJSet.Union(i, j) - } - } - } - // Merge inputIdxToOutputIdxes based on the detected column references. - newInputIdxToOutputIdxes := make(map[int][]int, len(inputIdxToOutputIdxes)) - for inputIdx := range inputIdxToOutputIdxes { - // Root idx is internal offset, not the right column index. - originalRootIdx := originalDJSet.FindRoot(inputIdx) - originalVal, ok := originalDJSet.FindVal(originalRootIdx) - intest.Assert(ok) - mergedOutputIdxes := newInputIdxToOutputIdxes[originalVal] - mergedOutputIdxes = append(mergedOutputIdxes, inputIdxToOutputIdxes[inputIdx]...) - newInputIdxToOutputIdxes[originalVal] = mergedOutputIdxes - } - // Update the merged inputIdxToOutputIdxes automatically. - // Once failed, it means other worker has done this job at meantime. - e.mergedInputIdxToOutputIdxes.CompareAndSwap(nil, &newInputIdxToOutputIdxes) -} - type defaultEvaluator struct { outputIdxes []int exprs []Expression @@ -201,8 +84,8 @@ func GetOptionalEvalPropsForExpr(expr Expression) exprctx.OptionalEvalPropKeySet // It separates them to "column" and "other" expressions and evaluates "other" // expressions before "column" expressions. type EvaluatorSuite struct { - *columnEvaluator // Evaluator for column expressions. - *defaultEvaluator // Evaluator for other expressions. + ColumnSwapHelper *chunk.ColumnSwapHelper // Evaluator for column expressions. + *defaultEvaluator // Evaluator for other expressions. } // NewEvaluatorSuite creates an EvaluatorSuite to evaluate all the exprs. @@ -212,11 +95,11 @@ func NewEvaluatorSuite(exprs []Expression, avoidColumnEvaluator bool) *Evaluator for i := 0; i < len(exprs); i++ { if col, isCol := exprs[i].(*Column); isCol && !avoidColumnEvaluator { - if e.columnEvaluator == nil { - e.columnEvaluator = &columnEvaluator{inputIdxToOutputIdxes: make(map[int][]int)} + if e.ColumnSwapHelper == nil { + e.ColumnSwapHelper = &chunk.ColumnSwapHelper{InputIdxToOutputIdxes: make(map[int][]int)} } inputIdx, outputIdx := col.Index, i - e.columnEvaluator.inputIdxToOutputIdxes[inputIdx] = append(e.columnEvaluator.inputIdxToOutputIdxes[inputIdx], outputIdx) + e.ColumnSwapHelper.InputIdxToOutputIdxes[inputIdx] = append(e.ColumnSwapHelper.InputIdxToOutputIdxes[inputIdx], outputIdx) continue } if e.defaultEvaluator == nil { @@ -250,8 +133,10 @@ func (e *EvaluatorSuite) Run(ctx EvalContext, vecEnabled bool, input, output *ch } } - if e.columnEvaluator != nil { - return e.columnEvaluator.run(ctx, input, output) + // NOTE: It should be called after all the other expressions are evaluated + // since it will change the content of the input Chunk. + if e.ColumnSwapHelper != nil { + return e.ColumnSwapHelper.SwapColumns(input, output) } return nil } diff --git a/pkg/expression/evaluator_test.go b/pkg/expression/evaluator_test.go index 0d7f79d9ca365..a9988b35b2003 100644 --- a/pkg/expression/evaluator_test.go +++ b/pkg/expression/evaluator_test.go @@ -15,7 +15,6 @@ package expression import ( - "slices" "testing" "time" @@ -109,6 +108,7 @@ func TestSleep(t *testing.T) { // non-strict model var levels errctx.LevelMap levels[errctx.ErrGroupBadNull] = errctx.LevelWarn + levels[errctx.ErrGroupNoDefault] = errctx.LevelWarn sessVars.StmtCtx.SetErrLevels(levels) d := make([]types.Datum, 1) f, err := fc.getFunction(ctx, datumsToConstants(d)) @@ -129,6 +129,7 @@ func TestSleep(t *testing.T) { // for error case under the strict model levels[errctx.ErrGroupBadNull] = errctx.LevelError + levels[errctx.ErrGroupNoDefault] = errctx.LevelError sessVars.StmtCtx.SetErrLevels(levels) d[0].SetNull() _, err = fc.getFunction(ctx, datumsToConstants(d)) @@ -659,42 +660,3 @@ func TestOptionalProp(t *testing.T) { require.Equal(t, exprctx.OptPropCurrentUser.AsPropKeySet()|exprctx.OptPropDDLOwnerInfo.AsPropKeySet()| exprctx.OptPropAdvisoryLock.AsPropKeySet(), evalSuit.RequiredOptionalEvalProps()) } - -func TestMergeInputIdxToOutputIdxes(t *testing.T) { - ctx := createContext(t) - inputIdxToOutputIdxes := make(map[int][]int) - // input 0th should be column referred as 0th and 1st in output columns. - inputIdxToOutputIdxes[0] = []int{0, 1} - // input 1th should be column referred as 2nd and 3rd in output columns. - inputIdxToOutputIdxes[1] = []int{2, 3} - columnEval := columnEvaluator{inputIdxToOutputIdxes: inputIdxToOutputIdxes} - - input := chunk.NewEmptyChunk([]*types.FieldType{types.NewFieldType(mysql.TypeLonglong), types.NewFieldType(mysql.TypeLonglong)}) - input.AppendInt64(0, 99) - // input chunk's 0th and 1st are column referred itself. - input.MakeRef(0, 1) - - // chunk: col1 <---(ref) col2 - // ____________/ \___________/ \___ - // proj: col1 col2 col3 col4 - // - // original case after inputIdxToOutputIdxes[0], the original col2 will be nil pointer - // cause consecutive col3,col4 ref projection are invalid. - // - // after fix, the new inputIdxToOutputIdxes should be: inputIdxToOutputIdxes[0]: {0, 1, 2, 3} - - output := chunk.NewEmptyChunk([]*types.FieldType{types.NewFieldType(mysql.TypeLonglong), types.NewFieldType(mysql.TypeLonglong), - types.NewFieldType(mysql.TypeLonglong), types.NewFieldType(mysql.TypeLonglong)}) - - err := columnEval.run(ctx, input, output) - require.NoError(t, err) - // all four columns are column-referred, pointing to the first one. - require.Equal(t, output.Column(0), output.Column(1)) - require.Equal(t, output.Column(1), output.Column(2)) - require.Equal(t, output.Column(2), output.Column(3)) - require.Equal(t, output.GetRow(0).GetInt64(0), int64(99)) - - require.Equal(t, len(*columnEval.mergedInputIdxToOutputIdxes.Load()), 1) - slices.Sort((*columnEval.mergedInputIdxToOutputIdxes.Load())[0]) - require.Equal(t, (*columnEval.mergedInputIdxToOutputIdxes.Load())[0], []int{0, 1, 2, 3}) -} diff --git a/pkg/expression/expr_to_pb_test.go b/pkg/expression/expr_to_pb_test.go index f407372c3ded6..f6d9d94327999 100644 --- a/pkg/expression/expr_to_pb_test.go +++ b/pkg/expression/expr_to_pb_test.go @@ -1581,7 +1581,9 @@ func TestExprPushDownToTiKV(t *testing.T) { require.Len(t, pushed, 0) require.Len(t, remained, len(exprs)) - // Test Conv function + // Test Conv function, `conv` function for a BIT column should not be pushed down for its special behavior which + // is only handled in TiDB currently. + // see issue: https://github.com/pingcap/tidb/issues/51877 exprs = exprs[:0] function, err = NewFunction(mock.NewContext(), ast.Conv, types.NewFieldType(mysql.TypeString), stringColumn, intColumn, intColumn) require.NoError(t, err) @@ -1590,7 +1592,11 @@ func TestExprPushDownToTiKV(t *testing.T) { require.Len(t, pushed, len(exprs)) require.Len(t, remained, 0) exprs = exprs[:0] - castByteAsStringFunc, err := NewFunction(mock.NewContext(), ast.Cast, types.NewFieldType(mysql.TypeString), byteColumn) + // when conv a column with type BIT, a cast function will be used to cast bit to a binary string + castTp := types.NewFieldType(mysql.TypeString) + castTp.SetCharset(charset.CharsetBin) + castTp.SetCollate(charset.CollationBin) + castByteAsStringFunc, err := NewFunction(mock.NewContext(), ast.Cast, castTp, byteColumn) require.NoError(t, err) function, err = NewFunction(mock.NewContext(), ast.Conv, types.NewFieldType(mysql.TypeString), castByteAsStringFunc, intColumn, intColumn) require.NoError(t, err) diff --git a/pkg/expression/expression.go b/pkg/expression/expression.go index 4d745c1f0e5e1..0eb654a0c7179 100644 --- a/pkg/expression/expression.go +++ b/pkg/expression/expression.go @@ -445,7 +445,7 @@ func VecEvalBool(ctx EvalContext, vecEnabled bool, exprList CNFExprs, input *chu isEQCondFromIn := IsEQCondFromIn(expr) for i := range sel { if isZero[i] == -1 { - if eType != types.ETInt && !isEQCondFromIn { + if eType != types.ETInt || !isEQCondFromIn { continue } // In this case, we set this row to null and let it pass this filter. @@ -457,6 +457,7 @@ func VecEvalBool(ctx EvalContext, vecEnabled bool, exprList CNFExprs, input *chu } if isZero[i] == 0 { + nulls[sel[i]] = false continue } sel[j] = sel[i] // this row passes this filter @@ -919,49 +920,57 @@ func SplitDNFItems(onExpr Expression) []Expression { // EvaluateExprWithNull sets columns in schema as null and calculate the final result of the scalar function. // If the Expression is a non-constant value, it means the result is unknown. -func EvaluateExprWithNull(ctx BuildContext, schema *Schema, expr Expression) Expression { +func EvaluateExprWithNull(ctx BuildContext, schema *Schema, expr Expression) (Expression, error) { if MaybeOverOptimized4PlanCache(ctx, []Expression{expr}) { ctx.SetSkipPlanCache(fmt.Sprintf("%v affects null check", expr.StringWithCtx(ctx.GetEvalCtx(), errors.RedactLogDisable))) } if ctx.IsInNullRejectCheck() { - expr, _ = evaluateExprWithNullInNullRejectCheck(ctx, schema, expr) - return expr + res, _, err := evaluateExprWithNullInNullRejectCheck(ctx, schema, expr) + return res, err } return evaluateExprWithNull(ctx, schema, expr) } -func evaluateExprWithNull(ctx BuildContext, schema *Schema, expr Expression) Expression { +func evaluateExprWithNull(ctx BuildContext, schema *Schema, expr Expression) (Expression, error) { switch x := expr.(type) { case *ScalarFunction: args := make([]Expression, len(x.GetArgs())) for i, arg := range x.GetArgs() { - args[i] = evaluateExprWithNull(ctx, schema, arg) + res, err := EvaluateExprWithNull(ctx, schema, arg) + if err != nil { + return nil, err + } + args[i] = res } - return NewFunctionInternal(ctx, x.FuncName.L, x.RetType.Clone(), args...) + return NewFunction(ctx, x.FuncName.L, x.RetType.Clone(), args...) case *Column: if !schema.Contains(x) { - return x + return x, nil } - return &Constant{Value: types.Datum{}, RetType: types.NewFieldType(mysql.TypeNull)} + return &Constant{Value: types.Datum{}, RetType: types.NewFieldType(mysql.TypeNull)}, nil case *Constant: if x.DeferredExpr != nil { - return FoldConstant(ctx, x) + return FoldConstant(ctx, x), nil } } - return expr + return expr, nil } // evaluateExprWithNullInNullRejectCheck sets columns in schema as null and calculate the final result of the scalar function. // If the Expression is a non-constant value, it means the result is unknown. // The returned bool values indicates whether the value is influenced by the Null Constant transformed from schema column // when the value is Null Constant. -func evaluateExprWithNullInNullRejectCheck(ctx BuildContext, schema *Schema, expr Expression) (Expression, bool) { +func evaluateExprWithNullInNullRejectCheck(ctx BuildContext, schema *Schema, expr Expression) (Expression, bool, error) { switch x := expr.(type) { case *ScalarFunction: args := make([]Expression, len(x.GetArgs())) nullFromSets := make([]bool, len(x.GetArgs())) for i, arg := range x.GetArgs() { - args[i], nullFromSets[i] = evaluateExprWithNullInNullRejectCheck(ctx, schema, arg) + res, nullFromSet, err := evaluateExprWithNullInNullRejectCheck(ctx, schema, arg) + if err != nil { + return nil, false, err + } + args[i], nullFromSets[i] = res, nullFromSet } allArgsNullFromSet := true for i := range args { @@ -998,22 +1007,25 @@ func evaluateExprWithNullInNullRejectCheck(ctx BuildContext, schema *Schema, exp } } - c := NewFunctionInternal(ctx, x.FuncName.L, x.RetType.Clone(), args...) + c, err := NewFunction(ctx, x.FuncName.L, x.RetType.Clone(), args...) + if err != nil { + return nil, false, err + } cons, ok := c.(*Constant) // If the return expr is Null Constant, and all the Null Constant arguments are affected by column schema, // then we think the result Null Constant is also affected by the column schema - return c, ok && cons.Value.IsNull() && allArgsNullFromSet + return c, ok && cons.Value.IsNull() && allArgsNullFromSet, nil case *Column: if !schema.Contains(x) { - return x, false + return x, false, nil } - return &Constant{Value: types.Datum{}, RetType: types.NewFieldType(mysql.TypeNull)}, true + return &Constant{Value: types.Datum{}, RetType: types.NewFieldType(mysql.TypeNull)}, true, nil case *Constant: if x.DeferredExpr != nil { - return FoldConstant(ctx, x), false + return FoldConstant(ctx, x), false, nil } } - return expr, false + return expr, false, nil } // TableInfo2SchemaAndNames converts the TableInfo to the schema and name slice. @@ -1059,7 +1071,7 @@ func TableInfo2SchemaAndNames(ctx BuildContext, dbName pmodel.CIStr, tbl *model. } } schema := NewSchema(cols...) - schema.SetUniqueKeys(keys) + schema.SetKeys(keys) return schema, names, nil } diff --git a/pkg/expression/expression_test.go b/pkg/expression/expression_test.go index 914c61639dd24..80125595240cf 100644 --- a/pkg/expression/expression_test.go +++ b/pkg/expression/expression_test.go @@ -49,16 +49,40 @@ func TestEvaluateExprWithNull(t *testing.T) { outerIfNull, err := newFunctionForTest(ctx, ast.Ifnull, col0, innerIfNull) require.NoError(t, err) - res := EvaluateExprWithNull(ctx, schema, outerIfNull) + res, err := EvaluateExprWithNull(ctx, schema, outerIfNull) + require.Nil(t, err) require.Equal(t, "ifnull(Column#1, 1)", res.StringWithCtx(ctx, errors.RedactLogDisable)) require.Equal(t, "ifnull(Column#1, ?)", res.StringWithCtx(ctx, errors.RedactLogEnable)) require.Equal(t, "ifnull(Column#1, ‹1›)", res.StringWithCtx(ctx, errors.RedactLogMarker)) schema.Columns = append(schema.Columns, col1) // ifnull(null, ifnull(null, 1)) - res = EvaluateExprWithNull(ctx, schema, outerIfNull) + res, err = EvaluateExprWithNull(ctx, schema, outerIfNull) + require.Nil(t, err) require.True(t, res.Equal(ctx, NewOne())) } +func TestEvaluateExprWithNullMeetError(t *testing.T) { + ctx := createContext(t) + tblInfo := newTestTableBuilder("").add("col0", mysql.TypeLonglong, 0).add("col1", mysql.TypeLonglong, 0).build() + schema := tableInfoToSchemaForTest(tblInfo) + col0 := schema.Columns[0] + col1 := schema.Columns[1] + schema.Columns = schema.Columns[:1] + innerFunc, err := newFunctionForTest(ctx, ast.Ifnull, col1, NewOne()) + require.NoError(t, err) + // rename the function name to make it invalid, so that the inner function will meet an error + innerFunc.(*ScalarFunction).FuncName.L = "invalid" + outerIfNull, err := newFunctionForTest(ctx, ast.Ifnull, col0, innerFunc) + require.NoError(t, err) + + // the inner function has an error + _, err = EvaluateExprWithNull(ctx, schema, outerIfNull) + require.NotNil(t, err) + // check in NullRejectCheck ctx + _, err = EvaluateExprWithNull(ctx.GetNullRejectCheckExprCtx(), schema, outerIfNull) + require.NotNil(t, err) +} + func TestEvaluateExprWithNullAndParameters(t *testing.T) { ctx := createContext(t) tblInfo := newTestTableBuilder("").add("col0", mysql.TypeLonglong, 0).build() @@ -70,14 +94,16 @@ func TestEvaluateExprWithNullAndParameters(t *testing.T) { // cases for parameters ltWithoutParam, err := newFunctionForTest(ctx, ast.LT, col0, NewOne()) require.NoError(t, err) - res := EvaluateExprWithNull(ctx, schema, ltWithoutParam) + res, err := EvaluateExprWithNull(ctx, schema, ltWithoutParam) + require.Nil(t, err) require.True(t, res.Equal(ctx, NewNull())) // the expression is evaluated to null param := NewOne() param.ParamMarker = &ParamMarker{order: 0} ctx.GetSessionVars().PlanCacheParams.Append(types.NewIntDatum(10)) ltWithParam, err := newFunctionForTest(ctx, ast.LT, col0, param) require.NoError(t, err) - res = EvaluateExprWithNull(ctx, schema, ltWithParam) + res, err = EvaluateExprWithNull(ctx, schema, ltWithParam) + require.Nil(t, err) _, isConst := res.(*Constant) require.True(t, isConst) // this expression is evaluated and skip-plan cache flag is set. require.True(t, !ctx.GetSessionVars().StmtCtx.UseCache()) diff --git a/pkg/expression/exprstatic/evalctx_test.go b/pkg/expression/exprstatic/evalctx_test.go index 4ac7cb0822e07..0a792e4ef3e87 100644 --- a/pkg/expression/exprstatic/evalctx_test.go +++ b/pkg/expression/exprstatic/evalctx_test.go @@ -110,6 +110,7 @@ func getEvalCtxOptionsForTest(t *testing.T) ([]EvalCtxOption, *evalCtxOptionsTes WithTypeFlags(types.FlagAllowNegativeToUnsigned | types.FlagSkipASCIICheck), WithErrLevelMap(errctx.LevelMap{ errctx.ErrGroupBadNull: errctx.LevelError, + errctx.ErrGroupNoDefault: errctx.LevelError, errctx.ErrGroupDividedByZero: errctx.LevelWarn, }), WithLocation(loc), @@ -134,6 +135,7 @@ func checkOptionsStaticEvalCtx(t *testing.T, ctx *EvalContext, s *evalCtxOptions ) require.Equal(t, errctx.NewContextWithLevels(errctx.LevelMap{ errctx.ErrGroupBadNull: errctx.LevelError, + errctx.ErrGroupNoDefault: errctx.LevelError, errctx.ErrGroupDividedByZero: errctx.LevelWarn, }, ctx), ctx.ErrCtx()) require.Same(t, s.loc, ctx.Location()) diff --git a/pkg/expression/generator/time_vec.go b/pkg/expression/generator/time_vec.go index a5c44831c11a0..49c5e7aefa9f1 100644 --- a/pkg/expression/generator/time_vec.go +++ b/pkg/expression/generator/time_vec.go @@ -74,6 +74,13 @@ import ( } {{ end }} +{{ define "CheckZeroDate" }} + if arg0.IsZero() { + {{ template "SetNull" . }} + continue + } +{{ end }} + {{ range .Sigs }} {{ if .AllNull}} func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx EvalContext, input *chunk.Chunk, result *chunk.Column) error { @@ -170,6 +177,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx EvalContext, input *chu // calculate {{ if or (eq .SigName "builtinAddDatetimeAndDurationSig") (eq .SigName "builtinSubDatetimeAndDurationSig") }} + {{ template "CheckZeroDate" . }} {{ if eq $.FuncName "AddTime" }} output, err := arg0.Add(typeCtx(ctx), types.Duration{Duration: arg1, Fsp: -1}) {{ else }} @@ -182,6 +190,7 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx EvalContext, input *chu } {{ else if or (eq .SigName "builtinAddDatetimeAndStringSig") (eq .SigName "builtinSubDatetimeAndStringSig") }} + {{ template "CheckZeroDate" . }} {{ if eq $.FuncName "AddTime" }} {{ template "ConvertStringToDuration" . }} output, err := arg0.Add(typeCtx(ctx), arg1Duration) @@ -260,7 +269,6 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx EvalContext, input *chu return err } if isNull { - tc.AppendWarning(err) {{ template "SetNull" . }} continue } @@ -293,36 +301,44 @@ func (b *{{.SigName}}) vecEval{{ .Output.TypeName }}(ctx EvalContext, input *chu return err } if isNull { - tc.AppendWarning(err) {{ template "SetNull" . }} continue } } {{ else if or (eq .SigName "builtinAddDateAndDurationSig") (eq .SigName "builtinSubDateAndDurationSig") }} - fsp0 := b.args[0].GetType(ctx).GetDecimal() + {{ template "CheckZeroDate" . }} fsp1 := b.args[1].GetType(ctx).GetDecimal() arg1Duration := types.Duration{Duration: arg1, Fsp: fsp1} + tc := typeCtx(ctx) + arg0.SetType(mysql.TypeDatetime) {{ if eq $.FuncName "AddTime" }} - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Add(arg1Duration) + res, err := arg0.Add(tc, arg1Duration) {{ else }} - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Sub(arg1Duration) + res, err := arg0.Add(tc, arg1Duration.Neg()) {{ end }} if err != nil { - return err + tc.AppendWarning(err) + {{ template "SetNull" . }} + continue } - output := sum.String() + + output := res.String() {{ else if or (eq .SigName "builtinAddDateAndStringSig") (eq .SigName "builtinSubDateAndStringSig") }} + {{ template "CheckZeroDate" . }} {{ template "ConvertStringToDuration" . }} - fsp0 := b.args[0].GetType(ctx).GetDecimal() + arg0.SetType(mysql.TypeDatetime) {{ if eq $.FuncName "AddTime" }} - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Add(arg1Duration) + res, err := arg0.Add(tc, arg1Duration) {{ else }} - sum, err := types.Duration{Duration: arg0, Fsp: fsp0}.Sub(arg1Duration) + res, err := arg0.Add(tc, arg1Duration.Neg()) {{ end }} if err != nil { - return err + tc.AppendWarning(err) + {{ template "SetNull" . }} + continue } - output := sum.String() + + output := res.String() {{ end }} // commit result @@ -684,22 +700,13 @@ func (g gener) gen() any { // {{ $sig.SigName }} { retEvalType: types.ET{{ .Output.ETName }}, - {{- if eq .TestTypeA "" }} childrenTypes: []types.EvalType{types.ET{{ .TypeA.ETName }}, types.ET{{ .TypeB.ETName }}}, - {{- else }} - childrenTypes: []types.EvalType{types.ET{{ .TestTypeA }}, types.ET{{ .TestTypeB }}}, - {{- end }} {{- if ne .FieldTypeA "" }} childrenFieldTypes: []*types.FieldType{types.NewFieldType(mysql.Type{{.FieldTypeA}}), types.NewFieldType(mysql.Type{{.FieldTypeB}})}, {{- end }} geners: []dataGenerator{ - {{- if eq .TestTypeA "" }} gener{*newDefaultGener(0.2, types.ET{{.TypeA.ETName}})}, gener{*newDefaultGener(0.2, types.ET{{.TypeB.ETName}})}, - {{- else }} - gener{*newDefaultGener(0.2, types.ET{{ .TestTypeA }})}, - gener{*newDefaultGener(0.2, types.ET{{ .TestTypeB }})}, - {{- end }} }, }, {{- end }} @@ -785,8 +792,8 @@ var addTimeSigsTmpl = []sig{ {SigName: "builtinAddDurationAndStringSig", TypeA: TypeDuration, TypeB: TypeString, Output: TypeDuration}, {SigName: "builtinAddStringAndDurationSig", TypeA: TypeString, TypeB: TypeDuration, Output: TypeString}, {SigName: "builtinAddStringAndStringSig", TypeA: TypeString, TypeB: TypeString, Output: TypeString}, - {SigName: "builtinAddDateAndDurationSig", TypeA: TypeDuration, TypeB: TypeDuration, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "Duration", TestTypeA: "Datetime", TestTypeB: "Duration"}, - {SigName: "builtinAddDateAndStringSig", TypeA: TypeDuration, TypeB: TypeString, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "String", TestTypeA: "Datetime", TestTypeB: "String"}, + {SigName: "builtinAddDateAndDurationSig", TypeA: TypeDatetime, TypeB: TypeDuration, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "Duration"}, + {SigName: "builtinAddDateAndStringSig", TypeA: TypeDatetime, TypeB: TypeString, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "String"}, {SigName: "builtinAddTimeDateTimeNullSig", TypeA: TypeDatetime, TypeB: TypeDatetime, Output: TypeDatetime, AllNull: true}, {SigName: "builtinAddTimeStringNullSig", TypeA: TypeDatetime, TypeB: TypeDatetime, Output: TypeString, AllNull: true, FieldTypeA: "Date", FieldTypeB: "Datetime"}, @@ -800,8 +807,8 @@ var subTimeSigsTmpl = []sig{ {SigName: "builtinSubDurationAndStringSig", TypeA: TypeDuration, TypeB: TypeString, Output: TypeDuration}, {SigName: "builtinSubStringAndDurationSig", TypeA: TypeString, TypeB: TypeDuration, Output: TypeString}, {SigName: "builtinSubStringAndStringSig", TypeA: TypeString, TypeB: TypeString, Output: TypeString}, - {SigName: "builtinSubDateAndDurationSig", TypeA: TypeDuration, TypeB: TypeDuration, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "Duration", TestTypeA: "Datetime", TestTypeB: "Duration"}, - {SigName: "builtinSubDateAndStringSig", TypeA: TypeDuration, TypeB: TypeString, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "String", TestTypeA: "Datetime", TestTypeB: "String"}, + {SigName: "builtinSubDateAndDurationSig", TypeA: TypeDatetime, TypeB: TypeDuration, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "Duration"}, + {SigName: "builtinSubDateAndStringSig", TypeA: TypeDatetime, TypeB: TypeString, Output: TypeString, FieldTypeA: "Date", FieldTypeB: "String"}, {SigName: "builtinSubTimeDateTimeNullSig", TypeA: TypeDatetime, TypeB: TypeDatetime, Output: TypeDatetime, AllNull: true}, {SigName: "builtinSubTimeStringNullSig", TypeA: TypeDatetime, TypeB: TypeDatetime, Output: TypeString, AllNull: true, FieldTypeA: "Date", FieldTypeB: "Datetime"}, @@ -893,7 +900,6 @@ type sig struct { SigName string TypeA, TypeB, Output TypeContext FieldTypeA, FieldTypeB string // Optional - TestTypeA, TestTypeB string // Optional, specific Type for test in builtinAddDateAndDurationSig & builtinAddDateAndStringSig AllNull bool } diff --git a/pkg/expression/integration_test/BUILD.bazel b/pkg/expression/integration_test/BUILD.bazel index fa5d0d093b599..ae2ec434f590d 100644 --- a/pkg/expression/integration_test/BUILD.bazel +++ b/pkg/expression/integration_test/BUILD.bazel @@ -8,7 +8,7 @@ go_test( "main_test.go", ], flaky = True, - shard_count = 46, + shard_count = 48, deps = [ "//pkg/config", "//pkg/domain", diff --git a/pkg/expression/integration_test/integration_test.go b/pkg/expression/integration_test/integration_test.go index 8b43a52534d25..b81177c23610e 100644 --- a/pkg/expression/integration_test/integration_test.go +++ b/pkg/expression/integration_test/integration_test.go @@ -372,13 +372,10 @@ func TestVectorConstantExplain(t *testing.T) { require.NoError(t, err) fmt.Println(planTree) 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`, - ` └─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) - + // Don't check planTree directly, because it contains execution time info which is not fixed after open/close time is included + require.True(t, strings.Contains(planTree, ` 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`)) + require.True(t, strings.Contains(planTree, ` └─TableReader_5 root 10000 data:TableFullScan_4`)) + require.True(t, strings.Contains(planTree, ` └─TableFullScan_4 cop[tikv] 10000 table:t, keep order:false, stats:pseudo`)) // No need to check result at all. tk.ResultSetToResult(rs, fmt.Sprintf("%v", rs)) } @@ -2499,13 +2496,13 @@ func TestTimeBuiltin(t *testing.T) { result = tk.MustQuery("select addtime(cast('01:01:11' as time(4)), '00:00:01.013'), addtime(cast('01:01:11.00' " + "as datetime(3)), '00:00:01')," + " addtime(cast('2017-01-01 01:01:11.12' as date), '00:00:01'), addtime(cast" + "(cast('2017-01-01 01:01:11.12' as date) as datetime(2)), '00:00:01.88');") - result.Check(testkit.Rows("01:01:12.0130 2001-01-11 00:00:01.000 00:00:01 2017-01-01 00:00:01.88")) + result.Check(testkit.Rows("01:01:12.0130 2001-01-11 00:00:01.000 2017-01-01 00:00:01 2017-01-01 00:00:01.88")) result = tk.MustQuery("select addtime('2017-01-01 01:01:01', 5), addtime('2017-01-01 01:01:01', -5), addtime('2017-01-01 01:01:01', 0.0), addtime('2017-01-01 01:01:01', 1.34);") result.Check(testkit.Rows("2017-01-01 01:01:06 2017-01-01 01:00:56 2017-01-01 01:01:01 2017-01-01 01:01:02.340000")) result = tk.MustQuery("select addtime(cast('01:01:11.00' as datetime(3)), cast('00:00:01' as time)), addtime(cast('01:01:11.00' as datetime(3)), cast('00:00:01' as time(5)))") result.Check(testkit.Rows("2001-01-11 00:00:01.000 2001-01-11 00:00:01.00000")) result = tk.MustQuery("select addtime(cast('01:01:11.00' as date), cast('00:00:01' as time));") - result.Check(testkit.Rows("00:00:01")) + result.Check(testkit.Rows("2001-01-11 00:00:01")) tk.MustExec("drop table if exists t") tk.MustExec("create table t(a datetime, b timestamp, c time)") tk.MustExec(`insert into t values("2017-01-01 12:30:31", "2017-01-01 12:30:31", "01:01:01")`) @@ -2529,7 +2526,7 @@ func TestTimeBuiltin(t *testing.T) { result = tk.MustQuery("select subtime(cast('01:01:11' as time(4)), '00:00:01.013'), subtime(cast('01:01:11.00' " + "as datetime(3)), '00:00:01')," + " subtime(cast('2017-01-01 01:01:11.12' as date), '00:00:01'), subtime(cast" + "(cast('2017-01-01 01:01:11.12' as date) as datetime(2)), '00:00:01.88');") - result.Check(testkit.Rows("01:01:09.9870 2001-01-10 23:59:59.000 -00:00:01 2016-12-31 23:59:58.12")) + result.Check(testkit.Rows("01:01:09.9870 2001-01-10 23:59:59.000 2016-12-31 23:59:59 2016-12-31 23:59:58.12")) result = tk.MustQuery("select subtime('2017-01-01 01:01:01', 5), subtime('2017-01-01 01:01:01', -5), subtime('2017-01-01 01:01:01', 0.0), subtime('2017-01-01 01:01:01', 1.34);") result.Check(testkit.Rows("2017-01-01 01:00:56 2017-01-01 01:01:06 2017-01-01 01:01:01 2017-01-01 01:00:59.660000")) result = tk.MustQuery("select subtime('01:01:11', '0:0:1.013'), subtime('01:01:11.00', '0:0:1'), subtime('2017-01-01 01:01:11.12', '0:0:1'), subtime('2017-01-01 01:01:11.12', '0:0:1.120000');") @@ -2537,7 +2534,7 @@ func TestTimeBuiltin(t *testing.T) { result = tk.MustQuery("select subtime(cast('01:01:11.00' as datetime(3)), cast('00:00:01' as time)), subtime(cast('01:01:11.00' as datetime(3)), cast('00:00:01' as time(5)))") result.Check(testkit.Rows("2001-01-10 23:59:59.000 2001-01-10 23:59:59.00000")) result = tk.MustQuery("select subtime(cast('01:01:11.00' as date), cast('00:00:01' as time));") - result.Check(testkit.Rows("-00:00:01")) + result.Check(testkit.Rows("2001-01-10 23:59:59")) result = tk.MustQuery("select subtime(a, b), subtime(cast(a as date), b), subtime(b,a), subtime(a,c), subtime(b," + "c), subtime(c,a), subtime(c,b) from t;") result.Check(testkit.Rows(" 2017-01-01 11:29:30 2017-01-01 11:29:30 ")) @@ -2561,13 +2558,13 @@ func TestTimeBuiltin(t *testing.T) { result = tk.MustQuery("select addtime('2017-01-01 01:01:01', 0b1), addtime('2017-01-01', b'1'), addtime('01:01:01', 0b1011)") result.Check(testkit.Rows(" ")) result = tk.MustQuery("select addtime('2017-01-01', 1), addtime('2017-01-01 01:01:01', 1), addtime(cast('2017-01-01' as date), 1)") - result.Check(testkit.Rows("2017-01-01 00:00:01 2017-01-01 01:01:02 00:00:01")) + result.Check(testkit.Rows("2017-01-01 00:00:01 2017-01-01 01:01:02 2017-01-01 00:00:01")) result = tk.MustQuery("select subtime(a, e), subtime(b, e), subtime(c, e), subtime(d, e) from t") result.Check(testkit.Rows(" ")) result = tk.MustQuery("select subtime('2017-01-01 01:01:01', 0b1), subtime('2017-01-01', b'1'), subtime('01:01:01', 0b1011)") result.Check(testkit.Rows(" ")) result = tk.MustQuery("select subtime('2017-01-01', 1), subtime('2017-01-01 01:01:01', 1), subtime(cast('2017-01-01' as date), 1)") - result.Check(testkit.Rows("2016-12-31 23:59:59 2017-01-01 01:01:00 -00:00:01")) + result.Check(testkit.Rows("2016-12-31 23:59:59 2017-01-01 01:01:00 2016-12-31 23:59:59")) result = tk.MustQuery("select addtime(-32073, 0), addtime(0, -32073);") result.Check(testkit.Rows(" ")) @@ -3903,3 +3900,64 @@ func TestIssue44706(t *testing.T) { tk.MustQuery("SELECT t0.c2 FROM t0 WHERE ((-1)<=(~ ('n') = ANY (SELECT (NULL))))").Check(testkit.Rows()) tk.MustQuery("SELECT t0.c2 FROM t0 WHERE ((-1)<=(~ ('n') = ANY (SELECT MIN(t0.c2) FROM t0 WHERE false)))").Check(testkit.Rows()) } + +func TestIssue55885(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t_jg8o (c_s int not null unique ,c__qy double ,c_z int not null ,c_a90ol text not null);") + tk.MustExec("insert into t_jg8o (c_s, c__qy, c_z, c_a90ol) values" + + "(-975033779, 85.65, -355481284, 'gnip' ),(-2018599732, 85.86, 1617093413, 'm' )," + + "(-960107027, 4.6, -2042358076, 'y1q')," + + "(-3, 38.1, -1528586343, 'ex_2')," + + "(69386953, 32768.0, -62220810, 'tfkxjj5c')," + + "(587181689, -9223372036854775806.3, -1666156943, 'queemvgj')," + + "(-218561796, 85.2, -670390288, 'nf990nol')," + + "(858419954, 2147483646.0, -1649362344, 'won_9')," + + "(-1120115215, 22.100, 1509989939, 'w')," + + "(-1388119356, 94.32, -1694148464, 'gu4i4knyhm')," + + "(-1016230734, -4294967295.8, 1430313391, 's')," + + "(-1861825796, 36.52, -1457928755, 'j')," + + "(1963621165, 88.87, 18928603, 'gxbsloff' )," + + "(1492879828, cast(null as double), 759883041, 'zwue')," + + "(-1607192175, 12.36, 1669523024, 'qt5zch71a')," + + "(1534068569, 46.79, -392085130, 'bc')," + + "(155707446, 9223372036854775809.4, 1727199557, 'qyghenu9t6')," + + "(-1524976778, 75.99, 335492222, 'sdgde0z')," + + "(175403335, cast(null as double), -69711503, 'ja')," + + "(-272715456, 48.62, 753928713, 'ur')," + + "(-2035825967, 257.3, -1598426762, 'lmqmn')," + + "(-1178957955, 2147483648.100000, 1432554380, 'dqpb210')," + + "(-2056628646, 254.5, -1476177588, 'k41ajpt7x')," + + "(-914210874, 126.7, -421919910, 'x57ud7oy1')," + + "(-88586773, 1.2, 1568247510, 'drmxi8')," + + "(-834563269, -4294967296.7, 1163133933, 'wp')," + + "(-84490060, 54.13, -630289437, '_3_twecg5h')," + + " (267700893, 54.75, 370343042, 'n72')," + + "(552106333, 32766.2, 2365745, 's7tt')," + + "(643440707, 65536.8, -850412592, 'wmluxa9a')," + + "(1709853766, -4294967296.5, -21041749, 'obqj0uu5v')," + + "(-7, 80.88, 528792379, 'n5qr9m26i')," + + "(-456431629, 28.43, 1958788149, 'b')," + + "(-28841240, 11.86, -1089765168, 'pqg')," + + "(-807839288, 25.89, 504535500, 'cs3tkhs')," + + "(-52910064, 85.16, 354032882, '_ffjo67yxe')," + + "(1919869830, 81.81, -272247558, 'aj')," + + "(165434725, -2147483648.0, 11, 'xxnsf5')," + + "(3, -2147483648.7, 1616632952, 'g7t8tqyi')," + + "(1851859144, 70.73, -1105664209, 'qjfhjr');") + + tk.MustQuery("SELECT subq_0.c3 as c1 FROM (select c_a90ol as c3, c_a90ol as c4, var_pop(cast(c__qy as double)) over (partition by c_a90ol, c_s order by c_z) as c5 from t_jg8o limit 65) as subq_0 LIMIT 37") +} + +func TestIssue55886(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1(c_foveoe text, c_jbb text, c_cz text not null);") + tk.MustExec("create table t2(c_g7eofzlxn int);") + tk.MustExec("set collation_connection='latin1_bin';") + tk.MustQuery("with cte_0 AS (select 1 as c1, case when ref_0.c_jbb then inet6_aton(ref_0.c_foveoe) else ref_4.c_cz end as c5 from t1 as ref_0 join " + + " (t1 as ref_4 right outer join t2 as ref_5 on ref_5.c_g7eofzlxn != 1)), cte_4 as (select 1 as c1 from t2) select ref_34.c1 as c5 from" + + " cte_0 as ref_34 where exists (select 1 from cte_4 as ref_35 where ref_34.c1 <= case when ref_34.c5 then cast(1 as char) else ref_34.c5 end);") +} diff --git a/pkg/expression/scalar_function.go b/pkg/expression/scalar_function.go index 6aa7613accc18..6a6dadc4f1b5d 100644 --- a/pkg/expression/scalar_function.go +++ b/pkg/expression/scalar_function.go @@ -700,19 +700,17 @@ func (sf *ScalarFunction) Hash64(h base.Hasher) { // Equals implements HashEquals.<1th> interface. func (sf *ScalarFunction) Equals(other any) bool { - if other == nil { + sf2, ok := other.(*ScalarFunction) + if !ok { return false } - var sf2 *ScalarFunction - switch x := other.(type) { - case *ScalarFunction: - sf2 = x - case ScalarFunction: - sf2 = &x - default: + if sf == nil { + return sf2 == nil + } + if sf2 == nil { return false } - ok := sf.FuncName.L == sf2.FuncName.L + ok = sf.FuncName.L == sf2.FuncName.L ok = ok && (sf.RetType == nil && sf2.RetType == nil || sf.RetType != nil && sf2.RetType != nil && sf.RetType.Equals(sf2.RetType)) if len(sf.GetArgs()) != len(sf2.GetArgs()) { return false diff --git a/pkg/expression/schema.go b/pkg/expression/schema.go index c811af42b0d71..67f07dc1a9822 100644 --- a/pkg/expression/schema.go +++ b/pkg/expression/schema.go @@ -46,10 +46,10 @@ func (ki KeyInfo) String() string { // Schema stands for the row schema and unique key information get from input. type Schema struct { Columns []*Column - Keys []KeyInfo - // UniqueKeys stores those unique indexes that allow null values, but Keys does not allow null values. - // since equivalence conditions can filter out null values, in this case a unique index with null values can be a Key. - UniqueKeys []KeyInfo + PKOrUK []KeyInfo // this fields stores the primary key or unique key. + // NullableUK stores those unique indexes that allow null values, but PKOrUK does not allow null values. + // Since equivalence conditions can filter out null values, in this case a unique index with null values can be a Key. + NullableUK []KeyInfo } // String implements fmt.Stringer interface. @@ -58,11 +58,17 @@ func (s *Schema) String() string { for _, col := range s.Columns { colStrs = append(colStrs, col.String()) } - ukStrs := make([]string, 0, len(s.Keys)) - for _, key := range s.Keys { + strs := make([]string, 0, len(s.PKOrUK)) + for _, key := range s.PKOrUK { + strs = append(strs, key.String()) + } + ukStrs := make([]string, 0, len(s.PKOrUK)) + for _, key := range s.NullableUK { ukStrs = append(ukStrs, key.String()) } - return "Column: [" + strings.Join(colStrs, ",") + "] Unique key: [" + strings.Join(ukStrs, ",") + "]" + return "Column: [" + strings.Join(colStrs, ",") + + "] PKOrUK: [" + strings.Join(strs, ",") + + "] NullableUK: [" + strings.Join(ukStrs, ",") + "]" } // Clone copies the total schema. @@ -71,15 +77,22 @@ func (s *Schema) Clone() *Schema { return nil } cols := make([]*Column, 0, s.Len()) - keys := make([]KeyInfo, 0, len(s.Keys)) + keys := make([]KeyInfo, 0, len(s.PKOrUK)) for _, col := range s.Columns { cols = append(cols, col.Clone().(*Column)) } - for _, key := range s.Keys { + for _, key := range s.PKOrUK { keys = append(keys, key.Clone()) } schema := NewSchema(cols...) - schema.SetUniqueKeys(keys) + schema.SetKeys(keys) + if s.NullableUK != nil { + uniqueKeys := make([]KeyInfo, 0, len(s.NullableUK)) + for _, key := range s.NullableUK { + uniqueKeys = append(uniqueKeys, key.Clone()) + } + schema.SetUniqueKeys(uniqueKeys) + } return schema } @@ -128,22 +141,34 @@ func (s *Schema) RetrieveColumn(col *Column) *Column { return nil } -// IsUniqueKey checks if this column is a unique key. -func (s *Schema) IsUniqueKey(col *Column) bool { - for _, key := range s.Keys { - if len(key) == 1 && key[0].EqualColumn(col) { - return true - } +// IsUnique checks if the column is unique key. +// Pass strong=true to check strong contraint: unique && notnull. +// Pass strong=false to check weak contraint: unique && nullable. +func (s *Schema) IsUnique(strong bool, cols ...*Column) bool { + slicesToBeIterated := s.NullableUK + if strong { + slicesToBeIterated = s.PKOrUK } - return false -} + for _, key := range slicesToBeIterated { + if len(key) > len(cols) { + continue + } + allFound := true + nextKeyCol: -// IsUnique checks if this column is a unique key which may contain duplicate nulls . -func (s *Schema) IsUnique(col *Column) bool { - for _, key := range s.UniqueKeys { - if len(key) == 1 && key[0].EqualColumn(col) { - return true + for _, keyCols := range key { + for _, col := range cols { + if keyCols.EqualColumn(col) { + continue nextKeyCol + } + } + allFound = false + break + } + if !allFound { + continue } + return true } return false } @@ -183,9 +208,14 @@ func (s *Schema) Append(col ...*Column) { s.Columns = append(s.Columns, col...) } -// SetUniqueKeys will set the value of Schema.Keys. +// SetKeys will set the value of Schema.Keys. +func (s *Schema) SetKeys(keys []KeyInfo) { + s.PKOrUK = keys +} + +// SetUniqueKeys will set the value of Schema.UniqueKeys. func (s *Schema) SetUniqueKeys(keys []KeyInfo) { - s.Keys = keys + s.NullableUK = keys } // ColumnsIndices will return a slice which contains the position of each column in schema. @@ -239,18 +269,18 @@ func (s *Schema) MemoryUsage() (sum int64) { return } - sum = emptySchemaSize + int64(cap(s.Columns))*size.SizeOfPointer + int64(cap(s.Keys)+cap(s.UniqueKeys))*size.SizeOfSlice + sum = emptySchemaSize + int64(cap(s.Columns))*size.SizeOfPointer + int64(cap(s.PKOrUK)+cap(s.NullableUK))*size.SizeOfSlice for _, col := range s.Columns { sum += col.MemoryUsage() } - for _, cols := range s.Keys { + for _, cols := range s.PKOrUK { sum += int64(cap(cols)) * size.SizeOfPointer for _, col := range cols { sum += col.MemoryUsage() } } - for _, cols := range s.UniqueKeys { + for _, cols := range s.NullableUK { sum += int64(cap(cols)) * size.SizeOfPointer for _, col := range cols { sum += col.MemoryUsage() diff --git a/pkg/expression/schema_test.go b/pkg/expression/schema_test.go index 349fb71a2f6c2..3338c8e6a6170 100644 --- a/pkg/expression/schema_test.go +++ b/pkg/expression/schema_test.go @@ -17,6 +17,7 @@ package expression import ( "fmt" "testing" + "unsafe" "github.com/pingcap/tidb/pkg/util/mock" "github.com/stretchr/testify/require" @@ -33,7 +34,7 @@ func generateKeys4Schema(schema *Schema) { for i := 0; i < keyCount; i++ { keys = append(keys, []*Column{schema.Columns[i]}) } - schema.Keys = keys + schema.PKOrUK = keys } // generateSchema will generate a schema for test. Used only in this file. @@ -48,12 +49,30 @@ func (s *schemaGenerator) generateSchema(colCount int) *Schema { return NewSchema(cols...) } +func TestSchemaClone(t *testing.T) { + s := &schemaGenerator{} + schema := s.generateSchema(5) + generateKeys4Schema(schema) + + uniKeys := make([]KeyInfo, 0, len(schema.Columns)-1) + for i := 0; i < len(schema.Columns)-1; i++ { + uniKeys = append(uniKeys, []*Column{schema.Columns[i]}) + } + schema.SetUniqueKeys(uniKeys) + + clonedSchema := schema.Clone() + require.Equal(t, schema.String(), clonedSchema.String()) + + require.NotSame(t, unsafe.SliceData(schema.PKOrUK), unsafe.SliceData(clonedSchema.PKOrUK)) + require.NotSame(t, unsafe.SliceData(schema.NullableUK), unsafe.SliceData(clonedSchema.NullableUK)) +} + func TestSchemaString(t *testing.T) { s := &schemaGenerator{} schema := s.generateSchema(5) - require.Equal(t, "Column: [Column#1,Column#2,Column#3,Column#4,Column#5] Unique key: []", schema.String()) + require.Equal(t, "Column: [Column#1,Column#2,Column#3,Column#4,Column#5] PKOrUK: [] NullableUK: []", schema.String()) generateKeys4Schema(schema) - require.Equal(t, "Column: [Column#1,Column#2,Column#3,Column#4,Column#5] Unique key: [[Column#1],[Column#2],[Column#3],[Column#4]]", schema.String()) + require.Equal(t, "Column: [Column#1,Column#2,Column#3,Column#4,Column#5] PKOrUK: [[Column#1],[Column#2],[Column#3],[Column#4]] NullableUK: []", schema.String()) } func TestSchemaRetrieveColumn(t *testing.T) { @@ -77,12 +96,12 @@ func TestSchemaIsUniqueKey(t *testing.T) { } for i, col := range schema.Columns { if i < len(schema.Columns)-1 { - require.Equal(t, true, schema.IsUniqueKey(col)) + require.Equal(t, true, schema.IsUnique(true, col)) } else { - require.Equal(t, false, schema.IsUniqueKey(col)) + require.Equal(t, false, schema.IsUnique(true, col)) } } - require.Equal(t, false, schema.IsUniqueKey(colOutSchema)) + require.Equal(t, false, schema.IsUnique(true, colOutSchema)) } func TestSchemaContains(t *testing.T) { diff --git a/pkg/expression/sessionexpr/sessionctx_test.go b/pkg/expression/sessionexpr/sessionctx_test.go index 254bd5296633b..d1ef9d7c64402 100644 --- a/pkg/expression/sessionexpr/sessionctx_test.go +++ b/pkg/expression/sessionexpr/sessionctx_test.go @@ -54,7 +54,11 @@ func TestSessionEvalContextBasic(t *testing.T) { ctx.ResetSessionAndStmtTimeZone(time.FixedZone("UTC+11", 11*3600)) vars.SQLMode = mysql.ModeStrictTransTables | mysql.ModeNoZeroDate sc.SetTypeFlags(types.FlagIgnoreInvalidDateErr | types.FlagSkipUTF8Check) - sc.SetErrLevels(errctx.LevelMap{errctx.ErrGroupDupKey: errctx.LevelWarn, errctx.ErrGroupBadNull: errctx.LevelIgnore}) + sc.SetErrLevels(errctx.LevelMap{ + errctx.ErrGroupDupKey: errctx.LevelWarn, + errctx.ErrGroupBadNull: errctx.LevelIgnore, + errctx.ErrGroupNoDefault: errctx.LevelIgnore, + }) vars.CurrentDB = "db1" vars.MaxAllowedPacket = 123456 diff --git a/pkg/expression/typeinfer_test.go b/pkg/expression/typeinfer_test.go index 20b03f145bafa..6264056f8f2da 100644 --- a/pkg/expression/typeinfer_test.go +++ b/pkg/expression/typeinfer_test.go @@ -483,8 +483,8 @@ func (s *InferTypeSuite) createTestCase4StrFuncs() []typeInferTestCase { {"quote(c_int_d )", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, 42, types.UnspecifiedLength}, {"quote(c_bigint_d )", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, 42, types.UnspecifiedLength}, - {"quote(c_float_d )", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, 0, types.UnspecifiedLength}, - {"quote(c_double_d )", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, 0, types.UnspecifiedLength}, + {"quote(c_float_d )", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, types.UnspecifiedLength, types.UnspecifiedLength}, + {"quote(c_double_d )", mysql.TypeVarString, charset.CharsetUTF8MB4, 0, types.UnspecifiedLength, types.UnspecifiedLength}, {"convert(c_double_d using utf8mb4)", mysql.TypeLongBlob, charset.CharsetUTF8MB4, 0, mysql.MaxBlobWidth, types.UnspecifiedLength}, {"convert(c_binary using utf8mb4)", mysql.TypeLongBlob, charset.CharsetUTF8MB4, 0, mysql.MaxBlobWidth, types.UnspecifiedLength}, diff --git a/pkg/expression/vs_helper.go b/pkg/expression/vs_helper.go index 32c5f84304503..921dc73d4b6c5 100644 --- a/pkg/expression/vs_helper.go +++ b/pkg/expression/vs_helper.go @@ -34,18 +34,21 @@ var ( } ) -// VectorHelper is a helper struct for vector indexes. -type VectorHelper struct { +// VSInfo is an easy to use struct for interpreting a VectorSearch expression. +// NOTE: not all VectorSearch functions are supported by the index. The caller +// needs to check the distance function name. +type VSInfo struct { DistanceFnName model.CIStr FnPbCode tipb.ScalarFuncSig Vec types.VectorFloat32 Column *Column } -// ExtractVectorHelper extracts a VectorSearchExpr from an expression. +// InterpretVectorSearchExpr try to interpret a VectorSearch expression. +// If interpret successfully, return a VSInfo struct, otherwise return nil. // NOTE: not all VectorSearch functions are supported by the index. The caller // needs to check the distance function name. -func ExtractVectorHelper(expr Expression) *VectorHelper { +func InterpretVectorSearchExpr(expr Expression) *VSInfo { x, ok := expr.(*ScalarFunction) if !ok { return nil @@ -82,7 +85,7 @@ func ExtractVectorHelper(expr Expression) *VectorHelper { intest.Assert(vectorConstant.Value.Kind() == types.KindVectorFloat32, "internal: expect vectorFloat32 constant, but got %s", vectorConstant.Value.String()) - return &VectorHelper{ + return &VSInfo{ DistanceFnName: x.FuncName, FnPbCode: x.Function.PbCode(), Vec: vectorConstant.Value.GetVectorFloat32(), diff --git a/pkg/infoschema/builder.go b/pkg/infoschema/builder.go index 5b5c43a5677fd..cd582a72da0a1 100644 --- a/pkg/infoschema/builder.go +++ b/pkg/infoschema/builder.go @@ -119,8 +119,9 @@ func applyTruncateTableOrPartition(b *Builder, m meta.Reader, diff *model.Schema // bundle ops if diff.Type == model.ActionTruncateTable { b.deleteBundle(b.infoSchema, diff.OldTableID) - b.markTableBundleShouldUpdate(diff.TableID) } + b.markTableBundleShouldUpdate(diff.TableID) + // TODO: check that all partitions are updated to the cache! for _, opt := range diff.AffectedOpts { if diff.Type == model.ActionTruncateTablePartition { @@ -128,7 +129,6 @@ func applyTruncateTableOrPartition(b *Builder, m meta.Reader, diff *model.Schema // While session 1 performs the DML operation associated with partition 1, // the TRUNCATE operation of session 2 on partition 2 does not cause the operation of session 1 to fail. tblIDs = append(tblIDs, opt.OldTableID) - b.markPartitionBundleShouldUpdate(opt.TableID) } b.deleteBundle(b.infoSchema, opt.OldTableID) } @@ -155,15 +155,17 @@ func applyReorganizePartition(b *Builder, m meta.Reader, diff *model.SchemaDiff) return nil, errors.Trace(err) } + // The table might have changed TableID + if diff.TableID != diff.OldTableID && diff.OldTableID != 0 { + b.deleteBundle(b.infoSchema, diff.OldTableID) + } + b.markTableBundleShouldUpdate(diff.TableID) + // bundle ops for _, opt := range diff.AffectedOpts { if opt.OldTableID != 0 { b.deleteBundle(b.infoSchema, opt.OldTableID) } - if opt.TableID != 0 { - b.markTableBundleShouldUpdate(opt.TableID) - } - // TODO: Should we also check markPartitionBundleShouldUpdate?!? } return tblIDs, nil } @@ -228,6 +230,7 @@ func applyExchangeTablePartition(b *Builder, m meta.Reader, diff *model.SchemaDi } // partID is the new id for the non-partitioned table! b.markTableBundleShouldUpdate(partID) + b.markTableBundleShouldUpdate(ptID) // Then the partitioned table, will re-read the whole table, including all partitions! currDiff.TableID = ptID currDiff.SchemaID = ptSchemaID @@ -238,7 +241,6 @@ func applyExchangeTablePartition(b *Builder, m meta.Reader, diff *model.SchemaDi return nil, errors.Trace(err) } // ntID is the new id for the partition! - b.markPartitionBundleShouldUpdate(ntID) err = updateAutoIDForExchangePartition(b.Requirement.Store(), ptSchemaID, ptID, ntSchemaID, ntID) if err != nil { return nil, errors.Trace(err) @@ -368,7 +370,7 @@ 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: + case model.ActionCreateTable, model.ActionAddTablePartition: b.markTableBundleShouldUpdate(newTableID) case model.ActionDropTable: b.deleteBundle(b.infoSchema, oldTableID) @@ -377,7 +379,7 @@ func (b *Builder) updateBundleForTableUpdate(diff *model.SchemaDiff, newTableID, b.markTableBundleShouldUpdate(newTableID) case model.ActionRecoverTable: b.markTableBundleShouldUpdate(newTableID) - case model.ActionAlterTablePlacement: + case model.ActionAlterTablePlacement, model.ActionAlterTablePartitionPlacement: b.markTableBundleShouldUpdate(newTableID) } } @@ -615,23 +617,6 @@ func (b *Builder) copySortedTablesBucket(bucketIdx int) { b.infoSchema.sortedTablesBuckets[bucketIdx] = newSortedTables } -func (b *Builder) updateBundleForCreateTable(tblInfo *model.TableInfo, tp model.ActionType) { - switch tp { - case model.ActionDropTablePartition: - case model.ActionTruncateTablePartition: - // ReorganizePartition handle the bundles in applyReorganizePartition - case model.ActionReorganizePartition, model.ActionRemovePartitioning, - model.ActionAlterTablePartitioning: - default: - pi := tblInfo.GetPartitionInfo() - if pi != nil { - for _, partition := range pi.Definitions { - b.markPartitionBundleShouldUpdate(partition.ID) - } - } - } -} - func (b *Builder) buildAllocsForCreateTable(tp model.ActionType, dbInfo *model.DBInfo, tblInfo *model.TableInfo, allocs autoid.Allocators) autoid.Allocators { if len(allocs.Allocs) != 0 { tblVer := autoid.AllocOptionTableInfoVersion(tblInfo.Version) @@ -678,8 +663,6 @@ func applyCreateTable(b *Builder, m meta.Reader, dbInfo *model.DBInfo, tableID i ) } - b.updateBundleForCreateTable(tblInfo, tp) - if tp != model.ActionTruncateTablePartition { affected = appendAffectedIDs(affected, tblInfo) } diff --git a/pkg/infoschema/bundle_builder.go b/pkg/infoschema/bundle_builder.go index 512d8c9431860..40408a0b252ea 100644 --- a/pkg/infoschema/bundle_builder.go +++ b/pkg/infoschema/bundle_builder.go @@ -41,13 +41,10 @@ type bundleInfoBuilder struct { updateTables map[int64]any // all tables or partitions referring these policies should update placement bundle updatePolicies map[int64]any - // partitions that need to update placement bundle - updatePartitions map[int64]any } func (b *bundleInfoBuilder) initBundleInfoBuilder() { b.updateTables = make(map[int64]any) - b.updatePartitions = make(map[int64]any) b.updatePolicies = make(map[int64]any) } @@ -63,10 +60,6 @@ func (b *bundleInfoBuilder) markTableBundleShouldUpdate(tblID int64) { b.updateTables[tblID] = struct{}{} } -func (b *bundleInfoBuilder) markPartitionBundleShouldUpdate(partID int64) { - b.updatePartitions[partID] = struct{}{} -} - func (b *bundleInfoBuilder) markBundlesReferPolicyShouldUpdate(policyID int64) { b.updatePolicies[policyID] = struct{}{} } @@ -90,7 +83,7 @@ func (b *bundleInfoBuilder) updateInfoSchemaBundles(is *infoSchema) { } func (b *bundleInfoBuilder) completeUpdateTables(is *infoSchema) { - if len(b.updatePolicies) == 0 && len(b.updatePartitions) == 0 { + if len(b.updatePolicies) == 0 { return } @@ -102,14 +95,6 @@ func (b *bundleInfoBuilder) completeUpdateTables(is *infoSchema) { b.markTableBundleShouldUpdate(tblInfo.ID) } } - - if tblInfo.Partition != nil { - for _, par := range tblInfo.Partition.Definitions { - if _, ok := b.updatePartitions[par.ID]; ok { - b.markTableBundleShouldUpdate(tblInfo.ID) - } - } - } } } } diff --git a/pkg/infoschema/cache.go b/pkg/infoschema/cache.go index a58dca8c2e5fd..1285b4f19f2d5 100644 --- a/pkg/infoschema/cache.go +++ b/pkg/infoschema/cache.go @@ -59,6 +59,25 @@ func NewCache(r autoid.Requirement, capacity int) *InfoCache { } } +// GetAndResetRecentInfoSchemaTS provides the min start ts for infosync.InfoSyncer. +// It works like this: +// +// There is a background infosync worker calling ReportMinStartTS() function periodically. +// At the beginning of each round, the Data.recentMinTS here is reset to current TS. +// If InfoSchemaV2 APIs are called, there is an internal keepAlive() function will also be called. +// The keepAlive() function will compare the InfoSchemaV2's ts with Data.recentMinTS, and +// update the Data.recentMinTS to smaller one. +// +// In a nutshell, every round of ReportMinStartTS(), the minimal known TS used be InfoSchemaV2 APIs will be reported. +// Some corner cases might happen: the caller take an InfoSchemaV2 instance and not use it immediately. +// Seveval rounds later, that InfoSchema is used and its TS is reported to block GC safepoint advancing. +// But that's too late, the GC has been done, "GC life time is shorter than transaction duration" error still happen. +func (h *InfoCache) GetAndResetRecentInfoSchemaTS(now uint64) uint64 { + ret := h.Data.recentMinTS.Load() + h.Data.recentMinTS.Store(now) + return ret +} + // ReSize re-size the cache. func (h *InfoCache) ReSize(capacity int) { h.mu.Lock() diff --git a/pkg/infoschema/cluster.go b/pkg/infoschema/cluster.go index 6436a17b203eb..5e6929233cdc9 100644 --- a/pkg/infoschema/cluster.go +++ b/pkg/infoschema/cluster.go @@ -42,6 +42,8 @@ const ( ClusterTableStatementsSummaryHistory = "CLUSTER_STATEMENTS_SUMMARY_HISTORY" // ClusterTableStatementsSummaryEvicted is the string constant of cluster statement summary evict table. ClusterTableStatementsSummaryEvicted = "CLUSTER_STATEMENTS_SUMMARY_EVICTED" + // ClusterTableTiDBStatementsStats is the string constant of the cluster statement stats table. + ClusterTableTiDBStatementsStats = "CLUSTER_TIDB_STATEMENTS_STATS" // ClusterTableTiDBTrx is the string constant of cluster transaction running table. ClusterTableTiDBTrx = "CLUSTER_TIDB_TRX" // ClusterTableDeadlocks is the string constant of cluster dead lock table. @@ -54,6 +56,8 @@ const ( ClusterTableMemoryUsageOpsHistory = "CLUSTER_MEMORY_USAGE_OPS_HISTORY" // ClusterTableTiDBIndexUsage is a table to show the usage stats of indexes across the whole cluster. ClusterTableTiDBIndexUsage = "CLUSTER_TIDB_INDEX_USAGE" + // ClusterTableTiDBPlanCache is the plan cache status of tidb cluster. + ClusterTableTiDBPlanCache = "CLUSTER_TIDB_PLAN_CACHE" ) // memTableToAllTiDBClusterTables means add memory table to cluster table that will send cop request to all TiDB nodes. @@ -63,12 +67,14 @@ var memTableToAllTiDBClusterTables = map[string]string{ TableStatementsSummary: ClusterTableStatementsSummary, TableStatementsSummaryHistory: ClusterTableStatementsSummaryHistory, TableStatementsSummaryEvicted: ClusterTableStatementsSummaryEvicted, + TableTiDBStatementsStats: ClusterTableTiDBStatementsStats, TableTiDBTrx: ClusterTableTiDBTrx, TableDeadlocks: ClusterTableDeadlocks, TableTrxSummary: ClusterTableTrxSummary, TableMemoryUsage: ClusterTableMemoryUsage, TableMemoryUsageOpsHistory: ClusterTableMemoryUsageOpsHistory, TableTiDBIndexUsage: ClusterTableTiDBIndexUsage, + TableTiDBPlanCache: ClusterTableTiDBPlanCache, } // memTableToDDLOwnerClusterTables means add memory table to cluster table that will send cop request to DDL owner node. diff --git a/pkg/infoschema/infoschema_test.go b/pkg/infoschema/infoschema_test.go index 42049e1cf814a..ac96ed62db92f 100644 --- a/pkg/infoschema/infoschema_test.go +++ b/pkg/infoschema/infoschema_test.go @@ -340,42 +340,38 @@ func TestInfoTables(t *testing.T) { is := builder.Build(math.MaxUint64) infoTables := []string{ - "SCHEMATA", - "TABLES", - "COLUMNS", - "STATISTICS", "CHARACTER_SETS", "COLLATIONS", + "COLLATION_CHARACTER_SET_APPLICABILITY", + "COLUMNS", + "COLUMN_PRIVILEGES", + "DEADLOCKS", + "ENGINES", + "EVENTS", "FILES", - "PROFILING", - "PARTITIONS", "KEY_COLUMN_USAGE", - "REFERENTIAL_CONSTRAINTS", - "SESSION_VARIABLES", + "OPTIMIZER_TRACE", + "PARAMETERS", + "PARTITIONS", + "PLACEMENT_POLICIES", "PLUGINS", - "TABLE_CONSTRAINTS", - "TRIGGERS", - "USER_PRIVILEGES", - "ENGINES", - "VIEWS", + "PROCESSLIST", + "PROFILING", + "REFERENTIAL_CONSTRAINTS", + "RESOURCE_GROUPS", "ROUTINES", + "SCHEMATA", "SCHEMA_PRIVILEGES", - "COLUMN_PRIVILEGES", - "TABLE_PRIVILEGES", - "PARAMETERS", - "EVENTS", - "GLOBAL_STATUS", - "GLOBAL_VARIABLES", - "SESSION_STATUS", - "OPTIMIZER_TRACE", + "STATISTICS", + "TABLES", "TABLESPACES", - "COLLATION_CHARACTER_SET_APPLICABILITY", - "PROCESSLIST", + "TABLE_CONSTRAINTS", + "TABLE_PRIVILEGES", "TIDB_TRX", - "DEADLOCKS", - "PLACEMENT_POLICIES", + "TRIGGERS", "TRX_SUMMARY", - "RESOURCE_GROUPS", + "USER_PRIVILEGES", + "VIEWS", } for _, tbl := range infoTables { tb, err1 := is.TableByName(context.Background(), util.InformationSchemaName, pmodel.NewCIStr(tbl)) diff --git a/pkg/infoschema/infoschema_v2.go b/pkg/infoschema/infoschema_v2.go index 749c3ccf9f705..f4c6efb79f85a 100644 --- a/pkg/infoschema/infoschema_v2.go +++ b/pkg/infoschema/infoschema_v2.go @@ -20,6 +20,7 @@ import ( "math" "strings" "sync" + "sync/atomic" "time" "github.com/ngaut/pools" @@ -122,6 +123,9 @@ type Data struct { // TTLInfo, TiFlashReplica // PlacementPolicyRef, Partition might be added later, and also ForeignKeys, TableLock etc tableInfoResident *btree.BTreeG[tableInfoItem] + + // the minimum ts of the recent used infoschema + recentMinTS atomic.Uint64 } type tableInfoItem struct { @@ -608,6 +612,7 @@ func (is *infoschemaV2) TableByID(ctx context.Context, id int64) (val table.Tabl return } + is.keepAlive() itm, ok := is.searchTableItemByID(id) if !ok { return nil, false @@ -691,6 +696,31 @@ func (is *infoschemaV2) IterateAllTableItems(visit func(TableItem) bool) { }) } +// TableIsCached checks whether the table is cached. +func (is *infoschemaV2) TableIsCached(id int64) (ok bool) { + if !tableIDIsValid(id) { + return false + } + + itm, ok := is.searchTableItemByID(id) + if !ok { + return false + } + + if isTableVirtual(id) { + if raw, exist := is.Data.specials.Load(itm.dbName.L); exist { + schTbls := raw.(*schemaTables) + _, ok = schTbls.tables[itm.tableName.L] + return ok + } + return false + } + + key := tableCacheKey{itm.tableID, itm.schemaVersion} + tbl, found := is.tableCache.Get(key) + return found && tbl != nil +} + // IsSpecialDB tells whether the database is a special database. func IsSpecialDB(dbName string) bool { return dbName == util.InformationSchemaName.L || @@ -744,8 +774,8 @@ func (is *infoschemaV2) TableByName(ctx context.Context, schema, tbl pmodel.CISt return nil, ErrTableNotExists.FastGenByArgs(schema, tbl) } + is.keepAlive() start := time.Now() - var h tableByNameHelper h.end = tableItem{dbName: schema, tableName: tbl, schemaVersion: math.MaxInt64} h.schemaVersion = is.infoSchema.schemaMetaVersion @@ -794,6 +824,22 @@ func (is *infoschemaV2) TableInfoByID(id int64) (*model.TableInfo, bool) { return getTableInfo(tbl), ok } +// keepAlive prevents the "GC life time is shorter than transaction duration" error on infoschema v2. +// It works by collecting the min TS of the during infoschem v2 API calls, and +// reports the min TS to info.InfoSyncer. +func (is *infoschemaV2) keepAlive() { + for { + v := is.Data.recentMinTS.Load() + if v <= is.ts { + break + } + succ := is.Data.recentMinTS.CompareAndSwap(v, is.ts) + if succ { + break + } + } +} + // SchemaTableInfos implements MetaOnlyInfoSchema. func (is *infoschemaV2) SchemaTableInfos(ctx context.Context, schema pmodel.CIStr) ([]*model.TableInfo, error) { if IsSpecialDB(schema.L) { @@ -809,6 +855,7 @@ func (is *infoschemaV2) SchemaTableInfos(ctx context.Context, schema pmodel.CISt return nil, nil // something wrong? } + is.keepAlive() retry: dbInfo, ok := is.SchemaByName(schema) if !ok { @@ -819,7 +866,7 @@ retry: // the meta region leader is slow. snapshot.SetOption(kv.TiKVClientReadTimeout, uint64(3000)) // 3000ms. m := meta.NewReader(snapshot) - tblInfos, err := m.ListTables(dbInfo.ID) + tblInfos, err := m.ListTables(ctx, dbInfo.ID) if err != nil { if meta.ErrDBNotExists.Equal(err) { return nil, nil @@ -1403,7 +1450,7 @@ func (b *bundleInfoBuilder) updateInfoSchemaBundlesV2(is *infoschemaV2) { } func (b *bundleInfoBuilder) completeUpdateTablesV2(is *infoschemaV2) { - if len(b.updatePolicies) == 0 && len(b.updatePartitions) == 0 { + if len(b.updatePolicies) == 0 { return } @@ -1416,14 +1463,6 @@ func (b *bundleInfoBuilder) completeUpdateTablesV2(is *infoschemaV2) { b.markTableBundleShouldUpdate(tblInfo.ID) } } - - if tblInfo.Partition != nil { - for _, par := range tblInfo.Partition.Definitions { - if _, ok := b.updatePartitions[par.ID]; ok { - b.markTableBundleShouldUpdate(tblInfo.ID) - } - } - } } } } diff --git a/pkg/infoschema/perfschema/BUILD.bazel b/pkg/infoschema/perfschema/BUILD.bazel index 70f51f697ace1..6773b3356f7d2 100644 --- a/pkg/infoschema/perfschema/BUILD.bazel +++ b/pkg/infoschema/perfschema/BUILD.bazel @@ -44,7 +44,7 @@ go_test( data = glob(["testdata/**"]), embed = [":perfschema"], flaky = True, - shard_count = 5, + shard_count = 4, deps = [ "//pkg/kv", "//pkg/parser/terror", diff --git a/pkg/infoschema/perfschema/const.go b/pkg/infoschema/perfschema/const.go index 65fb0552d1211..1d1b208eb2f7b 100644 --- a/pkg/infoschema/perfschema/const.go +++ b/pkg/infoschema/perfschema/const.go @@ -17,6 +17,7 @@ package perfschema // perfSchemaTables is a shortcut to involve all table names. var perfSchemaTables = []string{ tableGlobalStatus, + tableGlobalVariables, tableSessionAccountConnectAttrs, tableSessionConnectAttrs, tableSessionStatus, @@ -61,6 +62,11 @@ const tableSessionStatus = "CREATE TABLE performance_schema." + tableNameSession "VARIABLE_NAME VARCHAR(64) not null," + "VARIABLE_VALUE VARCHAR(1024));" +// tableGlobalVariables contains the column name definitions for table global_variables, same as MySQL. +const tableGlobalVariables = "CREATE TABLE performance_schema." + tableNameGlobalVariables + " (" + + "VARIABLE_NAME varchar(64) NOT NULL," + + "VARIABLE_VALUE varchar(1024) DEFAULT NULL);" + // tableSetupActors contains the column name definitions for table setup_actors, same as MySQL. const tableSetupActors = "CREATE TABLE if not exists performance_schema." + tableNameSetupActors + " (" + "HOST CHAR(60) NOT NULL DEFAULT '%'," + diff --git a/pkg/infoschema/perfschema/tables.go b/pkg/infoschema/perfschema/tables.go index bfb804f9bb673..edaf6043f7c2d 100644 --- a/pkg/infoschema/perfschema/tables.go +++ b/pkg/infoschema/perfschema/tables.go @@ -43,6 +43,7 @@ import ( const ( tableNameGlobalStatus = "global_status" + tableNameGlobalVariables = "global_variables" tableNameSessionStatus = "session_status" tableNameSetupActors = "setup_actors" tableNameSetupObjects = "setup_objects" @@ -111,6 +112,7 @@ var tableIDMap = map[string]int64{ tableNameSessionVariables: autoid.PerformanceSchemaDBID + 31, tableNameSessionConnectAttrs: autoid.PerformanceSchemaDBID + 32, tableNameSessionAccountConnectAttrs: autoid.PerformanceSchemaDBID + 33, + tableNameGlobalVariables: autoid.PerformanceSchemaDBID + 34, } // perfSchemaTable stands for the fake table all its data is in the memory. diff --git a/pkg/infoschema/perfschema/tables_test.go b/pkg/infoschema/perfschema/tables_test.go index cb78f06533738..ecc23a8d0d294 100644 --- a/pkg/infoschema/perfschema/tables_test.go +++ b/pkg/infoschema/perfschema/tables_test.go @@ -52,14 +52,6 @@ func TestPerfSchemaTables(t *testing.T) { tk.MustQuery("select * from events_stages_history_long").Check(testkit.Rows()) } -func TestSessionVariables(t *testing.T) { - store := newMockStore(t) - tk := testkit.NewTestKit(t, store) - - res := tk.MustQuery("select variable_value from performance_schema.session_variables order by variable_name limit 10;") - tk.MustQuery("select variable_value from information_schema.session_variables order by variable_name limit 10;").Check(res.Rows()) -} - func TestTiKVProfileCPU(t *testing.T) { store := newMockStore(t) diff --git a/pkg/infoschema/tables.go b/pkg/infoschema/tables.go index 12f295231d6ed..6119fe96b7602 100644 --- a/pkg/infoschema/tables.go +++ b/pkg/infoschema/tables.go @@ -92,8 +92,6 @@ const ( TableKeyColumn = "KEY_COLUMN_USAGE" // TableReferConst is the string constant of REFERENTIAL_CONSTRAINTS. TableReferConst = "REFERENTIAL_CONSTRAINTS" - // TableSessionVar is the string constant of SESSION_VARIABLES. - TableSessionVar = "SESSION_VARIABLES" tablePlugins = "PLUGINS" // TableConstraints is the string constant of TABLE_CONSTRAINTS. TableConstraints = "TABLE_CONSTRAINTS" @@ -106,15 +104,12 @@ const ( // TableEngines is the string constant of infoschema table. TableEngines = "ENGINES" // TableViews is the string constant of infoschema table. - TableViews = "VIEWS" - tableRoutines = "ROUTINES" - tableParameters = "PARAMETERS" - tableEvents = "EVENTS" - tableGlobalStatus = "GLOBAL_STATUS" - tableGlobalVariables = "GLOBAL_VARIABLES" - tableSessionStatus = "SESSION_STATUS" - tableOptimizerTrace = "OPTIMIZER_TRACE" - tableTableSpaces = "TABLESPACES" + TableViews = "VIEWS" + tableRoutines = "ROUTINES" + tableParameters = "PARAMETERS" + tableEvents = "EVENTS" + tableOptimizerTrace = "OPTIMIZER_TRACE" + tableTableSpaces = "TABLESPACES" // TableCollationCharacterSetApplicability is the string constant of infoschema memory table. TableCollationCharacterSetApplicability = "COLLATION_CHARACTER_SET_APPLICABILITY" // TableProcesslist is the string constant of infoschema table. @@ -173,6 +168,8 @@ const ( TableStatementsSummaryHistory = "STATEMENTS_SUMMARY_HISTORY" // TableStatementsSummaryEvicted is the string constant of statements summary evicted table. TableStatementsSummaryEvicted = "STATEMENTS_SUMMARY_EVICTED" + // TableTiDBStatementsStats is the string constant of the TiDB statement stats table. + TableTiDBStatementsStats = "TIDB_STATEMENTS_STATS" // TableStorageStats is a table that contains all tables disk usage TableStorageStats = "TABLE_STORAGE_STATS" // TableTiFlashTables is the string constant of tiflash tables table. @@ -219,6 +216,8 @@ const ( TableKeywords = "KEYWORDS" // TableTiDBIndexUsage is a table to show the usage stats of indexes in the current instance. TableTiDBIndexUsage = "TIDB_INDEX_USAGE" + // TableTiDBPlanCache is the plan cache table. + TableTiDBPlanCache = "TIDB_PLAN_CACHE" ) const ( @@ -245,35 +244,37 @@ const ( ) var tableIDMap = map[string]int64{ - TableSchemata: autoid.InformationSchemaDBID + 1, - TableTables: autoid.InformationSchemaDBID + 2, - TableColumns: autoid.InformationSchemaDBID + 3, - tableColumnStatistics: autoid.InformationSchemaDBID + 4, - TableStatistics: autoid.InformationSchemaDBID + 5, - TableCharacterSets: autoid.InformationSchemaDBID + 6, - TableCollations: autoid.InformationSchemaDBID + 7, - tableFiles: autoid.InformationSchemaDBID + 8, - CatalogVal: autoid.InformationSchemaDBID + 9, - TableProfiling: autoid.InformationSchemaDBID + 10, - TablePartitions: autoid.InformationSchemaDBID + 11, - TableKeyColumn: autoid.InformationSchemaDBID + 12, - TableReferConst: autoid.InformationSchemaDBID + 13, - TableSessionVar: autoid.InformationSchemaDBID + 14, - tablePlugins: autoid.InformationSchemaDBID + 15, - TableConstraints: autoid.InformationSchemaDBID + 16, - tableTriggers: autoid.InformationSchemaDBID + 17, - TableUserPrivileges: autoid.InformationSchemaDBID + 18, - tableSchemaPrivileges: autoid.InformationSchemaDBID + 19, - tableTablePrivileges: autoid.InformationSchemaDBID + 20, - tableColumnPrivileges: autoid.InformationSchemaDBID + 21, - TableEngines: autoid.InformationSchemaDBID + 22, - TableViews: autoid.InformationSchemaDBID + 23, - tableRoutines: autoid.InformationSchemaDBID + 24, - tableParameters: autoid.InformationSchemaDBID + 25, - tableEvents: autoid.InformationSchemaDBID + 26, - tableGlobalStatus: autoid.InformationSchemaDBID + 27, - tableGlobalVariables: autoid.InformationSchemaDBID + 28, - tableSessionStatus: autoid.InformationSchemaDBID + 29, + TableSchemata: autoid.InformationSchemaDBID + 1, + TableTables: autoid.InformationSchemaDBID + 2, + TableColumns: autoid.InformationSchemaDBID + 3, + tableColumnStatistics: autoid.InformationSchemaDBID + 4, + TableStatistics: autoid.InformationSchemaDBID + 5, + TableCharacterSets: autoid.InformationSchemaDBID + 6, + TableCollations: autoid.InformationSchemaDBID + 7, + tableFiles: autoid.InformationSchemaDBID + 8, + CatalogVal: autoid.InformationSchemaDBID + 9, + TableProfiling: autoid.InformationSchemaDBID + 10, + TablePartitions: autoid.InformationSchemaDBID + 11, + TableKeyColumn: autoid.InformationSchemaDBID + 12, + TableReferConst: autoid.InformationSchemaDBID + 13, + // Removed, see https://github.com/pingcap/tidb/issues/9154 + // TableSessionVar: autoid.InformationSchemaDBID + 14, + tablePlugins: autoid.InformationSchemaDBID + 15, + TableConstraints: autoid.InformationSchemaDBID + 16, + tableTriggers: autoid.InformationSchemaDBID + 17, + TableUserPrivileges: autoid.InformationSchemaDBID + 18, + tableSchemaPrivileges: autoid.InformationSchemaDBID + 19, + tableTablePrivileges: autoid.InformationSchemaDBID + 20, + tableColumnPrivileges: autoid.InformationSchemaDBID + 21, + TableEngines: autoid.InformationSchemaDBID + 22, + TableViews: autoid.InformationSchemaDBID + 23, + tableRoutines: autoid.InformationSchemaDBID + 24, + tableParameters: autoid.InformationSchemaDBID + 25, + tableEvents: autoid.InformationSchemaDBID + 26, + // Removed, see https://github.com/pingcap/tidb/issues/9154 + // tableGlobalStatus: autoid.InformationSchemaDBID + 27, + // tableGlobalVariables: autoid.InformationSchemaDBID + 28, + // tableSessionStatus: autoid.InformationSchemaDBID + 29, tableOptimizerTrace: autoid.InformationSchemaDBID + 30, tableTableSpaces: autoid.InformationSchemaDBID + 31, TableCollationCharacterSetApplicability: autoid.InformationSchemaDBID + 32, @@ -341,6 +342,10 @@ var tableIDMap = map[string]int64{ TableTiDBIndexUsage: autoid.InformationSchemaDBID + 93, ClusterTableTiDBIndexUsage: autoid.InformationSchemaDBID + 94, TableTiFlashIndexes: autoid.InformationSchemaDBID + 95, + TableTiDBPlanCache: autoid.InformationSchemaDBID + 96, + ClusterTableTiDBPlanCache: autoid.InformationSchemaDBID + 97, + TableTiDBStatementsStats: autoid.InformationSchemaDBID + 98, + ClusterTableTiDBStatementsStats: autoid.InformationSchemaDBID + 99, } // columnInfo represents the basic column information of all kinds of INFORMATION_SCHEMA tables @@ -806,21 +811,6 @@ var tableEventsCols = []columnInfo{ {name: "DATABASE_COLLATION", tp: mysql.TypeVarchar, size: 32, flag: mysql.NotNullFlag}, } -var tableGlobalStatusCols = []columnInfo{ - {name: "VARIABLE_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, - {name: "VARIABLE_VALUE", tp: mysql.TypeVarchar, size: 1024}, -} - -var tableGlobalVariablesCols = []columnInfo{ - {name: "VARIABLE_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, - {name: "VARIABLE_VALUE", tp: mysql.TypeVarchar, size: 1024}, -} - -var tableSessionStatusCols = []columnInfo{ - {name: "VARIABLE_NAME", tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag}, - {name: "VARIABLE_VALUE", tp: mysql.TypeVarchar, size: 1024}, -} - var tableOptimizerTraceCols = []columnInfo{ {name: "QUERY", tp: mysql.TypeLongBlob, flag: mysql.NotNullFlag, deflt: ""}, {name: "TRACE", tp: mysql.TypeLongBlob, flag: mysql.NotNullFlag, deflt: ""}, @@ -1405,6 +1395,77 @@ var tableStatementsSummaryCols = []columnInfo{ {name: stmtsummary.PlanCacheUnqualifiedLastReasonStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "The last reason why the statement is not supported by the plan cache"}, } +var tableTiDBStatementsStatsCols = []columnInfo{ + {name: stmtsummary.StmtTypeStr, tp: mysql.TypeVarchar, size: 64, flag: mysql.NotNullFlag, comment: "Statement type"}, + {name: stmtsummary.SchemaNameStr, tp: mysql.TypeVarchar, size: 64, comment: "Current schema"}, + {name: stmtsummary.DigestStr, tp: mysql.TypeVarchar, size: 64}, + {name: stmtsummary.DigestTextStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, flag: mysql.NotNullFlag, comment: "Normalized statement"}, + {name: stmtsummary.TableNamesStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "Involved tables"}, + {name: stmtsummary.IndexNamesStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "Used indices"}, + {name: stmtsummary.SampleUserStr, tp: mysql.TypeVarchar, size: 64, comment: "Sampled user who executed these statements"}, + {name: stmtsummary.ExecCountStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Count of executions"}, + {name: stmtsummary.ErrorsStr, tp: mysql.TypeLong, size: 11, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Sum of errors"}, + {name: stmtsummary.WarningsStr, tp: mysql.TypeLong, size: 11, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Sum of warnings"}, + {name: stmtsummary.MemStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total memory(byte) used"}, + {name: stmtsummary.DiskStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total disk space(byte) used"}, + {name: stmtsummary.TotalTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Sum latency of these statements"}, + {name: stmtsummary.ParseTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total latency of parsing"}, + {name: stmtsummary.CompileTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total latency of compiling"}, + {name: stmtsummary.CopTaskNumStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total number of CopTasks"}, + {name: stmtsummary.CopProcessTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total processing time of CopTasks"}, + {name: stmtsummary.MaxCopProcessAddressStr, tp: mysql.TypeVarchar, size: 256, comment: "Address of the CopTask with max processing time"}, + {name: stmtsummary.CopWaitTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total waiting time of CopTasks"}, + {name: stmtsummary.MaxCopWaitAddressStr, tp: mysql.TypeVarchar, size: 256, comment: "Address of the CopTask with max waiting time"}, + {name: stmtsummary.PdTimeStr, tp: mysql.TypeLonglong, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time of PD used"}, + {name: stmtsummary.KvTimeStr, tp: mysql.TypeLonglong, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time of TiKV used"}, + {name: stmtsummary.ProcessTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total processing time in TiKV"}, + {name: stmtsummary.WaitTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total waiting time in TiKV"}, + {name: stmtsummary.BackoffTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total waiting time before retry"}, + {name: stmtsummary.TotalKeysStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total number of scanned keys"}, + {name: stmtsummary.ProcessedKeysStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total number of processed keys"}, + {name: stmtsummary.RocksdbDeleteSkippedCountStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total RocksDB delete skipped count"}, + {name: stmtsummary.RocksdbKeySkippedCountStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total RocksDB key skipped count"}, + {name: stmtsummary.RocksdbBlockCacheHitCountStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total RocksDB block cache hit count"}, + {name: stmtsummary.RocksdbBlockReadCountStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total RocksDB block read count"}, + {name: stmtsummary.RocksdbBlockReadByteStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total RocksDB block read byte"}, + {name: stmtsummary.PrewriteTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time of prewrite phase"}, + {name: stmtsummary.CommitTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time of commit phase"}, + {name: stmtsummary.CommitTsTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time of getting commit_ts"}, + {name: stmtsummary.CommitBackoffTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time before retry during commit phase"}, + {name: stmtsummary.ResolveLockTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time for resolving locks"}, + {name: stmtsummary.LocalLatchWaitTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total waiting time of local transaction"}, + {name: stmtsummary.WriteKeysStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total count of written keys"}, + {name: stmtsummary.WriteSizeStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total amount of written bytes"}, + {name: stmtsummary.PrewriteRegionsStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total number of involved regions in prewrite phase"}, + {name: stmtsummary.TxnRetryStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total number of transaction retries"}, + {name: stmtsummary.ExecRetryStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Sum number of execution retries in pessimistic transactions"}, + {name: stmtsummary.ExecRetryTimeStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Sum time of execution retries in pessimistic transactions"}, + {name: stmtsummary.BackoffTimesStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Sum of retries"}, + {name: stmtsummary.BackoffTypesStr, tp: mysql.TypeVarchar, size: 1024, comment: "Types of errors and the number of retries for each type"}, + {name: stmtsummary.BackoffTotalTimeStr, tp: mysql.TypeLonglong, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time spent in backoff and retry"}, + {name: stmtsummary.WriteSQLRespTimeStr, tp: mysql.TypeLonglong, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time used to write a response to the client."}, + {name: stmtsummary.ResultRowsStr, tp: mysql.TypeLonglong, size: 22, flag: mysql.NotNullFlag, comment: "Total count of SQL result rows"}, + {name: stmtsummary.AffectedRowsStr, tp: mysql.TypeDouble, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total number of rows affected"}, + {name: stmtsummary.PreparedStr, tp: mysql.TypeTiny, size: 1, flag: mysql.NotNullFlag, comment: "Whether prepared"}, + {name: stmtsummary.FirstSeenStr, tp: mysql.TypeTimestamp, size: 26, flag: mysql.NotNullFlag, comment: "The time these statements are seen for the first time"}, + {name: stmtsummary.LastSeenStr, tp: mysql.TypeTimestamp, size: 26, flag: mysql.NotNullFlag, comment: "The time these statements are seen for the last time"}, + {name: stmtsummary.PlanInCacheStr, tp: mysql.TypeTiny, size: 1, flag: mysql.NotNullFlag, comment: "Whether the last statement hit the plan cache"}, + {name: stmtsummary.PlanCacheHitsStr, tp: mysql.TypeLonglong, size: 20, flag: mysql.NotNullFlag, comment: "The number of times these statements hit the plan cache"}, + {name: stmtsummary.PlanInBindingStr, tp: mysql.TypeTiny, size: 1, flag: mysql.NotNullFlag, comment: "Whether the last statement is matched with the hints in the binding"}, + {name: stmtsummary.QuerySampleTextStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "Sampled original statement"}, + {name: stmtsummary.PrevSampleTextStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "The previous statement before commit"}, + {name: stmtsummary.PlanDigestStr, tp: mysql.TypeVarchar, size: 64, comment: "Digest of its execution plan"}, + {name: stmtsummary.PlanStr, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "Sampled execution plan"}, + {name: stmtsummary.BinaryPlan, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "Sampled binary plan"}, + {name: stmtsummary.Charset, tp: mysql.TypeVarchar, size: 64, comment: "Sampled charset"}, + {name: stmtsummary.Collation, tp: mysql.TypeVarchar, size: 64, comment: "Sampled collation"}, + {name: stmtsummary.PlanHint, tp: mysql.TypeBlob, size: types.UnspecifiedLength, comment: "Sampled plan hint"}, + {name: stmtsummary.RequestUnitReadStr, tp: mysql.TypeDouble, flag: mysql.NotNullFlag | mysql.UnsignedFlag, size: 22, comment: "Total read request-unit cost of these statements"}, + {name: stmtsummary.RequestUnitWriteStr, tp: mysql.TypeDouble, flag: mysql.NotNullFlag | mysql.UnsignedFlag, size: 22, comment: "Total write request-unit cost of these statements"}, + {name: stmtsummary.QueuedRcTimeStr, tp: mysql.TypeLonglong, size: 22, flag: mysql.NotNullFlag | mysql.UnsignedFlag, comment: "Total time waiting for available request-units"}, + {name: stmtsummary.ResourceGroupName, tp: mysql.TypeVarchar, size: 64, comment: "Bind resource group name"}, +} + var tableStorageStatsCols = []columnInfo{ {name: "TABLE_SCHEMA", tp: mysql.TypeVarchar, size: 64}, {name: "TABLE_NAME", tp: mysql.TypeVarchar, size: 64}, @@ -1737,6 +1798,25 @@ var tableTiDBIndexUsage = []columnInfo{ {name: "LAST_ACCESS_TIME", tp: mysql.TypeDatetime, size: 21}, } +var tablePlanCache = []columnInfo{ + {name: "SQL_DIGEST", tp: mysql.TypeVarchar, size: 64}, + {name: "SQL_TEXT", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength}, + {name: "STMT_TYPE", tp: mysql.TypeVarchar, size: 64}, + {name: "PARSE_USER", tp: mysql.TypeVarchar, size: 64}, + {name: "PLAN_DIGEST", tp: mysql.TypeVarchar, size: 64}, + {name: "BINARY_PLAN", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength}, + {name: "BINDING", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength}, + {name: "OPT_ENV", tp: mysql.TypeVarchar, size: 64}, + {name: "PARSE_VALUES", tp: mysql.TypeLongBlob, size: types.UnspecifiedLength}, + {name: "MEM_SIZE", tp: mysql.TypeLonglong, size: 21}, + {name: "EXECUTIONS", tp: mysql.TypeLonglong, size: 21}, + {name: "PROCESSED_KEYS", tp: mysql.TypeLonglong, size: 21}, + {name: "TOTAL_KEYS", tp: mysql.TypeLonglong, size: 21}, + {name: "SUM_LATENCY", tp: mysql.TypeLonglong, size: 21}, + {name: "LOAD_TIME", tp: mysql.TypeDatetime, size: 19}, + {name: "LAST_ACTIVE_TIME", tp: mysql.TypeDatetime, size: 19}, +} + // GetShardingInfo returns a nil or description string for the sharding information of given TableInfo. // The returned description string may be: // - "NOT_SHARDED": for tables that SHARD_ROW_ID_BITS is not specified. @@ -2314,7 +2394,6 @@ var tableNameToColumns = map[string][]columnInfo{ TablePartitions: partitionsCols, TableKeyColumn: keyColumnUsageCols, TableReferConst: referConstCols, - TableSessionVar: sessionVarCols, tablePlugins: pluginsCols, TableConstraints: tableConstraintsCols, tableTriggers: tableTriggersCols, @@ -2327,9 +2406,6 @@ var tableNameToColumns = map[string][]columnInfo{ tableRoutines: tableRoutinesCols, tableParameters: tableParametersCols, tableEvents: tableEventsCols, - tableGlobalStatus: tableGlobalStatusCols, - tableGlobalVariables: tableGlobalVariablesCols, - tableSessionStatus: tableSessionStatusCols, tableOptimizerTrace: tableOptimizerTraceCols, tableTableSpaces: tableTableSpacesCols, TableCollationCharacterSetApplicability: tableCollationCharacterSetApplicabilityCols, @@ -2362,6 +2438,7 @@ var tableNameToColumns = map[string][]columnInfo{ TableStatementsSummaryHistory: tableStatementsSummaryCols, TableStatementsSummaryEvicted: tableStatementsSummaryEvictedCols, TableStorageStats: tableStorageStatsCols, + TableTiDBStatementsStats: tableTiDBStatementsStatsCols, TableTiFlashTables: tableTableTiFlashTablesCols, TableTiFlashSegments: tableTableTiFlashSegmentsCols, TableTiFlashIndexes: tableTiFlashIndexesCols, @@ -2384,6 +2461,7 @@ var tableNameToColumns = map[string][]columnInfo{ TableTiDBCheckConstraints: tableTiDBCheckConstraintsCols, TableKeywords: tableKeywords, TableTiDBIndexUsage: tableTiDBIndexUsage, + TableTiDBPlanCache: tablePlanCache, } func createInfoSchemaTable(_ autoid.Allocators, _ func() (pools.Resource, error), meta *model.TableInfo) (table.Table, error) { diff --git a/pkg/infoschema/test/clustertablestest/cluster_tables_test.go b/pkg/infoschema/test/clustertablestest/cluster_tables_test.go index 08e58f5c613dd..52c1e31aaebb2 100644 --- a/pkg/infoschema/test/clustertablestest/cluster_tables_test.go +++ b/pkg/infoschema/test/clustertablestest/cluster_tables_test.go @@ -1972,3 +1972,54 @@ func TestMDLViewIDConflict(t *testing.T) { txnTK2.MustExec("COMMIT") wg.Wait() } + +func TestPlanCacheView(t *testing.T) { + s := new(clusterTablesSuite) + s.store, s.dom = testkit.CreateMockStoreAndDomain(t) + s.rpcserver, s.listenAddr = s.setUpRPCService(t, "127.0.0.1:0", nil) + s.httpServer, s.mockAddr = s.setUpMockPDHTTPServer() + s.startTime = time.Now() + defer s.httpServer.Close() + defer s.rpcserver.Stop() + + tk := s.newTestKitWithRoot(t) + tk.MustExec("use test") + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + tk.MustExec(`create table t (a int)`) + tk.MustExec(`prepare st from 'select a from t where a schemaTS2) +} diff --git a/pkg/kv/error.go b/pkg/kv/error.go index c8e1bc77a43b1..b09326477bee3 100644 --- a/pkg/kv/error.go +++ b/pkg/kv/error.go @@ -47,6 +47,8 @@ var ( ErrTxnTooLarge = dbterror.ClassKV.NewStd(mysql.ErrTxnTooLarge) // ErrEntryTooLarge is the error when a key value entry is too large. ErrEntryTooLarge = dbterror.ClassKV.NewStd(mysql.ErrEntryTooLarge) + // ErrKeyTooLarge is the error when a key is too large to be handled by MemBuffer. + ErrKeyTooLarge = dbterror.ClassKV.NewStd(mysql.ErrKeyTooLarge) // ErrKeyExists returns when key is already exist. Caller should try to use // GenKeyExistsErr to generate this error for correct format. ErrKeyExists = dbterror.ClassKV.NewStd(mysql.ErrDupEntry) diff --git a/pkg/kv/interface_mock_test.go b/pkg/kv/interface_mock_test.go index d0241b9fd732d..fea4bd2b1f7bc 100644 --- a/pkg/kv/interface_mock_test.go +++ b/pkg/kv/interface_mock_test.go @@ -197,6 +197,13 @@ func newMockTxn() Transaction { // mockStorage is used to start a must commit-failed txn. type mockStorage struct{} +func (s *mockStorage) GetOption(k any) (any, bool) { + return nil, false +} + +func (s *mockStorage) SetOption(k any, v any) { +} + func (s *mockStorage) GetCodec() tikv.Codec { return nil } diff --git a/pkg/kv/key.go b/pkg/kv/key.go index b2af3d3e78b2f..927fa81060096 100644 --- a/pkg/kv/key.go +++ b/pkg/kv/key.go @@ -98,10 +98,6 @@ func (k Key) String() string { type KeyRange struct { StartKey Key EndKey Key - - XXXNoUnkeyedLiteral struct{} - XXXunrecognized []byte - XXXsizecache int32 } // KeyRangeSliceMemUsage return the memory usage of []KeyRange @@ -110,7 +106,7 @@ func KeyRangeSliceMemUsage(k []KeyRange) int64 { res := sizeofKeyRange * int64(cap(k)) for _, m := range k { - res += int64(cap(m.StartKey)) + int64(cap(m.EndKey)) + int64(cap(m.XXXunrecognized)) + res += int64(cap(m.StartKey)) + int64(cap(m.EndKey)) } return res @@ -723,10 +719,13 @@ func (ph PartitionHandle) Copy() Handle { // Equal implements the Handle interface. func (ph PartitionHandle) Equal(h Handle) bool { + // Compare pid and handle if both sides are `PartitionHandle`. if ph2, ok := h.(PartitionHandle); ok { return ph.PartitionID == ph2.PartitionID && ph.Handle.Equal(ph2.Handle) } - return false + + // Otherwise, use underlying handle to do comparation. + return ph.Handle.Equal(h) } // Compare implements the Handle interface. diff --git a/pkg/kv/key_test.go b/pkg/kv/key_test.go index 0afacd882c829..6d123c254eadf 100644 --- a/pkg/kv/key_test.go +++ b/pkg/kv/key_test.go @@ -146,6 +146,14 @@ func TestHandle(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "abc", d.GetString()) assert.Equal(t, "{100, abc}", ch.String()) + + ph1 := NewPartitionHandle(2, ih) + assert.True(t, ph1.Equal(ih)) + assert.True(t, ih.Equal(ph1)) + + ph2 := NewPartitionHandle(1, ch2) + assert.True(t, ph2.Equal(ch2)) + assert.True(t, ch2.Equal(ph2)) } func TestPaddingHandle(t *testing.T) { @@ -345,7 +353,7 @@ func TestKeyRangeDefinition(t *testing.T) { StartKey: []byte("s2"), EndKey: []byte("e2"), }} - require.Equal(t, int64(168), KeyRangeSliceMemUsage(s)) + require.Equal(t, int64(104), KeyRangeSliceMemUsage(s)) } func BenchmarkIsPoint(b *testing.B) { diff --git a/pkg/kv/kv.go b/pkg/kv/kv.go index b2ad11cb33dec..26a5ee7a4fccf 100644 --- a/pkg/kv/kv.go +++ b/pkg/kv/kv.go @@ -346,17 +346,19 @@ const ( ReqSubTypeAnalyzeCol = 10005 ) -// StoreType represents the type of a store. +// StoreType represents the type of storage engine. type StoreType uint8 const ( - // TiKV means the type of a store is TiKV. + // TiKV means the type of store engine is TiKV. TiKV StoreType = iota - // TiFlash means the type of a store is TiFlash. + // TiFlash means the type of store engine is TiFlash. TiFlash - // TiDB means the type of a store is TiDB. + // TiDB means the type of store engine is TiDB. + // used to read memory data from other instances to have a global view of the + // data, such as for information_schema.cluster_slow_query. TiDB - // UnSpecified means the store type is unknown + // UnSpecified means the store engine type is unknown UnSpecified = 255 ) @@ -600,6 +602,8 @@ type Request struct { StoreBusyThreshold time.Duration // TiKVClientReadTimeout is the timeout of kv read request TiKVClientReadTimeout uint64 + // MaxExecutionTime is the timeout of the whole query execution + MaxExecutionTime uint64 RunawayChecker resourcegroup.RunawayChecker @@ -717,6 +721,10 @@ type Storage interface { GetLockWaits() ([]*deadlockpb.WaitForEntry, error) // GetCodec gets the codec of the storage. GetCodec() tikv.Codec + // SetOption is a thin wrapper around sync.Map. + SetOption(k any, v any) + // GetOption is a thin wrapper around sync.Map. + GetOption(k any) (any, bool) } // EtcdBackend is used for judging a storage is a real TiKV. diff --git a/pkg/kv/option.go b/pkg/kv/option.go index 75c89f77acf89..0312a11d708b3 100644 --- a/pkg/kv/option.go +++ b/pkg/kv/option.go @@ -240,6 +240,8 @@ const ( LossyDDLColumnReorgSource = 1 lossyDDLReorgSourceMax = (1 << lossyDDLReorgSourceBits) - 1 lossyDDLReorgSourceShift = cdcWriteSourceBits + // LightningPhysicalImportTxnSource the 17th bit is set as the txn source for Lightning physical import. + LightningPhysicalImportTxnSource = 1 << 16 ) // SetCDCWriteSource sets the TiCDC write source in the txnSource. diff --git a/pkg/lightning/backend/backend.go b/pkg/lightning/backend/backend.go index 9dc9231f8e64c..1a87c5081e5cb 100644 --- a/pkg/lightning/backend/backend.go +++ b/pkg/lightning/backend/backend.go @@ -98,7 +98,10 @@ type EngineConfig struct { // when opening the engine, instead of removing it. KeepSortDir bool // TS is the preset timestamp of data in the engine. When it's 0, the used TS - // will be set lazily. + // will be set lazily. This is used by local backend. This field will be written + // to engineMeta.TS and take effect in below cases: + // - engineManager.openEngine + // - engineManager.closeEngine only for an external engine TS uint64 } @@ -319,13 +322,6 @@ func (engine *OpenedEngine) LocalWriter(ctx context.Context, cfg *LocalWriterCon return engine.backend.LocalWriter(ctx, cfg, engine.uuid) } -// SetTS sets the TS of the engine. In most cases if the caller wants to specify -// TS it should use the TS field in EngineConfig. This method is only used after -// a ResetEngine. -func (engine *OpenedEngine) SetTS(ts uint64) { - engine.config.TS = ts -} - // UnsafeCloseEngine closes the engine without first opening it. // This method is "unsafe" as it does not follow the normal operation sequence // (Open -> Write -> Close -> Import). This method should only be used when one diff --git a/pkg/lightning/backend/kv/allocator.go b/pkg/lightning/backend/kv/allocator.go index dfd7027a0e7de..5c97c27045b66 100644 --- a/pkg/lightning/backend/kv/allocator.go +++ b/pkg/lightning/backend/kv/allocator.go @@ -30,20 +30,27 @@ type panickingAllocator struct { ty autoid.AllocatorType } -// NewPanickingAllocators creates a PanickingAllocator shared by all allocation types. +// NewPanickingAllocators creates a PanickingAllocator with default base values. +func NewPanickingAllocators(sepAutoInc bool) autoid.Allocators { + return NewPanickingAllocatorsWithBase(sepAutoInc, 0, 0, 0) +} + +// NewPanickingAllocatorsWithBase creates a PanickingAllocator shared by all allocation types. // we use this to collect the max id(either _tidb_rowid or auto_increment id or auto_random) used // during import, and we will use this info to do ALTER TABLE xxx AUTO_RANDOM_BASE or AUTO_INCREMENT // on post-process phase. -// TODO: support save all bases in checkpoint. -func NewPanickingAllocators(sepAutoInc bool, base int64) autoid.Allocators { +func NewPanickingAllocatorsWithBase(sepAutoInc bool, autoRandBase, autoIncrBase, autoRowIDBase int64) autoid.Allocators { allocs := make([]autoid.Allocator, 0, 3) - for _, t := range []autoid.AllocatorType{ - autoid.RowIDAllocType, - autoid.AutoIncrementType, - autoid.AutoRandomType, + for _, t := range []struct { + Type autoid.AllocatorType + Base int64 + }{ + {Type: autoid.AutoRandomType, Base: autoRandBase}, + {Type: autoid.AutoIncrementType, Base: autoIncrBase}, + {Type: autoid.RowIDAllocType, Base: autoRowIDBase}, } { - pa := &panickingAllocator{ty: t} - pa.base.Store(base) + pa := &panickingAllocator{ty: t.Type} + pa.base.Store(t.Base) allocs = append(allocs, pa) } return autoid.NewAllocators(sepAutoInc, allocs...) diff --git a/pkg/lightning/backend/kv/allocator_test.go b/pkg/lightning/backend/kv/allocator_test.go index a88b54f4b5032..2d28968d54b76 100644 --- a/pkg/lightning/backend/kv/allocator_test.go +++ b/pkg/lightning/backend/kv/allocator_test.go @@ -22,7 +22,7 @@ import ( ) func TestAllocator(t *testing.T) { - alloc := NewPanickingAllocators(true, 0) + alloc := NewPanickingAllocators(true) require.NoError(t, alloc.Get(autoid.RowIDAllocType).Rebase(nil, 123, false)) // cannot revert back require.NoError(t, alloc.Get(autoid.RowIDAllocType).Rebase(nil, 100, false)) diff --git a/pkg/lightning/backend/kv/base_test.go b/pkg/lightning/backend/kv/base_test.go index ee3bae9d0eb57..3fba4ca6cc7cc 100644 --- a/pkg/lightning/backend/kv/base_test.go +++ b/pkg/lightning/backend/kv/base_test.go @@ -44,7 +44,7 @@ func TestLogKVConvertFailed(t *testing.T) { cols := []*model.ColumnInfo{c1} tblInfo := &model.TableInfo{ID: 1, Columns: cols, PKIsHandle: false, State: model.StatePublic} var tbl table.Table - tbl, err = tables.TableFromMeta(NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err = tables.TableFromMeta(NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) var baseKVEncoder *BaseKVEncoder diff --git a/pkg/lightning/backend/kv/context.go b/pkg/lightning/backend/kv/context.go index 8b5bd42deee55..14c1963723c21 100644 --- a/pkg/lightning/backend/kv/context.go +++ b/pkg/lightning/backend/kv/context.go @@ -57,6 +57,7 @@ func newLitExprContext(sqlMode mysql.SQLMode, sysVars map[string]string, timesta errLevels := stmtctx.DefaultStmtErrLevels errLevels[errctx.ErrGroupTruncate] = errctx.ResolveErrLevel(flags.IgnoreTruncateErr(), flags.TruncateAsWarning()) errLevels[errctx.ErrGroupBadNull] = errctx.ResolveErrLevel(false, !sqlMode.HasStrictMode()) + errLevels[errctx.ErrGroupNoDefault] = errctx.ResolveErrLevel(false, !sqlMode.HasStrictMode()) errLevels[errctx.ErrGroupDividedByZero] = errctx.ResolveErrLevel(!sqlMode.HasErrorForDivisionByZeroMode(), !sqlMode.HasStrictMode()) diff --git a/pkg/lightning/backend/kv/context_test.go b/pkg/lightning/backend/kv/context_test.go index 6d56a804c013a..bb04a4f3d5bbe 100644 --- a/pkg/lightning/backend/kv/context_test.go +++ b/pkg/lightning/backend/kv/context_test.go @@ -52,6 +52,7 @@ func TestLitExprContext(t *testing.T) { m := stmtctx.DefaultStmtErrLevels m[errctx.ErrGroupTruncate] = errctx.LevelWarn m[errctx.ErrGroupBadNull] = errctx.LevelWarn + m[errctx.ErrGroupNoDefault] = errctx.LevelWarn m[errctx.ErrGroupDividedByZero] = errctx.LevelIgnore return m }(), @@ -72,6 +73,7 @@ func TestLitExprContext(t *testing.T) { m := stmtctx.DefaultStmtErrLevels m[errctx.ErrGroupTruncate] = errctx.LevelError m[errctx.ErrGroupBadNull] = errctx.LevelError + m[errctx.ErrGroupNoDefault] = errctx.LevelError m[errctx.ErrGroupDividedByZero] = errctx.LevelError return m }(), @@ -83,6 +85,7 @@ func TestLitExprContext(t *testing.T) { m := stmtctx.DefaultStmtErrLevels m[errctx.ErrGroupTruncate] = errctx.LevelWarn m[errctx.ErrGroupBadNull] = errctx.LevelWarn + m[errctx.ErrGroupNoDefault] = errctx.LevelWarn m[errctx.ErrGroupDividedByZero] = errctx.LevelWarn return m }(), @@ -94,6 +97,7 @@ func TestLitExprContext(t *testing.T) { m := stmtctx.DefaultStmtErrLevels m[errctx.ErrGroupTruncate] = errctx.LevelError m[errctx.ErrGroupBadNull] = errctx.LevelError + m[errctx.ErrGroupNoDefault] = errctx.LevelError m[errctx.ErrGroupDividedByZero] = errctx.LevelIgnore return m }(), @@ -105,6 +109,7 @@ func TestLitExprContext(t *testing.T) { m := stmtctx.DefaultStmtErrLevels m[errctx.ErrGroupTruncate] = errctx.LevelError m[errctx.ErrGroupBadNull] = errctx.LevelError + m[errctx.ErrGroupNoDefault] = errctx.LevelError m[errctx.ErrGroupDividedByZero] = errctx.LevelIgnore return m }(), @@ -116,6 +121,7 @@ func TestLitExprContext(t *testing.T) { m := stmtctx.DefaultStmtErrLevels m[errctx.ErrGroupTruncate] = errctx.LevelError m[errctx.ErrGroupBadNull] = errctx.LevelError + m[errctx.ErrGroupNoDefault] = errctx.LevelError m[errctx.ErrGroupDividedByZero] = errctx.LevelIgnore return m }(), diff --git a/pkg/lightning/backend/kv/kv2sql_test.go b/pkg/lightning/backend/kv/kv2sql_test.go index cf6d40341eb6a..afe076192f0be 100644 --- a/pkg/lightning/backend/kv/kv2sql_test.go +++ b/pkg/lightning/backend/kv/kv2sql_test.go @@ -42,7 +42,7 @@ func TestIterRawIndexKeysClusteredPK(t *testing.T) { require.NoError(t, err) info.State = model.StatePublic require.True(t, info.IsCommonHandle) - tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) sessionOpts := &encode.SessionOptions{ @@ -83,7 +83,7 @@ func TestIterRawIndexKeysIntPK(t *testing.T) { require.NoError(t, err) info.State = model.StatePublic require.True(t, info.PKIsHandle) - tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) sessionOpts := &encode.SessionOptions{ diff --git a/pkg/lightning/backend/kv/sql2kv_test.go b/pkg/lightning/backend/kv/sql2kv_test.go index dcece5617704b..a21e7198fe4ad 100644 --- a/pkg/lightning/backend/kv/sql2kv_test.go +++ b/pkg/lightning/backend/kv/sql2kv_test.go @@ -80,7 +80,7 @@ func TestEncode(t *testing.T) { c1 := &model.ColumnInfo{ID: 1, Name: pmodel.NewCIStr("c1"), State: model.StatePublic, Offset: 0, FieldType: *types.NewFieldType(mysql.TypeTiny)} cols := []*model.ColumnInfo{c1} tblInfo := &model.TableInfo{ID: 1, Columns: cols, PKIsHandle: false, State: model.StatePublic} - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) logger := log.Logger{Logger: zap.NewNop()} @@ -163,7 +163,7 @@ func TestDecode(t *testing.T) { c1 := &model.ColumnInfo{ID: 1, Name: pmodel.NewCIStr("c1"), State: model.StatePublic, Offset: 0, FieldType: *types.NewFieldType(mysql.TypeTiny)} cols := []*model.ColumnInfo{c1} tblInfo := &model.TableInfo{ID: 1, Columns: cols, PKIsHandle: false, State: model.StatePublic} - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) decoder, err := lkv.NewTableKVDecoder(tbl, "`test`.`c1`", &encode.SessionOptions{ SQLMode: mysql.ModeStrictAllTables, @@ -217,7 +217,7 @@ func TestDecodeIndex(t *testing.T) { State: model.StatePublic, PKIsHandle: false, } - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) if err != nil { fmt.Printf("error: %v", err.Error()) } @@ -262,7 +262,7 @@ func TestEncodeRowFormatV2(t *testing.T) { c1 := &model.ColumnInfo{ID: 1, Name: pmodel.NewCIStr("c1"), State: model.StatePublic, Offset: 0, FieldType: *types.NewFieldType(mysql.TypeTiny)} cols := []*model.ColumnInfo{c1} tblInfo := &model.TableInfo{ID: 1, Columns: cols, PKIsHandle: false, State: model.StatePublic} - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) rows := []types.Datum{ @@ -313,7 +313,7 @@ func TestEncodeTimestamp(t *testing.T) { } cols := []*model.ColumnInfo{c1} tblInfo := &model.TableInfo{ID: 1, Columns: cols, PKIsHandle: false, State: model.StatePublic} - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) encoder, err := lkv.NewTableKVEncoder(&encode.EncodingConfig{ @@ -342,7 +342,7 @@ func TestEncodeTimestamp(t *testing.T) { func TestEncodeDoubleAutoIncrement(t *testing.T) { tblInfo := mockTableInfo(t, "create table t (id double not null auto_increment, unique key `u_id` (`id`));") - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) encoder, err := lkv.NewTableKVEncoder(&encode.EncodingConfig{ @@ -406,7 +406,7 @@ func TestEncodeMissingAutoValue(t *testing.T) { }, } { tblInfo := mockTableInfo(t, testTblInfo.CreateStmt) - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) encoder, err := lkv.NewTableKVEncoder(&encode.EncodingConfig{ @@ -458,7 +458,7 @@ func TestEncodeMissingAutoValue(t *testing.T) { func TestEncodeExpressionColumn(t *testing.T) { tblInfo := mockTableInfo(t, "create table t (id varchar(40) not null DEFAULT uuid(), unique key `u_id` (`id`));") - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) encoder, err := lkv.NewTableKVEncoder(&encode.EncodingConfig{ @@ -503,7 +503,7 @@ func mockTableInfo(t *testing.T, createSQL string) *model.TableInfo { func TestDefaultAutoRandoms(t *testing.T) { tblInfo := mockTableInfo(t, "create table t (id bigint unsigned NOT NULL auto_random primary key clustered, a varchar(100));") - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) encoder, err := lkv.NewTableKVEncoder(&encode.EncodingConfig{ Table: tbl, @@ -541,7 +541,7 @@ func TestDefaultAutoRandoms(t *testing.T) { func TestShardRowId(t *testing.T) { tblInfo := mockTableInfo(t, "create table t (s varchar(16)) shard_row_id_bits = 3;") - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) encoder, err := lkv.NewTableKVEncoder(&encode.EncodingConfig{ Table: tbl, @@ -656,7 +656,7 @@ func SetUpTest(b *testing.B) *benchSQL2KVSuite { tableInfo.State = model.StatePublic // Construct the corresponding KV encoder. - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tableInfo.SepAutoInc(), 0), tableInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tableInfo.SepAutoInc()), tableInfo) require.NoError(b, err) encoder, err := lkv.NewTableKVEncoder(&encode.EncodingConfig{ Table: tbl, diff --git a/pkg/lightning/backend/local/BUILD.bazel b/pkg/lightning/backend/local/BUILD.bazel index 0c2f1811a34c9..80fd7691d13cc 100644 --- a/pkg/lightning/backend/local/BUILD.bazel +++ b/pkg/lightning/backend/local/BUILD.bazel @@ -129,7 +129,6 @@ go_test( "//br/pkg/mock/mocklocal", "//br/pkg/restore/split", "//br/pkg/storage", - "//br/pkg/utiltest", "//pkg/ddl", "//pkg/errno", "//pkg/keyspace", diff --git a/pkg/lightning/backend/local/duplicate_test.go b/pkg/lightning/backend/local/duplicate_test.go index 9652376aacf05..de5c471615bea 100644 --- a/pkg/lightning/backend/local/duplicate_test.go +++ b/pkg/lightning/backend/local/duplicate_test.go @@ -44,7 +44,7 @@ func TestBuildDupTask(t *testing.T) { info, err := ddl.MockTableInfo(mock.NewContext(), node[0].(*ast.CreateTableStmt), 1) require.NoError(t, err) info.State = model.StatePublic - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) // Test build duplicate detecting task. @@ -100,7 +100,7 @@ func TestBuildDupTask(t *testing.T) { info, err = ddl.MockTableInfo(mock.NewContext(), node[0].(*ast.CreateTableStmt), 1) require.NoError(t, err) info.State = model.StatePublic - tbl, err = tables.TableFromMeta(lkv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err = tables.TableFromMeta(lkv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) require.Len(t, tbl.Meta().Indices, 3) require.Equal(t, "primary", tbl.Meta().Indices[0].Name.L) @@ -145,7 +145,7 @@ func buildTableForTestConvertToErrFoundConflictRecords(t *testing.T, node []ast. info, err := ddl.MockTableInfo(mockSctx, node[0].(*ast.CreateTableStmt), 108) require.NoError(t, err) info.State = model.StatePublic - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) sessionOpts := encode.SessionOptions{ diff --git a/pkg/lightning/backend/local/engine_test.go b/pkg/lightning/backend/local/engine_test.go index e4bfe65a76e20..59f21b3b2bf59 100644 --- a/pkg/lightning/backend/local/engine_test.go +++ b/pkg/lightning/backend/local/engine_test.go @@ -23,6 +23,7 @@ import ( "path/filepath" "sync" "testing" + "time" "github.com/cockroachdb/pebble" "github.com/cockroachdb/pebble/objstorage/objstorageprovider" @@ -34,6 +35,7 @@ import ( "github.com/pingcap/tidb/pkg/lightning/common" "github.com/pingcap/tidb/pkg/lightning/log" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" ) func makePebbleDB(t *testing.T, opt *pebble.Options) (*pebble.DB, string) { @@ -68,6 +70,7 @@ func TestGetEngineSizeWhenImport(t *testing.T) { keyAdapter: common.NoopKeyAdapter{}, logger: log.L(), } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) // simulate import f.lock(importMutexStateImport) @@ -106,6 +109,7 @@ func TestIngestSSTWithClosedEngine(t *testing.T) { keyAdapter: common.NoopKeyAdapter{}, logger: log.L(), } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) f.sstIngester = dbSSTIngester{e: f} sstPath := path.Join(tmpPath, uuid.New().String()+".sst") @@ -142,6 +146,7 @@ func TestGetFirstAndLastKey(t *testing.T) { f := &Engine{ sstDir: tmpPath, } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) err := db.Set([]byte("a"), []byte("a"), nil) require.NoError(t, err) @@ -184,6 +189,7 @@ func TestIterOutputHasUniqueMemorySpace(t *testing.T) { f := &Engine{ sstDir: tmpPath, } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) err := db.Set([]byte("a"), []byte("a"), nil) require.NoError(t, err) diff --git a/pkg/lightning/backend/local/local.go b/pkg/lightning/backend/local/local.go index 3f935b654cc7b..4434caf9c13f3 100644 --- a/pkg/lightning/backend/local/local.go +++ b/pkg/lightning/backend/local/local.go @@ -112,6 +112,9 @@ var ( // MaxWriteAndIngestRetryTimes is the max retry times for write and ingest. // A large retry times is for tolerating tikv cluster failures. MaxWriteAndIngestRetryTimes = 30 + + // Unlimited RPC receive message size for TiKV importer + unlimitedRPCRecvMsgSize = math.MaxInt32 ) // importClientFactory is factory to create new import client for specific store. @@ -165,6 +168,7 @@ func (f *importClientFactoryImpl) makeConn(ctx context.Context, storeID uint64) addr = store.GetAddress() } opts = append(opts, + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(unlimitedRPCRecvMsgSize)), grpc.WithConnectParams(grpc.ConnectParams{Backoff: bfConf}), grpc.WithKeepaliveParams(keepalive.ClientParameters{ Time: gRPCKeepAliveTime, @@ -633,12 +637,7 @@ func NewBackend( return nil, common.ErrCheckMultiIngest.Wrap(err).GenWithStackByArgs() } - var writeLimiter StoreWriteLimiter - if config.StoreWriteBWLimit > 0 { - writeLimiter = newStoreWriteLimiter(config.StoreWriteBWLimit) - } else { - writeLimiter = noopStoreWriteLimiter{} - } + writeLimiter := newStoreWriteLimiter(config.StoreWriteBWLimit) local := &Backend{ pdCli: pdCli, pdHTTPCli: pdHTTPCli, @@ -1603,12 +1602,25 @@ func (local *Backend) ResetEngine(ctx context.Context, engineUUID uuid.UUID) err } // ResetEngineSkipAllocTS is like ResetEngine but the inner TS of the engine is -// invalid. Caller must use OpenedEngine.SetTS to set a valid TS before import +// invalid. Caller must use SetTSAfterResetEngine to set a valid TS before import // the engine. func (local *Backend) ResetEngineSkipAllocTS(ctx context.Context, engineUUID uuid.UUID) error { return local.engineMgr.resetEngine(ctx, engineUUID, true) } +// SetTSAfterResetEngine allocates a new TS for the engine after it's reset. +// This is typically called after persisting the chosen TS of the engine to make +// sure TS is not changed after task failover. +func (local *Backend) SetTSAfterResetEngine(engineUUID uuid.UUID, ts uint64) error { + e := local.engineMgr.lockEngine(engineUUID, importMutexStateClose) + if e == nil { + return errors.Errorf("engine %s not found in SetTSAfterResetEngine", engineUUID.String()) + } + defer e.unlock() + e.engineMeta.TS = ts + return e.saveEngineMeta() +} + // CleanupEngine cleanup the engine and reclaim the space. func (local *Backend) CleanupEngine(ctx context.Context, engineUUID uuid.UUID) error { return local.engineMgr.cleanupEngine(ctx, engineUUID) diff --git a/pkg/lightning/backend/local/local_check_test.go b/pkg/lightning/backend/local/local_check_test.go index 87dba07ef56b5..933a366f697a2 100644 --- a/pkg/lightning/backend/local/local_check_test.go +++ b/pkg/lightning/backend/local/local_check_test.go @@ -23,7 +23,7 @@ import ( "github.com/coreos/go-semver/semver" "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/metapb" - "github.com/pingcap/tidb/br/pkg/utiltest" + "github.com/pingcap/tidb/br/pkg/restore/split" "github.com/pingcap/tidb/pkg/lightning/backend" "github.com/pingcap/tidb/pkg/lightning/backend/local" "github.com/pingcap/tidb/pkg/lightning/common" @@ -100,7 +100,7 @@ func TestGetRegionSplitSizeKeys(t *testing.T) { } ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cli := utiltest.NewFakePDClient(allStores, false, nil) + cli := split.NewFakePDClient(allStores, false, nil) defer func() { local.SetGetSplitConfFromStoreFunc(local.GetSplitConfFromStore) }() diff --git a/pkg/lightning/backend/local/local_test.go b/pkg/lightning/backend/local/local_test.go index 35dd73dd36363..138d71b86bbf8 100644 --- a/pkg/lightning/backend/local/local_test.go +++ b/pkg/lightning/backend/local/local_test.go @@ -60,6 +60,7 @@ import ( "github.com/pingcap/tidb/pkg/util/hack" "github.com/pingcap/tidb/pkg/util/mathutil" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" "github.com/tikv/client-go/v2/tikv" pd "github.com/tikv/pd/client" "github.com/tikv/pd/client/http" @@ -353,6 +354,7 @@ func testLocalWriter(t *testing.T, needSort bool, partitialSort bool) { keyAdapter: common.NoopKeyAdapter{}, logger: log.L(), } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) f.sstIngester = dbSSTIngester{e: f} f.wg.Add(1) @@ -587,6 +589,7 @@ func testMergeSSTs(t *testing.T, kvs [][]common.KvPair, meta *sstMeta) { }, logger: log.L(), } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) createSSTWriter := func() (*sstWriter, error) { @@ -1176,7 +1179,7 @@ func (m mockIngestData) NewIter(_ context.Context, lowerBound, upperBound []byte return &mockIngestIter{data: m, startIdx: i, endIdx: j, curIdx: i} } -func (m mockIngestData) GetTS() uint64 { return 0 } +func (m mockIngestData) GetTS() uint64 { return oracle.GoTimeToTS(time.Now()) } func (m mockIngestData) IncRef() {} @@ -1223,7 +1226,7 @@ func TestCheckPeersBusy(t *testing.T) { }, }, logger: log.L(), - writeLimiter: noopStoreWriteLimiter{}, + writeLimiter: newStoreWriteLimiter(0), supportMultiIngest: true, BackendConfig: BackendConfig{ ShouldCheckWriteStall: true, @@ -1347,7 +1350,7 @@ func TestNotLeaderErrorNeedUpdatePeers(t *testing.T) { }, }, logger: log.L(), - writeLimiter: noopStoreWriteLimiter{}, + writeLimiter: newStoreWriteLimiter(0), supportMultiIngest: true, BackendConfig: BackendConfig{ ShouldCheckWriteStall: true, @@ -1446,7 +1449,7 @@ func TestPartialWriteIngestErrorWontPanic(t *testing.T) { }, }, logger: log.L(), - writeLimiter: noopStoreWriteLimiter{}, + writeLimiter: newStoreWriteLimiter(0), supportMultiIngest: true, tikvCodec: keyspace.CodecV1, BackendConfig: BackendConfig{ @@ -1542,7 +1545,7 @@ func TestPartialWriteIngestBusy(t *testing.T) { }, }, logger: log.L(), - writeLimiter: noopStoreWriteLimiter{}, + writeLimiter: newStoreWriteLimiter(0), supportMultiIngest: true, tikvCodec: keyspace.CodecV1, BackendConfig: BackendConfig{ @@ -1565,6 +1568,7 @@ func TestPartialWriteIngestBusy(t *testing.T) { keyAdapter: common.NoopKeyAdapter{}, logger: log.L(), } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) err = db.Set([]byte("a"), []byte("a"), nil) require.NoError(t, err) @@ -1708,6 +1712,7 @@ func TestSplitRangeAgain4BigRegion(t *testing.T) { regionSplitKeysCache: [][]byte{{1}, {11}}, regionSplitSize: 1 << 30, } + f.TS = oracle.GoTimeToTS(time.Now()) f.db.Store(db) // keys starts with 0 is meta keys, so we start with 1. for i := byte(1); i <= 10; i++ { diff --git a/pkg/lightning/backend/local/localhelper.go b/pkg/lightning/backend/local/localhelper.go index e042a78c5cdf5..402fbe3ab99cf 100644 --- a/pkg/lightning/backend/local/localhelper.go +++ b/pkg/lightning/backend/local/localhelper.go @@ -19,6 +19,7 @@ import ( "context" "math" "sync" + "sync/atomic" "time" "github.com/docker/go-units" @@ -133,33 +134,46 @@ func largerStartKey(a, b []byte) []byte { type StoreWriteLimiter interface { WaitN(ctx context.Context, storeID uint64, n int) error Limit() int + UpdateLimit(limit int) } type storeWriteLimiter struct { rwm sync.RWMutex limiters map[uint64]*rate.Limiter - limit int - burst int + // limit and burst can only be non-negative, 0 means no rate limiting. + limit atomic.Int64 + burst atomic.Int64 } func newStoreWriteLimiter(limit int) *storeWriteLimiter { - var burst int - // Allow burst of at most 20% of the limit. - if limit <= math.MaxInt-limit/5 { - burst = limit + limit/5 + l, b := calculateLimitAndBurst(limit) + s := &storeWriteLimiter{ + limiters: make(map[uint64]*rate.Limiter), + } + s.limit.Store(l) + s.burst.Store(b) + return s +} + +func calculateLimitAndBurst(writeLimit int) (limit int64, burst int64) { + if writeLimit <= 0 { + return 0, 0 + } + // Allow burst of at most 20% of the writeLimit. + if writeLimit <= math.MaxInt-writeLimit/5 { + burst = int64(writeLimit) + int64(writeLimit)/5 } else { // If overflowed, set burst to math.MaxInt. burst = math.MaxInt } - return &storeWriteLimiter{ - limiters: make(map[uint64]*rate.Limiter), - limit: limit, - burst: burst, - } + return int64(writeLimit), burst } func (s *storeWriteLimiter) WaitN(ctx context.Context, storeID uint64, n int) error { limiter := s.getLimiter(storeID) + if limiter == nil { + return nil + } // The original WaitN doesn't allow n > burst, // so we call WaitN with burst multiple times. for n > limiter.Burst() { @@ -172,10 +186,13 @@ func (s *storeWriteLimiter) WaitN(ctx context.Context, storeID uint64, n int) er } func (s *storeWriteLimiter) Limit() int { - return s.limit + return int(s.limit.Load()) } func (s *storeWriteLimiter) getLimiter(storeID uint64) *rate.Limiter { + if s.limit.Load() == 0 { + return nil + } s.rwm.RLock() limiter, ok := s.limiters[storeID] s.rwm.RUnlock() @@ -186,20 +203,31 @@ func (s *storeWriteLimiter) getLimiter(storeID uint64) *rate.Limiter { defer s.rwm.Unlock() limiter, ok = s.limiters[storeID] if !ok { - limiter = rate.NewLimiter(rate.Limit(s.limit), s.burst) + limiter = rate.NewLimiter(rate.Limit(s.limit.Load()), int(s.burst.Load())) s.limiters[storeID] = limiter } return limiter } -type noopStoreWriteLimiter struct{} - -func (noopStoreWriteLimiter) WaitN(_ context.Context, _ uint64, _ int) error { - return nil -} +func (s *storeWriteLimiter) UpdateLimit(newLimit int) { + limit, burst := calculateLimitAndBurst(newLimit) + if s.limit.Load() == limit { + return + } -func (noopStoreWriteLimiter) Limit() int { - return math.MaxInt + s.limit.Store(limit) + s.burst.Store(burst) + // Update all existing limiters with the new limit and burst values. + s.rwm.Lock() + defer s.rwm.Unlock() + if s.limit.Load() == 0 { + s.limiters = make(map[uint64]*rate.Limiter) + return + } + for _, limiter := range s.limiters { + limiter.SetLimit(rate.Limit(s.limit.Load())) + limiter.SetBurst(int(s.burst.Load())) + } } // compaction threshold diff --git a/pkg/lightning/backend/local/localhelper_test.go b/pkg/lightning/backend/local/localhelper_test.go index 4baa322c81e49..f107318422e0b 100644 --- a/pkg/lightning/backend/local/localhelper_test.go +++ b/pkg/lightning/backend/local/localhelper_test.go @@ -325,3 +325,40 @@ func TestStoreWriteLimiter(t *testing.T) { } wg.Wait() } + +func TestTuneStoreWriteLimiter(t *testing.T) { + limiter := newStoreWriteLimiter(100) + testLimiter := func(ctx context.Context, maxT int) { + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func(storeID uint64) { + defer wg.Done() + start := time.Now() + var gotTokens int + for { + n := rand.Intn(50) + if limiter.WaitN(ctx, storeID, n) != nil { + break + } + gotTokens += n + } + elapsed := time.Since(start) + maxTokens := int(1.2*float64(maxT)) + int(elapsed.Seconds()*float64(maxT)) + // In theory, gotTokens should be less than or equal to maxT. + // But we allow a little of error to avoid the test being flaky. + require.LessOrEqual(t, gotTokens, maxTokens+1) + }(uint64(i)) + } + wg.Wait() + } + + ctx0, cancel0 := context.WithTimeout(context.Background(), time.Second*2) + defer cancel0() + testLimiter(ctx0, 100) + + limiter.UpdateLimit(200) + ctx1, cancel1 := context.WithTimeout(context.Background(), time.Second*2) + defer cancel1() + testLimiter(ctx1, 200) +} diff --git a/pkg/lightning/backend/local/region_job.go b/pkg/lightning/backend/local/region_job.go index 14f1c9a8191e5..f6bb92990d3c4 100644 --- a/pkg/lightning/backend/local/region_job.go +++ b/pkg/lightning/backend/local/region_job.go @@ -43,6 +43,7 @@ import ( util2 "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/tikv/client-go/v2/oracle" "github.com/tikv/client-go/v2/util" "go.uber.org/zap" "google.golang.org/grpc" @@ -314,6 +315,21 @@ func (local *Backend) writeToTiKV(ctx context.Context, j *regionJob) error { return err } +func newWriteRequest(meta *sst.SSTMeta, resourceGroupName, taskType string) *sst.WriteRequest { + return &sst.WriteRequest{ + Chunk: &sst.WriteRequest_Meta{ + Meta: meta, + }, + Context: &kvrpcpb.Context{ + ResourceControlContext: &kvrpcpb.ResourceControlContext{ + ResourceGroupName: resourceGroupName, + }, + RequestSource: util.BuildRequestSource(true, kv.InternalTxnLightning, taskType), + TxnSource: kv.LightningPhysicalImportTxnSource, + }, + } +} + func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { if j.stage != regionScanned { return nil @@ -396,17 +412,7 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { leaderID := j.region.Leader.GetId() clients := make([]sst.ImportSST_WriteClient, 0, len(region.GetPeers())) allPeers := make([]*metapb.Peer, 0, len(region.GetPeers())) - req := &sst.WriteRequest{ - Chunk: &sst.WriteRequest_Meta{ - Meta: meta, - }, - Context: &kvrpcpb.Context{ - ResourceControlContext: &kvrpcpb.ResourceControlContext{ - ResourceGroupName: local.ResourceGroupName, - }, - RequestSource: util.BuildRequestSource(true, kv.InternalTxnLightning, local.TaskType), - }, - } + req := newWriteRequest(meta, local.ResourceGroupName, local.TaskType) for _, peer := range region.GetPeers() { cli, err := clientFactory.create(ctx, peer.StoreId) if err != nil { @@ -431,6 +437,20 @@ func (local *Backend) doWrite(ctx context.Context, j *regionJob) error { allPeers = append(allPeers, peer) } dataCommitTS := j.ingestData.GetTS() + intest.AssertFunc(func() bool { + timeOfTS := oracle.GetTimeFromTS(dataCommitTS) + now := time.Now() + if timeOfTS.After(now) { + return false + } + if now.Sub(timeOfTS) > 24*time.Hour { + return false + } + return true + }, "TS used in import should in [now-1d, now], but got %d", dataCommitTS) + if dataCommitTS == 0 { + return errors.New("data commitTS is 0") + } req.Chunk = &sst.WriteRequest_Batch{ Batch: &sst.WriteBatch{ CommitTs: dataCommitTS, @@ -780,6 +800,16 @@ func (local *Backend) doIngest(ctx context.Context, j *regionJob) (*sst.IngestRe return resp, nil } +// UpdateWriteSpeedLimit updates the write limiter of the backend. +func (local *Backend) UpdateWriteSpeedLimit(limit int) { + local.writeLimiter.UpdateLimit(limit) +} + +// GetWriteSpeedLimit returns the speed of the write limiter. +func (local *Backend) GetWriteSpeedLimit() int { + return local.writeLimiter.Limit() +} + // convertStageOnIngestError will try to fix the error contained in ingest response. // Return (_, error) when another error occurred. // Return (true, nil) when the job can retry ingesting immediately. diff --git a/pkg/lightning/backend/local/region_job_test.go b/pkg/lightning/backend/local/region_job_test.go index 3a34c4f6e0f0d..dcc0ede731c4b 100644 --- a/pkg/lightning/backend/local/region_job_test.go +++ b/pkg/lightning/backend/local/region_job_test.go @@ -25,6 +25,7 @@ import ( sst "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/br/pkg/restore/split" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/lightning/common" "github.com/pingcap/tidb/pkg/util/codec" "github.com/stretchr/testify/require" @@ -536,6 +537,11 @@ func TestCancelBalancer(t *testing.T) { jobWg.Wait() } +func TestNewWriteRequest(T *testing.T) { + req := newWriteRequest(&sst.SSTMeta{}, "", "") + require.Equal(T, req.Context.TxnSource, uint64(kv.LightningPhysicalImportTxnSource)) +} + func TestStoreBalancerNoRace(t *testing.T) { jobToWorkerCh := make(chan *regionJob) jobFromWorkerCh := make(chan *regionJob) @@ -579,3 +585,25 @@ func TestStoreBalancerNoRace(t *testing.T) { <-done2 require.Len(t, jobFromWorkerCh, 0) } + +func TestUpdateAndGetLimiterConcurrencySafety(t *testing.T) { + backend := &Backend{ + writeLimiter: newStoreWriteLimiter(0), + } + + var wg sync.WaitGroup + concurrentRoutines := 100 + for i := 0; i < concurrentRoutines; i++ { + wg.Add(2) + go func(limit int) { + defer wg.Done() + backend.UpdateWriteSpeedLimit(limit) + }(i) + + go func() { + defer wg.Done() + _ = backend.GetWriteSpeedLimit() + }() + } + wg.Wait() +} diff --git a/pkg/lightning/backend/tidb/tidb_test.go b/pkg/lightning/backend/tidb/tidb_test.go index e0344de49d556..2170a65df00c8 100644 --- a/pkg/lightning/backend/tidb/tidb_test.go +++ b/pkg/lightning/backend/tidb/tidb_test.go @@ -69,7 +69,7 @@ func createMysqlSuite(t *testing.T) *mysqlSuite { cols = append(cols, col) } tblInfo := &model.TableInfo{ID: 1, Columns: cols, PKIsHandle: false, State: model.StatePublic} - tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) cfg := config.NewConfig() cfg.Conflict.Strategy = config.ReplaceOnDup @@ -294,7 +294,7 @@ func testStrictMode(t *testing.T) { ft.SetCharset(charset.CharsetASCII) col1 := &model.ColumnInfo{ID: 2, Name: pmodel.NewCIStr("s1"), State: model.StatePublic, Offset: 1, FieldType: ft} tblInfo := &model.TableInfo{ID: 1, Columns: []*model.ColumnInfo{col0, col1}, PKIsHandle: false, State: model.StatePublic} - tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(kv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) ctx := context.Background() @@ -606,35 +606,35 @@ func TestWriteRowsErrorDowngradingAll(t *testing.T) { ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(1)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "7.csv", int64(0), nonRetryableError.Error(), "(1)"). WillReturnResult(driver.ResultNoRows) s.mockDB. ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(2)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "8.csv", int64(0), nonRetryableError.Error(), "(2)"). WillReturnResult(driver.ResultNoRows) s.mockDB. ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(3)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "9.csv", int64(0), nonRetryableError.Error(), "(3)"). WillReturnResult(driver.ResultNoRows) s.mockDB. ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(4)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "10.csv", int64(0), nonRetryableError.Error(), "(4)"). WillReturnResult(driver.ResultNoRows) s.mockDB. ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(5)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "11.csv", int64(0), nonRetryableError.Error(), "(5)"). WillReturnResult(driver.ResultNoRows) @@ -671,21 +671,21 @@ func TestWriteRowsErrorDowngradingExceedThreshold(t *testing.T) { ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(1)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "7.csv", int64(0), nonRetryableError.Error(), "(1)"). WillReturnResult(driver.ResultNoRows) s.mockDB. ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(2)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "8.csv", int64(0), nonRetryableError.Error(), "(2)"). WillReturnResult(driver.ResultNoRows) s.mockDB. ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(3)\\E"). WillReturnError(nonRetryableError) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v1.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.type_error_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "9.csv", int64(0), nonRetryableError.Error(), "(3)"). WillReturnResult(driver.ResultNoRows) // the forth row will exceed the error threshold, won't record this error @@ -732,7 +732,7 @@ func TestWriteRowsRecordOneError(t *testing.T) { ExpectExec("\\QINSERT INTO `foo`.`bar`(`a`) VALUES(2)\\E"). WillReturnError(dupErr) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.conflict_records.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.conflict_records_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "8.csv", int64(0), dupErr.Error(), 0, "(2)"). WillReturnResult(driver.ResultNoRows) @@ -1045,7 +1045,7 @@ func TestLogicalImportBatchPrepStmt(t *testing.T) { // TestWriteRowsRecordOneErrorPrepStmt tests that when LogicalImportPrepStmt is true and the batch insert fails, // it will fallback to a single row insert, -// the error will be recorded in tidb_lightning_errors.conflict_records. +// the error will be recorded in tidb_lightning_errors.conflict_records_v2. func TestWriteRowsRecordOneErrorPrepStmt(t *testing.T) { dupErr := &gmysql.MySQLError{Number: errno.ErrDupEntry, Message: "Duplicate entry '2' for key 'PRIMARY'"} s := createMysqlSuite(t) @@ -1068,7 +1068,7 @@ func TestWriteRowsRecordOneErrorPrepStmt(t *testing.T) { WithArgs(2). WillReturnError(dupErr) s.mockDB. - ExpectExec("INSERT INTO `tidb_lightning_errors`\\.conflict_records.*"). + ExpectExec("INSERT INTO `tidb_lightning_errors`\\.conflict_records_v2.*"). WithArgs(sqlmock.AnyArg(), "`foo`.`bar`", "8.csv", int64(0), dupErr.Error(), 0, "(2)"). WillReturnResult(driver.ResultNoRows) diff --git a/pkg/lightning/checkpoints/BUILD.bazel b/pkg/lightning/checkpoints/BUILD.bazel index 72adef289c3a8..cf08c81f1b592 100644 --- a/pkg/lightning/checkpoints/BUILD.bazel +++ b/pkg/lightning/checkpoints/BUILD.bazel @@ -36,7 +36,7 @@ go_test( embed = [":checkpoints"], flaky = True, race = "on", - shard_count = 24, + shard_count = 25, deps = [ "//br/pkg/version/build", "//pkg/lightning/checkpoints/checkpointspb", diff --git a/pkg/lightning/checkpoints/checkpoints.go b/pkg/lightning/checkpoints/checkpoints.go index 1904ddbe9ef15..4319ea57d6676 100644 --- a/pkg/lightning/checkpoints/checkpoints.go +++ b/pkg/lightning/checkpoints/checkpoints.go @@ -71,7 +71,7 @@ const WholeTableEngineID = math.MaxInt32 // remember to increase the version number in case of incompatible change. const ( CheckpointTableNameTask = "task_v2" - CheckpointTableNameTable = "table_v9" + CheckpointTableNameTable = "table_v10" CheckpointTableNameEngine = "engine_v5" CheckpointTableNameChunk = "chunk_v5" ) @@ -105,7 +105,6 @@ const ( table_name varchar(261) NOT NULL PRIMARY KEY, hash binary(32) NOT NULL, status tinyint unsigned DEFAULT 30, - alloc_base bigint NOT NULL DEFAULT 0, table_id bigint NOT NULL DEFAULT 0, table_info longtext NOT NULL, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -113,6 +112,9 @@ const ( kv_bytes bigint unsigned NOT NULL DEFAULT 0, kv_kvs bigint unsigned NOT NULL DEFAULT 0, kv_checksum bigint unsigned NOT NULL DEFAULT 0, + auto_rand_base bigint NOT NULL DEFAULT 0, + auto_incr_base bigint NOT NULL DEFAULT 0, + auto_row_id_base bigint NOT NULL DEFAULT 0, INDEX(task_id) );` CreateEngineTableTemplate = ` @@ -168,7 +170,8 @@ const ( FROM %s.%s WHERE table_name = ? ORDER BY engine_id, path, offset;` ReadTableRemainTemplate = ` - SELECT status, alloc_base, table_id, table_info, kv_bytes, kv_kvs, kv_checksum FROM %s.%s WHERE table_name = ?;` + SELECT status, table_id, table_info, kv_bytes, kv_kvs, kv_checksum, auto_rand_base, auto_incr_base, auto_row_id_base + FROM %s.%s WHERE table_name = ?;` ReplaceEngineTemplate = ` REPLACE INTO %s.%s (table_name, engine_id, status) VALUES (?, ?, ?);` ReplaceChunkTemplate = ` @@ -187,7 +190,11 @@ const ( UPDATE %s.%s SET pos = ?, prev_rowid_max = ?, kvc_bytes = ?, kvc_kvs = ?, kvc_checksum = ?, columns = ? WHERE (table_name, engine_id, path, offset) = (?, ?, ?, ?);` UpdateTableRebaseTemplate = ` - UPDATE %s.%s SET alloc_base = GREATEST(?, alloc_base) WHERE table_name = ?;` + UPDATE %s.%s + SET auto_rand_base = GREATEST(?, auto_rand_base), + auto_incr_base = GREATEST(?, auto_incr_base), + auto_row_id_base = GREATEST(?, auto_row_id_base) + WHERE table_name = ?;` UpdateTableStatusTemplate = ` UPDATE %s.%s SET status = ? WHERE table_name = ?;` UpdateTableChecksumTemplate = `UPDATE %s.%s SET kv_bytes = ?, kv_kvs = ?, kv_checksum = ? WHERE table_name = ?;` @@ -338,16 +345,21 @@ func (engine *EngineCheckpoint) DeepCopy() *EngineCheckpoint { // TableCheckpoint is the checkpoint for a table. type TableCheckpoint struct { - Status CheckpointStatus - AllocBase int64 - Engines map[int32]*EngineCheckpoint - TableID int64 + Status CheckpointStatus + Engines map[int32]*EngineCheckpoint + TableID int64 // TableInfo is desired table info what we want to restore. When add-index-by-sql is enabled, // we will first drop indexes from target table, then restore data, then add indexes back. In case // of crash, this field will be used to save the dropped indexes, so we can add them back. TableInfo *model.TableInfo // remote checksum before restore Checksum verify.KVChecksum + // used to record the max auto random ID without the sharding bits that has been used. + AutoRandBase int64 + // used to record the max auto increment ID that has been used. + AutoIncrBase int64 + // used to record the max auto row ID that has been used. + AutoRowIDBase int64 } // DeepCopy returns a deep copy of the table checkpoint. @@ -357,11 +369,14 @@ func (cp *TableCheckpoint) DeepCopy() *TableCheckpoint { engines[engineID] = engine.DeepCopy() } return &TableCheckpoint{ - Status: cp.Status, - AllocBase: cp.AllocBase, - Engines: engines, - TableID: cp.TableID, - Checksum: cp.Checksum, + Status: cp.Status, + Engines: engines, + TableID: cp.TableID, + Checksum: cp.Checksum, + + AutoRandBase: cp.AutoRandBase, + AutoIncrBase: cp.AutoIncrBase, + AutoRowIDBase: cp.AutoRowIDBase, } } @@ -389,13 +404,16 @@ type engineCheckpointDiff struct { // TableCheckpointDiff is the difference between two table checkpoints. type TableCheckpointDiff struct { - hasStatus bool - hasRebase bool - hasChecksum bool - status CheckpointStatus - allocBase int64 - engines map[int32]engineCheckpointDiff - checksum verify.KVChecksum + hasStatus bool + // it means some XXXBase fields has been updated. + hasRebase bool + hasChecksum bool + status CheckpointStatus + engines map[int32]engineCheckpointDiff + checksum verify.KVChecksum + autoRandBase int64 + autoIncrBase int64 + autoRowIDBase int64 } // NewTableCheckpointDiff returns a new TableCheckpointDiff. @@ -422,8 +440,8 @@ func (cpd *TableCheckpointDiff) insertEngineCheckpointDiff(engineID int32, newDi // String implements fmt.Stringer interface. func (cpd *TableCheckpointDiff) String() string { return fmt.Sprintf( - "{hasStatus:%v, hasRebase:%v, status:%d, allocBase:%d, engines:[%d]}", - cpd.hasStatus, cpd.hasRebase, cpd.status, cpd.allocBase, len(cpd.engines), + "{hasStatus:%v, hasRebase:%v, status:%d, engines:[%d], autoRandBase:%d, autoIncrBase:%d, autoRowIDBase:%d}", + cpd.hasStatus, cpd.hasRebase, cpd.status, len(cpd.engines), cpd.autoRandBase, cpd.autoIncrBase, cpd.autoRowIDBase, ) } @@ -433,7 +451,9 @@ func (cp *TableCheckpoint) Apply(cpd *TableCheckpointDiff) { cp.Status = cpd.status } if cpd.hasRebase { - cp.AllocBase = cpd.allocBase + cp.AutoRandBase = max(cp.AutoRandBase, cpd.autoRandBase) + cp.AutoIncrBase = max(cp.AutoIncrBase, cpd.autoIncrBase) + cp.AutoRowIDBase = max(cp.AutoRowIDBase, cpd.autoRowIDBase) } for engineID, engineDiff := range cpd.engines { engine := cp.Engines[engineID] @@ -536,13 +556,17 @@ func (m *TableChecksumMerger) MergeInto(cpd *TableCheckpointDiff) { // RebaseCheckpointMerger is the merger for rebasing the auto-increment ID. type RebaseCheckpointMerger struct { - AllocBase int64 + AutoRandBase int64 + AutoIncrBase int64 + AutoRowIDBase int64 } // MergeInto implements TableCheckpointMerger.MergeInto. func (merger *RebaseCheckpointMerger) MergeInto(cpd *TableCheckpointDiff) { cpd.hasRebase = true - cpd.allocBase = max(cpd.allocBase, merger.AllocBase) + cpd.autoRandBase = max(cpd.autoRandBase, merger.AutoRandBase) + cpd.autoIncrBase = max(cpd.autoIncrBase, merger.AutoIncrBase) + cpd.autoRowIDBase = max(cpd.autoRowIDBase, merger.AutoRowIDBase) } // DestroyedTableCheckpoint is the checkpoint for a table that has been @@ -932,7 +956,10 @@ func (cpdb *MySQLCheckpointsDB) Get(ctx context.Context, tableName string) (*Tab var status uint8 var kvs, bytes, checksum uint64 var rawTableInfo []byte - if err := tableRow.Scan(&status, &cp.AllocBase, &cp.TableID, &rawTableInfo, &bytes, &kvs, &checksum); err != nil { + if err := tableRow.Scan( + &status, &cp.TableID, &rawTableInfo, &bytes, &kvs, &checksum, + &cp.AutoRandBase, &cp.AutoIncrBase, &cp.AutoRowIDBase, + ); err != nil { if err == sql.ErrNoRows { return errors.NotFoundf("checkpoint for table %s", tableName) } @@ -954,7 +981,8 @@ func (cpdb *MySQLCheckpointsDB) Get(ctx context.Context, tableName string) (*Tab } // InsertEngineCheckpoints implements the DB interface. -func (cpdb *MySQLCheckpointsDB) InsertEngineCheckpoints(ctx context.Context, tableName string, checkpoints map[int32]*EngineCheckpoint) error { +func (cpdb *MySQLCheckpointsDB) InsertEngineCheckpoints(ctx context.Context, + tableName string, checkpoints map[int32]*EngineCheckpoint) error { s := common.SQLWithRetry{ DB: cpdb.db, Logger: log.FromContext(ctx).With(zap.String("table", tableName)), @@ -1052,7 +1080,7 @@ func (cpdb *MySQLCheckpointsDB) Update(taskCtx context.Context, checkpointDiffs } } if cpd.hasRebase { - if _, e := rebaseStmt.ExecContext(c, cpd.allocBase, tableName); e != nil { + if _, e := rebaseStmt.ExecContext(c, cpd.autoRandBase, cpd.autoIncrBase, cpd.autoRowIDBase, tableName); e != nil { return errors.Trace(e) } } @@ -1330,12 +1358,14 @@ func (cpdb *FileCheckpointsDB) Get(_ context.Context, tableName string) (*TableC } cp := &TableCheckpoint{ - Status: CheckpointStatus(tableModel.Status), - AllocBase: tableModel.AllocBase, - Engines: make(map[int32]*EngineCheckpoint, len(tableModel.Engines)), - TableID: tableModel.TableID, - TableInfo: tableInfo, - Checksum: verify.MakeKVChecksum(tableModel.KvBytes, tableModel.KvKvs, tableModel.KvChecksum), + Status: CheckpointStatus(tableModel.Status), + Engines: make(map[int32]*EngineCheckpoint, len(tableModel.Engines)), + TableID: tableModel.TableID, + TableInfo: tableInfo, + Checksum: verify.MakeKVChecksum(tableModel.KvBytes, tableModel.KvKvs, tableModel.KvChecksum), + AutoRandBase: tableModel.AutoRandBase, + AutoIncrBase: tableModel.AutoIncrBase, + AutoRowIDBase: tableModel.AutoRowIDBase, } for engineID, engineModel := range tableModel.Engines { @@ -1434,7 +1464,9 @@ func (cpdb *FileCheckpointsDB) Update(_ context.Context, checkpointDiffs map[str tableModel.Status = uint32(cpd.status) } if cpd.hasRebase { - tableModel.AllocBase = cpd.allocBase + tableModel.AutoRandBase = max(tableModel.AutoRandBase, cpd.autoRandBase) + tableModel.AutoIncrBase = max(tableModel.AutoIncrBase, cpd.autoIncrBase) + tableModel.AutoRowIDBase = max(tableModel.AutoRowIDBase, cpd.autoRowIDBase) } if cpd.hasChecksum { tableModel.KvBytes = cpd.checksum.SumSize() @@ -1749,9 +1781,11 @@ func (cpdb *MySQLCheckpointsDB) DumpTables(ctx context.Context, writer io.Writer table_name, hex(hash) AS hash, status, - alloc_base, create_time, - update_time + update_time, + auto_rand_base, + auto_incr_base, + auto_row_id_base FROM %s.%s; `, cpdb.schema, CheckpointTableNameTable)) if err != nil { diff --git a/pkg/lightning/checkpoints/checkpoints_file_test.go b/pkg/lightning/checkpoints/checkpoints_file_test.go index e938e060cad29..17d9fceb1e122 100644 --- a/pkg/lightning/checkpoints/checkpoints_file_test.go +++ b/pkg/lightning/checkpoints/checkpoints_file_test.go @@ -125,7 +125,9 @@ func newFileCheckpointsDB(t *testing.T, addIndexBySQL bool) *checkpoints.FileChe } scm.MergeInto(cpd) rcm := checkpoints.RebaseCheckpointMerger{ - AllocBase: 132861, + AutoRandBase: 132861, + AutoIncrBase: 132862, + AutoRowIDBase: 132863, } rcm.MergeInto(cpd) cksum := checkpoints.TableChecksumMerger{ @@ -167,9 +169,11 @@ func setInvalidStatus(cpdb *checkpoints.FileCheckpointsDB) { func TestGet(t *testing.T) { ctx := context.Background() expectT2 := &checkpoints.TableCheckpoint{ - Status: checkpoints.CheckpointStatusAllWritten, - AllocBase: 132861, - Checksum: verification.MakeKVChecksum(4492, 686, 486070148910), + Status: checkpoints.CheckpointStatusAllWritten, + AutoRandBase: 132861, + AutoIncrBase: 132862, + AutoRowIDBase: 132863, + Checksum: verification.MakeKVChecksum(4492, 686, 486070148910), Engines: map[int32]*checkpoints.EngineCheckpoint{ -1: { Status: checkpoints.CheckpointStatusLoaded, diff --git a/pkg/lightning/checkpoints/checkpoints_sql_test.go b/pkg/lightning/checkpoints/checkpoints_sql_test.go index b4776ea8b9c05..20420cbc2a50c 100644 --- a/pkg/lightning/checkpoints/checkpoints_sql_test.go +++ b/pkg/lightning/checkpoints/checkpoints_sql_test.go @@ -139,19 +139,21 @@ func TestNormalOperations(t *testing.T) { s.mock. ExpectQuery("SELECT .+ FROM `mock-schema`\\.`table_v\\d+`"). WithArgs("`db1`.`t2`"). - WillReturnRows( - sqlmock.NewRows([]string{"status", "alloc_base", "table_id", "table_info", "kv_bytes", "kv_kvs", "kv_checksum"}). - AddRow(60, 132861, int64(2), nil, uint64(4492), uint64(686), uint64(486070148910)), - ) + WillReturnRows(sqlmock.NewRows([]string{ + "status", "table_id", "table_info", "kv_bytes", "kv_kvs", "kv_checksum", + "auto_rand_base", "auto_incr_base", "auto_row_id_base"}). + AddRow(60, int64(2), nil, uint64(4492), uint64(686), uint64(486070148910), 132861, 132862, 132863)) s.mock.ExpectCommit() cp, err := cpdb.Get(ctx, "`db1`.`t2`") require.Nil(t, err) require.Equal(t, &checkpoints.TableCheckpoint{ - Status: checkpoints.CheckpointStatusAllWritten, - AllocBase: 132861, - TableID: int64(2), - TableInfo: nil, + Status: checkpoints.CheckpointStatusAllWritten, + AutoRandBase: 132861, + AutoIncrBase: 132862, + AutoRowIDBase: 132863, + TableID: int64(2), + TableInfo: nil, Engines: map[int32]*checkpoints.EngineCheckpoint{ -1: {Status: checkpoints.CheckpointStatusLoaded}, 0: { @@ -329,7 +331,9 @@ func TestNormalOperationsWithAddIndexBySQL(t *testing.T) { } scm.MergeInto(cpd) rcm := checkpoints.RebaseCheckpointMerger{ - AllocBase: 132861, + AutoRandBase: 132861, + AutoIncrBase: 132862, + AutoRowIDBase: 132863, } rcm.MergeInto(cpd) cksum := checkpoints.TableChecksumMerger{ @@ -355,9 +359,9 @@ func TestNormalOperationsWithAddIndexBySQL(t *testing.T) { ). WillReturnResult(sqlmock.NewResult(11, 1)) s.mock. - ExpectPrepare("UPDATE `mock-schema`\\.`table_v\\d+` SET alloc_base = .+"). + ExpectPrepare("UPDATE `mock-schema`\\.`table_v\\d+` SET auto_rand_base = .+ auto_incr_base = .+ auto_row_id_base = .+"). ExpectExec(). - WithArgs(132861, "`db1`.`t2`"). + WithArgs(132861, 132862, 132863, "`db1`.`t2`"). WillReturnResult(sqlmock.NewResult(12, 1)) s.mock. ExpectPrepare("UPDATE `mock-schema`\\.`engine_v\\d+` SET status = .+"). @@ -412,17 +416,21 @@ func TestNormalOperationsWithAddIndexBySQL(t *testing.T) { ExpectQuery("SELECT .+ FROM `mock-schema`\\.`table_v\\d+`"). WithArgs("`db1`.`t2`"). WillReturnRows( - sqlmock.NewRows([]string{"status", "alloc_base", "table_id", "table_info", "kv_bytes", "kv_kvs", "kv_checksum"}). - AddRow(60, 132861, int64(2), t2Info, uint64(4492), uint64(686), uint64(486070148910)), + sqlmock.NewRows([]string{ + "status", "table_id", "table_info", "kv_bytes", "kv_kvs", "kv_checksum", + "auto_rand_base", "auto_incr_base", "auto_row_id_base"}). + AddRow(60, int64(2), t2Info, uint64(4492), uint64(686), uint64(486070148910), 132861, 132862, 132863), ) s.mock.ExpectCommit() cp, err := cpdb.Get(ctx, "`db1`.`t2`") require.Nil(t, err) require.Equal(t, &checkpoints.TableCheckpoint{ - Status: checkpoints.CheckpointStatusAllWritten, - AllocBase: 132861, - TableID: int64(2), + Status: checkpoints.CheckpointStatusAllWritten, + AutoRandBase: 132861, + AutoIncrBase: 132862, + AutoRowIDBase: 132863, + TableID: int64(2), TableInfo: &model.TableInfo{ Name: pmodel.NewCIStr("t2"), }, @@ -484,7 +492,7 @@ func TestRemoveAllCheckpoints_SQL(t *testing.T) { s.mock. ExpectQuery("SELECT .+ FROM `mock-schema`\\.`table_v\\d+`"). WithArgs("`db1`.`t2`"). - WillReturnRows(sqlmock.NewRows([]string{"status", "alloc_base", "table_id"})) + WillReturnRows(sqlmock.NewRows([]string{"status", "table_id"})) s.mock.ExpectRollback() cp, err := s.cpdb.Get(ctx, "`db1`.`t2`") @@ -666,16 +674,16 @@ func TestDump(t *testing.T) { s.mock. ExpectQuery("SELECT .+ FROM `mock-schema`\\.`table_v\\d+`"). - WillReturnRows( - sqlmock.NewRows([]string{"task_id", "table_name", "hash", "status", "alloc_base", "create_time", "update_time"}). - AddRow(1555555555, "`db1`.`t2`", 0, 90, 132861, tm, tm), + WillReturnRows(sqlmock.NewRows([]string{"task_id", "table_name", "hash", "status", + "create_time", "update_time", "auto_rand_base", "auto_incr_base", "auto_row_id_base"}). + AddRow(1555555555, "`db1`.`t2`", 0, 90, tm, tm, 132861, 132862, 132863), ) csvBuilder.Reset() err = s.cpdb.DumpTables(ctx, &csvBuilder) require.NoError(t, err) - require.Equal(t, "task_id,table_name,hash,status,alloc_base,create_time,update_time\n"+ - "1555555555,`db1`.`t2`,0,90,132861,2019-04-18 02:45:55 +0000 UTC,2019-04-18 02:45:55 +0000 UTC\n", + require.Equal(t, "task_id,table_name,hash,status,create_time,update_time,auto_rand_base,auto_incr_base,auto_row_id_base\n"+ + "1555555555,`db1`.`t2`,0,90,2019-04-18 02:45:55 +0000 UTC,2019-04-18 02:45:55 +0000 UTC,132861,132862,132863\n", csvBuilder.String(), ) } diff --git a/pkg/lightning/checkpoints/checkpoints_test.go b/pkg/lightning/checkpoints/checkpoints_test.go index 84467a3833f3a..0f24887c1149d 100644 --- a/pkg/lightning/checkpoints/checkpoints_test.go +++ b/pkg/lightning/checkpoints/checkpoints_test.go @@ -185,20 +185,38 @@ func TestMergeChunkCheckpoint(t *testing.T) { func TestRebaseCheckpoint(t *testing.T) { cpd := NewTableCheckpointDiff() - m := RebaseCheckpointMerger{AllocBase: 10000} + m := RebaseCheckpointMerger{ + AutoRandBase: 132861, + AutoIncrBase: 132862, + AutoRowIDBase: 132863, + } m.MergeInto(cpd) - require.Equal(t, &TableCheckpointDiff{ - hasRebase: true, - allocBase: 10000, - engines: make(map[int32]engineCheckpointDiff), - }, cpd) + expected := &TableCheckpointDiff{ + hasRebase: true, + autoRandBase: 132861, + autoIncrBase: 132862, + autoRowIDBase: 132863, + engines: make(map[int32]engineCheckpointDiff), + } + require.Equal(t, expected, cpd) + + // shouldn't go backwards + m2 := RebaseCheckpointMerger{ + AutoRandBase: 131, + AutoIncrBase: 132, + AutoRowIDBase: 133, + } + m2.MergeInto(cpd) + require.Equal(t, expected, cpd) } func TestApplyDiff(t *testing.T) { cp := TableCheckpoint{ - Status: CheckpointStatusLoaded, - AllocBase: 123, + Status: CheckpointStatusLoaded, + AutoRandBase: 131, + AutoIncrBase: 132, + AutoRowIDBase: 133, Engines: map[int32]*EngineCheckpoint{ -1: { Status: CheckpointStatusLoaded, @@ -233,7 +251,11 @@ func TestApplyDiff(t *testing.T) { (&StatusCheckpointMerger{EngineID: -1, Status: CheckpointStatusImported}).MergeInto(cpd) (&StatusCheckpointMerger{EngineID: WholeTableEngineID, Status: CheckpointStatusAllWritten}).MergeInto(cpd) (&StatusCheckpointMerger{EngineID: 1234, Status: CheckpointStatusAnalyzeSkipped}).MergeInto(cpd) - (&RebaseCheckpointMerger{AllocBase: 11111}).MergeInto(cpd) + (&RebaseCheckpointMerger{ + AutoRandBase: 1131, + AutoIncrBase: 1132, + AutoRowIDBase: 1133, + }).MergeInto(cpd) (&ChunkCheckpointMerger{ EngineID: 0, Key: ChunkCheckpointKey{Path: "/tmp/01.sql"}, @@ -263,8 +285,10 @@ func TestApplyDiff(t *testing.T) { cp.Apply(cpd) require.Equal(t, TableCheckpoint{ - Status: CheckpointStatusAllWritten, - AllocBase: 11111, + Status: CheckpointStatusAllWritten, + AutoRandBase: 1131, + AutoIncrBase: 1132, + AutoRowIDBase: 1133, Engines: map[int32]*EngineCheckpoint{ -1: { Status: CheckpointStatusImported, @@ -352,3 +376,20 @@ func TestSeparateCompletePath(t *testing.T) { require.Equal(t, testCase.expectPath, newPath) } } + +func TestTableCheckpointApplyBases(t *testing.T) { + tblCP := TableCheckpoint{ + AutoRowIDBase: 11, + AutoIncrBase: 12, + AutoRandBase: 13, + } + tblCP.Apply(&TableCheckpointDiff{ + hasRebase: true, + autoRowIDBase: 1, + autoIncrBase: 2, + autoRandBase: 3, + }) + require.EqualValues(t, 11, tblCP.AutoRowIDBase) + require.EqualValues(t, 12, tblCP.AutoIncrBase) + require.EqualValues(t, 13, tblCP.AutoRandBase) +} diff --git a/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.pb.go b/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.pb.go index 957b712794ed2..464d3acb93536 100644 --- a/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.pb.go +++ b/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.pb.go @@ -1,17 +1,16 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: file_checkpoints.proto +// source: pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto package checkpointspb import ( encoding_binary "encoding/binary" fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" io "io" math "math" math_bits "math/bits" - - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" ) // Reference imports to suppress errors if they are not otherwise used. @@ -35,7 +34,7 @@ func (m *CheckpointsModel) Reset() { *m = CheckpointsModel{} } func (m *CheckpointsModel) String() string { return proto.CompactTextString(m) } func (*CheckpointsModel) ProtoMessage() {} func (*CheckpointsModel) Descriptor() ([]byte, []int) { - return fileDescriptor_975f281c215c00f7, []int{0} + return fileDescriptor_c57c7b77a714394c, []int{0} } func (m *CheckpointsModel) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -80,7 +79,7 @@ func (m *TaskCheckpointModel) Reset() { *m = TaskCheckpointModel{} } func (m *TaskCheckpointModel) String() string { return proto.CompactTextString(m) } func (*TaskCheckpointModel) ProtoMessage() {} func (*TaskCheckpointModel) Descriptor() ([]byte, []int) { - return fileDescriptor_975f281c215c00f7, []int{1} + return fileDescriptor_c57c7b77a714394c, []int{1} } func (m *TaskCheckpointModel) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -112,20 +111,25 @@ var xxx_messageInfo_TaskCheckpointModel proto.InternalMessageInfo type TableCheckpointModel struct { Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` Status uint32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"` - AllocBase int64 `protobuf:"varint,4,opt,name=alloc_base,json=allocBase,proto3" json:"alloc_base,omitempty"` Engines map[int32]*EngineCheckpointModel `protobuf:"bytes,8,rep,name=engines,proto3" json:"engines,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` TableID int64 `protobuf:"varint,9,opt,name=tableID,proto3" json:"tableID,omitempty"` KvBytes uint64 `protobuf:"varint,10,opt,name=kv_bytes,json=kvBytes,proto3" json:"kv_bytes,omitempty"` KvKvs uint64 `protobuf:"varint,11,opt,name=kv_kvs,json=kvKvs,proto3" json:"kv_kvs,omitempty"` KvChecksum uint64 `protobuf:"fixed64,12,opt,name=kv_checksum,json=kvChecksum,proto3" json:"kv_checksum,omitempty"` TableInfo []byte `protobuf:"bytes,13,opt,name=table_info,json=tableInfo,proto3" json:"table_info,omitempty"` + // used to record the max auto random ID without the sharding bits that has been used. + AutoRandBase int64 `protobuf:"varint,14,opt,name=autoRandBase,proto3" json:"autoRandBase,omitempty"` + // used to record the max auto increment ID that has been used. + AutoIncrBase int64 `protobuf:"varint,15,opt,name=autoIncrBase,proto3" json:"autoIncrBase,omitempty"` + // used to record the max auto row ID that has been used. + AutoRowIDBase int64 `protobuf:"varint,16,opt,name=autoRowIDBase,proto3" json:"autoRowIDBase,omitempty"` } func (m *TableCheckpointModel) Reset() { *m = TableCheckpointModel{} } func (m *TableCheckpointModel) String() string { return proto.CompactTextString(m) } func (*TableCheckpointModel) ProtoMessage() {} func (*TableCheckpointModel) Descriptor() ([]byte, []int) { - return fileDescriptor_975f281c215c00f7, []int{2} + return fileDescriptor_c57c7b77a714394c, []int{2} } func (m *TableCheckpointModel) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -164,7 +168,7 @@ func (m *EngineCheckpointModel) Reset() { *m = EngineCheckpointModel{} } func (m *EngineCheckpointModel) String() string { return proto.CompactTextString(m) } func (*EngineCheckpointModel) ProtoMessage() {} func (*EngineCheckpointModel) Descriptor() ([]byte, []int) { - return fileDescriptor_975f281c215c00f7, []int{3} + return fileDescriptor_c57c7b77a714394c, []int{3} } func (m *EngineCheckpointModel) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -215,7 +219,7 @@ func (m *ChunkCheckpointModel) Reset() { *m = ChunkCheckpointModel{} } func (m *ChunkCheckpointModel) String() string { return proto.CompactTextString(m) } func (*ChunkCheckpointModel) ProtoMessage() {} func (*ChunkCheckpointModel) Descriptor() ([]byte, []int) { - return fileDescriptor_975f281c215c00f7, []int{4} + return fileDescriptor_c57c7b77a714394c, []int{4} } func (m *ChunkCheckpointModel) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -255,65 +259,70 @@ func init() { proto.RegisterType((*ChunkCheckpointModel)(nil), "ChunkCheckpointModel") } -func init() { proto.RegisterFile("file_checkpoints.proto", fileDescriptor_975f281c215c00f7) } +func init() { + proto.RegisterFile("pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto", fileDescriptor_c57c7b77a714394c) +} -var fileDescriptor_975f281c215c00f7 = []byte{ - // 873 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xcd, 0x6e, 0x1c, 0x45, - 0x10, 0xf6, 0x78, 0xbc, 0x7f, 0x35, 0xbb, 0xce, 0xba, 0xb1, 0x9d, 0xc6, 0xc0, 0xb2, 0x6c, 0x38, - 0xac, 0x14, 0xb2, 0x91, 0xc2, 0x05, 0x45, 0x70, 0xc0, 0x76, 0x24, 0x22, 0x2b, 0xc2, 0x6a, 0x02, - 0x07, 0x2e, 0xa3, 0xf9, 0xe9, 0xdd, 0x1d, 0xf5, 0xce, 0xf4, 0x68, 0xba, 0x67, 0xc8, 0xe6, 0x29, - 0x78, 0x0c, 0x5e, 0x82, 0x7b, 0xc4, 0x29, 0x47, 0x8e, 0x60, 0xdf, 0x79, 0x05, 0x50, 0x57, 0x8f, - 0xbd, 0xe3, 0x68, 0x15, 0x71, 0xeb, 0xfa, 0xea, 0xeb, 0xaf, 0xab, 0x6a, 0xbe, 0xee, 0x81, 0xe3, - 0x79, 0xb2, 0xe2, 0x7e, 0xb4, 0xe4, 0x91, 0xc8, 0x65, 0x92, 0x69, 0x35, 0xcb, 0x0b, 0xa9, 0xe5, - 0xc9, 0xa3, 0x45, 0xa2, 0x97, 0x65, 0x38, 0x8b, 0x64, 0xfa, 0x78, 0x21, 0x17, 0xf2, 0x31, 0xc2, - 0x61, 0x39, 0xc7, 0x08, 0x03, 0x5c, 0x59, 0xfa, 0xe4, 0x1f, 0x07, 0x86, 0x67, 0x1b, 0x91, 0x17, - 0x32, 0xe6, 0x2b, 0x72, 0x0e, 0x5e, 0x43, 0x98, 0x3a, 0x63, 0x77, 0xea, 0x3d, 0x99, 0xcc, 0xde, - 0xe5, 0x35, 0x81, 0x67, 0x99, 0x2e, 0xd6, 0xac, 0xb9, 0x8d, 0x7c, 0x03, 0xf7, 0x74, 0xa0, 0x44, - 0xa3, 0x46, 0xba, 0x3b, 0x76, 0xa6, 0xde, 0x93, 0xc3, 0xd9, 0xcb, 0x40, 0x89, 0xcd, 0x66, 0x14, - 0x63, 0xfb, 0xfa, 0x0e, 0x78, 0xf2, 0xe3, 0x9d, 0xc2, 0x50, 0x9f, 0x0c, 0xc1, 0x15, 0x7c, 0x4d, - 0x9d, 0xb1, 0x33, 0xed, 0x31, 0xb3, 0x24, 0x0f, 0xa1, 0x55, 0x05, 0xab, 0x92, 0xd7, 0xd2, 0x47, - 0xb3, 0x97, 0x41, 0xb8, 0xe2, 0xef, 0x6a, 0x5b, 0xce, 0xd3, 0xdd, 0xaf, 0x9c, 0xc9, 0x6f, 0xbb, - 0xf0, 0xc1, 0x96, 0xe3, 0xc9, 0x7d, 0xe8, 0x60, 0xb5, 0x49, 0x8c, 0xf2, 0x2e, 0x6b, 0x9b, 0xf0, - 0x79, 0x4c, 0x3e, 0x01, 0x50, 0xb2, 0x2c, 0x22, 0xee, 0xc7, 0x49, 0x81, 0xc7, 0xf4, 0x58, 0xcf, - 0x22, 0xe7, 0x49, 0x41, 0x28, 0x74, 0xc2, 0x20, 0x12, 0x3c, 0x8b, 0xa9, 0x8b, 0xb9, 0x9b, 0x90, - 0x3c, 0x80, 0x41, 0x92, 0xe6, 0xb2, 0xd0, 0xbc, 0xf0, 0x83, 0x38, 0x2e, 0xe8, 0x1e, 0xe6, 0xfb, - 0x37, 0xe0, 0xb7, 0x71, 0x5c, 0x90, 0x8f, 0xa0, 0xa7, 0x93, 0x38, 0xf4, 0x97, 0x52, 0x69, 0xda, - 0x42, 0x42, 0xd7, 0x00, 0xdf, 0x49, 0xa5, 0x6f, 0x93, 0x86, 0x4f, 0xdb, 0x63, 0x67, 0xda, 0xb2, - 0xc9, 0x4b, 0x59, 0x68, 0x53, 0x70, 0x1e, 0x5b, 0xe1, 0x0e, 0xee, 0x6b, 0xe7, 0x31, 0x4a, 0x4e, - 0x60, 0xa0, 0xcc, 0x01, 0xb1, 0x2f, 0x2a, 0xac, 0xb9, 0x8b, 0x69, 0xcf, 0x82, 0x17, 0x95, 0xa9, - 0xfa, 0x01, 0x0c, 0x56, 0xc9, 0x62, 0xa9, 0xb3, 0x24, 0x5b, 0xf8, 0x15, 0x2f, 0x68, 0xcf, 0xd6, - 0x76, 0x0b, 0xfe, 0xc4, 0x8b, 0xc9, 0xbf, 0xbb, 0x70, 0xb8, 0x6d, 0x9c, 0x84, 0xc0, 0xde, 0x32, - 0x50, 0x4b, 0x1c, 0x54, 0x9f, 0xe1, 0x9a, 0x1c, 0x43, 0x5b, 0xe9, 0x40, 0x97, 0x0a, 0xc7, 0x30, - 0x60, 0x75, 0x64, 0xc6, 0x17, 0xac, 0x56, 0x32, 0xf2, 0xc3, 0x40, 0x71, 0x1c, 0x81, 0xcb, 0x7a, - 0x88, 0x9c, 0x06, 0x8a, 0x93, 0xaf, 0xa1, 0xc3, 0xb3, 0x45, 0x92, 0x71, 0x45, 0xbb, 0xb5, 0xcd, - 0xb6, 0x1d, 0x39, 0x7b, 0x66, 0x49, 0xd6, 0x66, 0x37, 0x5b, 0xcc, 0xf0, 0xb5, 0x61, 0x3f, 0x3f, - 0xc7, 0x06, 0x5c, 0x76, 0x13, 0x92, 0x0f, 0xa1, 0x2b, 0x2a, 0x3f, 0x5c, 0x6b, 0xae, 0x28, 0x8c, - 0x9d, 0xe9, 0x1e, 0xeb, 0x88, 0xea, 0xd4, 0x84, 0xe4, 0x08, 0xda, 0xa2, 0xf2, 0x45, 0xa5, 0xa8, - 0x87, 0x89, 0x96, 0xa8, 0x2e, 0x2a, 0x45, 0x3e, 0x05, 0x4f, 0x54, 0xd6, 0xac, 0xaa, 0x4c, 0x69, - 0x7f, 0xec, 0x4c, 0xdb, 0x0c, 0x44, 0x75, 0x56, 0x23, 0xa6, 0x13, 0x54, 0xf7, 0x93, 0x6c, 0x2e, - 0xe9, 0x00, 0x7b, 0xef, 0xd9, 0xf3, 0xb2, 0xb9, 0x3c, 0x61, 0xd0, 0x6f, 0x16, 0xd9, 0xf4, 0xea, - 0x81, 0xf5, 0xea, 0x17, 0x77, 0xbd, 0x7a, 0x5c, 0x37, 0xf5, 0x1e, 0xb3, 0xfe, 0xee, 0xc0, 0xd1, - 0x56, 0x52, 0x63, 0xdc, 0xce, 0x9d, 0x71, 0x3f, 0x85, 0x76, 0xb4, 0x2c, 0x33, 0xa1, 0xe8, 0x6e, - 0x3d, 0xce, 0xad, 0xfb, 0x67, 0x67, 0x48, 0xb2, 0xe3, 0xac, 0x77, 0x9c, 0x5c, 0x82, 0xd7, 0x80, - 0xff, 0xcf, 0x65, 0x43, 0xfa, 0x7b, 0xea, 0xff, 0xc3, 0x85, 0xc3, 0x6d, 0x1c, 0xe3, 0xa0, 0x3c, - 0xd0, 0xcb, 0x5a, 0x1c, 0xd7, 0xa6, 0x25, 0x39, 0x9f, 0x2b, 0x6e, 0x9f, 0x09, 0x97, 0xd5, 0x11, - 0x79, 0x04, 0x24, 0x92, 0xab, 0x32, 0xcd, 0xfc, 0x9c, 0x17, 0x69, 0xa9, 0x03, 0x9d, 0xc8, 0x8c, - 0xf6, 0xc7, 0xee, 0xb4, 0xc5, 0x0e, 0x6c, 0xe6, 0x72, 0x93, 0x30, 0x9f, 0x89, 0x67, 0xb1, 0x5f, - 0x4b, 0xb5, 0xac, 0xe1, 0x78, 0x16, 0x7f, 0x6f, 0xd5, 0x86, 0xe0, 0xe6, 0x52, 0xe1, 0x6d, 0x72, - 0x99, 0x59, 0x92, 0xcf, 0x61, 0x3f, 0x2f, 0x78, 0xe5, 0x17, 0xf2, 0x97, 0x24, 0xf6, 0xd3, 0xe0, - 0x15, 0xde, 0x27, 0x97, 0xf5, 0x0d, 0xca, 0x0c, 0xf8, 0x22, 0x78, 0x65, 0xee, 0xe2, 0x86, 0xd0, - 0x45, 0x42, 0xb7, 0x68, 0x24, 0x45, 0x15, 0xd5, 0x76, 0xeb, 0xa1, 0xab, 0xba, 0xa2, 0x8a, 0xac, - 0xdf, 0xee, 0x43, 0xc7, 0x24, 0x8d, 0xe1, 0xac, 0x13, 0xdb, 0xa2, 0x8a, 0x8c, 0xe3, 0x3e, 0x83, - 0xbe, 0x49, 0xdc, 0x5a, 0xce, 0x43, 0xcb, 0x79, 0xa2, 0x8a, 0x6e, 0x3d, 0xf7, 0xb1, 0x79, 0x01, - 0x52, 0xae, 0x74, 0x90, 0xe6, 0x68, 0xb9, 0x21, 0xdb, 0x00, 0x66, 0x8a, 0x7a, 0x9d, 0x73, 0xba, - 0x8f, 0x4f, 0x03, 0xae, 0xc9, 0x18, 0xbc, 0x48, 0xa6, 0x79, 0xc1, 0x95, 0x32, 0x63, 0xba, 0x87, - 0xa9, 0x26, 0x64, 0xae, 0x86, 0x79, 0x0a, 0x7c, 0xf3, 0x71, 0x87, 0xf6, 0xc9, 0x32, 0xf1, 0x05, - 0x5f, 0x9b, 0x3e, 0xf0, 0xb7, 0xa2, 0x92, 0xd7, 0x9c, 0x1e, 0xd8, 0x26, 0x0d, 0xf0, 0x43, 0xf2, - 0x9a, 0x9f, 0x3e, 0x7c, 0xf3, 0xf7, 0x68, 0xe7, 0xcd, 0xd5, 0xc8, 0x79, 0x7b, 0x35, 0x72, 0xfe, - 0xba, 0x1a, 0x39, 0xbf, 0x5e, 0x8f, 0x76, 0xde, 0x5e, 0x8f, 0x76, 0xfe, 0xbc, 0x1e, 0xed, 0xfc, - 0x3c, 0x68, 0x3c, 0xfd, 0x79, 0x18, 0xb6, 0xf1, 0xf7, 0xf2, 0xe5, 0x7f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0xd2, 0x2d, 0x6f, 0xe5, 0xa7, 0x06, 0x00, 0x00, +var fileDescriptor_c57c7b77a714394c = []byte{ + // 925 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xcf, 0x8e, 0xe3, 0xc4, + 0x13, 0x1e, 0x8f, 0xf3, 0xb7, 0x9c, 0xcc, 0x64, 0xfa, 0x37, 0xb3, 0xeb, 0xdf, 0x00, 0x21, 0x64, + 0xf7, 0x10, 0x69, 0x21, 0x11, 0xb3, 0x1c, 0xd0, 0x0a, 0x10, 0xcc, 0xcc, 0x4a, 0x0c, 0xa3, 0x15, + 0xa3, 0x66, 0xe1, 0xc0, 0xc5, 0x72, 0xec, 0x4e, 0x62, 0x75, 0xe2, 0xb6, 0xdc, 0x6d, 0xef, 0x66, + 0x9f, 0x82, 0xc7, 0xe0, 0x25, 0xb8, 0xaf, 0x38, 0xed, 0x81, 0x03, 0x47, 0x98, 0xb9, 0xf3, 0x0c, + 0xa8, 0xab, 0x9d, 0xc4, 0x59, 0x05, 0xc4, 0xad, 0xeb, 0xab, 0xaf, 0x3e, 0x57, 0x57, 0x7f, 0xdd, + 0x86, 0x2f, 0x12, 0x3e, 0x1d, 0xcd, 0xa3, 0xe9, 0x4c, 0xc5, 0x51, 0x3c, 0x1d, 0x05, 0x33, 0x16, + 0xf0, 0x44, 0x44, 0xb1, 0x92, 0xe5, 0x75, 0x32, 0x1e, 0x4d, 0xa2, 0x39, 0xf3, 0x4a, 0xd0, 0x30, + 0x49, 0x85, 0x12, 0xa7, 0x9f, 0x4c, 0x23, 0x35, 0xcb, 0xc6, 0xc3, 0x40, 0x2c, 0x46, 0x53, 0x31, + 0x15, 0x23, 0x84, 0xc7, 0xd9, 0xe4, 0xcb, 0xfc, 0xe3, 0xe1, 0xe3, 0xe1, 0x19, 0x82, 0x88, 0xe1, + 0xca, 0x54, 0xf5, 0xff, 0xb2, 0xa0, 0x73, 0xb1, 0xd1, 0x7a, 0x26, 0x42, 0x36, 0x27, 0x97, 0xe0, + 0x94, 0xf4, 0x5d, 0xab, 0x67, 0x0f, 0x9c, 0xb3, 0xfe, 0xf0, 0x6d, 0x5e, 0x19, 0x78, 0x1a, 0xab, + 0x74, 0x49, 0xcb, 0x65, 0xe4, 0x73, 0x38, 0x54, 0xbe, 0xe4, 0xa5, 0x56, 0xdd, 0xfd, 0x9e, 0x35, + 0x70, 0xce, 0x8e, 0x87, 0xcf, 0x7d, 0xc9, 0x37, 0xc5, 0x28, 0x46, 0x0f, 0xd4, 0x16, 0x78, 0xfa, + 0xfd, 0x56, 0x63, 0xa8, 0x4f, 0x3a, 0x60, 0x73, 0xb6, 0x74, 0xad, 0x9e, 0x35, 0x68, 0x52, 0xbd, + 0x24, 0x8f, 0xa0, 0x9a, 0xfb, 0xf3, 0x8c, 0x15, 0xd2, 0x27, 0xc3, 0xe7, 0xfe, 0x78, 0xce, 0xde, + 0xd6, 0x36, 0x9c, 0x27, 0xfb, 0x9f, 0x5a, 0xfd, 0x9f, 0xf7, 0xe1, 0x7f, 0x3b, 0x3e, 0x4f, 0xee, + 0x43, 0x1d, 0xbb, 0x8d, 0x42, 0x94, 0xb7, 0x69, 0x4d, 0x87, 0x57, 0x21, 0x79, 0x0f, 0x40, 0x8a, + 0x2c, 0x0d, 0x98, 0x17, 0x46, 0x29, 0x7e, 0xa6, 0x49, 0x9b, 0x06, 0xb9, 0x8c, 0x52, 0xe2, 0x42, + 0x7d, 0xec, 0x07, 0x9c, 0xc5, 0xa1, 0x6b, 0x63, 0x6e, 0x15, 0x92, 0x07, 0xd0, 0x8e, 0x16, 0x89, + 0x48, 0x15, 0x4b, 0x3d, 0x3f, 0x0c, 0x53, 0xb7, 0x82, 0xf9, 0xd6, 0x0a, 0xfc, 0x2a, 0x0c, 0x53, + 0xf2, 0x0e, 0x34, 0x55, 0x14, 0x8e, 0xbd, 0x99, 0x90, 0xca, 0xad, 0x22, 0xa1, 0xa1, 0x81, 0xaf, + 0x85, 0x54, 0xeb, 0xa4, 0xe6, 0xbb, 0xb5, 0x9e, 0x35, 0xa8, 0x9a, 0xe4, 0x8d, 0x48, 0x95, 0x6e, + 0x38, 0x09, 0x8d, 0x70, 0x1d, 0xeb, 0x6a, 0x49, 0x88, 0x92, 0x7d, 0x68, 0x4b, 0xfd, 0x81, 0xd0, + 0xe3, 0x39, 0xf6, 0xdc, 0xc0, 0xb4, 0x63, 0xc0, 0xeb, 0x5c, 0x77, 0xfd, 0x00, 0xda, 0x6b, 0xab, + 0x79, 0x39, 0x4b, 0xdd, 0xa6, 0xe9, 0x6d, 0x0d, 0xfe, 0xc0, 0xd2, 0xfe, 0x6f, 0x36, 0x1c, 0xef, + 0x1a, 0x27, 0x21, 0x50, 0x99, 0xf9, 0x72, 0x86, 0x83, 0x6a, 0x51, 0x5c, 0x93, 0x7b, 0x50, 0x93, + 0xca, 0x57, 0x99, 0xc4, 0x31, 0xb4, 0x69, 0x11, 0x91, 0xcf, 0xa0, 0xce, 0xe2, 0x69, 0x14, 0x33, + 0xe9, 0x36, 0x0a, 0x1f, 0xed, 0xd2, 0x1c, 0x3e, 0x35, 0x24, 0xe3, 0xa3, 0x55, 0x89, 0x9e, 0xae, + 0xd2, 0xec, 0xab, 0x4b, 0xec, 0xd0, 0xa6, 0xab, 0x90, 0xfc, 0x1f, 0x1a, 0x3c, 0xf7, 0xc6, 0x4b, + 0xc5, 0xa4, 0x0b, 0x3d, 0x6b, 0x50, 0xa1, 0x75, 0x9e, 0x9f, 0xeb, 0x90, 0x9c, 0x40, 0x8d, 0xe7, + 0x1e, 0xcf, 0xa5, 0xeb, 0x60, 0xa2, 0xca, 0xf3, 0xeb, 0x5c, 0x92, 0xf7, 0xc1, 0xe1, 0xb9, 0x71, + 0xa3, 0xcc, 0x16, 0x6e, 0xab, 0x67, 0x0d, 0x6a, 0x14, 0x78, 0x7e, 0x51, 0x20, 0xfa, 0xa4, 0x51, + 0xdd, 0x8b, 0xe2, 0x89, 0x70, 0xdb, 0xb8, 0xb9, 0xa6, 0xf9, 0x5e, 0x3c, 0x11, 0xa4, 0x0f, 0x2d, + 0x3f, 0x53, 0x82, 0xfa, 0x71, 0x78, 0xee, 0x4b, 0xe6, 0x1e, 0x60, 0x43, 0x5b, 0xd8, 0x8a, 0x73, + 0x15, 0x07, 0x29, 0x72, 0x0e, 0x37, 0x9c, 0x15, 0x46, 0x1e, 0x42, 0x1b, 0x6b, 0xc4, 0x8b, 0xab, + 0x4b, 0x24, 0x75, 0x90, 0xb4, 0x0d, 0x9e, 0x52, 0x68, 0x95, 0x47, 0x52, 0xb6, 0xfe, 0x91, 0xb1, + 0xfe, 0x87, 0xdb, 0xd6, 0xbf, 0x57, 0x8c, 0xf0, 0x9f, 0xbd, 0xff, 0x4d, 0xa5, 0x51, 0xe9, 0x54, + 0xfb, 0xbf, 0x58, 0x70, 0xb2, 0x93, 0x5a, 0x3a, 0x43, 0x6b, 0xeb, 0x0c, 0x9f, 0x40, 0x2d, 0x98, + 0x65, 0x31, 0x97, 0xee, 0x7e, 0x71, 0x84, 0x3b, 0xeb, 0x87, 0x17, 0x48, 0x32, 0x47, 0x58, 0x54, + 0x9c, 0xde, 0x80, 0x53, 0x82, 0xff, 0xcb, 0x0d, 0x46, 0xfa, 0xbf, 0xdc, 0xe0, 0x5f, 0x6d, 0x38, + 0xde, 0xc5, 0xd1, 0xb6, 0x4c, 0x7c, 0x35, 0x2b, 0xc4, 0x71, 0xad, 0xb7, 0x24, 0x26, 0x13, 0xc9, + 0xcc, 0xdb, 0x63, 0xd3, 0x22, 0x22, 0x1f, 0x01, 0x09, 0xc4, 0x3c, 0x5b, 0xc4, 0x5e, 0xc2, 0xd2, + 0x45, 0xa6, 0x7c, 0x15, 0x89, 0xd8, 0x6d, 0xf5, 0xec, 0x41, 0x95, 0x1e, 0x99, 0xcc, 0xcd, 0x26, + 0xa1, 0xad, 0xc1, 0xe2, 0xd0, 0x2b, 0xa4, 0xaa, 0x28, 0xd5, 0x64, 0x71, 0xf8, 0xad, 0x51, 0xeb, + 0x80, 0x9d, 0x08, 0x89, 0x57, 0xd4, 0xa6, 0x7a, 0x49, 0x1e, 0xc2, 0x41, 0x92, 0xb2, 0xdc, 0x4b, + 0xc5, 0x8b, 0x28, 0xf4, 0x16, 0xfe, 0x4b, 0xbc, 0xa4, 0x36, 0x6d, 0x69, 0x94, 0x6a, 0xf0, 0x99, + 0xff, 0x52, 0x5f, 0xf0, 0x0d, 0xa1, 0x81, 0x84, 0x46, 0x5a, 0x4a, 0xf2, 0x3c, 0x28, 0x2c, 0xde, + 0x44, 0x27, 0x37, 0x78, 0x1e, 0x18, 0x8f, 0xdf, 0x87, 0xba, 0x4e, 0x6a, 0x93, 0x1b, 0xf7, 0xd7, + 0x78, 0x1e, 0x68, 0x97, 0x7f, 0x00, 0x2d, 0x9d, 0x58, 0xdb, 0xdc, 0x41, 0x9b, 0x3b, 0x3c, 0x0f, + 0xd6, 0x3e, 0x7f, 0x57, 0x3f, 0x2b, 0x0b, 0x26, 0x95, 0xbf, 0x48, 0xd0, 0xe6, 0x1d, 0xba, 0x01, + 0xf4, 0x14, 0xd5, 0x32, 0x31, 0xf6, 0xae, 0x52, 0x5c, 0x93, 0x1e, 0x38, 0x81, 0x58, 0x24, 0x29, + 0x93, 0x52, 0x8f, 0xe9, 0x10, 0x53, 0x65, 0x48, 0x5f, 0x47, 0xfd, 0xbe, 0x78, 0xfa, 0x70, 0x3b, + 0xe6, 0x1d, 0xd4, 0xf1, 0x35, 0x5b, 0xea, 0x7d, 0xe0, 0x2f, 0x4b, 0x46, 0xaf, 0x98, 0x7b, 0x64, + 0x36, 0xa9, 0x81, 0xef, 0xa2, 0x57, 0xec, 0xfc, 0xd1, 0xeb, 0x3f, 0xbb, 0x7b, 0xaf, 0x6f, 0xbb, + 0xd6, 0x9b, 0xdb, 0xae, 0xf5, 0xc7, 0x6d, 0xd7, 0xfa, 0xe9, 0xae, 0xbb, 0xf7, 0xe6, 0xae, 0xbb, + 0xf7, 0xfb, 0x5d, 0x77, 0xef, 0xc7, 0xf6, 0xd6, 0x9f, 0x6f, 0x5c, 0xc3, 0x7f, 0xd6, 0xe3, 0xbf, + 0x03, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xa4, 0xc2, 0x90, 0x2b, 0x07, 0x00, 0x00, } func (m *CheckpointsModel) Marshal() (dAtA []byte, err error) { @@ -479,6 +488,23 @@ func (m *TableCheckpointModel) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.AutoRowIDBase != 0 { + i = encodeVarintFileCheckpoints(dAtA, i, uint64(m.AutoRowIDBase)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x80 + } + if m.AutoIncrBase != 0 { + i = encodeVarintFileCheckpoints(dAtA, i, uint64(m.AutoIncrBase)) + i-- + dAtA[i] = 0x78 + } + if m.AutoRandBase != 0 { + i = encodeVarintFileCheckpoints(dAtA, i, uint64(m.AutoRandBase)) + i-- + dAtA[i] = 0x70 + } if len(m.TableInfo) > 0 { i -= len(m.TableInfo) copy(dAtA[i:], m.TableInfo) @@ -531,11 +557,6 @@ func (m *TableCheckpointModel) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x42 } } - if m.AllocBase != 0 { - i = encodeVarintFileCheckpoints(dAtA, i, uint64(m.AllocBase)) - i-- - dAtA[i] = 0x20 - } if m.Status != 0 { i = encodeVarintFileCheckpoints(dAtA, i, uint64(m.Status)) i-- @@ -820,9 +841,6 @@ func (m *TableCheckpointModel) Size() (n int) { if m.Status != 0 { n += 1 + sovFileCheckpoints(uint64(m.Status)) } - if m.AllocBase != 0 { - n += 1 + sovFileCheckpoints(uint64(m.AllocBase)) - } if len(m.Engines) > 0 { for k, v := range m.Engines { _ = k @@ -852,6 +870,15 @@ func (m *TableCheckpointModel) Size() (n int) { if l > 0 { n += 1 + l + sovFileCheckpoints(uint64(l)) } + if m.AutoRandBase != 0 { + n += 1 + sovFileCheckpoints(uint64(m.AutoRandBase)) + } + if m.AutoIncrBase != 0 { + n += 1 + sovFileCheckpoints(uint64(m.AutoIncrBase)) + } + if m.AutoRowIDBase != 0 { + n += 2 + sovFileCheckpoints(uint64(m.AutoRowIDBase)) + } return n } @@ -1555,25 +1582,6 @@ func (m *TableCheckpointModel) Unmarshal(dAtA []byte) error { break } } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AllocBase", wireType) - } - m.AllocBase = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowFileCheckpoints - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.AllocBase |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Engines", wireType) @@ -1793,6 +1801,63 @@ func (m *TableCheckpointModel) Unmarshal(dAtA []byte) error { m.TableInfo = []byte{} } iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoRandBase", wireType) + } + m.AutoRandBase = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFileCheckpoints + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AutoRandBase |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoIncrBase", wireType) + } + m.AutoIncrBase = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFileCheckpoints + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AutoIncrBase |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoRowIDBase", wireType) + } + m.AutoRowIDBase = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFileCheckpoints + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AutoRowIDBase |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipFileCheckpoints(dAtA[iNdEx:]) diff --git a/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto b/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto index 9be5795e19c8a..eb4f82d07819d 100644 --- a/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto +++ b/pkg/lightning/checkpoints/checkpointspb/file_checkpoints.proto @@ -14,7 +14,7 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; +import "github.com/gogo/protobuf@v1.3.2/gogoproto/gogo.proto"; option go_package = "checkpointspb"; option (gogoproto.goproto_getters_all) = false; @@ -40,13 +40,21 @@ message TaskCheckpointModel { message TableCheckpointModel { bytes hash = 1; uint32 status = 3; - int64 alloc_base = 4; + // previously we use 4 to store alloc_base, but now it's deleted, reverse 4 + // to avoid reusing it. + reserved 4; map engines = 8; int64 tableID = 9; uint64 kv_bytes = 10; uint64 kv_kvs = 11; fixed64 kv_checksum = 12; bytes table_info = 13; + // used to record the max auto random ID without the sharding bits that has been used. + int64 autoRandBase = 14; + // used to record the max auto increment ID that has been used. + int64 autoIncrBase = 15; + // used to record the max auto row ID that has been used. + int64 autoRowIDBase = 16; } message EngineCheckpointModel { diff --git a/pkg/lightning/common/common.go b/pkg/lightning/common/common.go index 4eaff5d0a55c3..4c16f700e4345 100644 --- a/pkg/lightning/common/common.go +++ b/pkg/lightning/common/common.go @@ -48,40 +48,22 @@ var DefaultImportVariablesTiDB = map[string]string{ "tidb_row_format_version": "1", } -// AllocGlobalAutoID allocs N consecutive autoIDs from TiDB. -func AllocGlobalAutoID(ctx context.Context, n int64, r autoid.Requirement, dbID int64, - tblInfo *model.TableInfo) (autoIDBase, autoIDMax int64, err error) { +// GetMaxAutoIDBase returns the max auto ID base for a table. +func GetMaxAutoIDBase(r autoid.Requirement, dbID int64, tblInfo *model.TableInfo) (int64, error) { allocators, err := GetGlobalAutoIDAlloc(r, dbID, tblInfo) if err != nil { - return 0, 0, err + return 0, errors.Trace(err) } - // there might be 2 allocators when tblInfo.SepAutoInc is true, and in this case - // RowIDAllocType will be the last one. - // we return the value of last Alloc as autoIDBase and autoIDMax, i.e. the value - // either comes from RowIDAllocType or AutoRandomType. + // all next auto id starts from 1. + maxNextID := int64(1) for _, alloc := range allocators { - autoIDBase, autoIDMax, err = alloc.Alloc(ctx, uint64(n), 1, 1) + nextID, err := alloc.NextGlobalAutoID() if err != nil { - return 0, 0, err + return 0, errors.Trace(err) } + maxNextID = max(maxNextID, nextID) } - return -} - -// RebaseGlobalAutoID rebase the autoID base to newBase. -func RebaseGlobalAutoID(ctx context.Context, newBase int64, r autoid.Requirement, dbID int64, - tblInfo *model.TableInfo) error { - allocators, err := GetGlobalAutoIDAlloc(r, dbID, tblInfo) - if err != nil { - return err - } - for _, alloc := range allocators { - err = alloc.Rebase(ctx, newBase, false) - if err != nil { - return err - } - } - return nil + return maxNextID - 1, nil } // RebaseTableAllocators rebase the allocators of a table. diff --git a/pkg/lightning/common/common_test.go b/pkg/lightning/common/common_test.go index d6a070fefeed4..b0fcbf5f12357 100644 --- a/pkg/lightning/common/common_test.go +++ b/pkg/lightning/common/common_test.go @@ -133,25 +133,10 @@ func TestAllocGlobalAutoID(t *testing.T) { expectAllocatorTypes: []autoid.AllocatorType{autoid.AutoRandomType}, }, } - ctx := context.Background() for _, c := range cases { ti := newTableInfo(t, 1, c.tableID, c.createTableSQL, kvStore) allocators, err := common.GetGlobalAutoIDAlloc(mockRequirement{kvStore}, 1, ti) - if c.expectErrStr == "" { - require.NoError(t, err, c.tableID) - require.NoError(t, common.RebaseGlobalAutoID(ctx, 123, mockRequirement{kvStore}, 1, ti)) - base, idMax, err := common.AllocGlobalAutoID(ctx, 100, mockRequirement{kvStore}, 1, ti) - require.NoError(t, err, c.tableID) - require.Equal(t, int64(123), base, c.tableID) - require.Equal(t, int64(223), idMax, c.tableID) - // all allocators are rebased and allocated - for _, alloc := range allocators { - base2, max2, err := alloc.Alloc(ctx, 100, 1, 1) - require.NoError(t, err, c.tableID) - require.Equal(t, int64(223), base2, c.tableID) - require.Equal(t, int64(323), max2, c.tableID) - } - } else { + if c.expectErrStr != "" { require.ErrorContains(t, err, c.expectErrStr, c.tableID) } var allocatorTypes []autoid.AllocatorType @@ -191,6 +176,10 @@ func TestRebaseTableAllocators(t *testing.T) { require.NoError(t, err) require.Equal(t, int64(1), id) } + maxAutoIDBase, err := common.GetMaxAutoIDBase(mockRequirement{kvStore}, 1, ti) + require.NoError(t, err) + require.Equal(t, int64(0), maxAutoIDBase) + ctx := context.Background() allocatorTypes := make([]autoid.AllocatorType, 0, len(allocators)) // rebase to 123 @@ -206,6 +195,9 @@ func TestRebaseTableAllocators(t *testing.T) { require.NoError(t, err) require.Equal(t, int64(124), nextID) } + maxAutoIDBase, err = common.GetMaxAutoIDBase(mockRequirement{kvStore}, 1, ti) + require.NoError(t, err) + require.Equal(t, int64(123), maxAutoIDBase) // this call rebase AutoIncrementType allocator to 223 require.NoError(t, common.RebaseTableAllocators(ctx, map[autoid.AllocatorType]int64{ autoid.AutoIncrementType: 223, @@ -216,6 +208,9 @@ func TestRebaseTableAllocators(t *testing.T) { next, err = allocators[1].NextGlobalAutoID() require.NoError(t, err) require.Equal(t, int64(124), next) + maxAutoIDBase, err = common.GetMaxAutoIDBase(mockRequirement{kvStore}, 1, ti) + require.NoError(t, err) + require.Equal(t, int64(223), maxAutoIDBase) // this call rebase AutoIncrementType allocator to 323, RowIDAllocType allocator to 423 require.NoError(t, common.RebaseTableAllocators(ctx, map[autoid.AllocatorType]int64{ autoid.AutoIncrementType: 323, @@ -227,4 +222,7 @@ func TestRebaseTableAllocators(t *testing.T) { next, err = allocators[1].NextGlobalAutoID() require.NoError(t, err) require.Equal(t, int64(424), next) + maxAutoIDBase, err = common.GetMaxAutoIDBase(mockRequirement{kvStore}, 1, ti) + require.NoError(t, err) + require.Equal(t, int64(423), maxAutoIDBase) } diff --git a/pkg/lightning/common/errors.go b/pkg/lightning/common/errors.go index 2ba7bc95e01f1..44caa0814108f 100644 --- a/pkg/lightning/common/errors.go +++ b/pkg/lightning/common/errors.go @@ -44,15 +44,16 @@ var ( ErrInvalidSchemaFile = errors.Normalize("invalid schema file", errors.RFCCodeText("Lightning:Loader:ErrInvalidSchemaFile")) ErrTooManySourceFiles = errors.Normalize("too many source files", errors.RFCCodeText("Lightning:Loader:ErrTooManySourceFiles")) - ErrSystemRequirementNotMet = errors.Normalize("system requirement not met", errors.RFCCodeText("Lightning:PreCheck:ErrSystemRequirementNotMet")) - ErrCheckpointSchemaConflict = errors.Normalize("checkpoint schema conflict", errors.RFCCodeText("Lightning:PreCheck:ErrCheckpointSchemaConflict")) - ErrPreCheckFailed = errors.Normalize("tidb-lightning pre-check failed: %s", errors.RFCCodeText("Lightning:PreCheck:ErrPreCheckFailed")) - ErrCheckClusterRegion = errors.Normalize("check tikv cluster region error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckClusterRegion")) - ErrCheckLocalResource = errors.Normalize("check local storage resource error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckLocalResource")) - ErrCheckTableEmpty = errors.Normalize("check table empty error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckTableEmpty")) - ErrCheckCSVHeader = errors.Normalize("check csv header error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckCSVHeader")) - ErrCheckDataSource = errors.Normalize("check data source error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckDataSource")) - ErrCheckCDCPiTR = errors.Normalize("check TiCDC/PiTR task error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckCDCPiTR")) + ErrSystemRequirementNotMet = errors.Normalize("system requirement not met", errors.RFCCodeText("Lightning:PreCheck:ErrSystemRequirementNotMet")) + ErrCheckpointSchemaConflict = errors.Normalize("checkpoint schema conflict", errors.RFCCodeText("Lightning:PreCheck:ErrCheckpointSchemaConflict")) + ErrPreCheckFailed = errors.Normalize("tidb-lightning pre-check failed: %s", errors.RFCCodeText("Lightning:PreCheck:ErrPreCheckFailed")) + ErrCheckClusterRegion = errors.Normalize("check tikv cluster region error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckClusterRegion")) + ErrCheckLocalResource = errors.Normalize("check local storage resource error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckLocalResource")) + ErrCheckTableEmpty = errors.Normalize("check table empty error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckTableEmpty")) + ErrCheckCSVHeader = errors.Normalize("check csv header error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckCSVHeader")) + ErrCheckDataSource = errors.Normalize("check data source error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckDataSource")) + ErrCheckCDCPiTR = errors.Normalize("check TiCDC/PiTR task error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckCDCPiTR")) + ErrCheckPDTiDBFromSameCluster = errors.Normalize("check PD and TiDB in the same cluster error", errors.RFCCodeText("Lightning:PreCheck:ErrCheckPDTiDBSameCluster")) ErrOpenCheckpoint = errors.Normalize("open checkpoint error", errors.RFCCodeText("Lightning:Checkpoint:ErrOpenCheckpoint")) ErrReadCheckpoint = errors.Normalize("read checkpoint error", errors.RFCCodeText("Lightning:Checkpoint:ErrReadCheckpoint")) diff --git a/pkg/lightning/errormanager/errormanager.go b/pkg/lightning/errormanager/errormanager.go index 7c83d7e486a6a..10e68266d77fd 100644 --- a/pkg/lightning/errormanager/errormanager.go +++ b/pkg/lightning/errormanager/errormanager.go @@ -52,17 +52,18 @@ const ( CREATE SCHEMA IF NOT EXISTS %s; ` - syntaxErrorTableName = "syntax_error_v1" - typeErrorTableName = "type_error_v1" + syntaxErrorTableName = "syntax_error_v2" + typeErrorTableName = "type_error_v2" // ConflictErrorTableName is the table name for duplicate detection. - ConflictErrorTableName = "conflict_error_v3" + ConflictErrorTableName = "conflict_error_v4" // DupRecordTableName is the table name to record duplicate data that displayed to user. - DupRecordTableName = "conflict_records" + DupRecordTableName = "conflict_records_v2" // ConflictViewName is the view name for presenting the union information of ConflictErrorTable and DupRecordTable. ConflictViewName = "conflict_view" createSyntaxErrorTable = ` CREATE TABLE IF NOT EXISTS %s.` + syntaxErrorTableName + ` ( + id bigint PRIMARY KEY AUTO_INCREMENT, task_id bigint NOT NULL, create_time datetime(6) NOT NULL DEFAULT now(6), table_name varchar(261) NOT NULL, @@ -75,6 +76,7 @@ const ( createTypeErrorTable = ` CREATE TABLE IF NOT EXISTS %s.` + typeErrorTableName + ` ( + id bigint PRIMARY KEY AUTO_INCREMENT, task_id bigint NOT NULL, create_time datetime(6) NOT NULL DEFAULT now(6), table_name varchar(261) NOT NULL, @@ -87,12 +89,13 @@ const ( createConflictErrorTable = ` CREATE TABLE IF NOT EXISTS %s.` + ConflictErrorTableName + ` ( + id bigint PRIMARY KEY AUTO_INCREMENT, task_id bigint NOT NULL, create_time datetime(6) NOT NULL DEFAULT now(6), table_name varchar(261) NOT NULL, index_name varchar(128) NOT NULL, - key_data text NOT NULL COMMENT 'decoded from raw_key, human readable only, not for machine use', - row_data text NOT NULL COMMENT 'decoded from raw_row, human readable only, not for machine use', + key_data text COMMENT 'decoded from raw_key, human readable only, not for machine use', + row_data text COMMENT 'decoded from raw_row, human readable only, not for machine use', raw_key mediumblob NOT NULL COMMENT 'the conflicted key', raw_value mediumblob NOT NULL COMMENT 'the value of the conflicted key', raw_handle mediumblob NOT NULL COMMENT 'the data handle derived from the conflicted key or value', @@ -107,6 +110,7 @@ const ( createDupRecordTableName = ` CREATE TABLE IF NOT EXISTS %s.` + DupRecordTableName + ` ( + id bigint PRIMARY KEY AUTO_INCREMENT, task_id bigint NOT NULL, create_time datetime(6) NOT NULL DEFAULT now(6), table_name varchar(261) NOT NULL, @@ -166,17 +170,17 @@ const ( sqlValuesConflictErrorIndex = "(?,?,?,?,?,?,?,?,?,?)" selectIndexConflictKeysReplace = ` - SELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle + SELECT id, raw_key, index_name, raw_value, raw_handle FROM %s.` + ConflictErrorTableName + ` - WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? - ORDER BY _tidb_rowid LIMIT ?; + WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? + ORDER BY id LIMIT ?; ` selectDataConflictKeysReplace = ` - SELECT _tidb_rowid, raw_key, raw_value + SELECT id, raw_key, raw_value FROM %s.` + ConflictErrorTableName + ` - WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? - ORDER BY _tidb_rowid LIMIT ?; + WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? + ORDER BY id LIMIT ?; ` deleteNullDataRow = ` @@ -1103,10 +1107,10 @@ func (em *ErrorManager) Output() string { t := table.NewWriter() t.AppendHeader(table.Row{"#", "Error Type", "Error Count", "Error Data Table"}) t.SetColumnConfigs([]table.ColumnConfig{ - {Name: "#", WidthMax: 6}, - {Name: "Error Type", WidthMax: 20}, - {Name: "Error Count", WidthMax: 12}, - {Name: "Error Data Table", WidthMax: 42}, + {Name: "#"}, + {Name: "Error Type"}, + {Name: "Error Count"}, + {Name: "Error Data Table"}, }) t.SetRowPainter(func(table.Row) text.Colors { return text.Colors{text.FgRed} diff --git a/pkg/lightning/errormanager/errormanager_test.go b/pkg/lightning/errormanager/errormanager_test.go index dfc41f3eb290b..7b02b2772a77e 100644 --- a/pkg/lightning/errormanager/errormanager_test.go +++ b/pkg/lightning/errormanager/errormanager_test.go @@ -66,7 +66,7 @@ func TestInit(t *testing.T) { em.conflictV1Enabled = true mock.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_errors`;"). WillReturnResult(sqlmock.NewResult(1, 1)) - mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.conflict_error_v3.*"). + mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(2, 1)) mock.ExpectExec("CREATE OR REPLACE VIEW `lightning_errors`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(3, 1)) @@ -78,11 +78,11 @@ func TestInit(t *testing.T) { em.remainingError.Type.Store(1) mock.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_errors`.*"). WillReturnResult(sqlmock.NewResult(5, 1)) - mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.type_error_v1.*"). + mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.type_error_v2.*"). WillReturnResult(sqlmock.NewResult(6, 1)) - mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.conflict_error_v3.*"). + mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(7, 1)) - mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.conflict_records.*"). + mock.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_errors`\\.conflict_records_v2.*"). WillReturnResult(sqlmock.NewResult(7, 1)) mock.ExpectExec("CREATE OR REPLACE VIEW `lightning_errors`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(7, 1)) @@ -120,7 +120,7 @@ type mockRows struct { } func (r *mockRows) Columns() []string { - return []string{"_tidb_rowid", "raw_handle", "raw_row"} + return []string{"id", "raw_handle", "raw_row"} } func (r *mockRows) Close() error { return nil } @@ -129,7 +129,7 @@ func (r *mockRows) Next(dest []driver.Value) error { if r.start >= r.end { return io.EOF } - dest[0] = r.start // _tidb_rowid + dest[0] = r.start // id dest[1] = []byte{} // raw_handle dest[2] = []byte{} // raw_row r.start++ @@ -137,7 +137,7 @@ func (r *mockRows) Next(dest []driver.Value) error { } func (c mockConn) QueryContext(_ context.Context, query string, args []driver.NamedValue) (driver.Rows, error) { - expectedQuery := "SELECT _tidb_rowid, raw_handle, raw_row.*" + expectedQuery := "SELECT id, raw_handle, raw_row.*" if err := sqlmock.QueryMatcherRegexp.Match(expectedQuery, query); err != nil { return &mockRows{}, nil } @@ -218,7 +218,7 @@ func TestReplaceConflictOneKey(t *testing.T) { State: model.StatePublic, } - tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(table.SepAutoInc(), 0), table) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(table.SepAutoInc()), table) require.NoError(t, err) sessionOpts := encode.SessionOptions{ @@ -288,22 +288,22 @@ func TestReplaceConflictOneKey(t *testing.T) { mockDB.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_task_info`"). WillReturnResult(sqlmock.NewResult(1, 1)) - mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(2, 1)) mockDB.ExpectExec("CREATE OR REPLACE VIEW `lightning_task_info`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(3, 1)) - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"})) - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"}). AddRow(1, data1RowKey, data1RowValue). AddRow(2, data1RowKey, data2RowValue)) for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"})) } mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 0)) mockDB.ExpectCommit() @@ -407,7 +407,7 @@ func TestReplaceConflictOneUniqueKey(t *testing.T) { State: model.StatePublic, } - tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(table.SepAutoInc(), 0), table) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(table.SepAutoInc()), table) require.NoError(t, err) sessionOpts := encode.SessionOptions{ @@ -486,40 +486,40 @@ func TestReplaceConflictOneUniqueKey(t *testing.T) { mockDB.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_task_info`"). WillReturnResult(sqlmock.NewResult(1, 1)) - mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(2, 1)) mockDB.ExpectExec("CREATE OR REPLACE VIEW `lightning_task_info`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(3, 1)) - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"}). AddRow(1, data1IndexKey, "uni_b", data1IndexValue, data1RowKey). AddRow(2, data1IndexKey, "uni_b", data2IndexValue, data2RowKey). AddRow(3, data3IndexKey, "uni_b", data3IndexValue, data3RowKey). AddRow(4, data3IndexKey, "uni_b", data4IndexValue, data4RowKey)) mockDB.ExpectBegin() - mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v4.*"). WithArgs(0, "test", nil, nil, data2RowKey, data2RowValue, 2, 0, "test", nil, nil, data4RowKey, data4RowValue, 2). WillReturnResult(driver.ResultNoRows) mockDB.ExpectCommit() for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"})) } - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"}). AddRow(1, data1RowKey, data1RowValue). AddRow(2, data1RowKey, data3RowValue)) for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"})) } mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 2)) mockDB.ExpectCommit() mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 0)) mockDB.ExpectCommit() @@ -641,7 +641,7 @@ func TestErrorMgrErrorOutput(t *testing.T) { "+---+-------------+-------------+--------------------------------+\n" + "| # | ERROR TYPE | ERROR COUNT | ERROR DATA TABLE |\n" + "+---+-------------+-------------+--------------------------------+\n" + - "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 1 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v1` \x1b[0m|\n" + + "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 1 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v2` \x1b[0m|\n" + "+---+-------------+-------------+--------------------------------+\n" require.Equal(t, expected, output) @@ -654,8 +654,8 @@ func TestErrorMgrErrorOutput(t *testing.T) { "+---+-------------+-------------+--------------------------------+\n" + "| # | ERROR TYPE | ERROR COUNT | ERROR DATA TABLE |\n" + "+---+-------------+-------------+--------------------------------+\n" + - "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 90 \x1b[0m|\x1b[31m `error_info`.`type_error_v1` \x1b[0m|\n" + - "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 10 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v1` \x1b[0m|\n" + + "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 90 \x1b[0m|\x1b[31m `error_info`.`type_error_v2` \x1b[0m|\n" + + "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 10 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v2` \x1b[0m|\n" + "+---+-------------+-------------+--------------------------------+\n" require.Equal(t, expected, output) @@ -671,8 +671,8 @@ func TestErrorMgrErrorOutput(t *testing.T) { "+---+---------------------+-------------+--------------------------------+\n" + "| # | ERROR TYPE | ERROR COUNT | ERROR DATA TABLE |\n" + "+---+---------------------+-------------+--------------------------------+\n" + - "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`type_error_v1` \x1b[0m|\n" + - "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v1` \x1b[0m|\n" + + "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`type_error_v2` \x1b[0m|\n" + + "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v2` \x1b[0m|\n" + "|\x1b[31m 3 \x1b[0m|\x1b[31m Charset Error \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m \x1b[0m|\n" + "|\x1b[31m 4 \x1b[0m|\x1b[31m Unique Key Conflict \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`conflict_view` \x1b[0m|\n" + "+---+---------------------+-------------+--------------------------------+\n" @@ -686,8 +686,8 @@ func TestErrorMgrErrorOutput(t *testing.T) { "+---+---------------------+-------------+--------------------------------+\n" + "| # | ERROR TYPE | ERROR COUNT | ERROR DATA TABLE |\n" + "+---+---------------------+-------------+--------------------------------+\n" + - "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`type_error_v1` \x1b[0m|\n" + - "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v1` \x1b[0m|\n" + + "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`type_error_v2` \x1b[0m|\n" + + "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v2` \x1b[0m|\n" + "|\x1b[31m 3 \x1b[0m|\x1b[31m Charset Error \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m \x1b[0m|\n" + "|\x1b[31m 4 \x1b[0m|\x1b[31m Unique Key Conflict \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`conflict_view` \x1b[0m|\n" + "+---+---------------------+-------------+--------------------------------+\n" @@ -701,10 +701,24 @@ func TestErrorMgrErrorOutput(t *testing.T) { "+---+---------------------+-------------+--------------------------------+\n" + "| # | ERROR TYPE | ERROR COUNT | ERROR DATA TABLE |\n" + "+---+---------------------+-------------+--------------------------------+\n" + - "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`type_error_v1` \x1b[0m|\n" + - "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v1` \x1b[0m|\n" + + "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`type_error_v2` \x1b[0m|\n" + + "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`syntax_error_v2` \x1b[0m|\n" + "|\x1b[31m 3 \x1b[0m|\x1b[31m Charset Error \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m \x1b[0m|\n" + "|\x1b[31m 4 \x1b[0m|\x1b[31m Unique Key Conflict \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `error_info`.`conflict_view` \x1b[0m|\n" + "+---+---------------------+-------------+--------------------------------+\n" require.Equal(t, expected, output) + + em.schema = "long_long_long_long_long_long_long_long_dbname" + output = em.Output() + expected = "\n" + + "Import Data Error Summary: \n" + + "+---+---------------------+-------------+--------------------------------------------------------------------+\n" + + "| # | ERROR TYPE | ERROR COUNT | ERROR DATA TABLE |\n" + + "+---+---------------------+-------------+--------------------------------------------------------------------+\n" + + "|\x1b[31m 1 \x1b[0m|\x1b[31m Data Type \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `long_long_long_long_long_long_long_long_dbname`.`type_error_v2` \x1b[0m|\n" + + "|\x1b[31m 2 \x1b[0m|\x1b[31m Data Syntax \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `long_long_long_long_long_long_long_long_dbname`.`syntax_error_v2` \x1b[0m|\n" + + "|\x1b[31m 3 \x1b[0m|\x1b[31m Charset Error \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m \x1b[0m|\n" + + "|\x1b[31m 4 \x1b[0m|\x1b[31m Unique Key Conflict \x1b[0m|\x1b[31m 100 \x1b[0m|\x1b[31m `long_long_long_long_long_long_long_long_dbname`.`conflict_view` \x1b[0m|\n" + + "+---+---------------------+-------------+--------------------------------------------------------------------+\n" + require.Equal(t, expected, output) } diff --git a/pkg/lightning/errormanager/resolveconflict_test.go b/pkg/lightning/errormanager/resolveconflict_test.go index 2f504fe0de2d0..00dca3d9cfe1e 100644 --- a/pkg/lightning/errormanager/resolveconflict_test.go +++ b/pkg/lightning/errormanager/resolveconflict_test.go @@ -52,7 +52,7 @@ func TestReplaceConflictMultipleKeysNonclusteredPk(t *testing.T) { require.NoError(t, err) info.State = model.StatePublic require.False(t, info.PKIsHandle) - tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) require.False(t, tbl.Meta().HasClusteredIndex()) @@ -167,40 +167,40 @@ func TestReplaceConflictMultipleKeysNonclusteredPk(t *testing.T) { mockDB.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_task_info`"). WillReturnResult(sqlmock.NewResult(1, 1)) - mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(2, 1)) mockDB.ExpectExec("CREATE OR REPLACE VIEW `lightning_task_info`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(3, 1)) - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"}). AddRow(1, data2RowKey, "PRIMARY", data2RowValue, data1RowKey). AddRow(2, data2RowKey, "PRIMARY", data3NonclusteredValue, data2NonclusteredKey). AddRow(3, data6RowKey, "PRIMARY", data6RowValue, data5RowKey). AddRow(4, data6RowKey, "PRIMARY", data7NonclusteredValue, data6NonclusteredKey)) mockDB.ExpectBegin() - mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v4.*"). WithArgs(0, "a", nil, nil, data2NonclusteredKey, data2NonclusteredValue, 2, 0, "a", nil, nil, data6NonclusteredKey, data6NonclusteredValue, 2). WillReturnResult(driver.ResultNoRows) mockDB.ExpectCommit() for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"})) } - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"}). AddRow(1, data2NonclusteredKey, data2NonclusteredValue). AddRow(2, data6NonclusteredKey, data6NonclusteredValue)) for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"})) } mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 2)) mockDB.ExpectCommit() mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 0)) mockDB.ExpectCommit() @@ -273,7 +273,7 @@ func TestReplaceConflictOneKeyNonclusteredPk(t *testing.T) { require.NoError(t, err) info.State = model.StatePublic require.False(t, info.PKIsHandle) - tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) require.False(t, tbl.Meta().HasClusteredIndex()) @@ -352,36 +352,36 @@ func TestReplaceConflictOneKeyNonclusteredPk(t *testing.T) { mockDB.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_task_info`"). WillReturnResult(sqlmock.NewResult(1, 1)) - mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(2, 1)) mockDB.ExpectExec("CREATE OR REPLACE VIEW `lightning_task_info`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(3, 1)) - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"}). AddRow(1, data3IndexKey, "PRIMARY", data3IndexValue, data3RowKey). AddRow(2, data3IndexKey, "PRIMARY", data4IndexValue, data4RowKey)) mockDB.ExpectBegin() - mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v4.*"). WithArgs(0, "a", nil, nil, data4RowKey, data4RowValue, 2). WillReturnResult(driver.ResultNoRows) mockDB.ExpectCommit() for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"})) } - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"}). AddRow(1, data4RowKey, data4RowValue)) for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"})) } mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 1)) mockDB.ExpectCommit() mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 0)) mockDB.ExpectCommit() @@ -441,7 +441,7 @@ func TestReplaceConflictOneUniqueKeyNonclusteredPk(t *testing.T) { require.NoError(t, err) info.State = model.StatePublic require.False(t, info.PKIsHandle) - tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) require.False(t, tbl.Meta().HasClusteredIndex()) @@ -534,12 +534,12 @@ func TestReplaceConflictOneUniqueKeyNonclusteredPk(t *testing.T) { mockDB.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_task_info`"). WillReturnResult(sqlmock.NewResult(1, 1)) - mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(2, 1)) mockDB.ExpectExec("CREATE OR REPLACE VIEW `lightning_task_info`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(3, 1)) - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"}). AddRow(1, data4NonclusteredKey, "uni_b", data4NonclusteredValue, data4RowKey). AddRow(2, data4NonclusteredKey, "uni_b", data5NonclusteredValue, data5RowKey). AddRow(3, data1NonclusteredKey, "uni_b", data1NonclusteredValue, data1RowKey). @@ -547,31 +547,31 @@ func TestReplaceConflictOneUniqueKeyNonclusteredPk(t *testing.T) { AddRow(5, data3IndexKey, "PRIMARY", data3IndexValue, data3RowKey). AddRow(6, data3IndexKey, "PRIMARY", data4NonclusteredValue, data4RowKey)) mockDB.ExpectBegin() - mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v4.*"). WithArgs(0, "a", nil, nil, data5RowKey, data5RowValue, 2, 0, "a", nil, nil, data2RowKey, data2RowValue, 2, 0, "a", nil, nil, data4RowKey, data4RowValue, 2). WillReturnResult(driver.ResultNoRows) mockDB.ExpectCommit() for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"})) } - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"}). AddRow(1, data5RowKey, data5RowValue). AddRow(2, data2RowKey, data2RowValue). AddRow(3, data4RowKey, data4RowValue)) for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"})) } mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 3)) mockDB.ExpectCommit() mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 0)) mockDB.ExpectCommit() @@ -647,7 +647,7 @@ func TestReplaceConflictOneUniqueKeyNonclusteredVarcharPk(t *testing.T) { require.NoError(t, err) info.State = model.StatePublic require.False(t, info.PKIsHandle) - tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc(), 0), info) + tbl, err := tables.TableFromMeta(tidbkv.NewPanickingAllocators(info.SepAutoInc()), info) require.NoError(t, err) require.False(t, tbl.Meta().HasClusteredIndex()) @@ -741,12 +741,12 @@ func TestReplaceConflictOneUniqueKeyNonclusteredVarcharPk(t *testing.T) { mockDB.ExpectExec("CREATE SCHEMA IF NOT EXISTS `lightning_task_info`"). WillReturnResult(sqlmock.NewResult(1, 1)) - mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("CREATE TABLE IF NOT EXISTS `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(2, 1)) mockDB.ExpectExec("CREATE OR REPLACE VIEW `lightning_task_info`\\.conflict_view.*"). WillReturnResult(sqlmock.NewResult(3, 1)) - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"}). AddRow(1, data4NonclusteredKey, "uni_b", data4NonclusteredValue, data4RowKey). AddRow(2, data4NonclusteredKey, "uni_b", data5NonclusteredValue, data5RowKey). AddRow(3, data1NonclusteredKey, "uni_b", data1NonclusteredValue, data1RowKey). @@ -754,31 +754,31 @@ func TestReplaceConflictOneUniqueKeyNonclusteredVarcharPk(t *testing.T) { AddRow(5, data3IndexKey, "PRIMARY", data3IndexValue, data3RowKey). AddRow(6, data3IndexKey, "PRIMARY", data4IndexValue, data4RowKey)) mockDB.ExpectBegin() - mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("INSERT INTO `lightning_task_info`\\.conflict_error_v4.*"). WithArgs(0, "a", nil, nil, data5RowKey, data5RowValue, 2, 0, "a", nil, nil, data2RowKey, data2RowValue, 2, 0, "a", nil, nil, data4RowKey, data4RowValue, 2). WillReturnResult(driver.ResultNoRows) mockDB.ExpectCommit() for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type = 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "index_name", "raw_value", "raw_handle"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, index_name, raw_value, raw_handle FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type = 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "index_name", "raw_value", "raw_handle"})) } - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"}). + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"}). AddRow(1, data5RowKey, data5RowValue). AddRow(2, data2RowKey, data2RowValue). AddRow(3, data4RowKey, data4RowValue)) for i := 0; i < 2; i++ { - mockDB.ExpectQuery("\\QSELECT _tidb_rowid, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v3 WHERE table_name = ? AND kv_type <> 0 AND _tidb_rowid >= ? and _tidb_rowid < ? ORDER BY _tidb_rowid LIMIT ?\\E"). - WillReturnRows(sqlmock.NewRows([]string{"_tidb_rowid", "raw_key", "raw_value"})) + mockDB.ExpectQuery("\\QSELECT id, raw_key, raw_value FROM `lightning_task_info`.conflict_error_v4 WHERE table_name = ? AND kv_type <> 0 AND id >= ? and id < ? ORDER BY id LIMIT ?\\E"). + WillReturnRows(sqlmock.NewRows([]string{"id", "raw_key", "raw_value"})) } mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 3)) mockDB.ExpectCommit() mockDB.ExpectBegin() - mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v3.*"). + mockDB.ExpectExec("DELETE FROM `lightning_task_info`\\.conflict_error_v4.*"). WillReturnResult(sqlmock.NewResult(0, 0)) mockDB.ExpectCommit() diff --git a/pkg/lightning/log/log.go b/pkg/lightning/log/log.go index ab72aacc0be94..fc41e480ee356 100644 --- a/pkg/lightning/log/log.go +++ b/pkg/lightning/log/log.go @@ -280,6 +280,25 @@ func (task *Task) End(level zapcore.Level, err error, extraFields ...zap.Field) return elapsed } +// End2 is similar to End except we don't check cancel, and we print full error. +func (task *Task) End2(level zapcore.Level, err error, extraFields ...zap.Field) time.Duration { + elapsed := time.Since(task.since) + var verb string + errField := zap.Skip() + adjustedLevel := task.level + verb = " completed" + if err != nil { + adjustedLevel = level + verb = " failed" + extraFields = nil + errField = zap.Error(err) + } + if ce := task.WithOptions(zap.AddCallerSkip(1)).Check(adjustedLevel, task.name+verb); ce != nil { + ce.Write(append(extraFields, zap.Duration("takeTime", elapsed), errField)...) + } + return elapsed +} + type ctxKeyType struct{} var ctxKey ctxKeyType diff --git a/pkg/lightning/mydump/loader.go b/pkg/lightning/mydump/loader.go index d2fc407ddcdeb..ff6ed08d7e74f 100644 --- a/pkg/lightning/mydump/loader.go +++ b/pkg/lightning/mydump/loader.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/lightning/common" "github.com/pingcap/tidb/pkg/lightning/config" "github.com/pingcap/tidb/pkg/lightning/log" + "github.com/pingcap/tidb/pkg/lightning/metric" regexprrouter "github.com/pingcap/tidb/pkg/util/regexpr-router" filter "github.com/pingcap/tidb/pkg/util/table-filter" "go.uber.org/zap" @@ -244,6 +245,8 @@ type mdLoaderSetup struct { dbIndexMap map[string]int tableIndexMap map[filter.Table]int setupCfg *MDLoaderSetupConfig + + sampledParquetRowSizes map[string]float64 } // NewLoader constructs a MyDumper loader that scanns the data source and constructs a set of metadatas. @@ -320,6 +323,8 @@ func NewLoaderWithStore(ctx context.Context, cfg LoaderConfig, dbIndexMap: make(map[string]int), tableIndexMap: make(map[filter.Table]int), setupCfg: mdLoaderSetupCfg, + + sampledParquetRowSizes: make(map[string]float64), } if err := setup.setup(ctx); err != nil { @@ -525,19 +530,37 @@ func (s *mdLoaderSetup) constructFileInfo(ctx context.Context, path string, size compressRatio, err2 := SampleFileCompressRatio(ctx, info.FileMeta, s.loader.GetStore()) if err2 != nil { logger.Error("fail to calculate data file compress ratio", zap.String("category", "loader"), - zap.String("schema", res.Schema), zap.String("table", res.Name), zap.Stringer("type", res.Type)) + zap.String("schema", res.Schema), zap.String("table", res.Name), + zap.Stringer("type", res.Type), zap.Error(err2)) } else { info.FileMeta.RealSize = int64(compressRatio * float64(info.FileMeta.FileSize)) } } s.tableDatas = append(s.tableDatas, info) case SourceTypeParquet: - parquestDataSize, err2 := SampleParquetDataSize(ctx, info.FileMeta, s.loader.GetStore()) - if err2 != nil { - logger.Error("fail to sample parquet data size", zap.String("category", "loader"), - zap.String("schema", res.Schema), zap.String("table", res.Name), zap.Stringer("type", res.Type), zap.Error(err2)) - } else { - info.FileMeta.RealSize = parquestDataSize + tableName := info.TableName.String() + if s.sampledParquetRowSizes[tableName] == 0 { + s.sampledParquetRowSizes[tableName], err = SampleParquetRowSize(ctx, info.FileMeta, s.loader.GetStore()) + if err != nil { + logger.Error("fail to sample parquet row size", zap.String("category", "loader"), + zap.String("schema", res.Schema), zap.String("table", res.Name), + zap.Stringer("type", res.Type), zap.Error(err)) + return errors.Trace(err) + } + } + if s.sampledParquetRowSizes[tableName] != 0 { + totalRowCount, err := ReadParquetFileRowCountByFile(ctx, s.loader.GetStore(), info.FileMeta) + if err != nil { + logger.Error("fail to get file total row count", zap.String("category", "loader"), + zap.String("schema", res.Schema), zap.String("table", res.Name), + zap.Stringer("type", res.Type), zap.Error(err)) + return errors.Trace(err) + } + info.FileMeta.RealSize = int64(float64(totalRowCount) * s.sampledParquetRowSizes[tableName]) + info.FileMeta.Rows = totalRowCount + if m, ok := metric.FromContext(ctx); ok { + m.RowsCounter.WithLabelValues(metric.StateTotalRestore, tableName).Add(float64(totalRowCount)) + } } s.tableDatas = append(s.tableDatas, info) } @@ -823,8 +846,8 @@ func SampleFileCompressRatio(ctx context.Context, fileMeta SourceFileMeta, store return float64(tot) / float64(pos), nil } -// SampleParquetDataSize samples the data size of the parquet file. -func SampleParquetDataSize(ctx context.Context, fileMeta SourceFileMeta, store storage.ExternalStorage) (int64, error) { +// SampleParquetRowSize samples row size of the parquet file. +func SampleParquetRowSize(ctx context.Context, fileMeta SourceFileMeta, store storage.ExternalStorage) (float64, error) { totalRowCount, err := ReadParquetFileRowCountByFile(ctx, store, fileMeta) if totalRowCount == 0 || err != nil { return 0, err @@ -863,6 +886,5 @@ func SampleParquetDataSize(ctx context.Context, fileMeta SourceFileMeta, store s break } } - size := int64(float64(totalRowCount) / float64(rowCount) * float64(rowSize)) - return size, nil + return float64(rowSize) / float64(rowCount), nil } diff --git a/pkg/lightning/mydump/loader_test.go b/pkg/lightning/mydump/loader_test.go index 0734371b85a4e..928b842725309 100644 --- a/pkg/lightning/mydump/loader_test.go +++ b/pkg/lightning/mydump/loader_test.go @@ -1159,12 +1159,16 @@ func testSampleParquetDataSize(t *testing.T, count int) { err = store.WriteFile(ctx, fileName, bf.Bytes()) require.NoError(t, err) - size, err := md.SampleParquetDataSize(ctx, md.SourceFileMeta{ + rowSize, err := md.SampleParquetRowSize(ctx, md.SourceFileMeta{ Path: fileName, }, store) require.NoError(t, err) + rowCount, err := md.ReadParquetFileRowCountByFile(ctx, store, md.SourceFileMeta{ + Path: fileName, + }) + require.NoError(t, err) // expected error within 10%, so delta = totalRowSize / 10 - require.InDelta(t, totalRowSize, size, float64(totalRowSize)/10) + require.InDelta(t, totalRowSize, int64(rowSize*float64(rowCount)), float64(totalRowSize)/10) } func TestSampleParquetDataSize(t *testing.T) { diff --git a/pkg/lightning/mydump/reader.go b/pkg/lightning/mydump/reader.go index b5e21583105e3..c70328c6d8d9f 100644 --- a/pkg/lightning/mydump/reader.go +++ b/pkg/lightning/mydump/reader.go @@ -189,7 +189,8 @@ func (pr PooledReader) Read(p []byte) (n int, err error) { // Seek implements io.Seeker func (pr PooledReader) Seek(offset int64, whence int) (int64, error) { - if pr.ioWorkers != nil { + // Seek(0, io.SeekCurrent) is used to get the current offset, which will not cause any Disk I/O. + if pr.ioWorkers != nil && !(offset == 0 && whence == io.SeekCurrent) { w := pr.ioWorkers.Apply() defer pr.ioWorkers.Recycle(w) } diff --git a/pkg/lightning/tikv/BUILD.bazel b/pkg/lightning/tikv/BUILD.bazel index cae38c320e978..0832faef7684d 100644 --- a/pkg/lightning/tikv/BUILD.bazel +++ b/pkg/lightning/tikv/BUILD.bazel @@ -19,12 +19,12 @@ go_library( "//pkg/meta/model", "//pkg/util/codec", "//pkg/util/intest", + "@com_github_cockroachdb_pebble//:pebble", + "@com_github_cockroachdb_pebble//bloom", + "@com_github_cockroachdb_pebble//objstorage/objstorageprovider", + "@com_github_cockroachdb_pebble//sstable", + "@com_github_cockroachdb_pebble//vfs", "@com_github_coreos_go_semver//semver", - "@com_github_lance6716_pebble//:pebble", - "@com_github_lance6716_pebble//bloom", - "@com_github_lance6716_pebble//objstorage/objstorageprovider", - "@com_github_lance6716_pebble//sstable", - "@com_github_lance6716_pebble//vfs", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_kvproto//pkg/debugpb", "@com_github_pingcap_kvproto//pkg/import_sstpb", @@ -47,6 +47,7 @@ go_test( "local_sst_writer_test.go", "tikv_test.go", ], + data = glob(["sst-examples/**"]), embed = [":tikv"], flaky = True, shard_count = 7, @@ -56,7 +57,6 @@ go_test( "@com_github_cockroachdb_pebble//vfs", "@com_github_coreos_go_semver//semver", "@com_github_google_uuid//:uuid", - "@com_github_lance6716_pebble//sstable", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_kvproto//pkg/import_sstpb", "@com_github_pingcap_kvproto//pkg/kvrpcpb", diff --git a/pkg/lightning/tikv/local_sst_writer.go b/pkg/lightning/tikv/local_sst_writer.go index 73ee591ca17ca..adeb3f96c8424 100644 --- a/pkg/lightning/tikv/local_sst_writer.go +++ b/pkg/lightning/tikv/local_sst_writer.go @@ -17,11 +17,11 @@ package tikv import ( "encoding/binary" - rocks "github.com/lance6716/pebble" - rocksbloom "github.com/lance6716/pebble/bloom" - "github.com/lance6716/pebble/objstorage/objstorageprovider" - rockssst "github.com/lance6716/pebble/sstable" - "github.com/lance6716/pebble/vfs" + rocks "github.com/cockroachdb/pebble" + rocksbloom "github.com/cockroachdb/pebble/bloom" + "github.com/cockroachdb/pebble/objstorage/objstorageprovider" + rockssst "github.com/cockroachdb/pebble/sstable" + "github.com/cockroachdb/pebble/vfs" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/intest" @@ -38,7 +38,6 @@ type writeCFWriter struct { func newWriteCFWriter( sstPath string, ts uint64, - identity *rockssst.Identity, ) (*writeCFWriter, error) { f, err := vfs.Default.Create(sstPath) if err != nil { @@ -46,7 +45,8 @@ func newWriteCFWriter( } writable := objstorageprovider.NewFileWritable(f) writer := rockssst.NewWriter(writable, rockssst.WriterOptions{ - // TODO(lance6716): should read TiKV config to know compression algorithm. + // TODO(lance6716): should read TiKV config to know these values. + BlockSize: 32 * 1024, Compression: rocks.ZstdCompression, // TODO(lance6716): should check the behaviour is the exactly same. FilterPolicy: rocksbloom.FilterPolicy(10), @@ -63,7 +63,7 @@ func newWriteCFWriter( return mockCollector{name: "BlobFileSizeCollector"} }, }, - }, identity) + }) return &writeCFWriter{sstWriter: writer, ts: ts}, nil } diff --git a/pkg/lightning/tikv/local_sst_writer_test.go b/pkg/lightning/tikv/local_sst_writer_test.go index 522d541e1cb4d..998d57a39fa38 100644 --- a/pkg/lightning/tikv/local_sst_writer_test.go +++ b/pkg/lightning/tikv/local_sst_writer_test.go @@ -16,15 +16,16 @@ package tikv import ( "context" - "encoding/json" - "strings" + "flag" + "fmt" + "slices" "testing" + "time" - "github.com/cockroachdb/pebble" - "github.com/cockroachdb/pebble/sstable" + rocks "github.com/cockroachdb/pebble" + rockssst "github.com/cockroachdb/pebble/sstable" "github.com/cockroachdb/pebble/vfs" "github.com/google/uuid" - rockssst "github.com/lance6716/pebble/sstable" "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/import_sstpb" "github.com/pingcap/kvproto/pkg/kvrpcpb" @@ -34,12 +35,39 @@ import ( "google.golang.org/grpc/credentials/insecure" ) -var ( - sortedKVs = [][2][]byte{ - {[]byte("a"), []byte("1")}, +type testCase struct { + sortedKVs [][2][]byte + ts uint64 + + expectedFilePath string +} + +var testCases []*testCase + +func init() { + testCases = make([]*testCase, 0, 2) + + testCases = append(testCases, &testCase{ + sortedKVs: [][2][]byte{ + {[]byte("a"), []byte("1")}, + }, + ts: 1, + expectedFilePath: "sst-examples/0.sst", + }) + + moreKeys := make([][2][]byte, 10000) + for i := range moreKeys { + moreKeys[i] = [2][]byte{ + []byte("key" + fmt.Sprintf("%09d", i)), + []byte("1"), + } } - ts uint64 = 1 -) + testCases = append(testCases, &testCase{ + sortedKVs: moreKeys, + ts: 404411537129996288, + expectedFilePath: "sst-examples/1.sst", + }) +} // write2ImportService4Test writes these sorted key-value pairs to the TiKV // cluster. SST files are generated by TiKV and saved in import directory if no @@ -143,28 +171,45 @@ func write2ImportService4Test( return resp.Metas, nil } -func TestGRPCWriteToTiKV(t *testing.T) { - t.Skip(`This is a manual test. You can use tiup playground and run this test. -After the test is finished, find the SST files in the import directory of the TiKV node.`) +var tikvWriteTest = flag.Bool("tikv-write-test", false, "run TestIntegrationTest") + +func TestIntegrationTest(t *testing.T) { + if !*tikvWriteTest { + t.Skip(`This is a manual test. You can use tiup playground and run this test. After the test is finished, find the SST files in the import directory of the TiKV node.`) + } ctx := context.Background() pdAddrs := []string{"127.0.0.1:2379"} + sortedKVs := make([][2][]byte, 1_000_000) + for i := range sortedKVs { + sortedKVs[i] = [2][]byte{ + []byte("key" + fmt.Sprintf("%09d", i)), + []byte("1"), + } + } + ts := uint64(404411537129996288) + + sstPath := "/tmp/go-write-cf.sst" + now := time.Now() + pebbleWriteSST(t, sstPath, sortedKVs, ts) + t.Logf("write to SST takes %v", time.Since(now)) + now = time.Now() metas, err := write2ImportService4Test(ctx, pdAddrs, sortedKVs, ts) + t.Logf("write to TiKV takes %v", time.Since(now)) require.NoError(t, err) for _, meta := range metas { t.Logf("meta UUID: %v", uuid.UUID(meta.Uuid).String()) } } -func TestPebbleWriteSST(t *testing.T) { - sstPath := "/tmp/test-write.sst" - writer, err := newWriteCFWriter(sstPath, ts, &rockssst.Identity{ - DB: "SST Writer", - Host: "lance6716-nuc10i7fnh", - Session: "DS38NDUWK5HLG8SSL5M7", - OriginalFileNumber: 1, - }) +func pebbleWriteSST( + t *testing.T, + path string, + sortedKVs [][2][]byte, + ts uint64, +) { + writer, err := newWriteCFWriter(path, ts) require.NoError(t, err) for _, kv := range sortedKVs { @@ -174,6 +219,22 @@ func TestPebbleWriteSST(t *testing.T) { err = writer.close() require.NoError(t, err) +} + +func TestPebbleWriteSST(t *testing.T) { + t.Skip("skip because need patched pebble") + for i, c := range testCases { + t.Logf("start test case %d", i) + testPebbleWriteSST(t, c) + } +} + +func testPebbleWriteSST( + t *testing.T, + c *testCase, +) { + sstPath := "/tmp/test-write.sst" + pebbleWriteSST(t, sstPath, c.sortedKVs, c.ts) f, err := vfs.Default.Open(sstPath) require.NoError(t, err) @@ -183,45 +244,100 @@ func TestPebbleWriteSST(t *testing.T) { require.NoError(t, err) defer reader.Close() - layout, err := reader.Layout() + goSSTKVs, goSSTProperties := getData2Compare(t, reader) + require.Len(t, goSSTKVs, len(c.sortedKVs)) + + f2, err := vfs.Default.Open(c.expectedFilePath) require.NoError(t, err) + readable2, err := rockssst.NewSimpleReadable(f2) + require.NoError(t, err) + reader2, err := rockssst.NewReader(readable2, rockssst.ReaderOptions{}) + require.NoError(t, err) + defer reader2.Close() + + tikvSSTKVs, tikvSSTProperties := getData2Compare(t, reader2) + + require.Equal(t, len(tikvSSTKVs), len(goSSTKVs)) + for i, kv := range goSSTKVs { + require.Equal(t, kv[0], tikvSSTKVs[i][0], "key mismatch. index: %d", i) + require.Equal(t, kv[1], tikvSSTKVs[i][1], "value mismatch. index: %d", i) + } + require.Equal(t, tikvSSTProperties, goSSTProperties) +} - infos := layout.BlockInfos(reader) - expected := ` -[ - {"Offset":0,"Length":42,"Name":"data","Compression":0,"Checksum":2258416982}, - {"Offset":121,"Length":39,"Name":"index","Compression":0,"Checksum":3727189474}, - {"Offset":165,"Length":1253,"Name":"properties","Compression":0,"Checksum":561778464}, - {"Offset":1423,"Length":79,"Name":"meta-index","Compression":0,"Checksum":955781521}, - {"Offset":1507,"Length":53,"Name":"footer","Compression":0,"Checksum":0} -]` - var expectedInfos []*rockssst.BlockInfo - err = json.Unmarshal([]byte(expected), &expectedInfos) +func getData2Compare( + t *testing.T, + reader *rockssst.Reader, +) (kvs [][2][]byte, properties *rockssst.Properties) { + iter, err := reader.NewIter(nil, nil) require.NoError(t, err) - require.Equal(t, expectedInfos, infos) + defer iter.Close() + + realKVs := make([][2][]byte, 0, 10240) + + k, v := iter.First() + require.NotNil(t, k) + getKey := func(k *rocks.InternalKey) []byte { + return slices.Clone(k.UserKey) + } + getValue := func(v rocks.LazyValue) []byte { + realV, callerOwned, err2 := v.Value(nil) + require.NoError(t, err2) + if !callerOwned { + realV = slices.Clone(realV) + } + return realV + } + realKVs = append(realKVs, [2][]byte{getKey(k), getValue(v)}) + for { + k, v = iter.Next() + if k == nil { + break + } + realKVs = append(realKVs, [2][]byte{getKey(k), getValue(v)}) + } + + //p := reader.Properties.Clone() + // + //// delete the identity properties + //delete(p.UserProperties, "rocksdb.creating.db.identity") + //delete(p.UserProperties, "rocksdb.creating.host.identity") + //delete(p.UserProperties, "rocksdb.creating.session.identity") + //delete(p.UserProperties, "rocksdb.original.file.number") + // + //// delete some mismatch properties because compress layer has different behaviour + //p.DataSize = 0 + //p.NumDataBlocks = 0 + //p.IndexSize = 0 + // + //// TODO(lance6716): check why it's different, can we tune bloomfilter to get the + //// same behaviour? + //p.FilterSize = 0 + //delete(p.UserProperties, "rocksdb.num.filter_entries") + // + //// TODO(lance6716): in integration tests we need to check + //// rocksdb.tail.start.offset equals to rocksdb.data.size + //delete(p.UserProperties, "rocksdb.tail.start.offset") + //p.Loaded = nil + + return realKVs, nil } func TestDebugReadSST(t *testing.T) { t.Skip("this is a manual test") - sstPath := "/tmp/test-write.sst" + sstPath := "/tmp/test.sst" t.Logf("read sst: %s", sstPath) f, err := vfs.Default.Open(sstPath) require.NoError(t, err) - readable, err := sstable.NewSimpleReadable(f) + readable, err := rockssst.NewSimpleReadable(f) require.NoError(t, err) - reader, err := sstable.NewReader(readable, sstable.ReaderOptions{}) + reader, err := rockssst.NewReader(readable, rockssst.ReaderOptions{}) require.NoError(t, err) defer reader.Close() - layout, err := reader.Layout() - require.NoError(t, err) - - content := &strings.Builder{} - layout.Describe(content, true, reader, nil) - - t.Logf("layout:\n %s", content.String()) t.Logf("properties:\n %s", reader.Properties.String()) + t.SkipNow() iter, err := reader.NewIter(nil, nil) require.NoError(t, err) @@ -231,7 +347,7 @@ func TestDebugReadSST(t *testing.T) { if k == nil { return } - getValue := func(v pebble.LazyValue) []byte { + getValue := func(v rocks.LazyValue) []byte { realV, _, err2 := v.Value(nil) require.NoError(t, err2) return realV diff --git a/pkg/lightning/tikv/prop_collector.go b/pkg/lightning/tikv/prop_collector.go index bed4be968a11b..38b68486b0f6f 100644 --- a/pkg/lightning/tikv/prop_collector.go +++ b/pkg/lightning/tikv/prop_collector.go @@ -19,7 +19,7 @@ import ( "encoding/binary" "slices" - rockssst "github.com/lance6716/pebble/sstable" + rockssst "github.com/cockroachdb/pebble/sstable" ) type mockCollector struct { diff --git a/pkg/lightning/tikv/sst-examples/0.sst b/pkg/lightning/tikv/sst-examples/0.sst new file mode 100644 index 0000000000000..0144af0a39744 Binary files /dev/null and b/pkg/lightning/tikv/sst-examples/0.sst differ diff --git a/pkg/lightning/tikv/sst-examples/1.sst b/pkg/lightning/tikv/sst-examples/1.sst new file mode 100644 index 0000000000000..5e53390a5c06d Binary files /dev/null and b/pkg/lightning/tikv/sst-examples/1.sst differ diff --git a/pkg/meta/autoid/autoid.go b/pkg/meta/autoid/autoid.go index 1f77fad8380b5..7ad7379f6e265 100644 --- a/pkg/meta/autoid/autoid.go +++ b/pkg/meta/autoid/autoid.go @@ -21,6 +21,7 @@ import ( "math" "strconv" "sync" + "sync/atomic" "time" "github.com/pingcap/errors" @@ -109,9 +110,6 @@ func AutoRandomRangeBitsNormalize(rangeBits int) (ret uint64, err error) { return uint64(rangeBits), nil } -// Test needs to change it, so it's a variable. -var step = int64(30000) - // AllocatorType is the type of allocator for generating auto-id. Different type of allocators use different key-value pairs. type AllocatorType uint8 @@ -274,14 +272,18 @@ type allocator struct { sequence *model.SequenceInfo } -// GetStep is only used by tests +// Test needs to change it, so it's a variable. +// Don't use it directly, use the GetStep/SetStep function. +var defaultStep = int64(30000) + +// GetStep gets the defautStep value. func GetStep() int64 { - return step + return atomic.LoadInt64(&defaultStep) } // SetStep is only used by tests func SetStep(s int64) { - step = s + atomic.StoreInt64(&defaultStep, s) } // Base implements autoid.Allocator Base interface. @@ -565,7 +567,7 @@ func NextStep(curStep int64, consumeDur time.Duration) int64 { }) failpoint.Inject("mockAutoIDChange", func(val failpoint.Value) { if val.(bool) { - failpoint.Return(step) + failpoint.Return(GetStep()) } }) @@ -627,7 +629,7 @@ func NewAllocator(r Requirement, dbID, tbID int64, isUnsigned bool, dbID: dbID, tbID: tbID, isUnsigned: isUnsigned, - step: step, + step: GetStep(), lastAllocTime: time.Now(), allocType: allocType, } @@ -646,7 +648,7 @@ func NewAllocator(r Requirement, dbID, tbID int64, isUnsigned bool, // Now that the autoid and rowid allocator are separated, the AUTO_ID_CACHE 1 setting should not make // the rowid allocator do not use cache. alloc.customStep = false - alloc.step = step + alloc.step = GetStep() } } @@ -677,11 +679,11 @@ func NewAllocatorsFromTblInfo(r Requirement, dbID int64, tblInfo *model.TableInf hasRowID := !tblInfo.PKIsHandle && !tblInfo.IsCommonHandle hasAutoIncID := tblInfo.GetAutoIncrementColInfo() != nil - if hasRowID || hasAutoIncID { + if hasRowID || (hasAutoIncID && !tblInfo.SepAutoInc()) { alloc := NewAllocator(r, dbID, tblInfo.ID, tblInfo.IsAutoIncColUnsigned(), RowIDAllocType, idCacheOpt, tblVer) allocs = append(allocs, alloc) } - if hasAutoIncID { + if hasAutoIncID && tblInfo.SepAutoInc() { alloc := NewAllocator(r, dbID, tblInfo.ID, tblInfo.IsAutoIncColUnsigned(), AutoIncrementType, idCacheOpt, tblVer) allocs = append(allocs, alloc) } diff --git a/pkg/meta/meta.go b/pkg/meta/meta.go index d0ad455e8e37e..76ff2c9599ed9 100644 --- a/pkg/meta/meta.go +++ b/pkg/meta/meta.go @@ -16,6 +16,7 @@ package meta import ( "bytes" + "context" "encoding/binary" "encoding/json" "fmt" @@ -1129,7 +1130,7 @@ func GetTableInfoWithAttributes(m *Mutator, dbID int64, filterAttrs ...string) ( } // ListTables shows all tables in database. -func (m *Mutator) ListTables(dbID int64) ([]*model.TableInfo, error) { +func (m *Mutator) ListTables(ctx context.Context, dbID int64) ([]*model.TableInfo, error) { res, err := m.GetMetasByDBID(dbID) if err != nil { return nil, errors.Trace(err) @@ -1142,6 +1143,9 @@ func (m *Mutator) ListTables(dbID int64) ([]*model.TableInfo, error) { if !strings.HasPrefix(tableKey, mTablePrefix) { continue } + if ctx.Err() != nil { + return nil, errors.Trace(ctx.Err()) + } tbInfo := &model.TableInfo{} err = json.Unmarshal(r.Value, tbInfo) diff --git a/pkg/meta/meta_test.go b/pkg/meta/meta_test.go index 8f224792bf14a..a30f513198d09 100644 --- a/pkg/meta/meta_test.go +++ b/pkg/meta/meta_test.go @@ -289,7 +289,7 @@ func TestMeta(t *testing.T) { tableNames, err := m.ListSimpleTables(1) require.NoError(t, err) require.Equal(t, []*model.TableNameInfo{tblName, tblName2}, tableNames) - tables, err := m.ListTables(1) + tables, err := m.ListTables(context.Background(), 1) require.NoError(t, err) require.Equal(t, []*model.TableInfo{tbInfo, tbInfo2}, tables) { @@ -327,7 +327,7 @@ func TestMeta(t *testing.T) { tableNames, err = m.ListSimpleTables(1) require.NoError(t, err) require.Equal(t, []*model.TableNameInfo{tblName}, tableNames) - tables, err = m.ListTables(1) + tables, err = m.ListTables(context.Background(), 1) require.NoError(t, err) require.Equal(t, []*model.TableInfo{tbInfo}, tables) { diff --git a/pkg/meta/model/BUILD.bazel b/pkg/meta/model/BUILD.bazel index 7286351027f0a..0dd924c3903ae 100644 --- a/pkg/meta/model/BUILD.bazel +++ b/pkg/meta/model/BUILD.bazel @@ -26,9 +26,11 @@ go_library( "//pkg/parser/mysql", "//pkg/parser/terror", "//pkg/parser/types", + "//pkg/planner/cascades/base", "//pkg/util/intest", "@com_github_pingcap_errors//:errors", "@com_github_tikv_pd_client//http", + "@org_uber_go_atomic//:atomic", ], ) diff --git a/pkg/meta/model/index.go b/pkg/meta/model/index.go index d65af0255cbbc..da8518aebc000 100644 --- a/pkg/meta/model/index.go +++ b/pkg/meta/model/index.go @@ -18,6 +18,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/types" + "github.com/pingcap/tidb/pkg/planner/cascades/base" ) // DistanceMetric is the distance metric used by the vector index. @@ -78,6 +79,27 @@ type IndexInfo struct { VectorInfo *VectorIndexInfo `json:"vector_index"` // VectorInfo is the vector index information. } +// Hash64 implement HashEquals interface. +func (index *IndexInfo) Hash64(h base.Hasher) { + h.HashInt64(index.ID) +} + +// Equals implements HashEquals interface. +func (index *IndexInfo) Equals(other any) bool { + // any(nil) can still be converted as (*IndexInfo)(nil) + index2, ok := other.(*IndexInfo) + if !ok { + return false + } + if index == nil { + return index2 == nil + } + if index2 == nil { + return false + } + return index.ID == index2.ID +} + // Clone clones IndexInfo. func (index *IndexInfo) Clone() *IndexInfo { if index == nil { diff --git a/pkg/meta/model/job.go b/pkg/meta/model/job.go index c87f8a094a886..6b6d5605b8683 100644 --- a/pkg/meta/model/job.go +++ b/pkg/meta/model/job.go @@ -640,6 +640,14 @@ func (job *Job) IsPausable() bool { return job.NotStarted() || (job.IsRunning() && job.IsRollbackable()) } +// IsAlterable checks whether the job type can be altered. +func (job *Job) IsAlterable() bool { + // Currently, only non-distributed add index reorg task can be altered + return job.Type == ActionAddIndex && !job.ReorgMeta.IsDistReorg || + job.Type == ActionModifyColumn || + job.Type == ActionReorganizePartition +} + // IsResumable checks whether the job can be rollback. func (job *Job) IsResumable() bool { return job.IsPaused() @@ -727,8 +735,10 @@ func (job *Job) IsRollbackable() bool { case ActionAddTablePartition: return job.SchemaState == StateNone || job.SchemaState == StateReplicaOnly case ActionDropColumn, ActionDropSchema, ActionDropTable, ActionDropSequence, - ActionDropForeignKey, ActionDropTablePartition, ActionTruncateTablePartition: + ActionDropForeignKey, ActionDropTablePartition: return job.SchemaState == StatePublic + case ActionTruncateTablePartition: + return job.SchemaState == StatePublic || job.SchemaState == StateWriteOnly case ActionRebaseAutoID, ActionShardRowID, ActionTruncateTable, ActionAddForeignKey, ActionRenameTable, ActionRenameTables, ActionModifyTableCharsetAndCollate, @@ -742,6 +752,12 @@ func (job *Job) IsRollbackable() bool { job.SchemaState == StateWriteOnly { return false } + case ActionReorganizePartition, ActionRemovePartitioning, ActionAlterTablePartitioning: + if job.SchemaState == StatePublic { + // We will double write until this state, here we will do DeleteOnly on indexes, + // so no-longer rollbackable. + return false + } } return true } @@ -783,7 +799,6 @@ type SubJob struct { CtxVars []any `json:"-"` SchemaVer int64 `json:"schema_version"` ReorgTp ReorgType `json:"reorg_tp"` - UseCloud bool `json:"use_cloud"` } // IsNormal returns true if the sub-job is normally running. @@ -851,8 +866,9 @@ func (sub *SubJob) FromProxyJob(proxyJob *Job, ver int64) { sub.Warning = proxyJob.Warning sub.RowCount = proxyJob.RowCount sub.SchemaVer = ver - sub.ReorgTp = proxyJob.ReorgMeta.ReorgTp - sub.UseCloud = proxyJob.ReorgMeta.UseCloudStorage + if proxyJob.ReorgMeta != nil { + sub.ReorgTp = proxyJob.ReorgMeta.ReorgTp + } } // FillArgs fills args. diff --git a/pkg/meta/model/job_args.go b/pkg/meta/model/job_args.go index 0f2b93caac40d..4669a3b9b76b3 100644 --- a/pkg/meta/model/job_args.go +++ b/pkg/meta/model/job_args.go @@ -405,6 +405,12 @@ func GetFinishedTruncateTableArgs(job *Job) (*TruncateTableArgs, error) { return getOrDecodeArgsV2[*TruncateTableArgs](job) } +// TableIDIndexID contains TableID+IndexID of index ranges to be deleted +type TableIDIndexID struct { + TableID int64 + IndexID int64 +} + // TablePartitionArgs is the arguments for table partition related jobs, including: // - ActionAlterTablePartitioning // - ActionRemovePartitioning @@ -420,7 +426,8 @@ type TablePartitionArgs struct { PartInfo *PartitionInfo `json:"part_info,omitempty"` // set on finished - OldPhysicalTblIDs []int64 `json:"old_physical_tbl_ids,omitempty"` + OldPhysicalTblIDs []int64 `json:"old_physical_tbl_ids,omitempty"` + OldGlobalIndexes []TableIDIndexID `json:"old_global_indexes,omitempty"` // runtime info NewPartitionIDs []int64 `json:"-"` @@ -438,7 +445,7 @@ func (a *TablePartitionArgs) getArgsV1(job *Job) []any { func (a *TablePartitionArgs) getFinishedArgsV1(job *Job) []any { intest.Assert(job.Type != ActionAddTablePartition || job.State == JobStateRollbackDone, "add table partition job should not call getFinishedArgsV1 if not rollback") - return []any{a.OldPhysicalTblIDs} + return []any{a.OldPhysicalTblIDs, a.OldGlobalIndexes} } func (a *TablePartitionArgs) decodeV1(job *Job) error { @@ -488,10 +495,11 @@ func GetTablePartitionArgs(job *Job) (*TablePartitionArgs, error) { func GetFinishedTablePartitionArgs(job *Job) (*TablePartitionArgs, error) { if job.Version == JobVersion1 { var oldPhysicalTblIDs []int64 - if err := job.decodeArgs(&oldPhysicalTblIDs); err != nil { + var oldIndexes []TableIDIndexID + if err := job.decodeArgs(&oldPhysicalTblIDs, &oldIndexes); err != nil { return nil, errors.Trace(err) } - return &TablePartitionArgs{OldPhysicalTblIDs: oldPhysicalTblIDs}, nil + return &TablePartitionArgs{OldPhysicalTblIDs: oldPhysicalTblIDs, OldGlobalIndexes: oldIndexes}, nil } return getOrDecodeArgsV2[*TablePartitionArgs](job) } diff --git a/pkg/meta/model/reorg.go b/pkg/meta/model/reorg.go index 01be1d69fcbc1..723a3fda3a9b7 100644 --- a/pkg/meta/model/reorg.go +++ b/pkg/meta/model/reorg.go @@ -20,6 +20,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" + "go.uber.org/atomic" ) // BackfillState is the state used by the backfill-merge process. @@ -71,26 +72,52 @@ type DDLReorgMeta struct { ResourceGroupName string `json:"resource_group_name"` Version int64 `json:"version"` TargetScope string `json:"target_scope"` - // These two variables are set when corresponding session variables are set explicitly. When they are set, - // user cannot change it by setting the global one. Otherwise, they can be adjusted dynamically through global var. - Concurrency int `json:"concurrency"` - BatchSize int `json:"batch_size"` + // These two variables are used to control the concurrency and batch size of the reorganization process. + // They can be adjusted dynamically through `admin alter ddl jobs` command. + // Note: Don't get or set these two variables directly, use the functions instead. + Concurrency atomic.Int64 `json:"concurrency"` + BatchSize atomic.Int64 `json:"batch_size"` + MaxWriteSpeed atomic.Int64 `json:"max_write_speed"` } -// GetConcurrencyOrDefault gets the concurrency from DDLReorgMeta or returns the default value. +// GetConcurrencyOrDefault gets the concurrency from DDLReorgMeta, +// pass the default value in case of the reorg meta coming from old cluster and Concurrency is 0. func (dm *DDLReorgMeta) GetConcurrencyOrDefault(defaultVal int) int { - if dm == nil || dm.Concurrency == 0 { + concurrency := dm.Concurrency.Load() + if concurrency == 0 { return defaultVal } - return dm.Concurrency + return int(concurrency) } -// GetBatchSizeOrDefault gets the batch size from DDLReorgMeta or returns the default value. +// SetConcurrency sets the concurrency in DDLReorgMeta. +func (dm *DDLReorgMeta) SetConcurrency(concurrency int) { + dm.Concurrency.Store(int64(concurrency)) +} + +// GetBatchSizeOrDefault gets the batch size from DDLReorgMeta. func (dm *DDLReorgMeta) GetBatchSizeOrDefault(defaultVal int) int { - if dm == nil || dm.BatchSize == 0 { + batchSize := dm.BatchSize.Load() + if batchSize == 0 { return defaultVal } - return dm.BatchSize + return int(batchSize) +} + +// SetBatchSize sets the batch size in DDLReorgMeta. +func (dm *DDLReorgMeta) SetBatchSize(batchSize int) { + dm.BatchSize.Store(int64(batchSize)) +} + +// GetMaxWriteSpeedOrDefault gets the max write speed from DDLReorgMeta. +// 0 means no limit. +func (dm *DDLReorgMeta) GetMaxWriteSpeedOrDefault() int { + return int(dm.MaxWriteSpeed.Load()) +} + +// SetMaxWriteSpeed sets the max write speed in DDLReorgMeta. +func (dm *DDLReorgMeta) SetMaxWriteSpeed(maxWriteSpeed int) { + dm.MaxWriteSpeed.Store(int64(maxWriteSpeed)) } const ( diff --git a/pkg/meta/model/table.go b/pkg/meta/model/table.go index d7520168c99db..27d4a8784b51a 100644 --- a/pkg/meta/model/table.go +++ b/pkg/meta/model/table.go @@ -26,6 +26,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/duration" "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/planner/cascades/base" ) // ExtraHandleID is the column ID of column which we need to append to schema to occupy the handle's position @@ -196,6 +197,27 @@ type TableInfo struct { DBID int64 `json:"-"` } +// Hash64 implement HashEquals interface. +func (t *TableInfo) Hash64(h base.Hasher) { + h.HashInt64(t.ID) +} + +// Equals implements HashEquals interface. +func (t *TableInfo) Equals(other any) bool { + // any(nil) can still be converted as (*TableInfo)(nil) + t2, ok := other.(*TableInfo) + if !ok { + return false + } + if t == nil { + return t2 == nil + } + if t2 == nil { + return false + } + return t.ID == t2.ID +} + // SepAutoInc decides whether _rowid and auto_increment id use separate allocator. func (t *TableInfo) SepAutoInc() bool { return t.Version >= TableInfoVersion5 && t.AutoIDCache == 1 @@ -744,14 +766,19 @@ type PartitionInfo struct { // like if there is a global index or going between non-partitioned // and partitioned table, to make the data dropping / range delete // optimized. - NewTableID int64 `json:"new_table_id"` + NewTableID int64 `json:"new_table_id,omitempty"` // Set during ALTER TABLE ... PARTITION BY ... // First as the new partition scheme, then in StateDeleteReorg as the old - DDLType model.PartitionType `json:"ddl_type"` - DDLExpr string `json:"ddl_expr"` - DDLColumns []model.CIStr `json:"ddl_columns"` + DDLType model.PartitionType `json:"ddl_type,omitempty"` + DDLExpr string `json:"ddl_expr,omitempty"` + DDLColumns []model.CIStr `json:"ddl_columns,omitempty"` // For ActionAlterTablePartitioning, UPDATE INDEXES - DDLUpdateIndexes []UpdateIndexInfo `json:"ddl_update_indexes"` + DDLUpdateIndexes []UpdateIndexInfo `json:"ddl_update_indexes,omitempty"` + // Simplified way to handle Global Index changes, instead of calculating + // it every time, keep track of the changes here. + // if index.ID exists in map, then it has changed, true for new copy, + // false for old copy (to be removed). + DDLChangedIndex map[int64]bool `json:"ddl_changed_index,omitempty"` } // Clone clones itself. @@ -838,16 +865,6 @@ func (pi *PartitionInfo) GCPartitionStates() { pi.States = newStates } -// HasTruncatingPartitionID checks whether the pid is truncating. -func (pi *PartitionInfo) HasTruncatingPartitionID(pid int64) bool { - for i := range pi.NewPartitionIDs { - if pi.NewPartitionIDs[i] == pid { - return true - } - } - return false -} - // ClearReorgIntermediateInfo remove intermediate information used during reorganize partition. func (pi *PartitionInfo) ClearReorgIntermediateInfo() { pi.DDLAction = ActionNone @@ -856,6 +873,7 @@ func (pi *PartitionInfo) ClearReorgIntermediateInfo() { pi.DDLExpr = "" pi.DDLColumns = nil pi.NewTableID = 0 + pi.DDLChangedIndex = nil } // FindPartitionDefinitionByName finds PartitionDefinition by name. @@ -1012,9 +1030,6 @@ func (pi *PartitionInfo) SetOriginalPartitionIDs() { // For example during truncate or drop partition. func (pi *PartitionInfo) IDsInDDLToIgnore() []int64 { // TODO: - // Truncate partition: - // write only => should not see NewPartitionIDs - // delete only => should not see DroppingPartitions // Drop partition: // TODO: Make similar changes as in Truncate Partition: // Add a state blocking read and write in the partitions to be dropped, @@ -1305,11 +1320,12 @@ func (s WindowRepeatType) String() string { } } -// DefaultJobInterval sets the default interval between TTL jobs -const DefaultJobInterval = time.Hour +// DefaultTTLJobInterval is the default interval of TTL jobs. +const DefaultTTLJobInterval = "24h" -// DefaultJobIntervalStr is the string representation of DefaultJobInterval -const DefaultJobIntervalStr = "1h" +// OldDefaultTTLJobInterval is the default interval of TTL jobs in v8.5 and the previous versions. +// It is used by some codes to keep compatible with the previous versions. +const OldDefaultTTLJobInterval = "1h" // TTLInfo records the TTL config type TTLInfo struct { @@ -1336,7 +1352,10 @@ func (t *TTLInfo) Clone() *TTLInfo { // and could avoid bugs blocking users from upgrading or bootstrapping the cluster. func (t *TTLInfo) GetJobInterval() (time.Duration, error) { if len(t.JobInterval) == 0 { - return DefaultJobInterval, nil + // This only happens when the table is created from 6.5 in which the `tidb_job_interval` is not introduced yet. + // We use `OldDefaultTTLJobInterval` as the return value to ensure a consistent behavior for the + // upgrades: v6.5 -> v8.5(or previous version) -> newer version than v8.5. + return duration.ParseDuration(OldDefaultTTLJobInterval) } return duration.ParseDuration(t.JobInterval) diff --git a/pkg/meta/model/table_test.go b/pkg/meta/model/table_test.go index 57598746406ca..d51c9a915d167 100644 --- a/pkg/meta/model/table_test.go +++ b/pkg/meta/model/table_test.go @@ -238,8 +238,12 @@ func TestClearReorgIntermediateInfo(t *testing.T) { } func TestTTLDefaultJobInterval(t *testing.T) { - // test const `DefaultJobIntervalStr` and `DefaultJobInterval` are consistent. - d, err := duration.ParseDuration(DefaultJobIntervalStr) + // test default value of `DefaultTTLJobInterval` is valid. + d, err := duration.ParseDuration(DefaultTTLJobInterval) require.NoError(t, err) - require.Equal(t, DefaultJobInterval, d) + require.Equal(t, 24*time.Hour, d) + // test default value of `OldDefaultTTLJobInterval` is valid. + d, err = duration.ParseDuration(OldDefaultTTLJobInterval) + require.NoError(t, err) + require.Equal(t, time.Hour, d) } diff --git a/pkg/meta/reader.go b/pkg/meta/reader.go index c377916b3fe12..5441713045848 100644 --- a/pkg/meta/reader.go +++ b/pkg/meta/reader.go @@ -15,6 +15,8 @@ package meta import ( + "context" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/structure" @@ -25,7 +27,7 @@ type Reader interface { GetDatabase(dbID int64) (*model.DBInfo, error) ListDatabases() ([]*model.DBInfo, error) GetTable(dbID int64, tableID int64) (*model.TableInfo, error) - ListTables(dbID int64) ([]*model.TableInfo, error) + ListTables(ctx context.Context, dbID int64) ([]*model.TableInfo, error) ListSimpleTables(dbID int64) ([]*model.TableNameInfo, error) IterTables(dbID int64, fn func(info *model.TableInfo) error) error GetAutoIDAccessors(dbID, tableID int64) AutoIDAccessors diff --git a/pkg/metrics/disttask.go b/pkg/metrics/disttask.go index ac9b8d767a800..c27073bddffe3 100644 --- a/pkg/metrics/disttask.go +++ b/pkg/metrics/disttask.go @@ -80,10 +80,11 @@ func UpdateMetricsForAddTask(task *proto.TaskBase) { } // UpdateMetricsForScheduleTask update metrics when a task is added -func UpdateMetricsForScheduleTask(id int64, taskType proto.TaskType) { - DistTaskGauge.WithLabelValues(taskType.String(), WaitingStatus).Dec() - DistTaskStartTimeGauge.DeleteLabelValues(taskType.String(), WaitingStatus, fmt.Sprint(id)) - DistTaskStartTimeGauge.WithLabelValues(taskType.String(), SchedulingStatus, fmt.Sprint(id)).SetToCurrentTime() +func UpdateMetricsForScheduleTask(task *proto.TaskBase) { + DistTaskGauge.WithLabelValues(task.Type.String(), WaitingStatus).Dec() + DistTaskGauge.WithLabelValues(task.Type.String(), SchedulingStatus).Inc() + DistTaskStartTimeGauge.DeleteLabelValues(task.Type.String(), WaitingStatus, fmt.Sprint(task.ID)) + DistTaskStartTimeGauge.WithLabelValues(task.Type.String(), SchedulingStatus, fmt.Sprint(task.ID)).SetToCurrentTime() } // UpdateMetricsForRunTask update metrics when a task starts running diff --git a/pkg/metrics/grafana/tidb.json b/pkg/metrics/grafana/tidb.json index 5c4287e1cae18..123233417e339 100644 --- a/pkg/metrics/grafana/tidb.json +++ b/pkg/metrics/grafana/tidb.json @@ -95,7 +95,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -218,7 +218,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -348,7 +348,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -797,7 +797,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -922,7 +922,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -1059,7 +1059,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -1155,7 +1155,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -1251,7 +1251,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -1347,7 +1347,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -1457,7 +1457,7 @@ "description": "TiDB durations with 80 percent buckets by instance", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -1551,7 +1551,7 @@ "description": "TiDB durations with 95 percent buckets by instance", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -1648,7 +1648,7 @@ "description": "TiDB durations with 99 percent buckets by instance", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -1741,7 +1741,7 @@ "description": "TiDB durations with 99.9 percent buckets by instance", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -1834,7 +1834,7 @@ "description": "TiDB failed query statistics with failing information ", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -1927,7 +1927,7 @@ "description": "The internal SQL is used by TiDB itself.", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -2022,7 +2022,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -2150,7 +2150,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -2267,7 +2267,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -2377,7 +2377,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -2776,7 +2776,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -2876,7 +2876,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -2993,7 +2993,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -3093,7 +3093,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -3202,7 +3202,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -3317,7 +3317,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -3415,7 +3415,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -3522,7 +3522,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -3620,7 +3620,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -3716,7 +3716,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -3814,7 +3814,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -3922,7 +3922,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -4021,7 +4021,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -4118,7 +4118,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -4347,7 +4347,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -4459,7 +4459,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -4707,7 +4707,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -4808,7 +4808,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -4924,7 +4924,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -5027,7 +5027,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -5215,7 +5215,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -5474,7 +5474,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -5595,7 +5595,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -5784,7 +5784,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -5905,7 +5905,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -6009,7 +6009,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -6186,7 +6186,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -6300,7 +6300,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -6421,7 +6421,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -6519,7 +6519,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -6617,7 +6617,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -6717,7 +6717,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -6833,7 +6833,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -6946,7 +6946,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -7060,7 +7060,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -7159,7 +7159,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -7258,7 +7258,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -7357,7 +7357,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -7456,7 +7456,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -7699,7 +7699,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -7868,7 +7868,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -7979,7 +7979,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8090,7 +8090,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8201,7 +8201,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8309,7 +8309,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8417,7 +8417,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8525,7 +8525,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8634,7 +8634,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -8738,7 +8738,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8848,7 +8848,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -8902,22 +8902,6 @@ "legendFormat": "avg-{{type}}", "refId": "A", "step": 30 - }, - { - "exemplar": true, - "expr": "histogram_quantile(0.99, sum(rate(tidb_server_plan_cache_process_duration_seconds_bucket{k8s_cluster=\"$k8s_cluster\",tidb_cluster=\"$tidb_cluster\", sql_type!=\"internal\"}[1m])) by (le, type))", - "hide": false, - "interval": "", - "legendFormat": "p99-{{type}}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "histogram_quantile(0.80, sum(rate(tidb_server_plan_cache_process_duration_seconds_bucket{k8s_cluster=\"$k8s_cluster\",tidb_cluster=\"$tidb_cluster\", sql_type!=\"internal\"}[1m])) by (le, type))", - "hide": false, - "interval": "", - "legendFormat": "p80-{{type}}", - "refId": "C" } ], "thresholds": [], @@ -9211,7 +9195,7 @@ "description": "durations of distsql execution by type", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -9332,7 +9316,7 @@ "description": "distsql query handling durations per second", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -9425,7 +9409,7 @@ "description": "the numebr of distsql partial scan numbers", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -9516,7 +9500,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "the numebr of distsql scan numbers", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -9616,7 +9600,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "the numebr of distsql partial scan key numbers", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -9716,7 +9700,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "distsql partial numbers per query", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -9818,7 +9802,7 @@ "description": "TiDB coprocessor cache hit, evict and miss number", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -9913,7 +9897,7 @@ "description": "kv storage coprocessor processing durations", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -10024,7 +10008,7 @@ "description": "kv backoff time durations by type", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -10236,7 +10220,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "kv storage backoff times", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -10328,7 +10312,7 @@ "description": "lock resolve times", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -10424,7 +10408,7 @@ "description": "This metric shows the reasons of replica selector failure (which needs a backoff).", "editable": true, "error": false, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -10540,7 +10524,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -10643,7 +10627,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -10748,7 +10732,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -10853,7 +10837,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -10956,7 +10940,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -11057,7 +11041,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11154,7 +11138,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11251,7 +11235,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11360,7 +11344,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11471,7 +11455,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11572,7 +11556,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11676,7 +11660,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11776,7 +11760,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "The slow score calculated by time cost of some specific TiKV RPC requests.", - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11867,7 +11851,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "The slow score calculated by TiKV rafstore and sent to TiDB via health feedback.", - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -11980,7 +11964,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12083,7 +12067,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12206,7 +12190,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12309,7 +12293,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12416,7 +12400,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12538,7 +12522,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12660,7 +12644,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12761,7 +12745,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -12875,7 +12859,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -12977,7 +12961,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -13133,7 +13117,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -13249,7 +13233,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -13365,7 +13349,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -13515,7 +13499,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -13619,7 +13603,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -14268,7 +14252,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -14388,7 +14372,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -14429,7 +14413,7 @@ "exemplar": true, "expr": "tidb_domain_infoschema_v2_cache_size{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\"}", "interval": "", - "legendFormat": "used", + "legendFormat": "{{instance}} used", "refId": "A" }, { @@ -14437,7 +14421,7 @@ "expr": "tidb_domain_infoschema_v2_cache_limit{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\"}", "hide": false, "interval": "", - "legendFormat": "limit", + "legendFormat": "{{instance}} limit", "refId": "B" } ], @@ -14646,7 +14630,7 @@ "description": "TiDB DDL duration statistics", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -14745,7 +14729,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "Some DDLs need to backfill data, for example, adding indexes, column type changes, etc. This metrics shows the number of rows backfilled per second.", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -14835,7 +14819,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB ddl request in queue", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -14925,7 +14909,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB different ddl worker numbers", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -15013,7 +14997,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB worker duration by type, action, results", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -15103,7 +15087,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB ddl schema syncer statistics, including init, start, watch, clear function call time cost", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -15191,7 +15175,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB ddl owner time operations on etcd duration statistics ", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -15279,7 +15263,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB schema syncer version update time duration", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -15367,7 +15351,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "executed DDL jobs per minute", - "fill": 1, + "fill": 0, "gridPos": { "h": 8, "w": 12, @@ -15460,7 +15444,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB DDL backfill progress in percentage. The value is [0,100]", - "fill": 1, + "fill": 0, "gridPos": { "h": 8, "w": 12, @@ -15560,7 +15544,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -15660,7 +15644,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -15760,7 +15744,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -15887,7 +15871,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -15989,7 +15973,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -16092,7 +16076,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -16187,7 +16171,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -16487,7 +16471,7 @@ "targets": [ { "exemplar": true, - "expr": "sum(tidb_disttask_subtasks{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", status=~\"pending|running|reverting|revert_pending|paused\"}) by (exec_id)", + "expr": "sum(tidb_disttask_subtasks{k8s_cluster=\"$k8s_cluster\", tidb_cluster=\"$tidb_cluster\", instance=~\"$instance\", status=~\"pending|running|failed|canceled|paused\"}) by (exec_id)", "interval": "", "legendFormat": "", "queryType": "randomWalk", @@ -16617,7 +16601,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -16723,7 +16707,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -16820,7 +16804,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -16931,7 +16915,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -17028,7 +17012,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -17224,7 +17208,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -17344,7 +17328,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -17571,7 +17555,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -17674,7 +17658,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -17793,7 +17777,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -17903,7 +17887,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -18002,7 +17986,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -18159,7 +18143,7 @@ "alignLevel": null }, "lines": true, - "fill": 1, + "fill": 0, "linewidth": 1, "dashLength": 10, "spaceLength": 10, @@ -18264,7 +18248,7 @@ "alignLevel": null }, "lines": true, - "fill": 1, + "fill": 0, "linewidth": 1, "dashLength": 10, "spaceLength": 10, @@ -18361,7 +18345,7 @@ "alignLevel": null }, "lines": true, - "fill": 1, + "fill": 0, "linewidth": 1, "dashLength": 10, "spaceLength": 10, @@ -18422,7 +18406,7 @@ "description": "TiDB new session durations for new etcd sessions", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -18513,7 +18497,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB owner watcher counts", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -18615,7 +18599,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB auto id requests per second including single table/global auto id processing and single table auto id rebase processing", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -18703,7 +18687,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB auto id requests durations", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -18798,7 +18782,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "TiDB meta operation durations including get/set schema and ddl jobs", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -18888,7 +18872,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 12, @@ -19005,7 +18989,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "kv storage garbage collection counts by type", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -19094,7 +19078,7 @@ "datasource": "${DS_TEST-CLUSTER}", "decimals": 2, "description": "kv storage garbage collection time durations", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -19183,7 +19167,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "kv storage garbage collection config including gc_life_time and gc_run_interval", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -19270,7 +19254,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "kv storage garbage collection failing counts", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -19356,7 +19340,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "kv storage unsafe destroy range failed counts", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -19444,7 +19428,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "kv storage region garbage collection clean too many locks count", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -19530,7 +19514,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "kv storage garbage collection results including failed and successful ones", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -19618,7 +19602,7 @@ "description": "kv storage delete range task execution status by type", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -19717,7 +19701,7 @@ "description": "kv storage range worker processing one task duration", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -19974,7 +19958,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "Metrics for 'no available connection'.\nThere should be no data here if the connection between TiDB and TiKV is healthy.", - "fill": 1, + "fill": 0, "gridPos": { "h": 7, "w": 8, @@ -20062,7 +20046,7 @@ "description": "kv storage batch processing unvailable durations", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -20156,7 +20140,7 @@ "description": "kv storage batch client wait new connection establish duration", "editable": true, "error": false, - "fill": 1, + "fill": 0, "grid": {}, "gridPos": { "h": 7, @@ -20251,7 +20235,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -20389,7 +20373,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -20494,7 +20478,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -20604,7 +20588,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -20705,7 +20689,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, @@ -20824,7 +20808,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -20930,7 +20914,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -21051,7 +21035,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -21173,7 +21157,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { @@ -21404,7 +21388,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -21517,7 +21501,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -21617,7 +21601,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -21715,7 +21699,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -21815,7 +21799,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -21914,7 +21898,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -22035,7 +22019,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -22156,7 +22140,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -22286,7 +22270,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -22416,7 +22400,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -22530,7 +22514,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23030,7 +23014,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23126,7 +23110,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23237,7 +23221,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23337,7 +23321,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23437,7 +23421,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23579,7 +23563,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23691,7 +23675,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23811,7 +23795,7 @@ "defaults": {}, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -23909,7 +23893,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, @@ -24155,7 +24139,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "Duration of writing to cloud storage", - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -24263,7 +24247,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -24367,7 +24351,7 @@ "dashes": false, "datasource": "${DS_TEST-CLUSTER}", "description": "Duration of reading from cloud storage", - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -24475,7 +24459,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, @@ -24585,7 +24569,7 @@ }, "overrides": [] }, - "fill": 1, + "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, diff --git a/pkg/owner/BUILD.bazel b/pkg/owner/BUILD.bazel index 20d8e5ac8debe..ad74fc9e74c1d 100644 --- a/pkg/owner/BUILD.bazel +++ b/pkg/owner/BUILD.bazel @@ -37,17 +37,12 @@ go_test( ], embed = [":owner"], flaky = True, - shard_count = 10, + shard_count = 11, deps = [ - "//pkg/ddl", - "//pkg/infoschema", - "//pkg/kv", "//pkg/parser/terror", - "//pkg/store/mockstore", - "//pkg/testkit", + "//pkg/testkit/testfailpoint", "//pkg/testkit/testsetup", "//pkg/util", - "//pkg/util/logutil", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//assert", diff --git a/pkg/owner/manager.go b/pkg/owner/manager.go index 4db5d655dafaa..c11ef66cf9bd1 100644 --- a/pkg/owner/manager.go +++ b/pkg/owner/manager.go @@ -57,16 +57,23 @@ type Manager interface { GetOwnerID(ctx context.Context) (string, error) // SetOwnerOpValue updates the owner op value. SetOwnerOpValue(ctx context.Context, op OpType) error - // CampaignOwner campaigns the owner. + // CampaignOwner campaigns the owner. It will start a background goroutine to + // campaign owner in a loop, and when become or retire owner, it will call methods + // of the listener. CampaignOwner(...int) error - // ResignOwner lets the owner start a new election. - ResignOwner(ctx context.Context) error - // Cancel cancels this etcd ownerManager. - Cancel() - // RequireOwner requires the ownerManager is owner. - RequireOwner(ctx context.Context) error - // CampaignCancel cancels one etcd campaign + // CampaignCancel cancels one etcd campaign, it will also close the underlying + // etcd session. After this method is called, the manager can be used to campaign + // owner again. CampaignCancel() + // BreakCampaignLoop breaks the campaign loop, related listener methods will + // be called. The underlying etcd session the related campaign key will remain, + // so if some instance is the owner before, after break and campaign again, it + // will still be the owner. + BreakCampaignLoop() + // ResignOwner will resign and start a new election if it's the owner. + ResignOwner(ctx context.Context) error + // Close closes the manager, after close, no methods can be called. + Close() // SetListener sets the listener, set before CampaignOwner. SetListener(listener Listener) // ForceToBeOwner restart the owner election and trying to be the new owner by @@ -83,12 +90,11 @@ type Manager interface { ForceToBeOwner(ctx context.Context) error } -const ( - keyOpDefaultTimeout = 5 * time.Second +const keyOpDefaultTimeout = 5 * time.Second - // WaitTimeOnForceOwner is the time to wait before or after force to be owner. - WaitTimeOnForceOwner = 5 * time.Second -) +// WaitTimeOnForceOwner is the time to wait before or after force to be owner. +// make it a var for test. +var WaitTimeOnForceOwner = 5 * time.Second // OpType is the owner key value operation type. type OpType byte @@ -126,32 +132,26 @@ type ownerManager struct { key string ctx context.Context prompt string - logPrefix string - logCtx context.Context + logger *zap.Logger etcdCli *clientv3.Client - cancel context.CancelFunc elec atomic.Pointer[concurrency.Election] sessionLease *atomicutil.Int64 wg sync.WaitGroup campaignCancel context.CancelFunc - listener Listener - forceOwnerSession *concurrency.Session + listener Listener + etcdSes *concurrency.Session } // NewOwnerManager creates a new Manager. func NewOwnerManager(ctx context.Context, etcdCli *clientv3.Client, prompt, id, key string) Manager { - logPrefix := fmt.Sprintf("[%s] %s ownerManager %s", prompt, key, id) - ctx, cancelFunc := context.WithCancel(ctx) return &ownerManager{ etcdCli: etcdCli, id: id, key: key, ctx: ctx, prompt: prompt, - cancel: cancelFunc, - logPrefix: logPrefix, - logCtx: logutil.WithKeyValue(context.Background(), "owner info", logPrefix), + logger: logutil.BgLogger().With(zap.String("key", key), zap.String("id", id)), sessionLease: atomicutil.NewInt64(0), } } @@ -166,15 +166,10 @@ func (m *ownerManager) IsOwner() bool { return m.elec.Load() != nil } -// Cancel implements Manager.Cancel interface. -func (m *ownerManager) Cancel() { - m.cancel() - m.wg.Wait() -} - -// RequireOwner implements Manager.RequireOwner interface. -func (*ownerManager) RequireOwner(_ context.Context) error { - return nil +// Close implements Manager.Close interface. +func (m *ownerManager) Close() { + // same as CampaignCancel + m.CampaignCancel() } func (m *ownerManager) SetListener(listener Listener) { @@ -182,14 +177,10 @@ func (m *ownerManager) SetListener(listener Listener) { } func (m *ownerManager) ForceToBeOwner(context.Context) error { - logPrefix := fmt.Sprintf("[%s] %s", m.prompt, m.key) - logutil.BgLogger().Info("force to be owner", zap.String("ownerInfo", logPrefix)) - session, err := util2.NewSession(m.ctx, logPrefix, m.etcdCli, util2.NewSessionDefaultRetryCnt, ManagerSessionTTL) - if err != nil { + m.logger.Info("force to be owner") + if err := m.refreshSession(util2.NewSessionDefaultRetryCnt, ManagerSessionTTL); err != nil { return errors.Trace(err) } - m.forceOwnerSession = session - m.sessionLease.Store(int64(m.forceOwnerSession.Lease())) // due to issue https://github.com/pingcap/tidb/issues/54689, if the cluster // version before upgrade don't have fix, when retire owners runs on older version @@ -209,8 +200,8 @@ func (m *ownerManager) ForceToBeOwner(context.Context) error { // we need to sleep in every retry, as other TiDB nodes will start campaign // immediately after we delete their key. time.Sleep(WaitTimeOnForceOwner) - if err = m.tryToBeOwnerOnce(); err != nil { - logutil.Logger(m.logCtx).Warn("failed to retire owner on older version", zap.Error(err)) + if err := m.tryToBeOwnerOnce(); err != nil { + m.logger.Warn("failed to retire owner on older version", zap.Error(err)) continue } break @@ -219,7 +210,7 @@ func (m *ownerManager) ForceToBeOwner(context.Context) error { } func (m *ownerManager) tryToBeOwnerOnce() error { - lease := m.forceOwnerSession.Lease() + lease := m.etcdSes.Lease() keyPrefix := m.key + "/" getResp, err := m.etcdCli.Get(m.ctx, keyPrefix, clientv3.WithPrefix()) @@ -257,7 +248,7 @@ func (m *ownerManager) tryToBeOwnerOnce() error { // the owner, so we add a timeout to avoid blocking. ctx, cancel := context.WithTimeout(m.ctx, keyOpDefaultTimeout) defer cancel() - elec := concurrency.NewElection(m.forceOwnerSession, m.key) + elec := concurrency.NewElection(m.etcdSes, m.key) if err = elec.Campaign(ctx, m.id); err != nil { return errors.Trace(err) } @@ -294,21 +285,19 @@ func (m *ownerManager) CampaignOwner(withTTL ...int) error { if len(withTTL) == 1 { ttl = withTTL[0] } - logPrefix := fmt.Sprintf("[%s] %s", m.prompt, m.key) - logutil.BgLogger().Info("start campaign owner", zap.String("ownerInfo", logPrefix)) - campaignSession := m.forceOwnerSession - if campaignSession == nil { - session, err := util2.NewSession(m.ctx, logPrefix, m.etcdCli, util2.NewSessionDefaultRetryCnt, ttl) - if err != nil { + if m.etcdSes == nil { + m.logger.Info("start campaign owner") + if err := m.refreshSession(util2.NewSessionDefaultRetryCnt, ttl); err != nil { return errors.Trace(err) } - m.sessionLease.Store(int64(session.Lease())) - campaignSession = session + } else { + m.logger.Info("start campaign owner with existing session", + zap.String("lease", util2.FormatLeaseID(m.etcdSes.Lease()))) } m.wg.Add(1) var campaignContext context.Context campaignContext, m.campaignCancel = context.WithCancel(m.ctx) - go m.campaignLoop(campaignContext, campaignSession) + go m.campaignLoop(campaignContext) return nil } @@ -326,13 +315,13 @@ func (m *ownerManager) ResignOwner(ctx context.Context) error { return errors.Trace(err) } - logutil.Logger(m.logCtx).Warn("resign owner success") + m.logger.Warn("resign owner success") return nil } func (m *ownerManager) toBeOwner(elec *concurrency.Election) { m.elec.Store(elec) - logutil.Logger(m.logCtx).Info("become owner") + m.logger.Info("become owner") if m.listener != nil { m.listener.OnBecomeOwner() } @@ -341,7 +330,7 @@ func (m *ownerManager) toBeOwner(elec *concurrency.Election) { // RetireOwner make the manager to be a not owner. func (m *ownerManager) RetireOwner() { m.elec.Store(nil) - logutil.Logger(m.logCtx).Info("retire owner") + m.logger.Info("retire owner") if m.listener != nil { m.listener.OnRetireOwner() } @@ -349,104 +338,131 @@ func (m *ownerManager) RetireOwner() { // CampaignCancel implements Manager.CampaignCancel interface. func (m *ownerManager) CampaignCancel() { - m.campaignCancel() + m.BreakCampaignLoop() + m.closeSession() +} + +func (m *ownerManager) BreakCampaignLoop() { + if m.campaignCancel != nil { + m.campaignCancel() + } m.wg.Wait() } -func (m *ownerManager) campaignLoop(campaignContext context.Context, etcdSession *concurrency.Session) { +func (m *ownerManager) campaignLoop(campaignContext context.Context) { defer func() { m.campaignCancel() if r := recover(); r != nil { - logutil.BgLogger().Error("recover panic", zap.String("prompt", m.prompt), zap.Any("error", r), zap.Stack("buffer")) + m.logger.Error("recover panic", zap.String("prompt", m.prompt), zap.Any("error", r), zap.Stack("buffer")) metrics.PanicCounter.WithLabelValues(metrics.LabelDDLOwner).Inc() } m.wg.Done() }() - logPrefix := m.logPrefix - logCtx := m.logCtx - var err error + leaseNotFoundCh := make(chan struct{}) for { - if err != nil { - metrics.CampaignOwnerCounter.WithLabelValues(m.prompt, err.Error()).Inc() - } - select { - case <-etcdSession.Done(): - logutil.Logger(logCtx).Info("etcd session is done, creates a new one") - leaseID := etcdSession.Lease() - etcdSession, err = util2.NewSession(campaignContext, logPrefix, m.etcdCli, util2.NewSessionRetryUnlimited, ManagerSessionTTL) - if err != nil { - logutil.Logger(logCtx).Info("break campaign loop, NewSession failed", zap.Error(err)) - m.revokeSession(logPrefix, leaseID) + case <-m.etcdSes.Done(): + m.logger.Info("etcd session done, refresh it") + if err2 := m.refreshSession(util2.NewSessionRetryUnlimited, ManagerSessionTTL); err2 != nil { + m.logger.Info("break campaign loop, refresh session failed", zap.Error(err2)) + return + } + case <-leaseNotFoundCh: + m.logger.Info("meet lease not found error, refresh session") + if err2 := m.refreshSession(util2.NewSessionRetryUnlimited, ManagerSessionTTL); err2 != nil { + m.logger.Info("break campaign loop, refresh session failed", zap.Error(err2)) return } - m.sessionLease.Store(int64(etcdSession.Lease())) + leaseNotFoundCh = make(chan struct{}) case <-campaignContext.Done(): failpoint.Inject("MockDelOwnerKey", func(v failpoint.Value) { if v.(string) == "delOwnerKeyAndNotOwner" { - logutil.Logger(logCtx).Info("mock break campaign and don't clear related info") + m.logger.Info("mock break campaign and don't clear related info") return } }) - logutil.Logger(logCtx).Info("break campaign loop, context is done") - m.revokeSession(logPrefix, etcdSession.Lease()) + m.logger.Info("break campaign loop, context is done") return default: } - // If the etcd server turns clocks forward,the following case may occur. - // The etcd server deletes this session's lease ID, but etcd session doesn't find it. - // In this time if we do the campaign operation, the etcd server will return ErrLeaseNotFound. - if terror.ErrorEqual(err, rpctypes.ErrLeaseNotFound) { - if etcdSession != nil { - err = etcdSession.Close() - logutil.Logger(logCtx).Info("etcd session encounters the error of lease not found, closes it", zap.Error(err)) + + if err := m.campaignAndWatch(campaignContext); err != nil { + metrics.CampaignOwnerCounter.WithLabelValues(m.prompt, err.Error()).Inc() + + // If the etcd server turns clocks forward,the following case may occur. + // The etcd server deletes this session's lease ID, but etcd session doesn't find it. + // In this time if we do the campaign operation, the etcd server will return ErrLeaseNotFound. + if terror.ErrorEqual(err, rpctypes.ErrLeaseNotFound) { + close(leaseNotFoundCh) } - continue + m.logger.Info("campaign and watch failed", zap.Error(err)) } + } +} - elec := concurrency.NewElection(etcdSession, m.key) - err = elec.Campaign(campaignContext, m.id) - if err != nil { - logutil.Logger(logCtx).Info("failed to campaign", zap.Error(err)) - continue - } +func (m *ownerManager) campaignAndWatch(ctx context.Context) error { + elec := concurrency.NewElection(m.etcdSes, m.key) + failpoint.InjectCall("beforeElectionCampaign", m.etcdSes) + err := elec.Campaign(ctx, m.id) + if err != nil { + return err + } - ownerKey, currRev, err := GetOwnerKeyInfo(campaignContext, logCtx, m.etcdCli, m.key, m.id) - if err != nil { - continue - } + ownerKey, currRev, err := GetOwnerKeyInfo(ctx, m.etcdCli, m.key, m.id) + if err != nil { + return err + } + + m.toBeOwner(elec) + + err = m.watchOwner(ctx, m.etcdSes, ownerKey, currRev) + m.logger.Info("watch owner finished", zap.Error(err)) + m.RetireOwner() - m.toBeOwner(elec) - err = m.watchOwner(campaignContext, etcdSession, ownerKey, currRev) - logutil.Logger(logCtx).Info("watch owner finished", zap.Error(err)) - m.RetireOwner() + metrics.CampaignOwnerCounter.WithLabelValues(m.prompt, metrics.NoLongerOwner).Inc() + m.logger.Info("is not the owner") + return err +} - metrics.CampaignOwnerCounter.WithLabelValues(m.prompt, metrics.NoLongerOwner).Inc() - logutil.Logger(logCtx).Warn("is not the owner") +func (m *ownerManager) closeSession() { + if m.etcdSes != nil { + if err := m.etcdSes.Close(); err != nil { + m.logger.Info("etcd session close failed", zap.Error(err)) + } + m.etcdSes = nil } } -func (m *ownerManager) revokeSession(_ string, leaseID clientv3.LeaseID) { - // Revoke the session lease. - // If revoke takes longer than the ttl, lease is expired anyway. - cancelCtx, cancel := context.WithTimeout(context.Background(), - time.Duration(ManagerSessionTTL)*time.Second) - _, err := m.etcdCli.Revoke(cancelCtx, leaseID) - cancel() - logutil.Logger(m.logCtx).Info("revoke session", zap.Error(err)) +func (m *ownerManager) refreshSession(retryCnt, ttl int) error { + m.closeSession() + // Note: we must use manager's context to create session. If we use campaign + // context and the context is cancelled, the created session cannot be closed + // as session close depends on the context. + // One drawback is that when you want to break the campaign loop, and the campaign + // loop is refreshing the session, it might wait for a long time to return, it + // should be fine as long as network is ok, and acceptable to wait when not. + logPrefix := fmt.Sprintf("[%s] %s ownerManager %s", m.prompt, m.key, m.id) + sess, err2 := util2.NewSession(m.ctx, logPrefix, m.etcdCli, retryCnt, ttl) + if err2 != nil { + return errors.Trace(err2) + } + m.etcdSes = sess + m.sessionLease.Store(int64(m.etcdSes.Lease())) + return nil } // GetOwnerID implements Manager.GetOwnerID interface. func (m *ownerManager) GetOwnerID(ctx context.Context) (string, error) { - _, ownerID, _, _, _, err := getOwnerInfo(ctx, m.logCtx, m.etcdCli, m.key) + _, ownerID, _, _, _, err := getOwnerInfo(ctx, m.etcdCli, m.key) return string(ownerID), errors.Trace(err) } -func getOwnerInfo(ctx, logCtx context.Context, etcdCli *clientv3.Client, ownerPath string) (string, []byte, OpType, int64, int64, error) { +func getOwnerInfo(ctx context.Context, etcdCli *clientv3.Client, ownerPath string) (string, []byte, OpType, int64, int64, error) { var op OpType var resp *clientv3.GetResponse var err error + logger := logutil.BgLogger().With(zap.String("key", ownerPath)) for i := 0; i < 3; i++ { if err = ctx.Err(); err != nil { return "", nil, op, 0, 0, errors.Trace(err) @@ -458,11 +474,11 @@ func getOwnerInfo(ctx, logCtx context.Context, etcdCli *clientv3.Client, ownerPa if err == nil { break } - logutil.Logger(logCtx).Info("etcd-cli get owner info failed", zap.String("key", ownerPath), zap.Int("retryCnt", i), zap.Error(err)) + logger.Info("etcd-cli get owner info failed", zap.Int("retryCnt", i), zap.Error(err)) time.Sleep(util.KeyOpRetryInterval) } if err != nil { - logutil.Logger(logCtx).Warn("etcd-cli get owner info failed", zap.Error(err)) + logger.Warn("etcd-cli get owner info failed", zap.Error(err)) return "", nil, op, 0, 0, errors.Trace(err) } if len(resp.Kvs) == 0 { @@ -471,23 +487,24 @@ func getOwnerInfo(ctx, logCtx context.Context, etcdCli *clientv3.Client, ownerPa var ownerID []byte ownerID, op = splitOwnerValues(resp.Kvs[0].Value) - logutil.Logger(logCtx).Info("get owner", zap.ByteString("owner key", resp.Kvs[0].Key), + logger.Info("get owner", zap.ByteString("owner key", resp.Kvs[0].Key), zap.ByteString("ownerID", ownerID), zap.Stringer("op", op)) return string(resp.Kvs[0].Key), ownerID, op, resp.Header.Revision, resp.Kvs[0].ModRevision, nil } // GetOwnerKeyInfo gets the owner key and current revision. func GetOwnerKeyInfo( - ctx, logCtx context.Context, + ctx context.Context, etcdCli *clientv3.Client, etcdKey, id string, ) (string, int64, error) { - ownerKey, ownerID, _, currRevision, _, err := getOwnerInfo(ctx, logCtx, etcdCli, etcdKey) + ownerKey, ownerID, _, currRevision, _, err := getOwnerInfo(ctx, etcdCli, etcdKey) if err != nil { return "", 0, errors.Trace(err) } if string(ownerID) != id { - logutil.Logger(logCtx).Warn("is not the owner") + logutil.BgLogger().Warn("is not the owner", zap.String("key", etcdKey), + zap.String("id", id), zap.String("ownerID", string(ownerID))) return "", 0, errors.New("ownerInfoNotMatch") } @@ -510,12 +527,12 @@ func joinOwnerValues(vals ...[]byte) []byte { // SetOwnerOpValue implements Manager.SetOwnerOpValue interface. func (m *ownerManager) SetOwnerOpValue(ctx context.Context, op OpType) error { // owner don't change. - ownerKey, ownerID, currOp, _, modRevision, err := getOwnerInfo(ctx, m.logCtx, m.etcdCli, m.key) + ownerKey, ownerID, currOp, _, modRevision, err := getOwnerInfo(ctx, m.etcdCli, m.key) if err != nil { return errors.Trace(err) } if currOp == op { - logutil.Logger(m.logCtx).Info("set owner op is the same as the original, so do nothing.", zap.Stringer("op", op)) + m.logger.Info("set owner op is the same as the original, so do nothing.", zap.Stringer("op", op)) return nil } if string(ownerID) != m.id { @@ -539,21 +556,20 @@ func (m *ownerManager) SetOwnerOpValue(ctx context.Context, op OpType) error { if err == nil && !resp.Succeeded { err = errors.New("put owner key failed, cmp is false") } - logutil.BgLogger().Info("set owner op value", zap.String("owner key", ownerKey), zap.ByteString("ownerID", ownerID), + m.logger.Info("set owner op value", zap.String("owner key", ownerKey), zap.ByteString("ownerID", ownerID), zap.Stringer("old Op", currOp), zap.Stringer("op", op), zap.Error(err)) metrics.WatchOwnerCounter.WithLabelValues(m.prompt, metrics.PutValue+"_"+metrics.RetLabel(err)).Inc() return errors.Trace(err) } // GetOwnerOpValue gets the owner op value. -func GetOwnerOpValue(ctx context.Context, etcdCli *clientv3.Client, ownerPath, logPrefix string) (OpType, error) { +func GetOwnerOpValue(ctx context.Context, etcdCli *clientv3.Client, ownerPath string) (OpType, error) { // It's using for testing. if etcdCli == nil { return *mockOwnerOpValue.Load(), nil } - logCtx := logutil.WithKeyValue(context.Background(), "owner info", logPrefix) - _, _, op, _, _, err := getOwnerInfo(ctx, logCtx, etcdCli, ownerPath) + _, _, op, _, _, err := getOwnerInfo(ctx, etcdCli, ownerPath) return op, errors.Trace(err) } @@ -567,9 +583,8 @@ func WatchOwnerForTest(ctx context.Context, m Manager, etcdSession *concurrency. } func (m *ownerManager) watchOwner(ctx context.Context, etcdSession *concurrency.Session, key string, currRev int64) error { - logPrefix := fmt.Sprintf("[%s] ownerManager %s watch owner key %v", m.prompt, m.id, key) - logCtx := logutil.WithKeyValue(context.Background(), "owner info", logPrefix) - logutil.BgLogger().Debug(logPrefix) + logger := m.logger.With(zap.String("ownerKey", key), zap.Int64("currRev", currRev)) + logger.Info("watching owner key") // we need to watch the ownerKey since currRev + 1. watchCh := m.etcdCli.Watch(ctx, key, clientv3.WithRev(currRev+1)) for { @@ -577,19 +592,19 @@ func (m *ownerManager) watchOwner(ctx context.Context, etcdSession *concurrency. case resp, ok := <-watchCh: if !ok { metrics.WatchOwnerCounter.WithLabelValues(m.prompt, metrics.WatcherClosed).Inc() - logutil.Logger(logCtx).Info("watcher is closed, no owner") + logger.Info("watcher is closed, no owner") return errors.Errorf("watcher is closed, key: %v", key) } if resp.Canceled { metrics.WatchOwnerCounter.WithLabelValues(m.prompt, metrics.Cancelled).Inc() - logutil.Logger(logCtx).Info("watch canceled, no owner") + logger.Info("watch canceled, no owner") return errors.Errorf("watch canceled, key: %v", key) } for _, ev := range resp.Events { if ev.Type == mvccpb.DELETE { metrics.WatchOwnerCounter.WithLabelValues(m.prompt, metrics.Deleted).Inc() - logutil.Logger(logCtx).Info("watch failed, owner is deleted") + logger.Info("watch failed, owner is deleted") return nil } } diff --git a/pkg/owner/manager_test.go b/pkg/owner/manager_test.go index 2955c550f82a7..b1dd667b37c56 100644 --- a/pkg/owner/manager_test.go +++ b/pkg/owner/manager_test.go @@ -25,15 +25,10 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" - . "github.com/pingcap/tidb/pkg/ddl" - "github.com/pingcap/tidb/pkg/infoschema" - "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/owner" "github.com/pingcap/tidb/pkg/parser/terror" - "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" - "github.com/pingcap/tidb/pkg/util/logutil" "github.com/stretchr/testify/require" clientv3 "go.etcd.io/etcd/client/v3" "go.etcd.io/etcd/client/v3/concurrency" @@ -42,44 +37,20 @@ import ( "golang.org/x/exp/rand" ) -const testLease = 5 * time.Millisecond - type testInfo struct { - store kv.Storage cluster *integration.ClusterV3 client *clientv3.Client - ddl DDL } func newTestInfo(t *testing.T) *testInfo { - store, err := mockstore.NewMockStore() - require.NoError(t, err) - cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 4}) - - cli := cluster.Client(0) - ic := infoschema.NewCache(nil, 2) - ic.Insert(infoschema.MockInfoSchemaWithSchemaVer(nil, 0), 0) - d, _ := NewDDL( - context.Background(), - WithEtcdClient(cli), - WithStore(store), - WithLease(testLease), - WithInfoCache(ic), - ) - + cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}) return &testInfo{ - store: store, cluster: cluster, - client: cli, - ddl: d, + client: cluster.Client(0), } } func (ti *testInfo) Close(t *testing.T) { - err := ti.ddl.Stop() - require.NoError(t, err) - err = ti.store.Close() - require.NoError(t, err) ti.cluster.Terminate(t) } @@ -94,6 +65,45 @@ func (l *listener) OnRetireOwner() { l.val.Store(false) } +func TestForceToBeOwner(t *testing.T) { + if runtime.GOOS == "windows" { + t.Skip("integration.NewClusterV3 will create file contains a colon which is not allowed on Windows") + } + integration.BeforeTestExternal(t) + + tInfo := newTestInfo(t) + client := tInfo.client + defer tInfo.Close(t) + + // put a key with same prefix to mock another node + ctx := context.Background() + testKey := "/owner/key/a" + _, err := client.Put(ctx, testKey, "a") + require.NoError(t, err) + resp, err := client.Get(ctx, testKey) + require.NoError(t, err) + require.Len(t, resp.Kvs, 1) + + bak := owner.WaitTimeOnForceOwner + t.Cleanup(func() { + owner.WaitTimeOnForceOwner = bak + }) + owner.WaitTimeOnForceOwner = time.Millisecond + ownerMgr := owner.NewOwnerManager(ctx, client, "ddl", "1", "/owner/key") + defer ownerMgr.Close() + lis := &listener{} + ownerMgr.SetListener(lis) + require.NoError(t, ownerMgr.ForceToBeOwner(ctx)) + // key of other node is deleted + resp, err = client.Get(ctx, testKey) + require.NoError(t, err) + require.Empty(t, resp.Kvs) + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) + require.True(t, isOwner) + require.True(t, lis.val.Load()) +} + func TestSingle(t *testing.T) { if runtime.GOOS == "windows" { t.Skip("integration.NewClusterV3 will create file contains a colon which is not allowed on Windows") @@ -101,41 +111,78 @@ func TestSingle(t *testing.T) { integration.BeforeTestExternal(t) tInfo := newTestInfo(t) - client, d := tInfo.client, tInfo.ddl + client := tInfo.client defer tInfo.Close(t) - ownerManager := d.OwnerManager() + + t.Run("retry on session closed before election", func(t *testing.T) { + ownerMgr := owner.NewOwnerManager(context.Background(), client, "ddl", "1", "/owner/key") + defer ownerMgr.Close() + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/owner/beforeElectionCampaign", + func(se *concurrency.Session) { + if counter.Add(1) <= 1 { + require.NoError(t, se.Close()) + } + }, + ) + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) + require.True(t, isOwner) + require.EqualValues(t, 2, counter.Load()) + }) + + t.Run("retry on lease revoked before election", func(t *testing.T) { + ownerMgr := owner.NewOwnerManager(context.Background(), client, "ddl", "1", "/owner/key") + defer ownerMgr.Close() + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/owner/beforeElectionCampaign", + func(se *concurrency.Session) { + if counter.Add(1) <= 2 { + _, err := client.Revoke(context.Background(), se.Lease()) + require.NoError(t, err) + } + }, + ) + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) + require.True(t, isOwner) + require.EqualValues(t, 3, counter.Load()) + }) + + ownerMgr := owner.NewOwnerManager(context.Background(), client, "ddl", "1", "/owner/key") lis := &listener{} - ownerManager.SetListener(lis) - require.NoError(t, ownerManager.CampaignOwner()) - isOwner := checkOwner(d, true) + ownerMgr.SetListener(lis) + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) require.True(t, isOwner) require.True(t, lis.val.Load()) // test for newSession failed ctx := context.Background() ctx, cancel := context.WithCancel(ctx) - manager := owner.NewOwnerManager(ctx, client, "ddl", "ddl_id", DDLOwnerKey) + ownerMgr2 := owner.NewOwnerManager(ctx, client, "ddl", "2", "/owner/key") + defer ownerMgr2.Close() cancel() - err := manager.CampaignOwner() + err := ownerMgr2.CampaignOwner() comment := fmt.Sprintf("campaigned result don't match, err %v", err) require.True(t, terror.ErrorEqual(err, context.Canceled) || terror.ErrorEqual(err, context.DeadlineExceeded), comment) - isOwner = checkOwner(d, true) + isOwner = checkOwner(ownerMgr, true) require.True(t, isOwner) // The test is used to exit campaign loop. - ownerManager.Cancel() - isOwner = checkOwner(d, false) + ownerMgr.Close() + isOwner = checkOwner(ownerMgr, false) require.False(t, isOwner) require.False(t, lis.val.Load()) time.Sleep(200 * time.Millisecond) // err is ok to be not nil since we canceled the manager. - ownerID, _ := manager.GetOwnerID(ctx) + ownerID, _ := ownerMgr2.GetOwnerID(ctx) require.Equal(t, "", ownerID) - op, _ := owner.GetOwnerOpValue(ctx, client, DDLOwnerKey, "log prefix") + op, _ := owner.GetOwnerOpValue(ctx, client, "/owner/key") require.Equal(t, op, owner.OpNone) } @@ -148,37 +195,38 @@ func TestSetAndGetOwnerOpValue(t *testing.T) { tInfo := newTestInfo(t) defer tInfo.Close(t) - require.NoError(t, tInfo.ddl.OwnerManager().CampaignOwner()) - isOwner := checkOwner(tInfo.ddl, true) + ownerMgr := owner.NewOwnerManager(context.Background(), tInfo.client, "ddl", "1", "/owner/key") + defer ownerMgr.Close() + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) require.True(t, isOwner) // test set/get owner info - manager := tInfo.ddl.OwnerManager() - ownerID, err := manager.GetOwnerID(context.Background()) + ownerID, err := ownerMgr.GetOwnerID(context.Background()) require.NoError(t, err) - require.Equal(t, tInfo.ddl.GetID(), ownerID) - op, err := owner.GetOwnerOpValue(context.Background(), tInfo.client, DDLOwnerKey, "log prefix") + require.Equal(t, ownerMgr.ID(), ownerID) + op, err := owner.GetOwnerOpValue(context.Background(), tInfo.client, "/owner/key") require.NoError(t, err) require.Equal(t, op, owner.OpNone) require.False(t, op.IsSyncedUpgradingState()) - err = manager.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) + err = ownerMgr.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) require.NoError(t, err) - op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, DDLOwnerKey, "log prefix") + op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, "/owner/key") require.NoError(t, err) require.Equal(t, op, owner.OpSyncUpgradingState) require.True(t, op.IsSyncedUpgradingState()) // update the same as the original value - err = manager.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) + err = ownerMgr.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) require.NoError(t, err) - op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, DDLOwnerKey, "log prefix") + op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, "/owner/key") require.NoError(t, err) require.Equal(t, op, owner.OpSyncUpgradingState) require.True(t, op.IsSyncedUpgradingState()) // test del owner key when SetOwnerOpValue require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/owner/MockDelOwnerKey", `return("delOwnerKeyAndNotOwner")`)) - err = manager.SetOwnerOpValue(context.Background(), owner.OpNone) + err = ownerMgr.SetOwnerOpValue(context.Background(), owner.OpNone) require.Error(t, err, "put owner key failed, cmp is false") - op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, DDLOwnerKey, "log prefix") + op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, "/owner/key") require.NotNil(t, err) require.Equal(t, concurrency.ErrElectionNoLeader.Error(), err.Error()) require.Equal(t, op, owner.OpNone) @@ -186,17 +234,17 @@ func TestSetAndGetOwnerOpValue(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/owner/MockDelOwnerKey")) // Let ddl run for the owner again. - require.NoError(t, tInfo.ddl.OwnerManager().CampaignOwner()) - isOwner = checkOwner(tInfo.ddl, true) + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner = checkOwner(ownerMgr, true) require.True(t, isOwner) // Mock the manager become not owner because the owner is deleted(like TTL is timeout). // And then the manager campaigns the owner again, and become the owner. require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/owner/MockDelOwnerKey", `return("onlyDelOwnerKey")`)) - err = manager.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) + err = ownerMgr.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) require.Error(t, err, "put owner key failed, cmp is false") - isOwner = checkOwner(tInfo.ddl, true) + isOwner = checkOwner(ownerMgr, true) require.True(t, isOwner) - op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, DDLOwnerKey, "log prefix") + op, err = owner.GetOwnerOpValue(context.Background(), tInfo.client, "/owner/key") require.NoError(t, err) require.Equal(t, op, owner.OpNone) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/owner/MockDelOwnerKey")) @@ -209,24 +257,23 @@ func TestGetOwnerOpValueBeforeSet(t *testing.T) { } require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/owner/MockNotSetOwnerOp", `return(true)`)) - _, dom := testkit.CreateMockStoreAndDomain(t) - ddl := dom.DDL() - require.NoError(t, ddl.OwnerManager().CampaignOwner()) - isOwner := checkOwner(ddl, true) + ownerMgr := owner.NewMockManager(context.Background(), "1", nil, "/owner/key") + defer ownerMgr.Close() + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) require.True(t, isOwner) // test set/get owner info - manager := ddl.OwnerManager() - ownerID, err := manager.GetOwnerID(context.Background()) + ownerID, err := ownerMgr.GetOwnerID(context.Background()) require.NoError(t, err) - require.Equal(t, ddl.GetID(), ownerID) - op, err := owner.GetOwnerOpValue(context.Background(), nil, DDLOwnerKey, "log prefix") + require.Equal(t, ownerMgr.ID(), ownerID) + op, err := owner.GetOwnerOpValue(context.Background(), nil, "/owner/key") require.NoError(t, err) require.Equal(t, op, owner.OpNone) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/owner/MockNotSetOwnerOp")) - err = manager.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) + err = ownerMgr.SetOwnerOpValue(context.Background(), owner.OpSyncUpgradingState) require.NoError(t, err) - op, err = owner.GetOwnerOpValue(context.Background(), nil, DDLOwnerKey, "log prefix") + op, err = owner.GetOwnerOpValue(context.Background(), nil, "/owner/key") require.NoError(t, err) require.Equal(t, op, owner.OpSyncUpgradingState) } @@ -244,62 +291,41 @@ func TestCluster(t *testing.T) { }() tInfo := newTestInfo(t) - store, cluster, d := tInfo.store, tInfo.cluster, tInfo.ddl defer tInfo.Close(t) - require.NoError(t, d.OwnerManager().CampaignOwner()) + ownerMgr := owner.NewOwnerManager(context.Background(), tInfo.client, "ddl", "1", "/owner/key") + require.NoError(t, ownerMgr.CampaignOwner()) - isOwner := checkOwner(d, true) + isOwner := checkOwner(ownerMgr, true) require.True(t, isOwner) - cli1 := cluster.Client(1) - ic2 := infoschema.NewCache(nil, 2) - ic2.Insert(infoschema.MockInfoSchemaWithSchemaVer(nil, 0), 0) - d1, _ := NewDDL( - context.Background(), - WithEtcdClient(cli1), - WithStore(store), - WithLease(testLease), - WithInfoCache(ic2), - ) - require.NoError(t, d1.OwnerManager().CampaignOwner()) - - isOwner = checkOwner(d1, false) + ownerMgr2 := owner.NewOwnerManager(context.Background(), tInfo.client, "ddl", "2", "/owner/key") + require.NoError(t, ownerMgr2.CampaignOwner()) + + isOwner = checkOwner(ownerMgr2, false) require.False(t, isOwner) // Delete the leader key, the d1 become the owner. - cliRW := cluster.Client(2) - err := deleteLeader(cliRW, DDLOwnerKey) + err := deleteLeader(tInfo.client, "/owner/key") require.NoError(t, err) - isOwner = checkOwner(d, false) + isOwner = checkOwner(ownerMgr, false) require.False(t, isOwner) - d.OwnerManager().Cancel() + ownerMgr.Close() // d3 (not owner) stop - cli3 := cluster.Client(3) - ic3 := infoschema.NewCache(nil, 2) - ic3.Insert(infoschema.MockInfoSchemaWithSchemaVer(nil, 0), 0) - d3, _ := NewDDL( - context.Background(), - WithEtcdClient(cli3), - WithStore(store), - WithLease(testLease), - WithInfoCache(ic3), - ) - require.NoError(t, d3.OwnerManager().CampaignOwner()) - - isOwner = checkOwner(d3, false) + ownerMgr3 := owner.NewOwnerManager(context.Background(), tInfo.client, "ddl", "3", "/owner/key") + require.NoError(t, ownerMgr3.CampaignOwner()) + + isOwner = checkOwner(ownerMgr3, false) require.False(t, isOwner) - d3.OwnerManager().Cancel() + ownerMgr3.Close() // Cancel the owner context, there is no owner. - d1.OwnerManager().Cancel() + ownerMgr2.Close() - logPrefix := fmt.Sprintf("[ddl] %s ownerManager %s", DDLOwnerKey, "useless id") - logCtx := logutil.WithKeyValue(context.Background(), "owner info", logPrefix) - _, _, err = owner.GetOwnerKeyInfo(context.Background(), logCtx, cliRW, DDLOwnerKey, "useless id") + _, _, err = owner.GetOwnerKeyInfo(context.Background(), tInfo.client, "/owner/key", "useless id") require.Truef(t, terror.ErrorEqual(err, concurrency.ErrElectionNoLeader), "get owner info result don't match, err %v", err) - op, err := owner.GetOwnerOpValue(context.Background(), cliRW, DDLOwnerKey, logPrefix) + op, err := owner.GetOwnerOpValue(context.Background(), tInfo.client, "/owner/key") require.Truef(t, terror.ErrorEqual(err, concurrency.ErrElectionNoLeader), "get owner info result don't match, err %v", err) require.Equal(t, op, owner.OpNone) } @@ -311,18 +337,19 @@ func TestWatchOwner(t *testing.T) { integration.BeforeTestExternal(t) tInfo := newTestInfo(t) - client, d := tInfo.client, tInfo.ddl + client := tInfo.client defer tInfo.Close(t) - ownerManager := d.OwnerManager() + ownerMgr := owner.NewOwnerManager(context.Background(), client, "ddl", "1", "/owner/key") + defer ownerMgr.Close() lis := &listener{} - ownerManager.SetListener(lis) - require.NoError(t, ownerManager.CampaignOwner()) - isOwner := checkOwner(d, true) + ownerMgr.SetListener(lis) + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) require.True(t, isOwner) // get the owner id. ctx := context.Background() - id, err := ownerManager.GetOwnerID(ctx) + id, err := ownerMgr.GetOwnerID(ctx) require.NoError(t, err) // create etcd session. @@ -330,7 +357,7 @@ func TestWatchOwner(t *testing.T) { require.NoError(t, err) // test the GetOwnerKeyInfo() - ownerKey, currRevision, err := owner.GetOwnerKeyInfo(ctx, context.TODO(), client, DDLOwnerKey, id) + ownerKey, currRevision, err := owner.GetOwnerKeyInfo(ctx, client, "/owner/key", id) require.NoError(t, err) // watch the ownerKey. @@ -339,7 +366,7 @@ func TestWatchOwner(t *testing.T) { watchDone := make(chan bool) watched := false go func() { - watchErr := owner.WatchOwnerForTest(ctx, ownerManager, session, ownerKey, currRevision) + watchErr := owner.WatchOwnerForTest(ctx, ownerMgr, session, ownerKey, currRevision) require.NoError(t, watchErr) watchDone <- true }() @@ -351,14 +378,14 @@ func TestWatchOwner(t *testing.T) { require.False(t, watched) // delete the owner, and can watch the DELETE event. - err = deleteLeader(client, DDLOwnerKey) + err = deleteLeader(client, "/owner/key") require.NoError(t, err) watched = <-watchDone require.True(t, watched) // the ownerKey has been deleted, watch ownerKey again, it can be watched. go func() { - watchErr := owner.WatchOwnerForTest(ctx, ownerManager, session, ownerKey, currRevision) + watchErr := owner.WatchOwnerForTest(ctx, ownerMgr, session, ownerKey, currRevision) require.NoError(t, watchErr) watchDone <- true }() @@ -374,47 +401,47 @@ func TestWatchOwnerAfterDeleteOwnerKey(t *testing.T) { integration.BeforeTestExternal(t) tInfo := newTestInfo(t) - client, d := tInfo.client, tInfo.ddl + client := tInfo.client defer tInfo.Close(t) - ownerManager := d.OwnerManager() + ownerMgr := owner.NewOwnerManager(context.Background(), client, "ddl", "1", "/owner/key") + defer ownerMgr.Close() lis := &listener{} - ownerManager.SetListener(lis) - require.NoError(t, ownerManager.CampaignOwner()) - isOwner := checkOwner(d, true) + ownerMgr.SetListener(lis) + require.NoError(t, ownerMgr.CampaignOwner()) + isOwner := checkOwner(ownerMgr, true) require.True(t, isOwner) // get the owner id. ctx := context.Background() - id, err := ownerManager.GetOwnerID(ctx) + id, err := ownerMgr.GetOwnerID(ctx) require.NoError(t, err) session, err := concurrency.NewSession(client) require.NoError(t, err) // get the ownkey informations. - ownerKey, currRevision, err := owner.GetOwnerKeyInfo(ctx, context.TODO(), client, DDLOwnerKey, id) + ownerKey, currRevision, err := owner.GetOwnerKeyInfo(ctx, client, "/owner/key", id) require.NoError(t, err) // delete the ownerkey - err = deleteLeader(client, DDLOwnerKey) + err = deleteLeader(client, "/owner/key") require.NoError(t, err) // watch the ownerKey with the current revisoin. watchDone := make(chan bool) go func() { - watchErr := owner.WatchOwnerForTest(ctx, ownerManager, session, ownerKey, currRevision) + watchErr := owner.WatchOwnerForTest(ctx, ownerMgr, session, ownerKey, currRevision) require.NoError(t, watchErr) watchDone <- true }() <-watchDone } -func checkOwner(d DDL, fbVal bool) (isOwner bool) { - manager := d.OwnerManager() +func checkOwner(ownerMgr owner.Manager, fbVal bool) (isOwner bool) { // The longest to wait for 30 seconds to // make sure that campaigning owners is completed. for i := 0; i < 6000; i++ { time.Sleep(5 * time.Millisecond) - isOwner = manager.IsOwner() + isOwner = ownerMgr.IsOwner() if isOwner == fbVal { break } @@ -446,13 +473,13 @@ func TestImmediatelyCancel(t *testing.T) { integration.BeforeTestExternal(t) tInfo := newTestInfo(t) - d := tInfo.ddl defer tInfo.Close(t) - ownerManager := d.OwnerManager() + ownerMgr := owner.NewOwnerManager(context.Background(), tInfo.client, "ddl", "1", "/owner/key") + defer ownerMgr.Close() for i := 0; i < 10; i++ { - err := ownerManager.CampaignOwner() + err := ownerMgr.CampaignOwner() require.NoError(t, err) - ownerManager.CampaignCancel() + ownerMgr.CampaignCancel() } } diff --git a/pkg/owner/mock.go b/pkg/owner/mock.go index f653b51e0e119..6ea2c8f6b3baa 100644 --- a/pkg/owner/mock.go +++ b/pkg/owner/mock.go @@ -106,8 +106,8 @@ func (m *mockManager) RetireOwner() { } } -// Cancel implements Manager.Cancel interface. -func (m *mockManager) Cancel() { +// Close implements Manager.Close interface. +func (m *mockManager) Close() { m.cancel() m.wg.Wait() logutil.BgLogger().Info("owner manager is canceled", @@ -171,11 +171,6 @@ func (m *mockManager) ResignOwner(_ context.Context) error { return nil } -// RequireOwner implements Manager.RequireOwner interface. -func (*mockManager) RequireOwner(context.Context) error { - return nil -} - // SetListener implements Manager.SetListener interface. func (m *mockManager) SetListener(listener Listener) { m.listener = listener @@ -190,6 +185,13 @@ func (m *mockManager) CampaignCancel() { m.campaignDone <- struct{}{} } +func (m *mockManager) BreakCampaignLoop() { + // in uni-store which mostly used in test, there is no need to make sure the + // campaign session is created once, so we can just call Close, but it DOES violate + // the contract of Manager interface. + m.Close() +} + func mockDelOwnerKey(mockCal, ownerKey string, m *ownerManager) error { checkIsOwner := func(m *ownerManager, checkTrue bool) error { // 5s diff --git a/pkg/parser/ast/dml.go b/pkg/parser/ast/dml.go index 898ba923e0fba..8ba60c26f91a7 100644 --- a/pkg/parser/ast/dml.go +++ b/pkg/parser/ast/dml.go @@ -282,6 +282,11 @@ type TableName struct { TableSample *TableSample // AS OF is used to see the data as it was at a specific point in time. AsOf *AsOfClause + // IsAlias is true if this table name is an alias. + // sometime, we need to distinguish the table name is an alias or not. + // for example ```delete tt1 from t1 tt1,(select max(id) id from t2)tt2 where tt1.id<=tt2.id``` + // ```tt1``` is a alias name. so we need to set IsAlias to true and restore the table name without database name. + IsAlias bool } func (*TableName) resultSet() {} @@ -293,7 +298,7 @@ func (n *TableName) restoreName(ctx *format.RestoreCtx) { if n.Schema.String() != "" { ctx.WriteName(n.Schema.String()) ctx.WritePlain(".") - } else if ctx.DefaultDB != "" { + } else if ctx.DefaultDB != "" && !n.IsAlias { // Try CTE, for a CTE table name, we shouldn't write the database name. if !ctx.IsCTETableName(n.Name.L) { ctx.WriteName(ctx.DefaultDB) diff --git a/pkg/parser/ast/misc.go b/pkg/parser/ast/misc.go index c9abbb1a84dec..76bedaf1c756d 100644 --- a/pkg/parser/ast/misc.go +++ b/pkg/parser/ast/misc.go @@ -61,6 +61,7 @@ var ( _ StmtNode = &PlanReplayerStmt{} _ StmtNode = &CompactTableStmt{} _ StmtNode = &SetResourceGroupStmt{} + _ StmtNode = &TrafficStmt{} _ Node = &PrivElem{} _ Node = &VariableAssignment{} @@ -415,6 +416,112 @@ func (n *PlanReplayerStmt) Accept(v Visitor) (Node, bool) { return v.Leave(n) } +// TrafficOpType is traffic operation type. +type TrafficOpType int + +const ( + TrafficOpCapture TrafficOpType = iota + TrafficOpReplay + TrafficOpShow + TrafficOpCancel +) + +// TrafficOptionType is traffic option type. +type TrafficOptionType int + +const ( + // capture options + TrafficOptionDuration TrafficOptionType = iota + TrafficOptionEncryptionMethod + TrafficOptionCompress + // replay options + TrafficOptionUsername + TrafficOptionPassword + TrafficOptionSpeed + TrafficOptionReadOnly +) + +// TrafficStmt is traffic operation statement. +type TrafficStmt struct { + stmtNode + OpType TrafficOpType + Options []*TrafficOption + Dir string +} + +// TrafficOption is traffic option. +type TrafficOption struct { + OptionType TrafficOptionType + FloatValue ValueExpr + StrValue string + BoolValue bool +} + +// Restore implements Node interface. +func (n *TrafficStmt) Restore(ctx *format.RestoreCtx) error { + switch n.OpType { + case TrafficOpCapture: + ctx.WriteKeyWord("TRAFFIC CAPTURE TO ") + ctx.WriteString(n.Dir) + for _, option := range n.Options { + ctx.WritePlain(" ") + switch option.OptionType { + case TrafficOptionDuration: + ctx.WriteKeyWord("DURATION ") + ctx.WritePlain("= ") + ctx.WriteString(option.StrValue) + case TrafficOptionEncryptionMethod: + ctx.WriteKeyWord("ENCRYPTION_METHOD ") + ctx.WritePlain("= ") + ctx.WriteString(option.StrValue) + case TrafficOptionCompress: + ctx.WriteKeyWord("COMPRESS ") + ctx.WritePlain("= ") + ctx.WritePlain(strings.ToUpper(fmt.Sprintf("%v", option.BoolValue))) + } + } + case TrafficOpReplay: + ctx.WriteKeyWord("TRAFFIC REPLAY FROM ") + ctx.WriteString(n.Dir) + for _, option := range n.Options { + ctx.WritePlain(" ") + switch option.OptionType { + case TrafficOptionUsername: + ctx.WriteKeyWord("USER ") + ctx.WritePlain("= ") + ctx.WriteString(option.StrValue) + case TrafficOptionPassword: + ctx.WriteKeyWord("PASSWORD ") + ctx.WritePlain("= ") + ctx.WriteString(option.StrValue) + case TrafficOptionSpeed: + ctx.WriteKeyWord("SPEED ") + ctx.WritePlain("= ") + ctx.WritePlainf("%v", option.FloatValue.GetValue()) + case TrafficOptionReadOnly: + ctx.WriteKeyWord("READONLY ") + ctx.WritePlain("= ") + ctx.WritePlain(strings.ToUpper(fmt.Sprintf("%v", option.BoolValue))) + } + } + case TrafficOpShow: + ctx.WriteKeyWord("SHOW TRAFFIC JOBS") + case TrafficOpCancel: + ctx.WriteKeyWord("CANCEL TRAFFIC JOBS") + } + return nil +} + +// Accept implements Node Accept interface. +func (n *TrafficStmt) Accept(v Visitor) (Node, bool) { + newNode, skipChildren := v.Enter(n) + if skipChildren { + return v.Leave(newNode) + } + n = newNode.(*TrafficStmt) + return v.Leave(n) +} + type CompactReplicaKind string const ( @@ -2469,6 +2576,7 @@ const ( AdminSetBDRRole AdminShowBDRRole AdminUnsetBDRRole + AdminAlterDDLJob ) // HandleRange represents a range where handle value >= Begin and < End. @@ -2557,6 +2665,25 @@ type LimitSimple struct { Offset uint64 } +type AlterJobOption struct { + // Name is the name of the option, will be converted to lower case during parse. + Name string + // only literal is allowed, we use ExprNode to support negative number + Value ExprNode +} + +func (l *AlterJobOption) Restore(ctx *format.RestoreCtx) error { + if l.Value == nil { + ctx.WritePlain(l.Name) + } else { + ctx.WritePlain(l.Name + " = ") + if err := l.Value.Restore(ctx); err != nil { + return errors.Annotatef(err, "An error occurred while restore AlterJobOption") + } + } + return nil +} + // AdminStmt is the struct for Admin statement. type AdminStmt struct { stmtNode @@ -2567,13 +2694,14 @@ type AdminStmt struct { JobIDs []int64 JobNumber int64 - HandleRanges []HandleRange - ShowSlow *ShowSlow - Plugins []string - Where ExprNode - StatementScope StatementScope - LimitSimple LimitSimple - BDRRole BDRRole + HandleRanges []HandleRange + ShowSlow *ShowSlow + Plugins []string + Where ExprNode + StatementScope StatementScope + LimitSimple LimitSimple + BDRRole BDRRole + AlterJobOptions []*AlterJobOption } // Restore implements Node interface. @@ -2737,6 +2865,18 @@ func (n *AdminStmt) Restore(ctx *format.RestoreCtx) error { ctx.WriteKeyWord("SHOW BDR ROLE") case AdminUnsetBDRRole: ctx.WriteKeyWord("UNSET BDR ROLE") + case AdminAlterDDLJob: + ctx.WriteKeyWord("ALTER DDL JOBS ") + ctx.WritePlainf("%d", n.JobNumber) + for i, option := range n.AlterJobOptions { + if i != 0 { + ctx.WritePlain(",") + } + ctx.WritePlain(" ") + if err := option.Restore(ctx); err != nil { + return errors.Annotatef(err, "An error occurred while restore AdminStmt.AlterJobOptions[%d]", i) + } + } default: return errors.New("Unsupported AdminStmt type") } diff --git a/pkg/parser/misc.go b/pkg/parser/misc.go index a115e13ad0b13..8254d18128e9e 100644 --- a/pkg/parser/misc.go +++ b/pkg/parser/misc.go @@ -262,6 +262,7 @@ var tokenMap = map[string]int{ "COMMIT": commit, "COMMITTED": committed, "COMPACT": compact, + "COMPRESS": compress, "COMPRESSED": compressed, "COMPRESSION": compression, "CONCURRENCY": concurrency, @@ -647,6 +648,7 @@ var tokenMap = map[string]int{ "RANGE": rangeKwd, "RATE_LIMIT": rateLimit, "READ": read, + "READ_ONLY": readOnly, "REAL": realType, "REBUILD": rebuild, "RECENT": recent, @@ -667,6 +669,7 @@ var tokenMap = map[string]int{ "REPEAT": repeat, "REPEATABLE": repeatable, "REPLACE": replace, + "REPLAY": replay, "REPLAYER": replayer, "REPLICA": replica, "REPLICAS": replicas, @@ -741,6 +744,7 @@ var tokenMap = map[string]int{ "SOME": some, "SOURCE": source, "SPATIAL": spatial, + "SPEED": speed, "SPLIT": split, "SQL_BIG_RESULT": sqlBigResult, "SQL_BUFFER_RESULT": sqlBufferResult, @@ -847,6 +851,7 @@ var tokenMap = map[string]int{ "TPCC": tpcc, "TRACE": trace, "TRADITIONAL": traditional, + "TRAFFIC": traffic, "TRAILING": trailing, "TRANSACTION": transaction, "TRIGGER": trigger, diff --git a/pkg/parser/model/BUILD.bazel b/pkg/parser/model/BUILD.bazel index 13c7c1aaa5127..af539c1b09da7 100644 --- a/pkg/parser/model/BUILD.bazel +++ b/pkg/parser/model/BUILD.bazel @@ -5,7 +5,10 @@ go_library( srcs = ["model.go"], importpath = "github.com/pingcap/tidb/pkg/parser/model", visibility = ["//visibility:public"], - deps = ["@com_github_pingcap_errors//:errors"], + deps = [ + "//pkg/parser/types", + "@com_github_pingcap_errors//:errors", + ], ) go_test( diff --git a/pkg/parser/model/model.go b/pkg/parser/model/model.go index 645ddb3f5da85..c4eb8058dad3b 100644 --- a/pkg/parser/model/model.go +++ b/pkg/parser/model/model.go @@ -19,6 +19,7 @@ import ( "unsafe" "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/parser/types" ) // TableLockType is the type of the table lock. @@ -257,6 +258,26 @@ type CIStr struct { L string `json:"L"` // Lower case string. } +// Hash64 implements HashEquals interface. +func (cis *CIStr) Hash64(h types.IHasher) { + h.HashString(cis.L) +} + +// Equals implements HashEquals interface. +func (cis *CIStr) Equals(other any) bool { + cis2, ok := other.(*CIStr) + if !ok { + return false + } + if cis == nil { + return cis2 == nil + } + if cis2 == nil { + return false + } + return cis.L == cis2.L +} + // String implements fmt.Stringer interface. func (cis CIStr) String() string { return cis.O diff --git a/pkg/parser/mysql/errcode.go b/pkg/parser/mysql/errcode.go index 05d5dc3e69d9a..bfbd196138de9 100644 --- a/pkg/parser/mysql/errcode.go +++ b/pkg/parser/mysql/errcode.go @@ -898,6 +898,7 @@ const ( ErrInvalidJSONText = 3140 ErrInvalidJSONTextInParam = 3141 ErrInvalidJSONPath = 3143 + ErrInvalidJSONCharset = 3144 ErrInvalidTypeForJSON = 3146 ErrInvalidJSONPathWildcard = 3149 ErrInvalidJSONContainsPathType = 3150 diff --git a/pkg/parser/mysql/errname.go b/pkg/parser/mysql/errname.go index f757f825da43e..845c50a21bcec 100644 --- a/pkg/parser/mysql/errname.go +++ b/pkg/parser/mysql/errname.go @@ -907,6 +907,7 @@ var MySQLErrName = map[uint16]*ErrMessage{ ErrInvalidJSONText: Message("Invalid JSON text: %-.192s", nil), ErrInvalidJSONTextInParam: Message("Invalid JSON text in argument %d to function %s: \"%s\" at position %d.", nil), ErrInvalidJSONPath: Message("Invalid JSON path expression %s.", nil), + ErrInvalidJSONCharset: Message("Cannot create a JSON value from a string with CHARACTER SET '%s'.", nil), ErrInvalidTypeForJSON: Message("Invalid data type for JSON data in argument %d to function %s; a JSON string or JSON type is required.", nil), ErrInvalidJSONPathWildcard: Message("In this situation, path expressions may not contain the * and ** tokens or an array range.", nil), ErrInvalidJSONContainsPathType: Message("The second argument can only be either 'one' or 'all'.", nil), diff --git a/pkg/parser/mysql/state.go b/pkg/parser/mysql/state.go index 2cbc6f1d2b168..307965d08838a 100644 --- a/pkg/parser/mysql/state.go +++ b/pkg/parser/mysql/state.go @@ -254,6 +254,7 @@ var MySQLState = map[uint16]string{ ErrInvalidJSONText: "22032", ErrInvalidJSONTextInParam: "22032", ErrInvalidJSONPath: "42000", + ErrInvalidJSONCharset: "22032", ErrInvalidJSONData: "22032", ErrInvalidJSONPathWildcard: "42000", ErrJSONUsedAsKey: "42000", diff --git a/pkg/parser/parser.go b/pkg/parser/parser.go index 553064150b402..8e71e1118dfaf 100644 --- a/pkg/parser/parser.go +++ b/pkg/parser/parser.go @@ -56,13 +56,13 @@ type yyXError struct { } const ( - yyDefault = 58212 + yyDefault = 58217 yyEOFCode = 57344 account = 57595 action = 57596 add = 57363 addDate = 57977 - admin = 58099 + admin = 58104 advise = 57597 after = 57598 against = 57599 @@ -74,7 +74,7 @@ const ( analyze = 57366 and = 57367 andand = 57358 - andnot = 58172 + andnot = 58177 any = 57603 apply = 57604 approxCountDistinct = 57978 @@ -84,7 +84,7 @@ const ( asc = 57370 ascii = 57605 asof = 57347 - assignmentEq = 58173 + assignmentEq = 58178 attribute = 57606 attributes = 57607 autoIdCache = 57608 @@ -97,7 +97,7 @@ const ( background = 57980 backup = 57615 backups = 57616 - batch = 58100 + batch = 58105 bdr = 57617 begin = 57618 bernoulli = 57619 @@ -109,7 +109,7 @@ const ( bindings = 57621 binlog = 57623 bitAnd = 57981 - bitLit = 58171 + bitLit = 58176 bitOr = 57982 bitType = 57624 bitXor = 57983 @@ -122,44 +122,44 @@ const ( br = 57985 briefType = 57986 btree = 57628 - buckets = 58101 - builtinApproxCountDistinct = 58102 - builtinApproxPercentile = 58103 - builtinBitAnd = 58104 - builtinBitOr = 58105 - builtinBitXor = 58106 - builtinCast = 58107 - builtinCount = 58108 - builtinCurDate = 58109 - builtinCurTime = 58110 - builtinDateAdd = 58111 - builtinDateSub = 58112 - builtinExtract = 58113 - builtinGroupConcat = 58114 - builtinMax = 58115 - builtinMin = 58116 - builtinNow = 58117 - builtinPosition = 58118 - builtinStddevPop = 58120 - builtinStddevSamp = 58121 - builtinSubstring = 58122 - builtinSum = 58123 - builtinSysDate = 58124 - builtinTranslate = 58125 - builtinTrim = 58126 - builtinUser = 58127 - builtinVarPop = 58128 - builtinVarSamp = 58129 - builtins = 58119 + buckets = 58106 + builtinApproxCountDistinct = 58107 + builtinApproxPercentile = 58108 + builtinBitAnd = 58109 + builtinBitOr = 58110 + builtinBitXor = 58111 + builtinCast = 58112 + builtinCount = 58113 + builtinCurDate = 58114 + builtinCurTime = 58115 + builtinDateAdd = 58116 + builtinDateSub = 58117 + builtinExtract = 58118 + builtinGroupConcat = 58119 + builtinMax = 58120 + builtinMin = 58121 + builtinNow = 58122 + builtinPosition = 58123 + builtinStddevPop = 58125 + builtinStddevSamp = 58126 + builtinSubstring = 58127 + builtinSum = 58128 + builtinSysDate = 58129 + builtinTranslate = 58130 + builtinTrim = 58131 + builtinUser = 58132 + builtinVarPop = 58133 + builtinVarSamp = 58134 + builtins = 58124 burstable = 57987 by = 57376 byteType = 57629 cache = 57630 calibrate = 57631 call = 57377 - cancel = 58130 + cancel = 58135 capture = 57632 - cardinality = 58131 + cardinality = 58136 cascade = 57378 cascaded = 57633 caseKwd = 57379 @@ -181,18 +181,19 @@ const ( close = 57644 cluster = 57645 clustered = 57646 - cmSketch = 58132 + cmSketch = 58137 coalesce = 57647 collate = 57384 collation = 57648 column = 57385 columnFormat = 57650 - columnStatsUsage = 58133 + columnStatsUsage = 58138 columns = 57649 comment = 57651 commit = 57652 committed = 57653 compact = 57654 + compress = 57989 compressed = 57655 compression = 57656 compressionLevel = 57657 @@ -203,16 +204,16 @@ const ( consistency = 57662 consistent = 57663 constraint = 57386 - constraints = 57989 + constraints = 57990 context = 57664 continueKwd = 57387 convert = 57388 - cooldown = 57990 - copyKwd = 57991 - correlation = 58134 + cooldown = 57991 + copyKwd = 57992 + correlation = 58139 cpu = 57665 create = 57389 - createTableSelect = 58196 + createTableSelect = 58201 cross = 57390 csvBackslashEscape = 57666 csvDelimiter = 57667 @@ -222,8 +223,8 @@ const ( csvSeparator = 57671 csvTrimLastSeparators = 57672 cumeDist = 57391 - curDate = 57992 - curTime = 57993 + curDate = 57993 + curTime = 57994 current = 57673 currentDate = 57392 currentRole = 57393 @@ -235,8 +236,8 @@ const ( data = 57675 database = 57398 databases = 57399 - dateAdd = 57994 - dateSub = 57995 + dateAdd = 57995 + dateSub = 57996 dateType = 57676 datetimeType = 57677 day = 57678 @@ -244,20 +245,20 @@ const ( dayMicrosecond = 57401 dayMinute = 57402 daySecond = 57403 - ddl = 58135 + ddl = 58140 deallocate = 57679 - decLit = 58168 + decLit = 58173 decimalType = 57404 declare = 57680 defaultKwd = 57405 - defined = 57996 + defined = 57997 definer = 57681 delayKeyWrite = 57682 delayed = 57406 deleteKwd = 57407 denseRank = 57408 - dependency = 58136 - depth = 58137 + dependency = 58141 + depth = 58142 desc = 57409 describe = 57410 digest = 57683 @@ -270,19 +271,19 @@ const ( distinctRow = 57412 div = 57413 do = 57689 - dotType = 57997 + dotType = 57998 doubleAtIdentifier = 57355 doubleType = 57414 drop = 57415 - dry = 58138 - dryRun = 57998 + dry = 58143 + dryRun = 57999 dual = 57416 - dump = 57999 + dump = 58000 duplicate = 57690 dynamic = 57691 elseIfKwd = 57418 elseKwd = 57417 - empty = 58186 + empty = 58191 enable = 57692 enabled = 57693 enclosed = 57419 @@ -290,12 +291,12 @@ const ( encryptionKeyFile = 57695 encryptionMethod = 57696 end = 57697 - endTime = 58000 + endTime = 58001 enforced = 57698 engine = 57699 engines = 57700 enum = 57701 - eq = 58174 + eq = 58179 yyErrCode = 57345 errorKwd = 57702 escape = 57704 @@ -303,20 +304,20 @@ const ( event = 57705 events = 57706 evolve = 57707 - exact = 58001 + exact = 58002 except = 57421 exchange = 57708 exclusive = 57709 - execElapsed = 58002 + execElapsed = 58003 execute = 57710 exists = 57422 exit = 57423 expansion = 57711 expire = 57712 explain = 57424 - exprPushdownBlacklist = 58003 + exprPushdownBlacklist = 58004 extended = 57713 - extract = 58004 + extract = 58005 failedLoginAttempts = 57714 falseKwd = 57425 faultsSym = 57715 @@ -326,15 +327,15 @@ const ( first = 57718 firstValue = 57427 fixed = 57719 - flashback = 58005 + flashback = 58006 float4Type = 57429 float8Type = 57430 - floatLit = 58167 + floatLit = 58172 floatType = 57428 flush = 57720 - follower = 58006 - followerConstraints = 58007 - followers = 58008 + follower = 58007 + followerConstraints = 58008 + followers = 58009 following = 57721 forKwd = 57431 force = 57432 @@ -343,34 +344,34 @@ const ( found = 57723 from = 57434 full = 57724 - fullBackupStorage = 58009 + fullBackupStorage = 58010 fulltext = 57435 function = 57725 - gcTTL = 58010 - ge = 58175 + gcTTL = 58011 + ge = 58180 general = 57726 generated = 57436 - getFormat = 58011 + getFormat = 58012 global = 57727 grant = 57437 grants = 57728 group = 57438 - groupConcat = 58012 + groupConcat = 58013 groups = 57439 handler = 57729 hash = 57730 having = 57440 help = 57731 - hexLit = 58170 - high = 58013 + hexLit = 58175 + high = 58014 highPriority = 57441 - higherThanComma = 58211 - higherThanParenthese = 58205 + higherThanComma = 58216 + higherThanParenthese = 58210 hintComment = 57357 histogram = 57732 - histogramsInFlight = 58139 + histogramsInFlight = 58144 history = 57733 - hnsw = 58032 + hnsw = 58033 hosts = 57734 hour = 57735 hourMicrosecond = 57442 @@ -394,21 +395,21 @@ const ( infile = 57450 inner = 57451 inout = 57452 - inplace = 58014 + inplace = 58015 insert = 57453 insertMethod = 57744 - insertValues = 58194 + insertValues = 58199 instance = 57745 - instant = 58015 + instant = 58016 int1Type = 57455 int2Type = 57456 int3Type = 57457 int4Type = 57458 int8Type = 57459 - intLit = 58169 + intLit = 58174 intType = 57454 integerType = 57460 - internal = 58016 + internal = 58017 intersect = 57461 interval = 57462 into = 57463 @@ -416,21 +417,21 @@ const ( invisible = 57746 invoker = 57747 io = 57748 - ioReadBandwidth = 58017 - ioWriteBandwidth = 58018 + ioReadBandwidth = 58018 + ioWriteBandwidth = 58019 ipc = 57749 is = 57464 isolation = 57750 issuer = 57751 iterate = 57465 - job = 58140 - jobs = 58141 + job = 58145 + jobs = 58146 join = 57466 - jsonArrayagg = 58019 - jsonObjectAgg = 58020 + jsonArrayagg = 58020 + jsonObjectAgg = 58021 jsonType = 57752 - jss = 58177 - juss = 58178 + jss = 58182 + juss = 58183 key = 57467 keyBlockSize = 57753 keys = 57468 @@ -442,14 +443,14 @@ const ( lastBackup = 57758 lastValue = 57471 lastval = 57757 - le = 58176 + le = 58181 lead = 57472 - leader = 58021 - leaderConstraints = 58022 + leader = 58022 + leaderConstraints = 58023 leading = 57473 - learner = 58023 - learnerConstraints = 58024 - learners = 58025 + learner = 58024 + learnerConstraints = 58025 + learners = 58026 leave = 57474 left = 57475 less = 57759 @@ -467,36 +468,36 @@ const ( location = 57764 lock = 57483 locked = 57765 - log = 58026 + log = 58027 logs = 57766 long = 57484 longblobType = 57485 longtextType = 57486 - low = 58027 + low = 58028 lowPriority = 57487 - lowerThanCharsetKwd = 58197 - lowerThanComma = 58210 - lowerThanCreateTableSelect = 58195 - lowerThanEq = 58207 - lowerThanFunction = 58202 - lowerThanInsertValues = 58193 - lowerThanKey = 58198 - lowerThanLocal = 58199 - lowerThanNot = 58209 - lowerThanOn = 58206 - lowerThanParenthese = 58204 - lowerThanRemove = 58200 - lowerThanSelectOpt = 58187 - lowerThanSelectStmt = 58192 - lowerThanSetKeyword = 58191 - lowerThanStringLitToken = 58190 - lowerThanValueKeyword = 58188 - lowerThanWith = 58189 - lowerThenOrder = 58201 - lsh = 58179 + 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 = 58028 + max = 58029 maxConnectionsPerHour = 57768 maxQueriesPerHour = 57771 maxRows = 57772 @@ -506,7 +507,7 @@ const ( max_idxnum = 57769 max_minutes = 57770 mb = 57775 - medium = 58029 + medium = 58030 mediumIntType = 57491 mediumblobType = 57490 mediumtextType = 57492 @@ -514,10 +515,10 @@ const ( memberof = 57350 memory = 57777 merge = 57778 - metadata = 58030 + metadata = 58031 microsecond = 57779 middleIntType = 57493 - min = 58031 + min = 58032 minRows = 57782 minValue = 57781 minute = 57780 @@ -531,32 +532,32 @@ const ( national = 57787 natural = 57497 ncharType = 57788 - neg = 58208 - neq = 58180 - neqSynonym = 58181 + neg = 58213 + neq = 58185 + neqSynonym = 58186 never = 57789 next = 57790 - next_row_id = 58033 + next_row_id = 58034 nextval = 57791 no = 57792 noWriteToBinLog = 57499 nocache = 57793 nocycle = 57794 - nodeID = 58142 - nodeState = 58143 + nodeID = 58147 + nodeState = 58148 nodegroup = 57795 nomaxvalue = 57796 nominvalue = 57797 nonclustered = 57798 none = 57799 not = 57498 - not2 = 58185 - now = 58034 + not2 = 58190 + now = 58035 nowait = 57800 nthValue = 57500 ntile = 57501 null = 57502 - nulleq = 58182 + nulleq = 58187 nulls = 57801 numericType = 57503 nvarcharType = 57802 @@ -574,8 +575,8 @@ const ( online = 57808 only = 57809 open = 57811 - optRuleBlacklist = 58035 - optimistic = 58144 + optRuleBlacklist = 58036 + optimistic = 58149 optimize = 57506 option = 57507 optional = 57812 @@ -589,7 +590,7 @@ const ( over = 57514 packKeys = 57813 pageSym = 57814 - paramMarker = 58183 + paramMarker = 58188 parser = 57815 partial = 57816 partition = 57515 @@ -602,29 +603,29 @@ const ( per_table = 57824 percent = 57822 percentRank = 57516 - pessimistic = 58145 + pessimistic = 58150 pipes = 57359 pipesAsOr = 57825 - placement = 58036 - plan = 58038 - planCache = 58037 + placement = 58037 + plan = 58039 + planCache = 58038 plugins = 57826 point = 57827 policy = 57828 - position = 58039 + position = 58040 preSplitRegions = 57832 preceding = 57829 precisionType = 57517 - predicate = 58040 + predicate = 58041 prepare = 57830 preserve = 57831 primary = 57518 - primaryRegion = 58041 - priority = 58042 + primaryRegion = 58042 + priority = 58043 privileges = 57833 procedure = 57519 process = 57834 - processedKeys = 58043 + processedKeys = 58044 processlist = 57835 profile = 57836 profiles = 57837 @@ -633,23 +634,24 @@ const ( quarter = 57840 queries = 57841 query = 57842 - queryLimit = 58044 + queryLimit = 58045 quick = 57843 rangeKwd = 57520 rank = 57521 rateLimit = 57844 read = 57522 + readOnly = 58046 realType = 57523 rebuild = 57845 - recent = 58045 + recent = 58047 recommend = 57846 recover = 57847 recursive = 57524 redundant = 57848 references = 57525 regexpKwd = 57526 - region = 58146 - regions = 58147 + region = 58151 + regions = 58152 release = 57527 reload = 57849 remove = 57850 @@ -659,18 +661,19 @@ const ( repeat = 57529 repeatable = 57853 replace = 57530 - replayer = 58046 + replay = 58048 + replayer = 58049 replica = 57854 replicas = 57855 replication = 57856 require = 57531 required = 57857 - reset = 58148 + reset = 58153 resource = 57858 respect = 57859 restart = 57860 restore = 57861 - restoredTS = 58047 + restoredTS = 58050 restores = 57862 restrict = 57532 resume = 57863 @@ -688,18 +691,18 @@ const ( rowFormat = 57871 rowNumber = 57538 rows = 57537 - rsh = 58184 + rsh = 58189 rtree = 57872 - ru = 58048 - ruRate = 58050 - run = 58149 - running = 58049 - s3 = 58051 - sampleRate = 58150 - samples = 58151 + ru = 58051 + ruRate = 58053 + run = 58154 + running = 58052 + s3 = 58054 + sampleRate = 58155 + samples = 58156 san = 57873 savepoint = 57874 - schedule = 58052 + schedule = 58055 second = 57875 secondMicrosecond = 57539 secondary = 57876 @@ -714,7 +717,7 @@ const ( serial = 57884 serializable = 57885 session = 57886 - sessionStates = 58152 + sessionStates = 58157 set = 57541 setval = 57887 shardRowIDBits = 57888 @@ -723,7 +726,7 @@ const ( show = 57542 shutdown = 57891 signed = 57892 - similar = 58053 + similar = 58056 simple = 57893 singleAtIdentifier = 57354 skip = 57894 @@ -735,7 +738,8 @@ const ( some = 57899 source = 57900 spatial = 57544 - split = 58153 + speed = 58057 + split = 58158 sql = 57545 sqlBigResult = 57549 sqlBufferResult = 57901 @@ -755,107 +759,108 @@ const ( sqlstate = 57547 sqlwarning = 57548 ssl = 57552 - staleness = 58054 + staleness = 58058 start = 57912 - startTS = 58056 - startTime = 58055 + startTS = 58060 + startTime = 58059 starting = 57553 - statistics = 58154 - stats = 58155 + statistics = 58159 + stats = 58160 statsAutoRecalc = 57913 - statsBuckets = 58156 + statsBuckets = 58161 statsColChoice = 57914 statsColList = 57915 - statsExtended = 58157 - statsHealthy = 58158 - statsHistograms = 58159 - statsLocked = 58160 - statsMeta = 58161 + statsExtended = 58162 + statsHealthy = 58163 + statsHistograms = 58164 + statsLocked = 58165 + statsMeta = 58166 statsOptions = 57916 statsPersistent = 57917 statsSamplePages = 57918 statsSampleRate = 57919 - statsTopN = 58162 + statsTopN = 58167 status = 57920 - std = 58060 - stddev = 58057 - stddevPop = 58058 - stddevSamp = 58059 - stop = 58061 + std = 58064 + stddev = 58061 + stddevPop = 58062 + stddevSamp = 58063 + stop = 58065 storage = 57921 stored = 57554 straightJoin = 57555 - strict = 58062 + strict = 58066 strictFormat = 57922 stringLit = 57353 - strong = 58063 - subDate = 58064 + strong = 58067 + subDate = 58068 subject = 57923 subpartition = 57924 subpartitions = 57925 - substring = 58065 - sum = 58066 + substring = 58069 + sum = 58070 super = 57926 - survivalPreferences = 58067 + survivalPreferences = 58071 swaps = 57927 - switchGroup = 58068 + switchGroup = 58072 switchesSym = 57928 system = 57929 systemTime = 57930 tableChecksum = 57933 tableKwd = 57556 - tableRefPriority = 58203 + tableRefPriority = 58208 tableSample = 57557 tables = 57931 tablespace = 57932 - target = 58069 - taskTypes = 58070 + target = 58073 + taskTypes = 58074 temporary = 57934 temptable = 57935 terminated = 57558 textType = 57936 than = 57937 then = 57559 - tiFlash = 58164 - tidb = 58163 + tiFlash = 58169 + tidb = 58168 tidbCurrentTSO = 57560 - tidbJson = 58071 + tidbJson = 58075 tikvImporter = 57938 - timeDuration = 58072 + timeDuration = 58076 timeType = 57939 - timestampAdd = 58073 - timestampDiff = 58074 + timestampAdd = 58077 + timestampDiff = 58078 timestampType = 57940 tinyIntType = 57562 tinyblobType = 57561 tinytextType = 57563 - tls = 58075 + tls = 58079 to = 57564 toTSO = 57349 toTimestamp = 57348 tokenIssuer = 57941 - tokudbDefault = 58076 - tokudbFast = 58077 - tokudbLzma = 58078 - tokudbQuickLZ = 58079 - tokudbSmall = 58080 - tokudbSnappy = 58081 - tokudbUncompressed = 58082 - tokudbZlib = 58083 - tokudbZstd = 58084 - top = 58085 - topn = 58165 + tokudbDefault = 58080 + tokudbFast = 58081 + tokudbLzma = 58082 + tokudbQuickLZ = 58083 + tokudbSmall = 58084 + tokudbSnappy = 58085 + tokudbUncompressed = 58086 + tokudbZlib = 58087 + tokudbZstd = 58088 + top = 58089 + topn = 58170 tp = 57953 tpcc = 57942 tpch10 = 57943 trace = 57944 traditional = 57945 + traffic = 58090 trailing = 57565 transaction = 57946 trigger = 57566 triggers = 57947 - trim = 58086 - trueCardCost = 58087 + trim = 58091 + trueCardCost = 58092 trueKwd = 57567 truncate = 57948 tsoType = 57949 @@ -870,12 +875,12 @@ const ( union = 57568 unique = 57569 unknown = 57958 - unlimited = 58088 + unlimited = 58093 unlock = 57570 unset = 57959 unsigned = 57571 until = 57572 - untilTS = 58089 + untilTS = 58094 update = 57573 usage = 57574 use = 57575 @@ -884,36 +889,36 @@ const ( utcDate = 57577 utcTime = 57578 utcTimestamp = 57579 - utilizationLimit = 58090 + utilizationLimit = 58095 validation = 57961 value = 57962 values = 57580 - varPop = 58092 - varSamp = 58093 + varPop = 58097 + varSamp = 58098 varbinaryType = 57581 varcharType = 57582 varcharacter = 57583 variables = 57963 - variance = 58091 + variance = 58096 varying = 57584 vectorType = 57964 - verboseType = 58094 + verboseType = 58099 view = 57965 virtual = 57585 visible = 57966 - voter = 58097 - voterConstraints = 58095 - voters = 58096 + voter = 58102 + voterConstraints = 58100 + voters = 58101 wait = 57967 waitTiflashReady = 57968 warnings = 57969 - watch = 58098 + watch = 58103 week = 57970 weightString = 57971 when = 57586 where = 57587 while = 57588 - width = 58166 + width = 58171 window = 57589 with = 57590 withSysTable = 57973 @@ -927,1587 +932,1599 @@ const ( zerofill = 57594 yyMaxDepth = 200 - yyTabOfs = -2927 + yyTabOfs = -2953 ) var ( yyXLAT = map[int]int{ - 59: 0, // ';' (2565x) - 57344: 1, // $end (2552x) - 57850: 2, // remove (2046x) - 58153: 3, // split (2046x) - 57778: 4, // merge (2045x) - 57851: 5, // reorganize (2044x) - 57651: 6, // comment (2037x) - 57921: 7, // storage (1943x) - 57609: 8, // autoIncrement (1932x) - 44: 9, // ',' (1927x) - 57718: 10, // first (1831x) - 57598: 11, // after (1825x) - 57884: 12, // serial (1822x) - 57610: 13, // autoRandom (1820x) - 57650: 14, // columnFormat (1820x) - 57819: 15, // password (1778x) - 57636: 16, // charsetKwd (1769x) - 57638: 17, // checksum (1759x) - 58036: 18, // placement (1756x) - 57753: 19, // keyBlockSize (1745x) - 57932: 20, // tablespace (1736x) - 57694: 21, // encryption (1734x) - 57699: 22, // engine (1731x) - 57675: 23, // data (1729x) - 57744: 24, // insertMethod (1727x) - 57772: 25, // maxRows (1727x) - 57782: 26, // minRows (1727x) - 57795: 27, // nodegroup (1727x) - 57661: 28, // connection (1719x) - 57611: 29, // autoRandomBase (1716x) - 58156: 30, // statsBuckets (1714x) - 58162: 31, // statsTopN (1714x) - 57950: 32, // ttl (1714x) - 57608: 33, // autoIdCache (1713x) - 57613: 34, // avgRowLength (1713x) - 57656: 35, // compression (1713x) - 57682: 36, // delayKeyWrite (1713x) - 57813: 37, // packKeys (1713x) - 57832: 38, // preSplitRegions (1713x) - 57871: 39, // rowFormat (1713x) - 57877: 40, // secondaryEngine (1713x) - 57888: 41, // shardRowIDBits (1713x) - 57913: 42, // statsAutoRecalc (1713x) - 57914: 43, // statsColChoice (1713x) - 57915: 44, // statsColList (1713x) - 57917: 45, // statsPersistent (1713x) - 57918: 46, // statsSamplePages (1713x) - 57919: 47, // statsSampleRate (1713x) - 57933: 48, // tableChecksum (1713x) - 57951: 49, // ttlEnable (1713x) - 57952: 50, // ttlJobInterval (1713x) - 57858: 51, // resource (1693x) - 41: 52, // ')' (1685x) - 57606: 53, // attribute (1665x) - 57595: 54, // account (1663x) - 57714: 55, // failedLoginAttempts (1663x) - 57820: 56, // passwordLockTime (1663x) - 57346: 57, // identifier (1661x) - 57763: 58, // local (1651x) - 57863: 59, // resume (1649x) - 57892: 60, // signed (1649x) - 57898: 61, // snapshot (1647x) - 57614: 62, // backend (1646x) - 57637: 63, // checkpoint (1646x) - 57639: 64, // checksumConcurrency (1646x) - 57657: 65, // compressionLevel (1646x) - 57658: 66, // compressionType (1646x) - 57659: 67, // concurrency (1646x) - 57666: 68, // csvBackslashEscape (1646x) - 57667: 69, // csvDelimiter (1646x) - 57668: 70, // csvHeader (1646x) - 57669: 71, // csvNotNull (1646x) - 57670: 72, // csvNull (1646x) - 57671: 73, // csvSeparator (1646x) - 57672: 74, // csvTrimLastSeparators (1646x) - 57695: 75, // encryptionKeyFile (1646x) - 57696: 76, // encryptionMethod (1646x) - 58009: 77, // fullBackupStorage (1646x) - 58010: 78, // gcTTL (1646x) - 57738: 79, // ignoreStats (1646x) - 57758: 80, // lastBackup (1646x) - 57762: 81, // loadStats (1646x) - 57810: 82, // onDuplicate (1646x) - 57808: 83, // online (1646x) - 57844: 84, // rateLimit (1646x) - 58047: 85, // restoredTS (1646x) - 57881: 86, // sendCredentialsToTiKV (1646x) - 57895: 87, // skipSchemaFiles (1646x) - 58056: 88, // startTS (1646x) - 57922: 89, // strictFormat (1646x) - 57938: 90, // tikvImporter (1646x) - 58089: 91, // untilTS (1646x) - 57968: 92, // waitTiflashReady (1646x) - 57973: 93, // withSysTable (1646x) - 57727: 94, // global (1644x) - 57618: 95, // begin (1640x) - 57652: 96, // commit (1640x) - 57792: 97, // no (1640x) - 57867: 98, // rollback (1640x) - 57912: 99, // start (1638x) - 57948: 100, // truncate (1637x) - 57596: 101, // action (1636x) - 57630: 102, // cache (1635x) - 57953: 103, // tp (1635x) - 57646: 104, // clustered (1634x) - 57746: 105, // invisible (1634x) - 57793: 106, // nocache (1634x) - 57798: 107, // nonclustered (1634x) - 57811: 108, // open (1634x) - 57966: 109, // visible (1634x) - 57601: 110, // algorithm (1633x) - 57644: 111, // close (1633x) - 57674: 112, // cycle (1633x) - 57781: 113, // minValue (1633x) - 57697: 114, // end (1632x) - 57741: 115, // increment (1632x) - 57794: 116, // nocycle (1632x) - 57796: 117, // nomaxvalue (1632x) - 57797: 118, // nominvalue (1632x) - 57860: 119, // restart (1630x) - 58147: 120, // regions (1629x) - 57980: 121, // background (1628x) - 57987: 122, // burstable (1628x) - 58042: 123, // priority (1628x) - 58044: 124, // queryLimit (1628x) - 58050: 125, // ruRate (1628x) - 58038: 126, // plan (1625x) - 57924: 127, // subpartition (1625x) - 57976: 128, // yearType (1625x) - 57818: 129, // partitions (1624x) - 57911: 130, // sqlTsiYear (1623x) - 57989: 131, // constraints (1622x) - 58007: 132, // followerConstraints (1622x) - 58008: 133, // followers (1622x) - 58022: 134, // leaderConstraints (1622x) - 58024: 135, // learnerConstraints (1622x) - 58025: 136, // learners (1622x) - 58041: 137, // primaryRegion (1622x) - 58052: 138, // schedule (1622x) - 58067: 139, // survivalPreferences (1622x) - 58095: 140, // voterConstraints (1622x) - 58096: 141, // voters (1622x) - 58098: 142, // watch (1621x) - 57649: 143, // columns (1620x) - 58002: 144, // execElapsed (1620x) - 57739: 145, // importKwd (1620x) - 58043: 146, // processedKeys (1620x) - 58048: 147, // ru (1620x) - 57965: 148, // view (1620x) - 57678: 149, // day (1619x) - 57996: 150, // defined (1617x) - 57875: 151, // second (1617x) - 57735: 152, // hour (1616x) - 57779: 153, // microsecond (1616x) - 57780: 154, // minute (1616x) - 57785: 155, // month (1616x) - 57840: 156, // quarter (1616x) - 57904: 157, // sqlTsiDay (1616x) - 57905: 158, // sqlTsiHour (1616x) - 57906: 159, // sqlTsiMinute (1616x) - 57907: 160, // sqlTsiMonth (1616x) - 57908: 161, // sqlTsiQuarter (1616x) - 57909: 162, // sqlTsiSecond (1616x) - 57910: 163, // sqlTsiWeek (1616x) - 57970: 164, // week (1616x) - 57605: 165, // ascii (1615x) - 57629: 166, // byteType (1615x) - 57920: 167, // status (1615x) - 57931: 168, // tables (1615x) - 57957: 169, // unicodeSym (1615x) - 57716: 170, // fields (1614x) - 57766: 171, // logs (1613x) - 58072: 172, // timeDuration (1613x) - 57842: 173, // query (1611x) - 57882: 174, // separator (1611x) - 57640: 175, // cipher (1610x) - 57751: 176, // issuer (1610x) - 57752: 177, // jsonType (1610x) - 57768: 178, // maxConnectionsPerHour (1610x) - 57771: 179, // maxQueriesPerHour (1610x) - 57773: 180, // maxUpdatesPerHour (1610x) - 57774: 181, // maxUserConnections (1610x) - 57829: 182, // preceding (1610x) - 57873: 183, // san (1610x) - 57923: 184, // subject (1610x) - 57941: 185, // tokenIssuer (1610x) - 57677: 186, // datetimeType (1609x) - 57676: 187, // dateType (1609x) - 58000: 188, // endTime (1609x) - 57719: 189, // fixed (1609x) - 58055: 190, // startTime (1609x) - 58070: 191, // taskTypes (1609x) - 57939: 192, // timeType (1609x) - 58090: 193, // utilizationLimit (1609x) - 57964: 194, // vectorType (1609x) - 57940: 195, // timestampType (1608x) - 57621: 196, // bindings (1607x) - 57627: 197, // booleanType (1607x) - 57673: 198, // current (1607x) - 57681: 199, // definer (1607x) - 57730: 200, // hash (1607x) - 57737: 201, // identified (1607x) - 57859: 202, // respect (1607x) - 57866: 203, // role (1607x) - 57936: 204, // textType (1607x) - 57962: 205, // value (1607x) - 57615: 206, // backup (1606x) - 57624: 207, // bitType (1606x) - 57626: 208, // boolType (1606x) - 57698: 209, // enforced (1606x) - 57701: 210, // enum (1606x) - 57721: 211, // following (1606x) - 57759: 212, // less (1606x) - 57787: 213, // national (1606x) - 57788: 214, // ncharType (1606x) - 57800: 215, // nowait (1606x) - 57802: 216, // nvarcharType (1606x) - 57809: 217, // only (1606x) - 57874: 218, // savepoint (1606x) - 57894: 219, // skip (1606x) - 57937: 220, // than (1606x) - 58164: 221, // tiFlash (1606x) - 57954: 222, // unbounded (1606x) - 57620: 223, // binding (1605x) - 57736: 224, // hypo (1605x) - 58140: 225, // job (1605x) - 58033: 226, // next_row_id (1605x) - 57804: 227, // offset (1605x) - 57828: 228, // policy (1605x) - 58040: 229, // predicate (1605x) - 57854: 230, // replica (1605x) - 57934: 231, // temporary (1605x) - 57960: 232, // user (1605x) - 57683: 233, // digest (1604x) - 58141: 234, // jobs (1604x) - 57764: 235, // location (1604x) - 58037: 236, // planCache (1604x) - 57830: 237, // prepare (1604x) - 58155: 238, // stats (1604x) - 57958: 239, // unknown (1604x) - 57967: 240, // wait (1604x) - 57628: 241, // btree (1603x) - 57990: 242, // cooldown (1603x) - 57680: 243, // declare (1603x) - 57998: 244, // dryRun (1603x) - 57722: 245, // format (1603x) - 58032: 246, // hnsw (1603x) - 57750: 247, // isolation (1603x) - 57756: 248, // last (1603x) - 57777: 249, // memory (1603x) - 57790: 250, // next (1603x) - 57803: 251, // off (1603x) - 57812: 252, // optional (1603x) - 57833: 253, // privileges (1603x) - 57857: 254, // required (1603x) - 57872: 255, // rtree (1603x) - 58150: 256, // sampleRate (1603x) - 57883: 257, // sequence (1603x) - 57886: 258, // session (1603x) - 57897: 259, // slow (1603x) - 58068: 260, // switchGroup (1603x) - 58088: 261, // unlimited (1603x) - 57961: 262, // validation (1603x) - 57963: 263, // variables (1603x) - 57607: 264, // attributes (1602x) - 58130: 265, // cancel (1602x) - 57654: 266, // compact (1602x) - 58135: 267, // ddl (1602x) - 57685: 268, // disable (1602x) - 57689: 269, // do (1602x) - 57691: 270, // dynamic (1602x) - 57692: 271, // enable (1602x) - 57702: 272, // errorKwd (1602x) - 58001: 273, // exact (1602x) - 57720: 274, // flush (1602x) - 57724: 275, // full (1602x) - 57729: 276, // handler (1602x) - 57733: 277, // history (1602x) - 57775: 278, // mb (1602x) - 57783: 279, // mode (1602x) - 57821: 280, // pause (1602x) - 57826: 281, // plugins (1602x) - 57835: 282, // processlist (1602x) - 57847: 283, // recover (1602x) - 57852: 284, // repair (1602x) - 57853: 285, // repeatable (1602x) - 58053: 286, // similar (1602x) - 58154: 287, // statistics (1602x) - 57925: 288, // subpartitions (1602x) - 58163: 289, // tidb (1602x) - 57972: 290, // without (1602x) - 58099: 291, // admin (1601x) - 58100: 292, // batch (1601x) - 57617: 293, // bdr (1601x) - 57623: 294, // binlog (1601x) - 57625: 295, // block (1601x) - 57985: 296, // br (1601x) - 57986: 297, // briefType (1601x) - 58101: 298, // buckets (1601x) - 57631: 299, // calibrate (1601x) - 57632: 300, // capture (1601x) - 58131: 301, // cardinality (1601x) - 57635: 302, // chain (1601x) - 57643: 303, // clientErrorsSummary (1601x) - 58132: 304, // cmSketch (1601x) - 57647: 305, // coalesce (1601x) - 57655: 306, // compressed (1601x) - 57664: 307, // context (1601x) - 57991: 308, // copyKwd (1601x) - 58134: 309, // correlation (1601x) - 57665: 310, // cpu (1601x) - 57679: 311, // deallocate (1601x) - 58136: 312, // dependency (1601x) - 57684: 313, // directory (1601x) - 57687: 314, // discard (1601x) - 57688: 315, // disk (1601x) - 57997: 316, // dotType (1601x) - 58138: 317, // dry (1601x) - 57690: 318, // duplicate (1601x) - 57708: 319, // exchange (1601x) - 57710: 320, // execute (1601x) - 57711: 321, // expansion (1601x) - 58005: 322, // flashback (1601x) - 57726: 323, // general (1601x) - 57731: 324, // help (1601x) - 58013: 325, // high (1601x) - 57732: 326, // histogram (1601x) - 57734: 327, // hosts (1601x) - 57703: 328, // identSQLErrors (1601x) - 57742: 329, // incremental (1601x) - 57743: 330, // indexes (1601x) - 58014: 331, // inplace (1601x) - 57745: 332, // instance (1601x) - 58015: 333, // instant (1601x) - 57749: 334, // ipc (1601x) - 57754: 335, // labels (1601x) - 57765: 336, // locked (1601x) - 58027: 337, // low (1601x) - 58029: 338, // medium (1601x) - 58030: 339, // metadata (1601x) - 57784: 340, // modify (1601x) - 57791: 341, // nextval (1601x) - 57801: 342, // nulls (1601x) - 57814: 343, // pageSym (1601x) - 57839: 344, // purge (1601x) - 57845: 345, // rebuild (1601x) - 57846: 346, // recommend (1601x) - 57848: 347, // redundant (1601x) - 57849: 348, // reload (1601x) - 57861: 349, // restore (1601x) - 57869: 350, // routine (1601x) - 58149: 351, // run (1601x) - 58051: 352, // s3 (1601x) - 58151: 353, // samples (1601x) - 57878: 354, // secondaryLoad (1601x) - 57879: 355, // secondaryUnload (1601x) - 57889: 356, // share (1601x) - 57891: 357, // shutdown (1601x) - 57896: 358, // slave (1601x) - 57900: 359, // source (1601x) - 58157: 360, // statsExtended (1601x) - 57916: 361, // statsOptions (1601x) - 58061: 362, // stop (1601x) - 57927: 363, // swaps (1601x) - 58071: 364, // tidbJson (1601x) - 58076: 365, // tokudbDefault (1601x) - 58077: 366, // tokudbFast (1601x) - 58078: 367, // tokudbLzma (1601x) - 58079: 368, // tokudbQuickLZ (1601x) - 58080: 369, // tokudbSmall (1601x) - 58081: 370, // tokudbSnappy (1601x) - 58082: 371, // tokudbUncompressed (1601x) - 58083: 372, // tokudbZlib (1601x) - 58084: 373, // tokudbZstd (1601x) - 58165: 374, // topn (1601x) - 57944: 375, // trace (1601x) - 57945: 376, // traditional (1601x) - 58087: 377, // trueCardCost (1601x) - 58094: 378, // verboseType (1601x) - 57969: 379, // warnings (1601x) - 57599: 380, // against (1600x) - 57600: 381, // ago (1600x) - 57602: 382, // always (1600x) - 57604: 383, // apply (1600x) - 57616: 384, // backups (1600x) - 57619: 385, // bernoulli (1600x) - 57622: 386, // bindingCache (1600x) - 58119: 387, // builtins (1600x) - 57633: 388, // cascaded (1600x) - 57634: 389, // causal (1600x) - 57641: 390, // cleanup (1600x) - 57642: 391, // client (1600x) - 57645: 392, // cluster (1600x) - 57648: 393, // collation (1600x) - 58133: 394, // columnStatsUsage (1600x) - 57653: 395, // committed (1600x) - 57660: 396, // config (1600x) - 57662: 397, // consistency (1600x) - 57663: 398, // consistent (1600x) - 58137: 399, // depth (1600x) - 57686: 400, // disabled (1600x) - 57999: 401, // dump (1600x) - 57693: 402, // enabled (1600x) - 57700: 403, // engines (1600x) - 57706: 404, // events (1600x) - 57707: 405, // evolve (1600x) - 57712: 406, // expire (1600x) - 58003: 407, // exprPushdownBlacklist (1600x) - 57713: 408, // extended (1600x) - 57715: 409, // faultsSym (1600x) - 57723: 410, // found (1600x) - 57725: 411, // function (1600x) - 57728: 412, // grants (1600x) - 58139: 413, // histogramsInFlight (1600x) - 58016: 414, // internal (1600x) - 57747: 415, // invoker (1600x) - 57748: 416, // io (1600x) - 57755: 417, // language (1600x) - 57760: 418, // level (1600x) - 57761: 419, // list (1600x) - 58026: 420, // log (1600x) - 57767: 421, // master (1600x) - 57789: 422, // never (1600x) - 57799: 423, // none (1600x) - 57805: 424, // oltpReadOnly (1600x) - 57806: 425, // oltpReadWrite (1600x) - 57807: 426, // oltpWriteOnly (1600x) - 58144: 427, // optimistic (1600x) - 58035: 428, // optRuleBlacklist (1600x) - 57815: 429, // parser (1600x) - 57816: 430, // partial (1600x) - 57817: 431, // partitioning (1600x) - 57822: 432, // percent (1600x) - 58145: 433, // pessimistic (1600x) - 57827: 434, // point (1600x) - 57831: 435, // preserve (1600x) - 57836: 436, // profile (1600x) - 57837: 437, // profiles (1600x) - 57841: 438, // queries (1600x) - 58045: 439, // recent (1600x) - 58146: 440, // region (1600x) - 58046: 441, // replayer (1600x) - 57862: 442, // restores (1600x) - 57864: 443, // reuse (1600x) - 57868: 444, // rollup (1600x) - 57876: 445, // secondary (1600x) - 57880: 446, // security (1600x) - 57885: 447, // serializable (1600x) - 58152: 448, // sessionStates (1600x) - 57893: 449, // simple (1600x) - 58158: 450, // statsHealthy (1600x) - 58159: 451, // statsHistograms (1600x) - 58160: 452, // statsLocked (1600x) - 58161: 453, // statsMeta (1600x) - 57928: 454, // switchesSym (1600x) - 57929: 455, // system (1600x) - 57930: 456, // systemTime (1600x) - 58069: 457, // target (1600x) - 57935: 458, // temptable (1600x) - 58075: 459, // tls (1600x) - 58085: 460, // top (1600x) - 57942: 461, // tpcc (1600x) - 57943: 462, // tpch10 (1600x) - 57946: 463, // transaction (1600x) - 57947: 464, // triggers (1600x) - 57955: 465, // uncommitted (1600x) - 57956: 466, // undefined (1600x) - 57959: 467, // unset (1600x) - 58166: 468, // width (1600x) - 57974: 469, // workload (1600x) - 57975: 470, // x509 (1600x) - 57977: 471, // addDate (1599x) - 57597: 472, // advise (1599x) - 57603: 473, // any (1599x) - 57978: 474, // approxCountDistinct (1599x) - 57979: 475, // approxPercentile (1599x) - 57612: 476, // avg (1599x) - 57981: 477, // bitAnd (1599x) - 57982: 478, // bitOr (1599x) - 57983: 479, // bitXor (1599x) - 57984: 480, // bound (1599x) - 57988: 481, // cast (1599x) - 57992: 482, // curDate (1599x) - 57993: 483, // curTime (1599x) - 57994: 484, // dateAdd (1599x) - 57995: 485, // dateSub (1599x) - 57704: 486, // escape (1599x) - 57705: 487, // event (1599x) - 57709: 488, // exclusive (1599x) - 58004: 489, // extract (1599x) - 57717: 490, // file (1599x) - 58006: 491, // follower (1599x) - 58011: 492, // getFormat (1599x) - 58012: 493, // groupConcat (1599x) - 57740: 494, // imports (1599x) - 58017: 495, // ioReadBandwidth (1599x) - 58018: 496, // ioWriteBandwidth (1599x) - 58019: 497, // jsonArrayagg (1599x) - 58020: 498, // jsonObjectAgg (1599x) - 57757: 499, // lastval (1599x) - 58021: 500, // leader (1599x) - 58023: 501, // learner (1599x) - 58028: 502, // max (1599x) - 57769: 503, // max_idxnum (1599x) - 57770: 504, // max_minutes (1599x) - 57776: 505, // member (1599x) - 58031: 506, // min (1599x) - 57786: 507, // names (1599x) - 58142: 508, // nodeID (1599x) - 58143: 509, // nodeState (1599x) - 58034: 510, // now (1599x) - 57823: 511, // per_db (1599x) - 57824: 512, // per_table (1599x) - 58039: 513, // position (1599x) - 57834: 514, // process (1599x) - 57838: 515, // proxy (1599x) - 57843: 516, // quick (1599x) - 57855: 517, // replicas (1599x) - 57856: 518, // replication (1599x) - 58148: 519, // reset (1599x) - 57865: 520, // reverse (1599x) - 57870: 521, // rowCount (1599x) - 58049: 522, // running (1599x) - 57887: 523, // setval (1599x) - 57890: 524, // shared (1599x) - 57899: 525, // some (1599x) - 57901: 526, // sqlBufferResult (1599x) - 57902: 527, // sqlCache (1599x) - 57903: 528, // sqlNoCache (1599x) - 58054: 529, // staleness (1599x) - 58060: 530, // std (1599x) - 58057: 531, // stddev (1599x) - 58058: 532, // stddevPop (1599x) - 58059: 533, // stddevSamp (1599x) - 58062: 534, // strict (1599x) - 58063: 535, // strong (1599x) - 58064: 536, // subDate (1599x) - 58065: 537, // substring (1599x) - 58066: 538, // sum (1599x) - 57926: 539, // super (1599x) - 58073: 540, // timestampAdd (1599x) - 58074: 541, // timestampDiff (1599x) - 58086: 542, // trim (1599x) - 57949: 543, // tsoType (1599x) - 58091: 544, // variance (1599x) - 58092: 545, // varPop (1599x) - 58093: 546, // varSamp (1599x) - 58097: 547, // voter (1599x) - 57971: 548, // weightString (1599x) - 57505: 549, // on (1514x) - 40: 550, // '(' (1510x) - 57590: 551, // with (1378x) - 57353: 552, // stringLit (1350x) - 58185: 553, // not2 (1315x) - 57405: 554, // defaultKwd (1268x) - 57498: 555, // not (1246x) - 57369: 556, // as (1214x) - 57384: 557, // collate (1180x) - 57568: 558, // union (1158x) - 57475: 559, // left (1154x) - 57534: 560, // right (1154x) - 57576: 561, // using (1150x) - 43: 562, // '+' (1129x) - 45: 563, // '-' (1127x) - 57496: 564, // mod (1107x) - 57515: 565, // partition (1103x) - 57502: 566, // null (1076x) - 57580: 567, // values (1066x) - 57446: 568, // ignore (1053x) - 57421: 569, // except (1047x) - 57461: 570, // intersect (1046x) - 57530: 571, // replace (1046x) - 57381: 572, // charType (1034x) - 58174: 573, // eq (1028x) - 57426: 574, // fetch (1028x) - 57541: 575, // set (1021x) - 58169: 576, // intLit (1020x) - 57477: 577, // limit (1019x) - 57431: 578, // forKwd (1015x) - 57463: 579, // into (1012x) - 42: 580, // '*' (1010x) - 57434: 581, // from (1007x) - 57483: 582, // lock (1006x) - 57587: 583, // where (993x) - 57510: 584, // order (991x) - 57432: 585, // force (984x) - 57367: 586, // and (981x) - 57509: 587, // or (957x) - 57358: 588, // andand (956x) - 57825: 589, // pipesAsOr (956x) - 57592: 590, // xor (956x) - 57438: 591, // group (928x) - 57440: 592, // having (923x) - 57555: 593, // straightJoin (915x) - 57589: 594, // window (909x) - 57575: 595, // use (906x) - 57466: 596, // join (903x) - 57409: 597, // desc (897x) - 57445: 598, // ifKwd (893x) - 57497: 599, // natural (893x) - 57390: 600, // cross (892x) - 57451: 601, // inner (892x) - 57424: 602, // explain (891x) - 57476: 603, // like (890x) - 125: 604, // '}' (889x) - 57373: 605, // binaryType (886x) - 57453: 606, // insert (882x) - 57537: 607, // rows (876x) - 57586: 608, // when (870x) - 57417: 609, // elseKwd (866x) - 57520: 610, // rangeKwd (866x) - 57557: 611, // tableSample (866x) - 57439: 612, // groups (864x) - 57400: 613, // dayHour (863x) - 57401: 614, // dayMicrosecond (863x) - 57402: 615, // dayMinute (863x) - 57403: 616, // daySecond (863x) - 57442: 617, // hourMicrosecond (863x) - 57443: 618, // hourMinute (863x) - 57444: 619, // hourSecond (863x) - 57494: 620, // minuteMicrosecond (863x) - 57495: 621, // minuteSecond (863x) - 57539: 622, // secondMicrosecond (863x) - 57593: 623, // yearMonth (863x) - 57370: 624, // asc (861x) - 57448: 625, // in (855x) - 57559: 626, // then (855x) - 57556: 627, // tableKwd (854x) - 47: 628, // '/' (847x) - 60: 629, // '<' (847x) - 62: 630, // '>' (847x) - 37: 631, // '%' (846x) - 38: 632, // '&' (846x) - 94: 633, // '^' (846x) - 124: 634, // '|' (846x) - 57413: 635, // div (846x) - 58179: 636, // lsh (846x) - 58184: 637, // rsh (846x) - 57379: 638, // caseKwd (845x) - 58175: 639, // ge (845x) - 57464: 640, // is (845x) - 58176: 641, // le (845x) - 58180: 642, // neq (845x) - 58181: 643, // neqSynonym (845x) - 58182: 644, // nulleq (845x) - 57529: 645, // repeat (845x) - 57354: 646, // singleAtIdentifier (841x) - 57371: 647, // between (840x) - 57425: 648, // falseKwd (839x) - 57567: 649, // trueKwd (839x) - 57396: 650, // currentUser (833x) - 57447: 651, // ilike (832x) - 57526: 652, // regexpKwd (832x) - 57535: 653, // rlike (832x) - 57350: 654, // memberof (829x) - 58168: 655, // decLit (827x) - 58167: 656, // floatLit (827x) - 58170: 657, // hexLit (827x) - 58171: 658, // bitLit (825x) - 57536: 659, // row (825x) - 57462: 660, // interval (824x) - 58183: 661, // paramMarker (823x) - 123: 662, // '{' (821x) - 57467: 663, // key (819x) - 57398: 664, // database (817x) - 57422: 665, // exists (816x) - 57388: 666, // convert (814x) - 57352: 667, // underscoreCS (814x) - 57540: 668, // selectKwd (813x) - 58109: 669, // builtinCurDate (812x) - 58117: 670, // builtinNow (812x) - 57392: 671, // currentDate (812x) - 57395: 672, // currentTs (812x) - 57355: 673, // doubleAtIdentifier (812x) - 57481: 674, // localTime (812x) - 57482: 675, // localTs (812x) - 57545: 676, // sql (811x) - 58108: 677, // builtinCount (810x) - 57518: 678, // primary (810x) - 33: 679, // '!' (809x) - 126: 680, // '~' (809x) - 58102: 681, // builtinApproxCountDistinct (809x) - 58103: 682, // builtinApproxPercentile (809x) - 58104: 683, // builtinBitAnd (809x) - 58105: 684, // builtinBitOr (809x) - 58106: 685, // builtinBitXor (809x) - 58107: 686, // builtinCast (809x) - 58110: 687, // builtinCurTime (809x) - 58111: 688, // builtinDateAdd (809x) - 58112: 689, // builtinDateSub (809x) - 58113: 690, // builtinExtract (809x) - 58114: 691, // builtinGroupConcat (809x) - 58115: 692, // builtinMax (809x) - 58116: 693, // builtinMin (809x) - 58118: 694, // builtinPosition (809x) - 58120: 695, // builtinStddevPop (809x) - 58121: 696, // builtinStddevSamp (809x) - 58122: 697, // builtinSubstring (809x) - 58123: 698, // builtinSum (809x) - 58124: 699, // builtinSysDate (809x) - 58125: 700, // builtinTranslate (809x) - 58126: 701, // builtinTrim (809x) - 58127: 702, // builtinUser (809x) - 58128: 703, // builtinVarPop (809x) - 58129: 704, // builtinVarSamp (809x) - 57383: 705, // check (809x) - 57391: 706, // cumeDist (809x) - 57393: 707, // currentRole (809x) - 57394: 708, // currentTime (809x) - 57408: 709, // denseRank (809x) - 57427: 710, // firstValue (809x) - 57470: 711, // lag (809x) - 57471: 712, // lastValue (809x) - 57472: 713, // lead (809x) - 57500: 714, // nthValue (809x) - 57501: 715, // ntile (809x) - 57516: 716, // percentRank (809x) - 57521: 717, // rank (809x) - 57538: 718, // rowNumber (809x) - 57560: 719, // tidbCurrentTSO (809x) - 57577: 720, // utcDate (809x) - 57578: 721, // utcTime (809x) - 57579: 722, // utcTimestamp (809x) - 57569: 723, // unique (802x) - 57386: 724, // constraint (798x) - 57525: 725, // references (796x) - 57359: 726, // pipes (794x) - 57436: 727, // generated (792x) - 57382: 728, // character (774x) - 57449: 729, // index (760x) - 57488: 730, // match (744x) - 57573: 731, // update (700x) - 57564: 732, // to (650x) - 57366: 733, // analyze (646x) - 46: 734, // '.' (632x) - 57364: 735, // all (630x) - 57368: 736, // array (595x) - 58173: 737, // assignmentEq (594x) - 58177: 738, // jss (594x) - 58178: 739, // juss (594x) - 57489: 740, // maxValue (594x) - 57376: 741, // by (579x) - 57479: 742, // lines (578x) - 57365: 743, // alter (577x) - 57531: 744, // require (574x) - 64: 745, // '@' (568x) - 57415: 746, // drop (563x) - 57378: 747, // cascade (562x) - 57522: 748, // read (562x) - 57532: 749, // restrict (562x) - 57347: 750, // asof (561x) - 57414: 751, // doubleType (561x) - 57428: 752, // floatType (561x) - 57583: 753, // varcharacter (561x) - 57582: 754, // varcharType (561x) - 57404: 755, // decimalType (560x) - 57460: 756, // integerType (560x) - 57454: 757, // intType (560x) - 57523: 758, // realType (560x) - 57581: 759, // varbinaryType (559x) - 57372: 760, // bigIntType (558x) - 57374: 761, // blobType (558x) - 57389: 762, // create (558x) - 57429: 763, // float4Type (558x) - 57430: 764, // float8Type (558x) - 57433: 765, // foreign (558x) - 57435: 766, // fulltext (558x) - 57455: 767, // int1Type (558x) - 57456: 768, // int2Type (558x) - 57457: 769, // int3Type (558x) - 57458: 770, // int4Type (558x) - 57459: 771, // int8Type (558x) - 57484: 772, // long (558x) - 57485: 773, // longblobType (558x) - 57486: 774, // longtextType (558x) - 57490: 775, // mediumblobType (558x) - 57491: 776, // mediumIntType (558x) - 57492: 777, // mediumtextType (558x) - 57493: 778, // middleIntType (558x) - 57503: 779, // numericType (558x) - 57543: 780, // smallIntType (558x) - 57561: 781, // tinyblobType (558x) - 57562: 782, // tinyIntType (558x) - 57563: 783, // tinytextType (558x) - 57348: 784, // toTimestamp (557x) - 57349: 785, // toTSO (557x) - 57506: 786, // optimize (555x) - 57528: 787, // rename (555x) - 57591: 788, // write (555x) - 57363: 789, // add (554x) - 57380: 790, // change (553x) - 58458: 791, // Identifier (546x) - 58539: 792, // NotKeywordToken (546x) - 58821: 793, // TiDBKeyword (546x) - 58831: 794, // UnReservedKeyword (546x) - 58787: 795, // SubSelect (262x) - 58844: 796, // UserVariable (204x) - 58510: 797, // Literal (200x) - 58777: 798, // StringLiteral (200x) - 58756: 799, // SimpleIdent (199x) - 58535: 800, // NextValueForSequence (197x) - 58433: 801, // FunctionCallGeneric (195x) - 58434: 802, // FunctionCallKeyword (195x) - 58435: 803, // FunctionCallNonKeyword (195x) - 58436: 804, // FunctionNameConflict (195x) - 58437: 805, // FunctionNameDateArith (195x) - 58438: 806, // FunctionNameDateArithMultiForms (195x) - 58439: 807, // FunctionNameDatetimePrecision (195x) - 58440: 808, // FunctionNameOptionalBraces (195x) - 58441: 809, // FunctionNameSequence (195x) - 58755: 810, // SimpleExpr (195x) - 58788: 811, // SumExpr (195x) - 58790: 812, // SystemVariable (195x) - 58855: 813, // Variable (195x) - 58879: 814, // WindowFuncCall (195x) - 58266: 815, // BitExpr (177x) - 58613: 816, // PredicateExpr (145x) - 58269: 817, // BoolPri (142x) - 58396: 818, // Expression (142x) - 58533: 819, // NUM (122x) - 58895: 820, // logAnd (107x) - 58896: 821, // logOr (107x) - 58387: 822, // EqOpt (101x) - 57407: 823, // deleteKwd (87x) - 58800: 824, // TableName (82x) - 58778: 825, // StringName (56x) - 58710: 826, // SelectStmt (54x) - 58711: 827, // SelectStmtBasic (54x) - 58713: 828, // SelectStmtFromDualTable (54x) - 58714: 829, // SelectStmtFromTable (54x) - 58731: 830, // SetOprClause (54x) - 58732: 831, // SetOprClauseList (53x) - 58735: 832, // SetOprStmtWithLimitOrderBy (53x) - 58736: 833, // SetOprStmtWoutLimitOrderBy (53x) - 58501: 834, // LengthNum (52x) - 58885: 835, // WithClause (51x) - 58723: 836, // SelectStmtWithClause (50x) - 58734: 837, // SetOprStmt (50x) - 57571: 838, // unsigned (50x) - 57594: 839, // zerofill (48x) - 57514: 840, // over (45x) - 58293: 841, // ColumnName (43x) - 58838: 842, // UpdateStmtNoWith (42x) - 58354: 843, // DeleteWithoutUsingStmt (41x) - 58486: 844, // InsertIntoStmt (39x) - 58674: 845, // ReplaceIntoStmt (39x) - 58837: 846, // UpdateStmt (39x) - 57410: 847, // describe (36x) - 57411: 848, // distinct (36x) - 57412: 849, // distinctRow (36x) - 57588: 850, // while (36x) - 58489: 851, // Int64Num (35x) - 57487: 852, // lowPriority (35x) - 58884: 853, // WindowingClause (35x) - 57406: 854, // delayed (34x) - 58353: 855, // DeleteWithUsingStmt (34x) - 57441: 856, // highPriority (34x) - 57465: 857, // iterate (34x) - 57474: 858, // leave (34x) - 58352: 859, // DeleteFromStmt (32x) - 57357: 860, // hintComment (28x) - 58407: 861, // FieldLen (27x) - 58586: 862, // OrderBy (26x) - 58717: 863, // SelectStmtLimit (26x) - 58579: 864, // OptWindowingClause (24x) - 58239: 865, // AnalyzeTableStmt (23x) - 58306: 866, // CommitStmt (23x) - 58701: 867, // RollbackStmt (23x) - 58739: 868, // SetStmt (23x) - 57549: 869, // sqlBigResult (23x) - 57550: 870, // sqlCalcFoundRows (23x) - 57551: 871, // sqlSmallResult (23x) - 57558: 872, // terminated (21x) - 58283: 873, // CharsetKw (20x) - 58846: 874, // Username (20x) - 57419: 875, // enclosed (19x) - 58392: 876, // ExplainStmt (19x) - 58393: 877, // ExplainSym (19x) - 58397: 878, // ExpressionList (19x) - 58459: 879, // IfExists (19x) - 58598: 880, // PartitionNameList (19x) - 58829: 881, // TruncateTableStmt (19x) - 58839: 882, // UseStmt (19x) - 57420: 883, // escaped (18x) - 57351: 884, // optionallyEnclosedBy (18x) - 58607: 885, // PlacementPolicyOption (18x) - 58624: 886, // ProcedureBlockContent (18x) - 58653: 887, // ProcedureUnlabelLoopStmt (18x) - 58460: 888, // IfNotExists (17x) - 58626: 889, // ProcedureCaseStmt (17x) - 58627: 890, // ProcedureCloseCur (17x) - 58633: 891, // ProcedureFetchInto (17x) - 58639: 892, // ProcedureIfstmt (17x) - 58640: 893, // ProcedureIterate (17x) - 58641: 894, // ProcedureLabeledBlock (17x) - 58655: 895, // ProcedurelabeledLoopStmt (17x) - 58642: 896, // ProcedureLeave (17x) - 58643: 897, // ProcedureOpenCur (17x) - 58646: 898, // ProcedureProcStmt (17x) - 58649: 899, // ProcedureSearchedCase (17x) - 58650: 900, // ProcedureSimpleCase (17x) - 58651: 901, // ProcedureStatementStmt (17x) - 58654: 902, // ProcedureUnlabeledBlock (17x) - 58652: 903, // ProcedureUnlabelLoopBlock (17x) - 58801: 904, // TableNameList (17x) - 58562: 905, // OptFieldLen (16x) - 58359: 906, // DistinctKwd (15x) - 58823: 907, // TimestampUnit (15x) - 58360: 908, // DistinctOpt (14x) - 58869: 909, // WhereClause (14x) - 58870: 910, // WhereClauseOptional (14x) - 58347: 911, // DefaultKwdOpt (13x) - 58388: 912, // EqOrAssignmentEq (13x) - 58395: 913, // ExprOrDefault (13x) - 58495: 914, // JoinTable (12x) - 57499: 915, // noWriteToBinLog (12x) - 58557: 916, // OptBinary (12x) - 57527: 917, // release (12x) - 58698: 918, // RolenameComposed (12x) - 58797: 919, // TableFactor (12x) - 58809: 920, // TableRef (12x) - 58822: 921, // TimeUnit (12x) - 58238: 922, // AnalyzeOptionListOpt (11x) - 58294: 923, // ColumnNameList (11x) - 58428: 924, // FromOrIn (11x) - 58234: 925, // AlterTableStmt (10x) - 58284: 926, // CharsetName (10x) - 58337: 927, // DBName (10x) - 58465: 928, // ImportIntoStmt (10x) - 57480: 929, // load (10x) - 58537: 930, // NoWriteToBinLogAliasOpt (10x) - 58587: 931, // OrderByOptional (10x) - 58589: 932, // PartDefOption (10x) - 58754: 933, // SignedNum (10x) - 58272: 934, // BuggyDefaultFalseDistinctOpt (9x) - 58346: 935, // DefaultFalseDistinctOpt (9x) - 58480: 936, // IndexPartSpecification (9x) - 58496: 937, // JoinType (9x) - 58497: 938, // KeyOrIndex (9x) - 58540: 939, // NotSym (9x) - 58547: 940, // NumLiteral (9x) - 58697: 941, // Rolename (9x) - 58692: 942, // RoleNameString (9x) - 58335: 943, // CrossOpt (8x) - 58394: 944, // ExplainableStmt (8x) - 58398: 945, // ExpressionListOpt (8x) - 58481: 946, // IndexPartSpecificationList (8x) - 58681: 947, // ResourceGroupName (8x) - 58718: 948, // SelectStmtLimitOpt (8x) - 58858: 949, // VariableName (8x) - 58219: 950, // AllOrPartitionNameList (7x) - 58263: 951, // BindableStmt (7x) - 58316: 952, // ConstraintKeywordOpt (7x) - 58342: 953, // DatabaseSym (7x) - 58413: 954, // FieldsOrColumns (7x) - 58425: 955, // ForceOpt (7x) - 58472: 956, // IndexInvisible (7x) - 58483: 957, // IndexType (7x) - 57469: 958, // kill (7x) - 58617: 959, // Priority (7x) - 58647: 960, // ProcedureProcStmt1s (7x) - 58702: 961, // RowFormat (7x) - 58705: 962, // RowValue (7x) - 58729: 963, // SetExpr (7x) - 57542: 964, // show (7x) - 58741: 965, // ShowDatabaseNameOpt (7x) - 58804: 966, // TableOptimizerHints (7x) - 58806: 967, // TableOption (7x) - 57584: 968, // varying (7x) - 58886: 969, // WithClustered (7x) - 58261: 970, // BeginTransactionStmt (6x) - 58253: 971, // BRIEBooleanOptionName (6x) - 58254: 972, // BRIEIntegerOptionName (6x) - 58255: 973, // BRIEKeywordOptionName (6x) - 58256: 974, // BRIEOption (6x) - 58257: 975, // BRIEOptions (6x) - 58259: 976, // BRIEStringOptionName (6x) - 58282: 977, // Char (6x) - 57385: 978, // column (6x) - 58289: 979, // ColumnDef (6x) - 58339: 980, // DatabaseOption (6x) - 58389: 981, // EscapedTableRef (6x) - 58411: 982, // FieldTerminator (6x) - 57437: 983, // grant (6x) - 58462: 984, // IgnoreOptional (6x) - 58475: 985, // IndexName (6x) - 58477: 986, // IndexNameList (6x) - 58478: 987, // IndexOption (6x) - 58479: 988, // IndexOptionList (6x) - 58517: 989, // LoadDataStmt (6x) - 58599: 990, // PartitionNameListOpt (6x) - 57519: 991, // procedure (6x) - 58669: 992, // ReleaseSavepointStmt (6x) - 58699: 993, // RolenameList (6x) - 58706: 994, // SavepointStmt (6x) - 58847: 995, // UsernameList (6x) - 58217: 996, // AlgorithmClause (5x) - 58274: 997, // ByItem (5x) - 58288: 998, // CollationName (5x) - 58291: 999, // ColumnKeywordOpt (5x) - 58355: 1000, // DirectPlacementOption (5x) - 58357: 1001, // DirectResourceGroupOption (5x) - 58409: 1002, // FieldOpt (5x) - 58410: 1003, // FieldOpts (5x) - 58456: 1004, // IdentList (5x) - 57450: 1005, // infile (5x) - 58506: 1006, // LimitOption (5x) - 58521: 1007, // LockClause (5x) - 58559: 1008, // OptCharsetWithOptBinary (5x) - 58569: 1009, // OptNullTreatment (5x) - 58611: 1010, // PolicyName (5x) - 58618: 1011, // PriorityOpt (5x) - 58709: 1012, // SelectLockOpt (5x) - 58716: 1013, // SelectStmtIntoOption (5x) - 58805: 1014, // TableOptimizerHintsOpt (5x) - 58810: 1015, // TableRefs (5x) - 58840: 1016, // UserSpec (5x) - 58242: 1017, // AsOfClause (4x) - 58245: 1018, // Assignment (4x) - 58250: 1019, // AuthString (4x) - 58270: 1020, // Boolean (4x) - 58273: 1021, // BuiltinFunction (4x) - 58275: 1022, // ByList (4x) - 58310: 1023, // ConfigItemName (4x) - 58317: 1024, // ConstraintVectorIndex (4x) - 58421: 1025, // FloatOpt (4x) - 58476: 1026, // IndexNameAndTypeOpt (4x) - 58484: 1027, // IndexTypeName (4x) - 58546: 1028, // NumList (4x) - 57507: 1029, // option (4x) - 57508: 1030, // optionally (4x) - 58576: 1031, // OptWild (4x) - 57512: 1032, // outer (4x) - 58612: 1033, // Precision (4x) - 58665: 1034, // ReferDef (4x) - 58689: 1035, // RestrictOrCascadeOpt (4x) - 58704: 1036, // RowStmt (4x) - 58724: 1037, // SequenceOption (4x) - 58792: 1038, // TableAsName (4x) - 58793: 1039, // TableAsNameOpt (4x) - 58803: 1040, // TableNameOptWild (4x) - 58807: 1041, // TableOptionList (4x) - 58818: 1042, // TextString (4x) - 58825: 1043, // TraceableStmt (4x) - 58826: 1044, // TransactionChar (4x) - 58841: 1045, // UserSpecList (4x) - 58854: 1046, // Varchar (4x) - 58880: 1047, // WindowName (4x) - 58246: 1048, // AssignmentList (3x) - 58247: 1049, // AttributesOpt (3x) - 58267: 1050, // BitValueType (3x) - 58268: 1051, // BlobType (3x) - 58271: 1052, // BooleanType (3x) - 58300: 1053, // ColumnOption (3x) - 58303: 1054, // ColumnPosition (3x) - 58307: 1055, // CommonTableExpr (3x) - 58318: 1056, // ConstraintWithVectorIndex (3x) - 58331: 1057, // CreateTableStmt (3x) - 58336: 1058, // CurdateSym (3x) - 58340: 1059, // DatabaseOptionList (3x) - 58343: 1060, // DateAndTimeType (3x) - 58350: 1061, // DefaultTrueDistinctOpt (3x) - 58356: 1062, // DirectResourceGroupBackgroundOption (3x) - 58358: 1063, // DirectResourceGroupRunawayOption (3x) - 58379: 1064, // DynamicCalibrateResourceOption (3x) - 57418: 1065, // elseIfKwd (3x) - 58384: 1066, // EnforcedOrNot (3x) - 58400: 1067, // ExtendedPriv (3x) - 58416: 1068, // FixedPointType (3x) - 58422: 1069, // FloatingPointType (3x) - 58442: 1070, // GeneratedAlways (3x) - 58445: 1071, // GlobalOrLocalOpt (3x) - 58446: 1072, // GlobalScope (3x) - 58450: 1073, // GroupByClause (3x) - 58467: 1074, // IndexHint (3x) - 58471: 1075, // IndexHintType (3x) - 58490: 1076, // IntegerType (3x) - 57468: 1077, // keys (3x) - 58513: 1078, // LoadDataOptionListOpt (3x) - 58520: 1079, // LocationLabelList (3x) - 58532: 1080, // NChar (3x) - 58541: 1081, // NowSym (3x) - 58542: 1082, // NowSymFunc (3x) - 58543: 1083, // NowSymOptionFraction (3x) - 58548: 1084, // NumericType (3x) - 58534: 1085, // NVarchar (3x) - 58570: 1086, // OptOrder (3x) - 58574: 1087, // OptTemporary (3x) - 58590: 1088, // PartDefOptionList (3x) - 58592: 1089, // PartitionDefinition (3x) - 58603: 1090, // PasswordOrLockOption (3x) - 58610: 1091, // PluginNameList (3x) - 58616: 1092, // PrimaryOpt (3x) - 58619: 1093, // PrivElem (3x) - 58621: 1094, // PrivType (3x) - 58656: 1095, // QueryWatchOption (3x) - 58658: 1096, // QueryWatchTextOption (3x) - 58660: 1097, // RecommendIndexOption (3x) - 58676: 1098, // RequireClause (3x) - 58677: 1099, // RequireClauseOpt (3x) - 58679: 1100, // RequireListElement (3x) - 58700: 1101, // RolenameWithoutIdent (3x) - 58693: 1102, // RoleOrPrivElem (3x) - 58715: 1103, // SelectStmtGroup (3x) - 58733: 1104, // SetOprOpt (3x) - 58753: 1105, // SignedLiteral (3x) - 58775: 1106, // StringLitOrUserVariable (3x) - 58780: 1107, // StringType (3x) - 58791: 1108, // TableAliasRefList (3x) - 58794: 1109, // TableElement (3x) - 58808: 1110, // TableOrTables (3x) - 58820: 1111, // TextType (3x) - 58827: 1112, // TransactionChars (3x) - 57566: 1113, // trigger (3x) - 58830: 1114, // Type (3x) - 57570: 1115, // unlock (3x) - 57572: 1116, // until (3x) - 57574: 1117, // usage (3x) - 58851: 1118, // ValuesList (3x) - 58853: 1119, // ValuesStmtList (3x) - 58849: 1120, // ValueSym (3x) - 58856: 1121, // VariableAssignment (3x) - 58877: 1122, // WindowFrameStart (3x) - 58894: 1123, // Year (3x) - 58213: 1124, // AddQueryWatchStmt (2x) - 58215: 1125, // AdminStmt (2x) - 58218: 1126, // AllColumnsOrPredicateColumnsOpt (2x) - 58220: 1127, // AlterDatabaseStmt (2x) - 58221: 1128, // AlterInstanceStmt (2x) - 58222: 1129, // AlterOrderItem (2x) - 58224: 1130, // AlterPolicyStmt (2x) - 58225: 1131, // AlterRangeStmt (2x) - 58226: 1132, // AlterResourceGroupStmt (2x) - 58227: 1133, // AlterSequenceOption (2x) - 58229: 1134, // AlterSequenceStmt (2x) - 58230: 1135, // AlterTableSpec (2x) - 58235: 1136, // AlterUserStmt (2x) - 58236: 1137, // AnalyzeOption (2x) - 58265: 1138, // BinlogStmt (2x) - 58258: 1139, // BRIEStmt (2x) - 58260: 1140, // BRIETables (2x) - 58277: 1141, // CalibrateResourceStmt (2x) - 57377: 1142, // call (2x) - 58279: 1143, // CallStmt (2x) - 58280: 1144, // CancelImportStmt (2x) - 58281: 1145, // CastType (2x) - 58287: 1146, // CheckConstraintKeyword (2x) - 58295: 1147, // ColumnNameListOpt (2x) - 58298: 1148, // ColumnNameOrUserVariable (2x) - 58297: 1149, // ColumnNameOrUserVarListOptWithBrackets (2x) - 58301: 1150, // ColumnOptionList (2x) - 58302: 1151, // ColumnOptionListOpt (2x) - 58305: 1152, // CommentOrAttributeOption (2x) - 58309: 1153, // CompletionTypeWithinTransaction (2x) - 58311: 1154, // ConnectionOption (2x) - 58313: 1155, // ConnectionOptions (2x) - 58315: 1156, // ConstraintElem (2x) - 58319: 1157, // CreateBindingStmt (2x) - 58320: 1158, // CreateDatabaseStmt (2x) - 58321: 1159, // CreateIndexStmt (2x) - 58322: 1160, // CreatePolicyStmt (2x) - 58323: 1161, // CreateProcedureStmt (2x) - 58324: 1162, // CreateResourceGroupStmt (2x) - 58325: 1163, // CreateRoleStmt (2x) - 58327: 1164, // CreateSequenceStmt (2x) - 58328: 1165, // CreateStatisticsStmt (2x) - 58329: 1166, // CreateTableOptionListOpt (2x) - 58332: 1167, // CreateUserStmt (2x) - 58334: 1168, // CreateViewStmt (2x) - 57399: 1169, // databases (2x) - 58344: 1170, // DeallocateStmt (2x) - 58345: 1171, // DeallocateSym (2x) - 58348: 1172, // DefaultOrExpression (2x) - 58361: 1173, // DoStmt (2x) - 58362: 1174, // DropBindingStmt (2x) - 58363: 1175, // DropDatabaseStmt (2x) - 58364: 1176, // DropIndexStmt (2x) - 58365: 1177, // DropPolicyStmt (2x) - 58366: 1178, // DropProcedureStmt (2x) - 58367: 1179, // DropQueryWatchStmt (2x) - 58368: 1180, // DropResourceGroupStmt (2x) - 58369: 1181, // DropRoleStmt (2x) - 58370: 1182, // DropSequenceStmt (2x) - 58371: 1183, // DropStatisticsStmt (2x) - 58372: 1184, // DropStatsStmt (2x) - 58373: 1185, // DropTableStmt (2x) - 58374: 1186, // DropUserStmt (2x) - 58375: 1187, // DropViewStmt (2x) - 58377: 1188, // DuplicateOpt (2x) - 58380: 1189, // ElseCaseOpt (2x) - 58382: 1190, // EmptyStmt (2x) - 58383: 1191, // EncryptionOpt (2x) - 58385: 1192, // EnforcedOrNotOpt (2x) - 58390: 1193, // ExecuteStmt (2x) - 58391: 1194, // ExplainFormatType (2x) - 58402: 1195, // Field (2x) - 58405: 1196, // FieldItem (2x) - 58412: 1197, // Fields (2x) - 58417: 1198, // FlashbackDatabaseStmt (2x) - 58418: 1199, // FlashbackTableStmt (2x) - 58419: 1200, // FlashbackToNewName (2x) - 58420: 1201, // FlashbackToTimestampStmt (2x) - 58424: 1202, // FlushStmt (2x) - 58426: 1203, // FormatOpt (2x) - 58431: 1204, // FuncDatetimePrecList (2x) - 58432: 1205, // FuncDatetimePrecListOpt (2x) - 58447: 1206, // GrantProxyStmt (2x) - 58448: 1207, // GrantRoleStmt (2x) - 58449: 1208, // GrantStmt (2x) - 58451: 1209, // HandleRange (2x) - 58453: 1210, // HashString (2x) - 58454: 1211, // HavingClause (2x) - 58455: 1212, // HelpStmt (2x) - 58468: 1213, // IndexHintList (2x) - 58469: 1214, // IndexHintListOpt (2x) - 58474: 1215, // IndexLockAndAlgorithmOpt (2x) - 57452: 1216, // inout (2x) - 58487: 1217, // InsertValues (2x) - 58492: 1218, // IntoOpt (2x) - 58498: 1219, // KeyOrIndexOpt (2x) - 58499: 1220, // KillOrKillTiDB (2x) - 58500: 1221, // KillStmt (2x) - 58502: 1222, // LikeOrIlikeEscapeOpt (2x) - 58505: 1223, // LimitClause (2x) - 57478: 1224, // linear (2x) - 58507: 1225, // LinearOpt (2x) - 58508: 1226, // Lines (2x) - 58511: 1227, // LoadDataOption (2x) - 58514: 1228, // LoadDataSetItem (2x) - 58516: 1229, // LoadDataSetSpecOpt (2x) - 58518: 1230, // LoadStatsStmt (2x) - 58522: 1231, // LockStatsStmt (2x) - 58523: 1232, // LockTablesStmt (2x) - 58530: 1233, // MaxValueOrExpression (2x) - 58536: 1234, // NextValueForSequenceParentheses (2x) - 58538: 1235, // NonTransactionalDMLStmt (2x) - 58544: 1236, // NowSymOptionFractionParentheses (2x) - 58549: 1237, // ObjectType (2x) - 57504: 1238, // of (2x) - 58550: 1239, // OfTablesOpt (2x) - 58551: 1240, // OnCommitOpt (2x) - 58552: 1241, // OnDelete (2x) - 58555: 1242, // OnUpdate (2x) - 58560: 1243, // OptCollate (2x) - 58564: 1244, // OptFull (2x) - 58580: 1245, // OptimizeTableStmt (2x) - 58566: 1246, // OptInteger (2x) - 58582: 1247, // OptionalBraces (2x) - 58581: 1248, // OptionLevel (2x) - 58568: 1249, // OptLeadLagInfo (2x) - 58567: 1250, // OptLLDefault (2x) - 58575: 1251, // OptVectorElementType (2x) - 57511: 1252, // out (2x) - 58588: 1253, // OuterOpt (2x) - 58593: 1254, // PartitionDefinitionList (2x) - 58594: 1255, // PartitionDefinitionListOpt (2x) - 58595: 1256, // PartitionIntervalOpt (2x) - 58601: 1257, // PartitionOpt (2x) - 58602: 1258, // PasswordOpt (2x) - 58604: 1259, // PasswordOrLockOptionList (2x) - 58605: 1260, // PasswordOrLockOptions (2x) - 58606: 1261, // PlacementOptionList (2x) - 58609: 1262, // PlanReplayerStmt (2x) - 58615: 1263, // PreparedStmt (2x) - 58620: 1264, // PrivLevel (2x) - 58622: 1265, // ProcedurceCond (2x) - 58623: 1266, // ProcedurceLabelOpt (2x) - 58629: 1267, // ProcedureDecl (2x) - 58636: 1268, // ProcedureHcond (2x) - 58638: 1269, // ProcedureIf (2x) - 58659: 1270, // QuickOptional (2x) - 58661: 1271, // RecommendIndexOptionList (2x) - 58662: 1272, // RecommendIndexOptionListOpt (2x) - 58663: 1273, // RecommendIndexStmt (2x) - 58664: 1274, // RecoverTableStmt (2x) - 58666: 1275, // ReferOpt (2x) - 58668: 1276, // RegexpSym (2x) - 58670: 1277, // RenameTableStmt (2x) - 58671: 1278, // RenameUserStmt (2x) - 58673: 1279, // RepeatableOpt (2x) - 58682: 1280, // ResourceGroupNameOption (2x) - 58683: 1281, // ResourceGroupOptionList (2x) - 58685: 1282, // ResourceGroupRunawayActionOption (2x) - 58687: 1283, // ResourceGroupRunawayWatchOption (2x) - 58688: 1284, // RestartStmt (2x) - 57533: 1285, // revoke (2x) - 58690: 1286, // RevokeRoleStmt (2x) - 58691: 1287, // RevokeStmt (2x) - 58694: 1288, // RoleOrPrivElemList (2x) - 58695: 1289, // RoleSpec (2x) - 58707: 1290, // SearchWhenThen (2x) - 58719: 1291, // SelectStmtOpt (2x) - 58722: 1292, // SelectStmtSQLCache (2x) - 58726: 1293, // SetBindingStmt (2x) - 58727: 1294, // SetDefaultRoleOpt (2x) - 58728: 1295, // SetDefaultRoleStmt (2x) - 58738: 1296, // SetRoleStmt (2x) - 58746: 1297, // ShowProfileType (2x) - 58749: 1298, // ShowStmt (2x) - 58750: 1299, // ShowTableAliasOpt (2x) - 58752: 1300, // ShutdownStmt (2x) - 58757: 1301, // SimpleWhenThen (2x) - 58762: 1302, // SplitOption (2x) - 58763: 1303, // SplitRegionStmt (2x) - 58759: 1304, // SpOptInout (2x) - 58760: 1305, // SpPdparam (2x) - 57546: 1306, // sqlexception (2x) - 57547: 1307, // sqlstate (2x) - 57548: 1308, // sqlwarning (2x) - 58767: 1309, // Statement (2x) - 58770: 1310, // StatsOptionsOpt (2x) - 58771: 1311, // StatsPersistentVal (2x) - 58772: 1312, // StatsType (2x) - 58776: 1313, // StringLitOrUserVariableList (2x) - 58781: 1314, // SubPartDefinition (2x) - 58784: 1315, // SubPartitionMethod (2x) - 58789: 1316, // Symbol (2x) - 58795: 1317, // TableElementList (2x) - 58798: 1318, // TableLock (2x) - 58802: 1319, // TableNameListOpt (2x) - 58817: 1320, // TablesTerminalSym (2x) - 58815: 1321, // TableToTable (2x) - 58819: 1322, // TextStringList (2x) - 58824: 1323, // TraceStmt (2x) - 58832: 1324, // UnlockStatsStmt (2x) - 58833: 1325, // UnlockTablesStmt (2x) - 58834: 1326, // UpdateIndexElem (2x) - 58842: 1327, // UserToUser (2x) - 58857: 1328, // VariableAssignmentList (2x) - 58867: 1329, // WhenClause (2x) - 58872: 1330, // WindowDefinition (2x) - 58875: 1331, // WindowFrameBound (2x) - 58882: 1332, // WindowSpec (2x) - 58887: 1333, // WithGrantOptionOpt (2x) - 58888: 1334, // WithList (2x) - 58893: 1335, // Writeable (2x) - 58: 1336, // ':' (1x) - 58214: 1337, // AdminShowSlow (1x) - 58216: 1338, // AdminStmtLimitOpt (1x) - 58223: 1339, // AlterOrderList (1x) - 58228: 1340, // AlterSequenceOptionList (1x) - 58231: 1341, // AlterTableSpecList (1x) - 58232: 1342, // AlterTableSpecListOpt (1x) - 58233: 1343, // AlterTableSpecSingleOpt (1x) - 58237: 1344, // AnalyzeOptionList (1x) - 58240: 1345, // AnyOrAll (1x) - 58241: 1346, // ArrayKwdOpt (1x) - 58243: 1347, // AsOfClauseOpt (1x) - 58244: 1348, // AsOpt (1x) - 58248: 1349, // AuthOption (1x) - 58249: 1350, // AuthPlugin (1x) - 58251: 1351, // AutoRandomOpt (1x) - 58252: 1352, // BDRRole (1x) - 58262: 1353, // BetweenOrNotOp (1x) - 58264: 1354, // BindingStatusType (1x) - 57375: 1355, // both (1x) - 58276: 1356, // CalibrateOption (1x) - 58278: 1357, // CalibrateResourceWorkloadOption (1x) - 58285: 1358, // CharsetNameOrDefault (1x) - 58286: 1359, // CharsetOpt (1x) - 58290: 1360, // ColumnFormat (1x) - 58292: 1361, // ColumnList (1x) - 58299: 1362, // ColumnNameOrUserVariableList (1x) - 58296: 1363, // ColumnNameOrUserVarListOpt (1x) - 58304: 1364, // ColumnSetValueList (1x) - 58308: 1365, // CompareOp (1x) - 58312: 1366, // ConnectionOptionList (1x) - 58314: 1367, // Constraint (1x) - 57387: 1368, // continueKwd (1x) - 58326: 1369, // CreateSequenceOptionListOpt (1x) - 58330: 1370, // CreateTableSelectOpt (1x) - 58333: 1371, // CreateViewSelectOpt (1x) - 57397: 1372, // cursor (1x) - 58341: 1373, // DatabaseOptionListOpt (1x) - 58338: 1374, // DBNameList (1x) - 58349: 1375, // DefaultOrExpressionList (1x) - 58351: 1376, // DefaultValueExpr (1x) - 58376: 1377, // DryRunOptions (1x) - 57416: 1378, // dual (1x) - 58378: 1379, // DynamicCalibrateOptionList (1x) - 58381: 1380, // ElseOpt (1x) - 58386: 1381, // EnforcedOrNotOrNotNullOpt (1x) - 57423: 1382, // exit (1x) - 58399: 1383, // ExpressionOpt (1x) - 58401: 1384, // FetchFirstOpt (1x) - 58403: 1385, // FieldAsName (1x) - 58404: 1386, // FieldAsNameOpt (1x) - 58406: 1387, // FieldItemList (1x) - 58408: 1388, // FieldList (1x) - 58414: 1389, // FirstAndLastPartOpt (1x) - 58415: 1390, // FirstOrNext (1x) - 58423: 1391, // FlushOption (1x) - 58427: 1392, // FromDual (1x) - 58429: 1393, // FulltextSearchModifierOpt (1x) - 58430: 1394, // FuncDatetimePrec (1x) - 58443: 1395, // GetFormatSelector (1x) - 58444: 1396, // GlobalOrLocal (1x) - 58452: 1397, // HandleRangeList (1x) - 58457: 1398, // IdentListWithParenOpt (1x) - 58461: 1399, // IgnoreLines (1x) - 58463: 1400, // IlikeOrNotOp (1x) - 58464: 1401, // ImportFromSelectStmt (1x) - 58470: 1402, // IndexHintScope (1x) - 58473: 1403, // IndexKeyTypeOpt (1x) - 58482: 1404, // IndexPartSpecificationListOpt (1x) - 58485: 1405, // IndexTypeOpt (1x) - 58466: 1406, // InOrNotOp (1x) - 58488: 1407, // InstanceOption (1x) - 58491: 1408, // IntervalExpr (1x) - 58494: 1409, // IsolationLevel (1x) - 58493: 1410, // IsOrNotOp (1x) - 57473: 1411, // leading (1x) - 58503: 1412, // LikeOrNotOp (1x) - 58504: 1413, // LikeTableWithOrWithoutParen (1x) - 58509: 1414, // LinesTerminated (1x) - 58512: 1415, // LoadDataOptionList (1x) - 58515: 1416, // LoadDataSetList (1x) - 58519: 1417, // LocalOpt (1x) - 58524: 1418, // LockType (1x) - 58525: 1419, // LogTypeOpt (1x) - 58526: 1420, // LowPriorityOpt (1x) - 58527: 1421, // Match (1x) - 58528: 1422, // MatchOpt (1x) - 58529: 1423, // MaxValPartOpt (1x) - 58531: 1424, // MaxValueOrExpressionList (1x) - 58545: 1425, // NullPartOpt (1x) - 58553: 1426, // OnDeleteUpdateOpt (1x) - 58554: 1427, // OnDuplicateKeyUpdate (1x) - 58556: 1428, // OptBinMod (1x) - 58558: 1429, // OptCharset (1x) - 58561: 1430, // OptExistingWindowName (1x) - 58563: 1431, // OptFromFirstLast (1x) - 58565: 1432, // OptGConcatSeparator (1x) - 58583: 1433, // OptionalShardColumn (1x) - 58571: 1434, // OptPartitionClause (1x) - 58572: 1435, // OptSpPdparams (1x) - 58573: 1436, // OptTable (1x) - 58897: 1437, // optValue (1x) - 58577: 1438, // OptWindowFrameClause (1x) - 58578: 1439, // OptWindowOrderByClause (1x) - 58585: 1440, // Order (1x) - 58584: 1441, // OrReplace (1x) - 57513: 1442, // outfile (1x) - 58591: 1443, // PartDefValuesOpt (1x) - 58596: 1444, // PartitionKeyAlgorithmOpt (1x) - 58597: 1445, // PartitionMethod (1x) - 58600: 1446, // PartitionNumOpt (1x) - 58608: 1447, // PlanReplayerDumpOpt (1x) - 57517: 1448, // precisionType (1x) - 58614: 1449, // PrepareSQL (1x) - 58898: 1450, // procedurceElseIfs (1x) - 58625: 1451, // ProcedureCall (1x) - 58628: 1452, // ProcedureCursorSelectStmt (1x) - 58630: 1453, // ProcedureDeclIdents (1x) - 58631: 1454, // ProcedureDecls (1x) - 58632: 1455, // ProcedureDeclsOpt (1x) - 58634: 1456, // ProcedureFetchList (1x) - 58635: 1457, // ProcedureHandlerType (1x) - 58637: 1458, // ProcedureHcondList (1x) - 58644: 1459, // ProcedureOptDefault (1x) - 58645: 1460, // ProcedureOptFetchNo (1x) - 58648: 1461, // ProcedureProcStmts (1x) - 58657: 1462, // QueryWatchOptionList (1x) - 57524: 1463, // recursive (1x) - 58667: 1464, // RegexpOrNotOp (1x) - 58672: 1465, // ReorganizePartitionRuleOpt (1x) - 58675: 1466, // Replica (1x) - 58678: 1467, // RequireList (1x) - 58680: 1468, // ResourceGroupBackgroundOptionList (1x) - 58684: 1469, // ResourceGroupPriorityOption (1x) - 58686: 1470, // ResourceGroupRunawayOptionList (1x) - 58696: 1471, // RoleSpecList (1x) - 58703: 1472, // RowOrRows (1x) - 58708: 1473, // SearchedWhenThenList (1x) - 58712: 1474, // SelectStmtFieldList (1x) - 58720: 1475, // SelectStmtOpts (1x) - 58721: 1476, // SelectStmtOptsList (1x) - 58725: 1477, // SequenceOptionList (1x) - 58730: 1478, // SetOpr (1x) - 58737: 1479, // SetRoleOpt (1x) - 58740: 1480, // ShardableStmt (1x) - 58742: 1481, // ShowIndexKwd (1x) - 58743: 1482, // ShowLikeOrWhereOpt (1x) - 58744: 1483, // ShowPlacementTarget (1x) - 58745: 1484, // ShowProfileArgsOpt (1x) - 58747: 1485, // ShowProfileTypes (1x) - 58748: 1486, // ShowProfileTypesOpt (1x) - 58751: 1487, // ShowTargetFilterable (1x) - 58758: 1488, // SimpleWhenThenList (1x) - 57544: 1489, // spatial (1x) - 58764: 1490, // SplitSyntaxOption (1x) - 58761: 1491, // SpPdparams (1x) - 57552: 1492, // ssl (1x) - 58765: 1493, // Start (1x) - 58766: 1494, // Starting (1x) - 57553: 1495, // starting (1x) - 58768: 1496, // StatementList (1x) - 58769: 1497, // StatementScope (1x) - 58773: 1498, // StorageMedia (1x) - 57554: 1499, // stored (1x) - 58774: 1500, // StringList (1x) - 58779: 1501, // StringNameOrBRIEOptionKeyword (1x) - 58782: 1502, // SubPartDefinitionList (1x) - 58783: 1503, // SubPartDefinitionListOpt (1x) - 58785: 1504, // SubPartitionNumOpt (1x) - 58786: 1505, // SubPartitionOpt (1x) - 58796: 1506, // TableElementListOpt (1x) - 58799: 1507, // TableLockList (1x) - 58811: 1508, // TableRefsClause (1x) - 58812: 1509, // TableSampleMethodOpt (1x) - 58813: 1510, // TableSampleOpt (1x) - 58814: 1511, // TableSampleUnitOpt (1x) - 58816: 1512, // TableToTableList (1x) - 57565: 1513, // trailing (1x) - 58828: 1514, // TrimDirection (1x) - 58835: 1515, // UpdateIndexesList (1x) - 58836: 1516, // UpdateIndexesOpt (1x) - 58843: 1517, // UserToUserList (1x) - 58845: 1518, // UserVariableList (1x) - 58848: 1519, // UsingRoles (1x) - 58850: 1520, // Values (1x) - 58852: 1521, // ValuesOpt (1x) - 58859: 1522, // ViewAlgorithm (1x) - 58860: 1523, // ViewCheckOption (1x) - 58861: 1524, // ViewDefiner (1x) - 58862: 1525, // ViewFieldList (1x) - 58863: 1526, // ViewName (1x) - 58864: 1527, // ViewSQLSecurity (1x) - 57585: 1528, // virtual (1x) - 58865: 1529, // VirtualOrStored (1x) - 58866: 1530, // WatchDurationOption (1x) - 58868: 1531, // WhenClauseList (1x) - 58871: 1532, // WindowClauseOptional (1x) - 58873: 1533, // WindowDefinitionList (1x) - 58874: 1534, // WindowFrameBetween (1x) - 58876: 1535, // WindowFrameExtent (1x) - 58878: 1536, // WindowFrameUnits (1x) - 58881: 1537, // WindowNameOrSpec (1x) - 58883: 1538, // WindowSpecDetails (1x) - 58889: 1539, // WithReadLockOpt (1x) - 58890: 1540, // WithRollupClause (1x) - 58891: 1541, // WithValidation (1x) - 58892: 1542, // WithValidationOpt (1x) - 58212: 1543, // $default (0x) - 58172: 1544, // andnot (0x) - 58196: 1545, // createTableSelect (0x) - 58186: 1546, // empty (0x) - 57345: 1547, // error (0x) - 58211: 1548, // higherThanComma (0x) - 58205: 1549, // higherThanParenthese (0x) - 58194: 1550, // insertValues (0x) - 57356: 1551, // invalid (0x) - 58197: 1552, // lowerThanCharsetKwd (0x) - 58210: 1553, // lowerThanComma (0x) - 58195: 1554, // lowerThanCreateTableSelect (0x) - 58207: 1555, // lowerThanEq (0x) - 58202: 1556, // lowerThanFunction (0x) - 58193: 1557, // lowerThanInsertValues (0x) - 58198: 1558, // lowerThanKey (0x) - 58199: 1559, // lowerThanLocal (0x) - 58209: 1560, // lowerThanNot (0x) - 58206: 1561, // lowerThanOn (0x) - 58204: 1562, // lowerThanParenthese (0x) - 58200: 1563, // lowerThanRemove (0x) - 58187: 1564, // lowerThanSelectOpt (0x) - 58192: 1565, // lowerThanSelectStmt (0x) - 58191: 1566, // lowerThanSetKeyword (0x) - 58190: 1567, // lowerThanStringLitToken (0x) - 58188: 1568, // lowerThanValueKeyword (0x) - 58189: 1569, // lowerThanWith (0x) - 58201: 1570, // lowerThenOrder (0x) - 58208: 1571, // neg (0x) - 57360: 1572, // odbcDateType (0x) - 57362: 1573, // odbcTimestampType (0x) - 57361: 1574, // odbcTimeType (0x) - 58203: 1575, // tableRefPriority (0x) + 59: 0, // ';' (2592x) + 57344: 1, // $end (2579x) + 57850: 2, // remove (2054x) + 58158: 3, // split (2054x) + 57778: 4, // merge (2053x) + 57851: 5, // reorganize (2052x) + 57651: 6, // comment (2045x) + 57921: 7, // storage (1951x) + 57609: 8, // autoIncrement (1940x) + 44: 9, // ',' (1938x) + 57718: 10, // first (1839x) + 57598: 11, // after (1833x) + 57884: 12, // serial (1830x) + 57610: 13, // autoRandom (1828x) + 57650: 14, // columnFormat (1828x) + 57819: 15, // password (1797x) + 57636: 16, // charsetKwd (1777x) + 57638: 17, // checksum (1767x) + 58037: 18, // placement (1764x) + 57753: 19, // keyBlockSize (1753x) + 57932: 20, // tablespace (1744x) + 57694: 21, // encryption (1742x) + 57699: 22, // engine (1739x) + 57675: 23, // data (1737x) + 57744: 24, // insertMethod (1735x) + 57772: 25, // maxRows (1735x) + 57782: 26, // minRows (1735x) + 57795: 27, // nodegroup (1735x) + 57661: 28, // connection (1727x) + 57611: 29, // autoRandomBase (1724x) + 58161: 30, // statsBuckets (1722x) + 58167: 31, // statsTopN (1722x) + 57950: 32, // ttl (1722x) + 57608: 33, // autoIdCache (1721x) + 57613: 34, // avgRowLength (1721x) + 57656: 35, // compression (1721x) + 57682: 36, // delayKeyWrite (1721x) + 57813: 37, // packKeys (1721x) + 57832: 38, // preSplitRegions (1721x) + 57871: 39, // rowFormat (1721x) + 57877: 40, // secondaryEngine (1721x) + 57888: 41, // shardRowIDBits (1721x) + 57913: 42, // statsAutoRecalc (1721x) + 57914: 43, // statsColChoice (1721x) + 57915: 44, // statsColList (1721x) + 57917: 45, // statsPersistent (1721x) + 57918: 46, // statsSamplePages (1721x) + 57919: 47, // statsSampleRate (1721x) + 57933: 48, // tableChecksum (1721x) + 57951: 49, // ttlEnable (1721x) + 57952: 50, // ttlJobInterval (1721x) + 57858: 51, // resource (1701x) + 41: 52, // ')' (1694x) + 57606: 53, // attribute (1673x) + 57346: 54, // identifier (1672x) + 57595: 55, // account (1671x) + 57714: 56, // failedLoginAttempts (1671x) + 57820: 57, // passwordLockTime (1671x) + 57696: 58, // encryptionMethod (1661x) + 57763: 59, // local (1659x) + 57863: 60, // resume (1657x) + 57892: 61, // signed (1657x) + 57898: 62, // snapshot (1655x) + 57614: 63, // backend (1654x) + 57637: 64, // checkpoint (1654x) + 57639: 65, // checksumConcurrency (1654x) + 57657: 66, // compressionLevel (1654x) + 57658: 67, // compressionType (1654x) + 57659: 68, // concurrency (1654x) + 57666: 69, // csvBackslashEscape (1654x) + 57667: 70, // csvDelimiter (1654x) + 57668: 71, // csvHeader (1654x) + 57669: 72, // csvNotNull (1654x) + 57670: 73, // csvNull (1654x) + 57671: 74, // csvSeparator (1654x) + 57672: 75, // csvTrimLastSeparators (1654x) + 57695: 76, // encryptionKeyFile (1654x) + 58010: 77, // fullBackupStorage (1654x) + 58011: 78, // gcTTL (1654x) + 57738: 79, // ignoreStats (1654x) + 57758: 80, // lastBackup (1654x) + 57762: 81, // loadStats (1654x) + 57810: 82, // onDuplicate (1654x) + 57808: 83, // online (1654x) + 57844: 84, // rateLimit (1654x) + 58050: 85, // restoredTS (1654x) + 57881: 86, // sendCredentialsToTiKV (1654x) + 57895: 87, // skipSchemaFiles (1654x) + 58060: 88, // startTS (1654x) + 57922: 89, // strictFormat (1654x) + 57938: 90, // tikvImporter (1654x) + 58094: 91, // untilTS (1654x) + 57968: 92, // waitTiflashReady (1654x) + 57973: 93, // withSysTable (1654x) + 57727: 94, // global (1652x) + 57618: 95, // begin (1648x) + 57652: 96, // commit (1648x) + 57792: 97, // no (1648x) + 57867: 98, // rollback (1648x) + 57912: 99, // start (1646x) + 57948: 100, // truncate (1645x) + 57596: 101, // action (1644x) + 57630: 102, // cache (1643x) + 57953: 103, // tp (1643x) + 57646: 104, // clustered (1642x) + 57746: 105, // invisible (1642x) + 57793: 106, // nocache (1642x) + 57798: 107, // nonclustered (1642x) + 57811: 108, // open (1642x) + 57966: 109, // visible (1642x) + 57601: 110, // algorithm (1641x) + 57644: 111, // close (1641x) + 57674: 112, // cycle (1641x) + 57781: 113, // minValue (1641x) + 57697: 114, // end (1640x) + 57741: 115, // increment (1640x) + 57794: 116, // nocycle (1640x) + 57796: 117, // nomaxvalue (1640x) + 57797: 118, // nominvalue (1640x) + 57860: 119, // restart (1638x) + 58152: 120, // regions (1637x) + 57980: 121, // background (1636x) + 57987: 122, // burstable (1636x) + 58043: 123, // priority (1636x) + 58045: 124, // queryLimit (1636x) + 58053: 125, // ruRate (1636x) + 58039: 126, // plan (1633x) + 57924: 127, // subpartition (1633x) + 57976: 128, // yearType (1633x) + 57818: 129, // partitions (1632x) + 58076: 130, // timeDuration (1632x) + 57911: 131, // sqlTsiYear (1631x) + 57990: 132, // constraints (1630x) + 58008: 133, // followerConstraints (1630x) + 58009: 134, // followers (1630x) + 58023: 135, // leaderConstraints (1630x) + 58025: 136, // learnerConstraints (1630x) + 58026: 137, // learners (1630x) + 58042: 138, // primaryRegion (1630x) + 58055: 139, // schedule (1630x) + 58071: 140, // survivalPreferences (1630x) + 58100: 141, // voterConstraints (1630x) + 58101: 142, // voters (1630x) + 58103: 143, // watch (1629x) + 57649: 144, // columns (1628x) + 58003: 145, // execElapsed (1628x) + 57739: 146, // importKwd (1628x) + 58044: 147, // processedKeys (1628x) + 58051: 148, // ru (1628x) + 57960: 149, // user (1628x) + 57965: 150, // view (1628x) + 57678: 151, // day (1627x) + 57997: 152, // defined (1625x) + 57875: 153, // second (1625x) + 57735: 154, // hour (1624x) + 57779: 155, // microsecond (1624x) + 57780: 156, // minute (1624x) + 57785: 157, // month (1624x) + 57840: 158, // quarter (1624x) + 57904: 159, // sqlTsiDay (1624x) + 57905: 160, // sqlTsiHour (1624x) + 57906: 161, // sqlTsiMinute (1624x) + 57907: 162, // sqlTsiMonth (1624x) + 57908: 163, // sqlTsiQuarter (1624x) + 57909: 164, // sqlTsiSecond (1624x) + 57910: 165, // sqlTsiWeek (1624x) + 57970: 166, // week (1624x) + 57605: 167, // ascii (1623x) + 57629: 168, // byteType (1623x) + 57920: 169, // status (1623x) + 57931: 170, // tables (1623x) + 57957: 171, // unicodeSym (1623x) + 57716: 172, // fields (1622x) + 58046: 173, // readOnly (1622x) + 58057: 174, // speed (1622x) + 57766: 175, // logs (1621x) + 57842: 176, // query (1619x) + 57882: 177, // separator (1619x) + 57640: 178, // cipher (1618x) + 57989: 179, // compress (1618x) + 57751: 180, // issuer (1618x) + 57752: 181, // jsonType (1618x) + 57768: 182, // maxConnectionsPerHour (1618x) + 57771: 183, // maxQueriesPerHour (1618x) + 57773: 184, // maxUpdatesPerHour (1618x) + 57774: 185, // maxUserConnections (1618x) + 57829: 186, // preceding (1618x) + 57873: 187, // san (1618x) + 57923: 188, // subject (1618x) + 57941: 189, // tokenIssuer (1618x) + 57677: 190, // datetimeType (1617x) + 57676: 191, // dateType (1617x) + 58001: 192, // endTime (1617x) + 57719: 193, // fixed (1617x) + 58059: 194, // startTime (1617x) + 58074: 195, // taskTypes (1617x) + 57939: 196, // timeType (1617x) + 58095: 197, // utilizationLimit (1617x) + 57964: 198, // vectorType (1617x) + 57940: 199, // timestampType (1616x) + 57621: 200, // bindings (1615x) + 57627: 201, // booleanType (1615x) + 57673: 202, // current (1615x) + 57681: 203, // definer (1615x) + 57730: 204, // hash (1615x) + 57737: 205, // identified (1615x) + 58146: 206, // jobs (1615x) + 57859: 207, // respect (1615x) + 57866: 208, // role (1615x) + 57936: 209, // textType (1615x) + 57962: 210, // value (1615x) + 57615: 211, // backup (1614x) + 57624: 212, // bitType (1614x) + 57626: 213, // boolType (1614x) + 57698: 214, // enforced (1614x) + 57701: 215, // enum (1614x) + 57721: 216, // following (1614x) + 57759: 217, // less (1614x) + 57787: 218, // national (1614x) + 57788: 219, // ncharType (1614x) + 57800: 220, // nowait (1614x) + 57802: 221, // nvarcharType (1614x) + 57809: 222, // only (1614x) + 57874: 223, // savepoint (1614x) + 57894: 224, // skip (1614x) + 57937: 225, // than (1614x) + 58169: 226, // tiFlash (1614x) + 57954: 227, // unbounded (1614x) + 57620: 228, // binding (1613x) + 57736: 229, // hypo (1613x) + 58145: 230, // job (1613x) + 58034: 231, // next_row_id (1613x) + 57804: 232, // offset (1613x) + 57828: 233, // policy (1613x) + 58041: 234, // predicate (1613x) + 57854: 235, // replica (1613x) + 57934: 236, // temporary (1613x) + 57683: 237, // digest (1612x) + 57764: 238, // location (1612x) + 58038: 239, // planCache (1612x) + 57830: 240, // prepare (1612x) + 58160: 241, // stats (1612x) + 57958: 242, // unknown (1612x) + 57967: 243, // wait (1612x) + 57628: 244, // btree (1611x) + 57991: 245, // cooldown (1611x) + 58140: 246, // ddl (1611x) + 57680: 247, // declare (1611x) + 57999: 248, // dryRun (1611x) + 57722: 249, // format (1611x) + 58033: 250, // hnsw (1611x) + 57750: 251, // isolation (1611x) + 57756: 252, // last (1611x) + 57777: 253, // memory (1611x) + 57790: 254, // next (1611x) + 57803: 255, // off (1611x) + 57812: 256, // optional (1611x) + 57833: 257, // privileges (1611x) + 57857: 258, // required (1611x) + 57872: 259, // rtree (1611x) + 58155: 260, // sampleRate (1611x) + 57883: 261, // sequence (1611x) + 57886: 262, // session (1611x) + 57897: 263, // slow (1611x) + 58072: 264, // switchGroup (1611x) + 58090: 265, // traffic (1611x) + 58093: 266, // unlimited (1611x) + 57961: 267, // validation (1611x) + 57963: 268, // variables (1611x) + 57607: 269, // attributes (1610x) + 58135: 270, // cancel (1610x) + 57632: 271, // capture (1610x) + 57654: 272, // compact (1610x) + 57685: 273, // disable (1610x) + 57689: 274, // do (1610x) + 57691: 275, // dynamic (1610x) + 57692: 276, // enable (1610x) + 57702: 277, // errorKwd (1610x) + 58002: 278, // exact (1610x) + 57720: 279, // flush (1610x) + 57724: 280, // full (1610x) + 57729: 281, // handler (1610x) + 57733: 282, // history (1610x) + 57775: 283, // mb (1610x) + 57783: 284, // mode (1610x) + 57821: 285, // pause (1610x) + 57826: 286, // plugins (1610x) + 57835: 287, // processlist (1610x) + 57847: 288, // recover (1610x) + 57852: 289, // repair (1610x) + 57853: 290, // repeatable (1610x) + 58056: 291, // similar (1610x) + 58159: 292, // statistics (1610x) + 57925: 293, // subpartitions (1610x) + 58168: 294, // tidb (1610x) + 57972: 295, // without (1610x) + 58104: 296, // admin (1609x) + 58105: 297, // batch (1609x) + 57617: 298, // bdr (1609x) + 57623: 299, // binlog (1609x) + 57625: 300, // block (1609x) + 57985: 301, // br (1609x) + 57986: 302, // briefType (1609x) + 58106: 303, // buckets (1609x) + 57631: 304, // calibrate (1609x) + 58136: 305, // cardinality (1609x) + 57635: 306, // chain (1609x) + 57643: 307, // clientErrorsSummary (1609x) + 58137: 308, // cmSketch (1609x) + 57647: 309, // coalesce (1609x) + 57655: 310, // compressed (1609x) + 57664: 311, // context (1609x) + 57992: 312, // copyKwd (1609x) + 58139: 313, // correlation (1609x) + 57665: 314, // cpu (1609x) + 57679: 315, // deallocate (1609x) + 58141: 316, // dependency (1609x) + 57684: 317, // directory (1609x) + 57687: 318, // discard (1609x) + 57688: 319, // disk (1609x) + 57998: 320, // dotType (1609x) + 58143: 321, // dry (1609x) + 57690: 322, // duplicate (1609x) + 57708: 323, // exchange (1609x) + 57710: 324, // execute (1609x) + 57711: 325, // expansion (1609x) + 58006: 326, // flashback (1609x) + 57726: 327, // general (1609x) + 57731: 328, // help (1609x) + 58014: 329, // high (1609x) + 57732: 330, // histogram (1609x) + 57734: 331, // hosts (1609x) + 57703: 332, // identSQLErrors (1609x) + 57742: 333, // incremental (1609x) + 57743: 334, // indexes (1609x) + 58015: 335, // inplace (1609x) + 57745: 336, // instance (1609x) + 58016: 337, // instant (1609x) + 57749: 338, // ipc (1609x) + 57754: 339, // labels (1609x) + 57765: 340, // locked (1609x) + 58028: 341, // low (1609x) + 58030: 342, // medium (1609x) + 58031: 343, // metadata (1609x) + 57784: 344, // modify (1609x) + 57791: 345, // nextval (1609x) + 57801: 346, // nulls (1609x) + 57814: 347, // pageSym (1609x) + 57839: 348, // purge (1609x) + 57845: 349, // rebuild (1609x) + 57846: 350, // recommend (1609x) + 57848: 351, // redundant (1609x) + 57849: 352, // reload (1609x) + 57861: 353, // restore (1609x) + 57869: 354, // routine (1609x) + 58154: 355, // run (1609x) + 58054: 356, // s3 (1609x) + 58156: 357, // samples (1609x) + 57878: 358, // secondaryLoad (1609x) + 57879: 359, // secondaryUnload (1609x) + 57889: 360, // share (1609x) + 57891: 361, // shutdown (1609x) + 57896: 362, // slave (1609x) + 57900: 363, // source (1609x) + 58162: 364, // statsExtended (1609x) + 57916: 365, // statsOptions (1609x) + 58065: 366, // stop (1609x) + 57927: 367, // swaps (1609x) + 58075: 368, // tidbJson (1609x) + 58080: 369, // tokudbDefault (1609x) + 58081: 370, // tokudbFast (1609x) + 58082: 371, // tokudbLzma (1609x) + 58083: 372, // tokudbQuickLZ (1609x) + 58084: 373, // tokudbSmall (1609x) + 58085: 374, // tokudbSnappy (1609x) + 58086: 375, // tokudbUncompressed (1609x) + 58087: 376, // tokudbZlib (1609x) + 58088: 377, // tokudbZstd (1609x) + 58170: 378, // topn (1609x) + 57944: 379, // trace (1609x) + 57945: 380, // traditional (1609x) + 58092: 381, // trueCardCost (1609x) + 58099: 382, // verboseType (1609x) + 57969: 383, // warnings (1609x) + 57599: 384, // against (1608x) + 57600: 385, // ago (1608x) + 57602: 386, // always (1608x) + 57604: 387, // apply (1608x) + 57616: 388, // backups (1608x) + 57619: 389, // bernoulli (1608x) + 57622: 390, // bindingCache (1608x) + 58124: 391, // builtins (1608x) + 57633: 392, // cascaded (1608x) + 57634: 393, // causal (1608x) + 57641: 394, // cleanup (1608x) + 57642: 395, // client (1608x) + 57645: 396, // cluster (1608x) + 57648: 397, // collation (1608x) + 58138: 398, // columnStatsUsage (1608x) + 57653: 399, // committed (1608x) + 57660: 400, // config (1608x) + 57662: 401, // consistency (1608x) + 57663: 402, // consistent (1608x) + 58142: 403, // depth (1608x) + 57686: 404, // disabled (1608x) + 58000: 405, // dump (1608x) + 57693: 406, // enabled (1608x) + 57700: 407, // engines (1608x) + 57706: 408, // events (1608x) + 57707: 409, // evolve (1608x) + 57712: 410, // expire (1608x) + 58004: 411, // exprPushdownBlacklist (1608x) + 57713: 412, // extended (1608x) + 57715: 413, // faultsSym (1608x) + 57723: 414, // found (1608x) + 57725: 415, // function (1608x) + 57728: 416, // grants (1608x) + 58144: 417, // histogramsInFlight (1608x) + 58017: 418, // internal (1608x) + 57747: 419, // invoker (1608x) + 57748: 420, // io (1608x) + 57755: 421, // language (1608x) + 57760: 422, // level (1608x) + 57761: 423, // list (1608x) + 58027: 424, // log (1608x) + 57767: 425, // master (1608x) + 57789: 426, // never (1608x) + 57799: 427, // none (1608x) + 57805: 428, // oltpReadOnly (1608x) + 57806: 429, // oltpReadWrite (1608x) + 57807: 430, // oltpWriteOnly (1608x) + 58149: 431, // optimistic (1608x) + 58036: 432, // optRuleBlacklist (1608x) + 57815: 433, // parser (1608x) + 57816: 434, // partial (1608x) + 57817: 435, // partitioning (1608x) + 57822: 436, // percent (1608x) + 58150: 437, // pessimistic (1608x) + 57827: 438, // point (1608x) + 57831: 439, // preserve (1608x) + 57836: 440, // profile (1608x) + 57837: 441, // profiles (1608x) + 57841: 442, // queries (1608x) + 58047: 443, // recent (1608x) + 58151: 444, // region (1608x) + 58048: 445, // replay (1608x) + 58049: 446, // replayer (1608x) + 57862: 447, // restores (1608x) + 57864: 448, // reuse (1608x) + 57868: 449, // rollup (1608x) + 57876: 450, // secondary (1608x) + 57880: 451, // security (1608x) + 57885: 452, // serializable (1608x) + 58157: 453, // sessionStates (1608x) + 57893: 454, // simple (1608x) + 58163: 455, // statsHealthy (1608x) + 58164: 456, // statsHistograms (1608x) + 58165: 457, // statsLocked (1608x) + 58166: 458, // statsMeta (1608x) + 57928: 459, // switchesSym (1608x) + 57929: 460, // system (1608x) + 57930: 461, // systemTime (1608x) + 58073: 462, // target (1608x) + 57935: 463, // temptable (1608x) + 58079: 464, // tls (1608x) + 58089: 465, // top (1608x) + 57942: 466, // tpcc (1608x) + 57943: 467, // tpch10 (1608x) + 57946: 468, // transaction (1608x) + 57947: 469, // triggers (1608x) + 57955: 470, // uncommitted (1608x) + 57956: 471, // undefined (1608x) + 57959: 472, // unset (1608x) + 58171: 473, // width (1608x) + 57974: 474, // workload (1608x) + 57975: 475, // x509 (1608x) + 57977: 476, // addDate (1607x) + 57597: 477, // advise (1607x) + 57603: 478, // any (1607x) + 57978: 479, // approxCountDistinct (1607x) + 57979: 480, // approxPercentile (1607x) + 57612: 481, // avg (1607x) + 57981: 482, // bitAnd (1607x) + 57982: 483, // bitOr (1607x) + 57983: 484, // bitXor (1607x) + 57984: 485, // bound (1607x) + 57988: 486, // cast (1607x) + 57993: 487, // curDate (1607x) + 57994: 488, // curTime (1607x) + 57995: 489, // dateAdd (1607x) + 57996: 490, // dateSub (1607x) + 57704: 491, // escape (1607x) + 57705: 492, // event (1607x) + 57709: 493, // exclusive (1607x) + 58005: 494, // extract (1607x) + 57717: 495, // file (1607x) + 58007: 496, // follower (1607x) + 58012: 497, // getFormat (1607x) + 58013: 498, // groupConcat (1607x) + 57740: 499, // imports (1607x) + 58018: 500, // ioReadBandwidth (1607x) + 58019: 501, // ioWriteBandwidth (1607x) + 58020: 502, // jsonArrayagg (1607x) + 58021: 503, // jsonObjectAgg (1607x) + 57757: 504, // lastval (1607x) + 58022: 505, // leader (1607x) + 58024: 506, // learner (1607x) + 58029: 507, // max (1607x) + 57769: 508, // max_idxnum (1607x) + 57770: 509, // max_minutes (1607x) + 57776: 510, // member (1607x) + 58032: 511, // min (1607x) + 57786: 512, // names (1607x) + 58147: 513, // nodeID (1607x) + 58148: 514, // nodeState (1607x) + 58035: 515, // now (1607x) + 57823: 516, // per_db (1607x) + 57824: 517, // per_table (1607x) + 58040: 518, // position (1607x) + 57834: 519, // process (1607x) + 57838: 520, // proxy (1607x) + 57843: 521, // quick (1607x) + 57855: 522, // replicas (1607x) + 57856: 523, // replication (1607x) + 58153: 524, // reset (1607x) + 57865: 525, // reverse (1607x) + 57870: 526, // rowCount (1607x) + 58052: 527, // running (1607x) + 57887: 528, // setval (1607x) + 57890: 529, // shared (1607x) + 57899: 530, // some (1607x) + 57901: 531, // sqlBufferResult (1607x) + 57902: 532, // sqlCache (1607x) + 57903: 533, // sqlNoCache (1607x) + 58058: 534, // staleness (1607x) + 58064: 535, // std (1607x) + 58061: 536, // stddev (1607x) + 58062: 537, // stddevPop (1607x) + 58063: 538, // stddevSamp (1607x) + 58066: 539, // strict (1607x) + 58067: 540, // strong (1607x) + 58068: 541, // subDate (1607x) + 58069: 542, // substring (1607x) + 58070: 543, // sum (1607x) + 57926: 544, // super (1607x) + 58077: 545, // timestampAdd (1607x) + 58078: 546, // timestampDiff (1607x) + 58091: 547, // trim (1607x) + 57949: 548, // tsoType (1607x) + 58096: 549, // variance (1607x) + 58097: 550, // varPop (1607x) + 58098: 551, // varSamp (1607x) + 58102: 552, // voter (1607x) + 57971: 553, // weightString (1607x) + 57505: 554, // on (1521x) + 40: 555, // '(' (1517x) + 57590: 556, // with (1385x) + 57353: 557, // stringLit (1369x) + 58190: 558, // not2 (1323x) + 57405: 559, // defaultKwd (1274x) + 57498: 560, // not (1254x) + 57369: 561, // as (1221x) + 57384: 562, // collate (1187x) + 57568: 563, // union (1165x) + 57475: 564, // left (1162x) + 57534: 565, // right (1162x) + 57576: 566, // using (1157x) + 43: 567, // '+' (1138x) + 45: 568, // '-' (1136x) + 57496: 569, // mod (1115x) + 57515: 570, // partition (1108x) + 57502: 571, // null (1083x) + 57580: 572, // values (1072x) + 57446: 573, // ignore (1060x) + 57421: 574, // except (1054x) + 57461: 575, // intersect (1053x) + 57530: 576, // replace (1052x) + 58179: 577, // eq (1043x) + 57381: 578, // charType (1040x) + 57426: 579, // fetch (1035x) + 58174: 580, // intLit (1034x) + 57541: 581, // set (1028x) + 57477: 582, // limit (1026x) + 57431: 583, // forKwd (1022x) + 57463: 584, // into (1019x) + 42: 585, // '*' (1017x) + 57434: 586, // from (1015x) + 57483: 587, // lock (1013x) + 57587: 588, // where (1000x) + 57510: 589, // order (998x) + 57432: 590, // force (991x) + 57367: 591, // and (988x) + 57509: 592, // or (964x) + 57358: 593, // andand (963x) + 57825: 594, // pipesAsOr (963x) + 57592: 595, // xor (963x) + 57438: 596, // group (935x) + 57440: 597, // having (930x) + 57555: 598, // straightJoin (922x) + 57589: 599, // window (916x) + 57575: 600, // use (913x) + 57466: 601, // join (910x) + 57409: 602, // desc (904x) + 57497: 603, // natural (900x) + 57390: 604, // cross (899x) + 57445: 605, // ifKwd (899x) + 57451: 606, // inner (899x) + 57424: 607, // explain (898x) + 57476: 608, // like (897x) + 125: 609, // '}' (896x) + 57373: 610, // binaryType (892x) + 57453: 611, // insert (888x) + 57537: 612, // rows (883x) + 57586: 613, // when (877x) + 57417: 614, // elseKwd (873x) + 57520: 615, // rangeKwd (873x) + 57557: 616, // tableSample (873x) + 57439: 617, // groups (871x) + 57400: 618, // dayHour (870x) + 57401: 619, // dayMicrosecond (870x) + 57402: 620, // dayMinute (870x) + 57403: 621, // daySecond (870x) + 57442: 622, // hourMicrosecond (870x) + 57443: 623, // hourMinute (870x) + 57444: 624, // hourSecond (870x) + 57494: 625, // minuteMicrosecond (870x) + 57495: 626, // minuteSecond (870x) + 57539: 627, // secondMicrosecond (870x) + 57593: 628, // yearMonth (870x) + 57370: 629, // asc (868x) + 57448: 630, // in (862x) + 57559: 631, // then (862x) + 57556: 632, // tableKwd (859x) + 47: 633, // '/' (854x) + 60: 634, // '<' (854x) + 62: 635, // '>' (854x) + 37: 636, // '%' (853x) + 38: 637, // '&' (853x) + 94: 638, // '^' (853x) + 124: 639, // '|' (853x) + 57413: 640, // div (853x) + 58184: 641, // lsh (853x) + 58189: 642, // rsh (853x) + 58180: 643, // ge (852x) + 57464: 644, // is (852x) + 58181: 645, // le (852x) + 58185: 646, // neq (852x) + 58186: 647, // neqSynonym (852x) + 58187: 648, // nulleq (852x) + 57379: 649, // caseKwd (851x) + 57529: 650, // repeat (851x) + 57425: 651, // falseKwd (850x) + 57567: 652, // trueKwd (850x) + 57371: 653, // between (847x) + 57354: 654, // singleAtIdentifier (847x) + 57396: 655, // currentUser (839x) + 57447: 656, // ilike (839x) + 57526: 657, // regexpKwd (839x) + 57535: 658, // rlike (839x) + 58173: 659, // decLit (836x) + 58172: 660, // floatLit (836x) + 57350: 661, // memberof (836x) + 58175: 662, // hexLit (834x) + 58176: 663, // bitLit (832x) + 57536: 664, // row (831x) + 57462: 665, // interval (830x) + 58188: 666, // paramMarker (829x) + 123: 667, // '{' (827x) + 57467: 668, // key (824x) + 57398: 669, // database (823x) + 57422: 670, // exists (822x) + 57352: 671, // underscoreCS (821x) + 57388: 672, // convert (820x) + 58114: 673, // builtinCurDate (818x) + 58122: 674, // builtinNow (818x) + 57392: 675, // currentDate (818x) + 57395: 676, // currentTs (818x) + 57355: 677, // doubleAtIdentifier (818x) + 57481: 678, // localTime (818x) + 57482: 679, // localTs (818x) + 57540: 680, // selectKwd (818x) + 57545: 681, // sql (818x) + 58113: 682, // builtinCount (816x) + 33: 683, // '!' (815x) + 126: 684, // '~' (815x) + 58107: 685, // builtinApproxCountDistinct (815x) + 58108: 686, // builtinApproxPercentile (815x) + 58109: 687, // builtinBitAnd (815x) + 58110: 688, // builtinBitOr (815x) + 58111: 689, // builtinBitXor (815x) + 58112: 690, // builtinCast (815x) + 58115: 691, // builtinCurTime (815x) + 58116: 692, // builtinDateAdd (815x) + 58117: 693, // builtinDateSub (815x) + 58118: 694, // builtinExtract (815x) + 58119: 695, // builtinGroupConcat (815x) + 58120: 696, // builtinMax (815x) + 58121: 697, // builtinMin (815x) + 58123: 698, // builtinPosition (815x) + 58125: 699, // builtinStddevPop (815x) + 58126: 700, // builtinStddevSamp (815x) + 58127: 701, // builtinSubstring (815x) + 58128: 702, // builtinSum (815x) + 58129: 703, // builtinSysDate (815x) + 58130: 704, // builtinTranslate (815x) + 58131: 705, // builtinTrim (815x) + 58132: 706, // builtinUser (815x) + 58133: 707, // builtinVarPop (815x) + 58134: 708, // builtinVarSamp (815x) + 57391: 709, // cumeDist (815x) + 57393: 710, // currentRole (815x) + 57394: 711, // currentTime (815x) + 57408: 712, // denseRank (815x) + 57427: 713, // firstValue (815x) + 57470: 714, // lag (815x) + 57471: 715, // lastValue (815x) + 57472: 716, // lead (815x) + 57500: 717, // nthValue (815x) + 57501: 718, // ntile (815x) + 57516: 719, // percentRank (815x) + 57518: 720, // primary (815x) + 57521: 721, // rank (815x) + 57538: 722, // rowNumber (815x) + 57560: 723, // tidbCurrentTSO (815x) + 57577: 724, // utcDate (815x) + 57578: 725, // utcTime (815x) + 57579: 726, // utcTimestamp (815x) + 57383: 727, // check (814x) + 57569: 728, // unique (807x) + 57386: 729, // constraint (803x) + 57359: 730, // pipes (801x) + 57525: 731, // references (801x) + 57436: 732, // generated (797x) + 57382: 733, // character (779x) + 57449: 734, // index (765x) + 57488: 735, // match (750x) + 57573: 736, // update (705x) + 57564: 737, // to (656x) + 57366: 738, // analyze (651x) + 46: 739, // '.' (638x) + 57364: 740, // all (635x) + 57368: 741, // array (600x) + 58182: 742, // jss (600x) + 58183: 743, // juss (600x) + 58178: 744, // assignmentEq (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) + 58465: 796, // Identifier (547x) + 58546: 797, // NotKeywordToken (547x) + 58828: 798, // TiDBKeyword (547x) + 58843: 799, // UnReservedKeyword (547x) + 58794: 800, // SubSelect (263x) + 58856: 801, // UserVariable (205x) + 58517: 802, // Literal (202x) + 58784: 803, // StringLiteral (202x) + 58763: 804, // SimpleIdent (200x) + 58542: 805, // NextValueForSequence (198x) + 58440: 806, // FunctionCallGeneric (196x) + 58441: 807, // FunctionCallKeyword (196x) + 58442: 808, // FunctionCallNonKeyword (196x) + 58443: 809, // FunctionNameConflict (196x) + 58444: 810, // FunctionNameDateArith (196x) + 58445: 811, // FunctionNameDateArithMultiForms (196x) + 58446: 812, // FunctionNameDatetimePrecision (196x) + 58447: 813, // FunctionNameOptionalBraces (196x) + 58448: 814, // FunctionNameSequence (196x) + 58762: 815, // SimpleExpr (196x) + 58795: 816, // SumExpr (196x) + 58797: 817, // SystemVariable (196x) + 58867: 818, // Variable (196x) + 58891: 819, // WindowFuncCall (196x) + 58273: 820, // BitExpr (178x) + 58620: 821, // PredicateExpr (146x) + 58276: 822, // BoolPri (143x) + 58403: 823, // Expression (143x) + 58540: 824, // NUM (125x) + 58394: 825, // EqOpt (108x) + 58907: 826, // logAnd (107x) + 58908: 827, // logOr (107x) + 57407: 828, // deleteKwd (87x) + 58807: 829, // TableName (82x) + 58785: 830, // StringName (56x) + 58717: 831, // SelectStmt (54x) + 58718: 832, // SelectStmtBasic (54x) + 58720: 833, // SelectStmtFromDualTable (54x) + 58721: 834, // SelectStmtFromTable (54x) + 58738: 835, // SetOprClause (54x) + 58739: 836, // SetOprClauseList (53x) + 58742: 837, // SetOprStmtWithLimitOrderBy (53x) + 58743: 838, // SetOprStmtWoutLimitOrderBy (53x) + 58508: 839, // LengthNum (52x) + 58897: 840, // WithClause (51x) + 58730: 841, // SelectStmtWithClause (50x) + 58741: 842, // SetOprStmt (50x) + 57571: 843, // unsigned (50x) + 57594: 844, // zerofill (48x) + 57514: 845, // over (45x) + 58300: 846, // ColumnName (43x) + 58850: 847, // UpdateStmtNoWith (42x) + 58361: 848, // DeleteWithoutUsingStmt (41x) + 58493: 849, // InsertIntoStmt (39x) + 58681: 850, // ReplaceIntoStmt (39x) + 58849: 851, // UpdateStmt (39x) + 57410: 852, // describe (36x) + 57411: 853, // distinct (36x) + 57412: 854, // distinctRow (36x) + 58496: 855, // Int64Num (36x) + 57588: 856, // while (36x) + 57487: 857, // lowPriority (35x) + 58896: 858, // WindowingClause (35x) + 57406: 859, // delayed (34x) + 58360: 860, // DeleteWithUsingStmt (34x) + 57441: 861, // highPriority (34x) + 57465: 862, // iterate (34x) + 57474: 863, // leave (34x) + 58359: 864, // DeleteFromStmt (32x) + 57357: 865, // hintComment (28x) + 58414: 866, // FieldLen (27x) + 58593: 867, // OrderBy (26x) + 58724: 868, // SelectStmtLimit (26x) + 58586: 869, // OptWindowingClause (24x) + 58246: 870, // AnalyzeTableStmt (23x) + 58313: 871, // CommitStmt (23x) + 58708: 872, // RollbackStmt (23x) + 58746: 873, // SetStmt (23x) + 57549: 874, // sqlBigResult (23x) + 57550: 875, // sqlCalcFoundRows (23x) + 57551: 876, // sqlSmallResult (23x) + 57558: 877, // terminated (21x) + 58290: 878, // CharsetKw (20x) + 58404: 879, // ExpressionList (20x) + 58858: 880, // Username (20x) + 57419: 881, // enclosed (19x) + 58399: 882, // ExplainStmt (19x) + 58400: 883, // ExplainSym (19x) + 58466: 884, // IfExists (19x) + 58605: 885, // PartitionNameList (19x) + 58841: 886, // TruncateTableStmt (19x) + 58851: 887, // UseStmt (19x) + 57420: 888, // escaped (18x) + 57351: 889, // optionallyEnclosedBy (18x) + 58614: 890, // PlacementPolicyOption (18x) + 58631: 891, // ProcedureBlockContent (18x) + 58660: 892, // ProcedureUnlabelLoopStmt (18x) + 58467: 893, // IfNotExists (17x) + 58633: 894, // ProcedureCaseStmt (17x) + 58634: 895, // ProcedureCloseCur (17x) + 58640: 896, // ProcedureFetchInto (17x) + 58646: 897, // ProcedureIfstmt (17x) + 58647: 898, // ProcedureIterate (17x) + 58648: 899, // ProcedureLabeledBlock (17x) + 58662: 900, // ProcedurelabeledLoopStmt (17x) + 58649: 901, // ProcedureLeave (17x) + 58650: 902, // ProcedureOpenCur (17x) + 58653: 903, // ProcedureProcStmt (17x) + 58656: 904, // ProcedureSearchedCase (17x) + 58657: 905, // ProcedureSimpleCase (17x) + 58658: 906, // ProcedureStatementStmt (17x) + 58661: 907, // ProcedureUnlabeledBlock (17x) + 58659: 908, // ProcedureUnlabelLoopBlock (17x) + 58808: 909, // TableNameList (17x) + 58569: 910, // OptFieldLen (16x) + 58366: 911, // DistinctKwd (15x) + 58830: 912, // TimestampUnit (15x) + 58367: 913, // DistinctOpt (14x) + 58881: 914, // WhereClause (14x) + 58882: 915, // WhereClauseOptional (14x) + 58354: 916, // DefaultKwdOpt (13x) + 58395: 917, // EqOrAssignmentEq (13x) + 58402: 918, // ExprOrDefault (13x) + 58502: 919, // JoinTable (12x) + 57499: 920, // noWriteToBinLog (12x) + 58564: 921, // OptBinary (12x) + 57527: 922, // release (12x) + 58705: 923, // RolenameComposed (12x) + 58804: 924, // TableFactor (12x) + 58816: 925, // TableRef (12x) + 58829: 926, // TimeUnit (12x) + 58245: 927, // AnalyzeOptionListOpt (11x) + 58301: 928, // ColumnNameList (11x) + 58435: 929, // FromOrIn (11x) + 58241: 930, // AlterTableStmt (10x) + 58291: 931, // CharsetName (10x) + 58344: 932, // DBName (10x) + 58472: 933, // ImportIntoStmt (10x) + 57480: 934, // load (10x) + 58544: 935, // NoWriteToBinLogAliasOpt (10x) + 58554: 936, // NumLiteral (10x) + 58594: 937, // OrderByOptional (10x) + 58596: 938, // PartDefOption (10x) + 58761: 939, // SignedNum (10x) + 58279: 940, // BuggyDefaultFalseDistinctOpt (9x) + 58353: 941, // DefaultFalseDistinctOpt (9x) + 58405: 942, // ExpressionListOpt (9x) + 58487: 943, // IndexPartSpecification (9x) + 58503: 944, // JoinType (9x) + 58504: 945, // KeyOrIndex (9x) + 58547: 946, // NotSym (9x) + 58704: 947, // Rolename (9x) + 58699: 948, // RoleNameString (9x) + 58342: 949, // CrossOpt (8x) + 58401: 950, // ExplainableStmt (8x) + 58488: 951, // IndexPartSpecificationList (8x) + 58688: 952, // ResourceGroupName (8x) + 58725: 953, // SelectStmtLimitOpt (8x) + 58870: 954, // VariableName (8x) + 58224: 955, // AllOrPartitionNameList (7x) + 58270: 956, // BindableStmt (7x) + 58323: 957, // ConstraintKeywordOpt (7x) + 58349: 958, // DatabaseSym (7x) + 58420: 959, // FieldsOrColumns (7x) + 58432: 960, // ForceOpt (7x) + 58479: 961, // IndexInvisible (7x) + 58490: 962, // IndexType (7x) + 57469: 963, // kill (7x) + 58624: 964, // Priority (7x) + 58654: 965, // ProcedureProcStmt1s (7x) + 58709: 966, // RowFormat (7x) + 58712: 967, // RowValue (7x) + 58736: 968, // SetExpr (7x) + 57542: 969, // show (7x) + 58748: 970, // ShowDatabaseNameOpt (7x) + 58811: 971, // TableOptimizerHints (7x) + 58813: 972, // TableOption (7x) + 57584: 973, // varying (7x) + 58898: 974, // WithClustered (7x) + 58268: 975, // BeginTransactionStmt (6x) + 58277: 976, // Boolean (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) + 58289: 983, // Char (6x) + 57385: 984, // column (6x) + 58296: 985, // ColumnDef (6x) + 58346: 986, // DatabaseOption (6x) + 58396: 987, // EscapedTableRef (6x) + 58418: 988, // FieldTerminator (6x) + 57437: 989, // grant (6x) + 58469: 990, // IgnoreOptional (6x) + 58482: 991, // IndexName (6x) + 58484: 992, // IndexNameList (6x) + 58485: 993, // IndexOption (6x) + 58486: 994, // IndexOptionList (6x) + 58524: 995, // LoadDataStmt (6x) + 58606: 996, // PartitionNameListOpt (6x) + 57519: 997, // procedure (6x) + 58676: 998, // ReleaseSavepointStmt (6x) + 58706: 999, // RolenameList (6x) + 58713: 1000, // SavepointStmt (6x) + 58859: 1001, // UsernameList (6x) + 58222: 1002, // AlgorithmClause (5x) + 58281: 1003, // ByItem (5x) + 58295: 1004, // CollationName (5x) + 58298: 1005, // ColumnKeywordOpt (5x) + 58362: 1006, // DirectPlacementOption (5x) + 58364: 1007, // DirectResourceGroupOption (5x) + 58416: 1008, // FieldOpt (5x) + 58417: 1009, // FieldOpts (5x) + 58463: 1010, // IdentList (5x) + 57450: 1011, // infile (5x) + 58513: 1012, // LimitOption (5x) + 58528: 1013, // LockClause (5x) + 58566: 1014, // OptCharsetWithOptBinary (5x) + 58576: 1015, // OptNullTreatment (5x) + 58618: 1016, // PolicyName (5x) + 58625: 1017, // PriorityOpt (5x) + 58716: 1018, // SelectLockOpt (5x) + 58723: 1019, // SelectStmtIntoOption (5x) + 58812: 1020, // TableOptimizerHintsOpt (5x) + 58817: 1021, // TableRefs (5x) + 58852: 1022, // UserSpec (5x) + 58249: 1023, // AsOfClause (4x) + 58252: 1024, // Assignment (4x) + 58257: 1025, // AuthString (4x) + 58280: 1026, // BuiltinFunction (4x) + 58282: 1027, // ByList (4x) + 58317: 1028, // ConfigItemName (4x) + 58324: 1029, // ConstraintVectorIndex (4x) + 58428: 1030, // FloatOpt (4x) + 58483: 1031, // IndexNameAndTypeOpt (4x) + 58491: 1032, // IndexTypeName (4x) + 58553: 1033, // NumList (4x) + 57507: 1034, // option (4x) + 57508: 1035, // optionally (4x) + 58583: 1036, // OptWild (4x) + 57512: 1037, // outer (4x) + 58619: 1038, // Precision (4x) + 58672: 1039, // ReferDef (4x) + 58696: 1040, // RestrictOrCascadeOpt (4x) + 58711: 1041, // RowStmt (4x) + 58731: 1042, // SequenceOption (4x) + 58760: 1043, // SignedLiteral (4x) + 58799: 1044, // TableAsName (4x) + 58800: 1045, // TableAsNameOpt (4x) + 58810: 1046, // TableNameOptWild (4x) + 58814: 1047, // TableOptionList (4x) + 58825: 1048, // TextString (4x) + 58832: 1049, // TraceableStmt (4x) + 58838: 1050, // TransactionChar (4x) + 58853: 1051, // UserSpecList (4x) + 58866: 1052, // Varchar (4x) + 58892: 1053, // WindowName (4x) + 58253: 1054, // AssignmentList (3x) + 58254: 1055, // AttributesOpt (3x) + 58274: 1056, // BitValueType (3x) + 58275: 1057, // BlobType (3x) + 58278: 1058, // BooleanType (3x) + 58307: 1059, // ColumnOption (3x) + 58310: 1060, // ColumnPosition (3x) + 58314: 1061, // CommonTableExpr (3x) + 58325: 1062, // ConstraintWithVectorIndex (3x) + 58338: 1063, // CreateTableStmt (3x) + 58343: 1064, // CurdateSym (3x) + 58347: 1065, // DatabaseOptionList (3x) + 58350: 1066, // DateAndTimeType (3x) + 58357: 1067, // DefaultTrueDistinctOpt (3x) + 58363: 1068, // DirectResourceGroupBackgroundOption (3x) + 58365: 1069, // DirectResourceGroupRunawayOption (3x) + 58386: 1070, // DynamicCalibrateResourceOption (3x) + 57418: 1071, // elseIfKwd (3x) + 58391: 1072, // EnforcedOrNot (3x) + 58407: 1073, // ExtendedPriv (3x) + 58423: 1074, // FixedPointType (3x) + 58429: 1075, // FloatingPointType (3x) + 58449: 1076, // GeneratedAlways (3x) + 58452: 1077, // GlobalOrLocalOpt (3x) + 58453: 1078, // GlobalScope (3x) + 58457: 1079, // GroupByClause (3x) + 58474: 1080, // IndexHint (3x) + 58478: 1081, // IndexHintType (3x) + 58497: 1082, // IntegerType (3x) + 57468: 1083, // keys (3x) + 58520: 1084, // LoadDataOptionListOpt (3x) + 58527: 1085, // LocationLabelList (3x) + 58539: 1086, // NChar (3x) + 58548: 1087, // NowSym (3x) + 58549: 1088, // NowSymFunc (3x) + 58550: 1089, // NowSymOptionFraction (3x) + 58555: 1090, // NumericType (3x) + 58541: 1091, // NVarchar (3x) + 58577: 1092, // OptOrder (3x) + 58581: 1093, // OptTemporary (3x) + 58597: 1094, // PartDefOptionList (3x) + 58599: 1095, // PartitionDefinition (3x) + 58610: 1096, // PasswordOrLockOption (3x) + 58617: 1097, // PluginNameList (3x) + 58623: 1098, // PrimaryOpt (3x) + 58626: 1099, // PrivElem (3x) + 58628: 1100, // PrivType (3x) + 58663: 1101, // QueryWatchOption (3x) + 58665: 1102, // QueryWatchTextOption (3x) + 58667: 1103, // RecommendIndexOption (3x) + 58683: 1104, // RequireClause (3x) + 58684: 1105, // RequireClauseOpt (3x) + 58686: 1106, // RequireListElement (3x) + 58707: 1107, // RolenameWithoutIdent (3x) + 58700: 1108, // RoleOrPrivElem (3x) + 58722: 1109, // SelectStmtGroup (3x) + 58740: 1110, // SetOprOpt (3x) + 58782: 1111, // StringLitOrUserVariable (3x) + 58787: 1112, // StringType (3x) + 58798: 1113, // TableAliasRefList (3x) + 58801: 1114, // TableElement (3x) + 58815: 1115, // TableOrTables (3x) + 58827: 1116, // TextType (3x) + 58839: 1117, // TransactionChars (3x) + 57566: 1118, // trigger (3x) + 58842: 1119, // Type (3x) + 57570: 1120, // unlock (3x) + 57572: 1121, // until (3x) + 57574: 1122, // usage (3x) + 58863: 1123, // ValuesList (3x) + 58865: 1124, // ValuesStmtList (3x) + 58861: 1125, // ValueSym (3x) + 58868: 1126, // VariableAssignment (3x) + 58889: 1127, // WindowFrameStart (3x) + 58906: 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, // CancelImportStmt (2x) + 58288: 1151, // CastType (2x) + 58294: 1152, // CheckConstraintKeyword (2x) + 58302: 1153, // ColumnNameListOpt (2x) + 58305: 1154, // ColumnNameOrUserVariable (2x) + 58304: 1155, // ColumnNameOrUserVarListOptWithBrackets (2x) + 58308: 1156, // ColumnOptionList (2x) + 58309: 1157, // ColumnOptionListOpt (2x) + 58312: 1158, // CommentOrAttributeOption (2x) + 58316: 1159, // CompletionTypeWithinTransaction (2x) + 58318: 1160, // ConnectionOption (2x) + 58320: 1161, // ConnectionOptions (2x) + 58322: 1162, // ConstraintElem (2x) + 58326: 1163, // CreateBindingStmt (2x) + 58327: 1164, // CreateDatabaseStmt (2x) + 58328: 1165, // CreateIndexStmt (2x) + 58329: 1166, // CreatePolicyStmt (2x) + 58330: 1167, // CreateProcedureStmt (2x) + 58331: 1168, // CreateResourceGroupStmt (2x) + 58332: 1169, // CreateRoleStmt (2x) + 58334: 1170, // CreateSequenceStmt (2x) + 58335: 1171, // CreateStatisticsStmt (2x) + 58336: 1172, // CreateTableOptionListOpt (2x) + 58339: 1173, // CreateUserStmt (2x) + 58341: 1174, // CreateViewStmt (2x) + 57399: 1175, // databases (2x) + 58351: 1176, // DeallocateStmt (2x) + 58352: 1177, // DeallocateSym (2x) + 58355: 1178, // DefaultOrExpression (2x) + 58368: 1179, // DoStmt (2x) + 58369: 1180, // DropBindingStmt (2x) + 58370: 1181, // DropDatabaseStmt (2x) + 58371: 1182, // DropIndexStmt (2x) + 58372: 1183, // DropPolicyStmt (2x) + 58373: 1184, // DropProcedureStmt (2x) + 58374: 1185, // DropQueryWatchStmt (2x) + 58375: 1186, // DropResourceGroupStmt (2x) + 58376: 1187, // DropRoleStmt (2x) + 58377: 1188, // DropSequenceStmt (2x) + 58378: 1189, // DropStatisticsStmt (2x) + 58379: 1190, // DropStatsStmt (2x) + 58380: 1191, // DropTableStmt (2x) + 58381: 1192, // DropUserStmt (2x) + 58382: 1193, // DropViewStmt (2x) + 58384: 1194, // DuplicateOpt (2x) + 58387: 1195, // ElseCaseOpt (2x) + 58389: 1196, // EmptyStmt (2x) + 58390: 1197, // EncryptionOpt (2x) + 58392: 1198, // EnforcedOrNotOpt (2x) + 58397: 1199, // ExecuteStmt (2x) + 58398: 1200, // ExplainFormatType (2x) + 58409: 1201, // Field (2x) + 58412: 1202, // FieldItem (2x) + 58419: 1203, // Fields (2x) + 58424: 1204, // FlashbackDatabaseStmt (2x) + 58425: 1205, // FlashbackTableStmt (2x) + 58426: 1206, // FlashbackToNewName (2x) + 58427: 1207, // FlashbackToTimestampStmt (2x) + 58431: 1208, // FlushStmt (2x) + 58433: 1209, // FormatOpt (2x) + 58438: 1210, // FuncDatetimePrecList (2x) + 58439: 1211, // FuncDatetimePrecListOpt (2x) + 58454: 1212, // GrantProxyStmt (2x) + 58455: 1213, // GrantRoleStmt (2x) + 58456: 1214, // GrantStmt (2x) + 58458: 1215, // HandleRange (2x) + 58460: 1216, // HashString (2x) + 58461: 1217, // HavingClause (2x) + 58462: 1218, // HelpStmt (2x) + 58475: 1219, // IndexHintList (2x) + 58476: 1220, // IndexHintListOpt (2x) + 58481: 1221, // IndexLockAndAlgorithmOpt (2x) + 57452: 1222, // inout (2x) + 58494: 1223, // InsertValues (2x) + 58499: 1224, // IntoOpt (2x) + 58505: 1225, // KeyOrIndexOpt (2x) + 58506: 1226, // KillOrKillTiDB (2x) + 58507: 1227, // KillStmt (2x) + 58509: 1228, // LikeOrIlikeEscapeOpt (2x) + 58512: 1229, // LimitClause (2x) + 57478: 1230, // linear (2x) + 58514: 1231, // LinearOpt (2x) + 58515: 1232, // Lines (2x) + 58518: 1233, // LoadDataOption (2x) + 58521: 1234, // LoadDataSetItem (2x) + 58523: 1235, // LoadDataSetSpecOpt (2x) + 58525: 1236, // LoadStatsStmt (2x) + 58529: 1237, // LockStatsStmt (2x) + 58530: 1238, // LockTablesStmt (2x) + 58537: 1239, // MaxValueOrExpression (2x) + 58543: 1240, // NextValueForSequenceParentheses (2x) + 58545: 1241, // NonTransactionalDMLStmt (2x) + 58551: 1242, // NowSymOptionFractionParentheses (2x) + 58556: 1243, // ObjectType (2x) + 57504: 1244, // of (2x) + 58557: 1245, // OfTablesOpt (2x) + 58558: 1246, // OnCommitOpt (2x) + 58559: 1247, // OnDelete (2x) + 58562: 1248, // OnUpdate (2x) + 58567: 1249, // OptCollate (2x) + 58571: 1250, // OptFull (2x) + 58587: 1251, // OptimizeTableStmt (2x) + 58573: 1252, // OptInteger (2x) + 58589: 1253, // OptionalBraces (2x) + 58588: 1254, // OptionLevel (2x) + 58575: 1255, // OptLeadLagInfo (2x) + 58574: 1256, // OptLLDefault (2x) + 58582: 1257, // OptVectorElementType (2x) + 57511: 1258, // out (2x) + 58595: 1259, // OuterOpt (2x) + 58600: 1260, // PartitionDefinitionList (2x) + 58601: 1261, // PartitionDefinitionListOpt (2x) + 58602: 1262, // PartitionIntervalOpt (2x) + 58608: 1263, // PartitionOpt (2x) + 58609: 1264, // PasswordOpt (2x) + 58611: 1265, // PasswordOrLockOptionList (2x) + 58612: 1266, // PasswordOrLockOptions (2x) + 58613: 1267, // PlacementOptionList (2x) + 58616: 1268, // PlanReplayerStmt (2x) + 58622: 1269, // PreparedStmt (2x) + 58627: 1270, // PrivLevel (2x) + 58629: 1271, // ProcedurceCond (2x) + 58630: 1272, // ProcedurceLabelOpt (2x) + 58636: 1273, // ProcedureDecl (2x) + 58643: 1274, // ProcedureHcond (2x) + 58645: 1275, // ProcedureIf (2x) + 58666: 1276, // QuickOptional (2x) + 58668: 1277, // RecommendIndexOptionList (2x) + 58669: 1278, // RecommendIndexOptionListOpt (2x) + 58670: 1279, // RecommendIndexStmt (2x) + 58671: 1280, // RecoverTableStmt (2x) + 58673: 1281, // ReferOpt (2x) + 58675: 1282, // RegexpSym (2x) + 58677: 1283, // RenameTableStmt (2x) + 58678: 1284, // RenameUserStmt (2x) + 58680: 1285, // RepeatableOpt (2x) + 58689: 1286, // ResourceGroupNameOption (2x) + 58690: 1287, // ResourceGroupOptionList (2x) + 58692: 1288, // ResourceGroupRunawayActionOption (2x) + 58694: 1289, // ResourceGroupRunawayWatchOption (2x) + 58695: 1290, // RestartStmt (2x) + 57533: 1291, // revoke (2x) + 58697: 1292, // RevokeRoleStmt (2x) + 58698: 1293, // RevokeStmt (2x) + 58701: 1294, // RoleOrPrivElemList (2x) + 58702: 1295, // RoleSpec (2x) + 58714: 1296, // SearchWhenThen (2x) + 58726: 1297, // SelectStmtOpt (2x) + 58729: 1298, // SelectStmtSQLCache (2x) + 58733: 1299, // SetBindingStmt (2x) + 58734: 1300, // SetDefaultRoleOpt (2x) + 58735: 1301, // SetDefaultRoleStmt (2x) + 58745: 1302, // SetRoleStmt (2x) + 58753: 1303, // ShowProfileType (2x) + 58756: 1304, // ShowStmt (2x) + 58757: 1305, // ShowTableAliasOpt (2x) + 58759: 1306, // ShutdownStmt (2x) + 58764: 1307, // SimpleWhenThen (2x) + 58769: 1308, // SplitOption (2x) + 58770: 1309, // SplitRegionStmt (2x) + 58766: 1310, // SpOptInout (2x) + 58767: 1311, // SpPdparam (2x) + 57546: 1312, // sqlexception (2x) + 57547: 1313, // sqlstate (2x) + 57548: 1314, // sqlwarning (2x) + 58774: 1315, // Statement (2x) + 58777: 1316, // StatsOptionsOpt (2x) + 58778: 1317, // StatsPersistentVal (2x) + 58779: 1318, // StatsType (2x) + 58783: 1319, // StringLitOrUserVariableList (2x) + 58788: 1320, // SubPartDefinition (2x) + 58791: 1321, // SubPartitionMethod (2x) + 58796: 1322, // Symbol (2x) + 58802: 1323, // TableElementList (2x) + 58805: 1324, // TableLock (2x) + 58809: 1325, // TableNameListOpt (2x) + 58824: 1326, // TablesTerminalSym (2x) + 58822: 1327, // TableToTable (2x) + 58826: 1328, // TextStringList (2x) + 58831: 1329, // TraceStmt (2x) + 58833: 1330, // TrafficCaptureOpt (2x) + 58835: 1331, // TrafficReplayOpt (2x) + 58837: 1332, // TrafficStmt (2x) + 58844: 1333, // UnlockStatsStmt (2x) + 58845: 1334, // UnlockTablesStmt (2x) + 58846: 1335, // UpdateIndexElem (2x) + 58854: 1336, // UserToUser (2x) + 58869: 1337, // VariableAssignmentList (2x) + 58879: 1338, // WhenClause (2x) + 58884: 1339, // WindowDefinition (2x) + 58887: 1340, // WindowFrameBound (2x) + 58894: 1341, // WindowSpec (2x) + 58899: 1342, // WithGrantOptionOpt (2x) + 58900: 1343, // WithList (2x) + 58905: 1344, // Writeable (2x) + 58: 1345, // ':' (1x) + 58219: 1346, // AdminShowSlow (1x) + 58221: 1347, // AdminStmtLimitOpt (1x) + 58228: 1348, // AlterJobOptionList (1x) + 58230: 1349, // AlterOrderList (1x) + 58235: 1350, // AlterSequenceOptionList (1x) + 58238: 1351, // AlterTableSpecList (1x) + 58239: 1352, // AlterTableSpecListOpt (1x) + 58240: 1353, // AlterTableSpecSingleOpt (1x) + 58244: 1354, // AnalyzeOptionList (1x) + 58247: 1355, // AnyOrAll (1x) + 58248: 1356, // ArrayKwdOpt (1x) + 58250: 1357, // AsOfClauseOpt (1x) + 58251: 1358, // AsOpt (1x) + 58255: 1359, // AuthOption (1x) + 58256: 1360, // AuthPlugin (1x) + 58258: 1361, // AutoRandomOpt (1x) + 58259: 1362, // BDRRole (1x) + 58269: 1363, // BetweenOrNotOp (1x) + 58271: 1364, // BindingStatusType (1x) + 57375: 1365, // both (1x) + 58283: 1366, // CalibrateOption (1x) + 58285: 1367, // CalibrateResourceWorkloadOption (1x) + 58292: 1368, // CharsetNameOrDefault (1x) + 58293: 1369, // CharsetOpt (1x) + 58297: 1370, // ColumnFormat (1x) + 58299: 1371, // ColumnList (1x) + 58306: 1372, // ColumnNameOrUserVariableList (1x) + 58303: 1373, // ColumnNameOrUserVarListOpt (1x) + 58311: 1374, // ColumnSetValueList (1x) + 58315: 1375, // CompareOp (1x) + 58319: 1376, // ConnectionOptionList (1x) + 58321: 1377, // Constraint (1x) + 57387: 1378, // continueKwd (1x) + 58333: 1379, // CreateSequenceOptionListOpt (1x) + 58337: 1380, // CreateTableSelectOpt (1x) + 58340: 1381, // CreateViewSelectOpt (1x) + 57397: 1382, // cursor (1x) + 58348: 1383, // DatabaseOptionListOpt (1x) + 58345: 1384, // DBNameList (1x) + 58356: 1385, // DefaultOrExpressionList (1x) + 58358: 1386, // DefaultValueExpr (1x) + 58383: 1387, // DryRunOptions (1x) + 57416: 1388, // dual (1x) + 58385: 1389, // DynamicCalibrateOptionList (1x) + 58388: 1390, // ElseOpt (1x) + 58393: 1391, // EnforcedOrNotOrNotNullOpt (1x) + 57423: 1392, // exit (1x) + 58406: 1393, // ExpressionOpt (1x) + 58408: 1394, // FetchFirstOpt (1x) + 58410: 1395, // FieldAsName (1x) + 58411: 1396, // FieldAsNameOpt (1x) + 58413: 1397, // FieldItemList (1x) + 58415: 1398, // FieldList (1x) + 58421: 1399, // FirstAndLastPartOpt (1x) + 58422: 1400, // FirstOrNext (1x) + 58430: 1401, // FlushOption (1x) + 58434: 1402, // FromDual (1x) + 58436: 1403, // FulltextSearchModifierOpt (1x) + 58437: 1404, // FuncDatetimePrec (1x) + 58450: 1405, // GetFormatSelector (1x) + 58451: 1406, // GlobalOrLocal (1x) + 58459: 1407, // HandleRangeList (1x) + 58464: 1408, // IdentListWithParenOpt (1x) + 58468: 1409, // IgnoreLines (1x) + 58470: 1410, // IlikeOrNotOp (1x) + 58471: 1411, // ImportFromSelectStmt (1x) + 58477: 1412, // IndexHintScope (1x) + 58480: 1413, // IndexKeyTypeOpt (1x) + 58489: 1414, // IndexPartSpecificationListOpt (1x) + 58492: 1415, // IndexTypeOpt (1x) + 58473: 1416, // InOrNotOp (1x) + 58495: 1417, // InstanceOption (1x) + 58498: 1418, // IntervalExpr (1x) + 58501: 1419, // IsolationLevel (1x) + 58500: 1420, // IsOrNotOp (1x) + 57473: 1421, // leading (1x) + 58510: 1422, // LikeOrNotOp (1x) + 58511: 1423, // LikeTableWithOrWithoutParen (1x) + 58516: 1424, // LinesTerminated (1x) + 58519: 1425, // LoadDataOptionList (1x) + 58522: 1426, // LoadDataSetList (1x) + 58526: 1427, // LocalOpt (1x) + 58531: 1428, // LockType (1x) + 58532: 1429, // LogTypeOpt (1x) + 58533: 1430, // LowPriorityOpt (1x) + 58534: 1431, // Match (1x) + 58535: 1432, // MatchOpt (1x) + 58536: 1433, // MaxValPartOpt (1x) + 58538: 1434, // MaxValueOrExpressionList (1x) + 58552: 1435, // NullPartOpt (1x) + 58560: 1436, // OnDeleteUpdateOpt (1x) + 58561: 1437, // OnDuplicateKeyUpdate (1x) + 58563: 1438, // OptBinMod (1x) + 58565: 1439, // OptCharset (1x) + 58568: 1440, // OptExistingWindowName (1x) + 58570: 1441, // OptFromFirstLast (1x) + 58572: 1442, // OptGConcatSeparator (1x) + 58590: 1443, // OptionalShardColumn (1x) + 58578: 1444, // OptPartitionClause (1x) + 58579: 1445, // OptSpPdparams (1x) + 58580: 1446, // OptTable (1x) + 58909: 1447, // optValue (1x) + 58584: 1448, // OptWindowFrameClause (1x) + 58585: 1449, // OptWindowOrderByClause (1x) + 58592: 1450, // Order (1x) + 58591: 1451, // OrReplace (1x) + 57513: 1452, // outfile (1x) + 58598: 1453, // PartDefValuesOpt (1x) + 58603: 1454, // PartitionKeyAlgorithmOpt (1x) + 58604: 1455, // PartitionMethod (1x) + 58607: 1456, // PartitionNumOpt (1x) + 58615: 1457, // PlanReplayerDumpOpt (1x) + 57517: 1458, // precisionType (1x) + 58621: 1459, // PrepareSQL (1x) + 58910: 1460, // procedurceElseIfs (1x) + 58632: 1461, // ProcedureCall (1x) + 58635: 1462, // ProcedureCursorSelectStmt (1x) + 58637: 1463, // ProcedureDeclIdents (1x) + 58638: 1464, // ProcedureDecls (1x) + 58639: 1465, // ProcedureDeclsOpt (1x) + 58641: 1466, // ProcedureFetchList (1x) + 58642: 1467, // ProcedureHandlerType (1x) + 58644: 1468, // ProcedureHcondList (1x) + 58651: 1469, // ProcedureOptDefault (1x) + 58652: 1470, // ProcedureOptFetchNo (1x) + 58655: 1471, // ProcedureProcStmts (1x) + 58664: 1472, // QueryWatchOptionList (1x) + 57524: 1473, // recursive (1x) + 58674: 1474, // RegexpOrNotOp (1x) + 58679: 1475, // ReorganizePartitionRuleOpt (1x) + 58682: 1476, // Replica (1x) + 58685: 1477, // RequireList (1x) + 58687: 1478, // ResourceGroupBackgroundOptionList (1x) + 58691: 1479, // ResourceGroupPriorityOption (1x) + 58693: 1480, // ResourceGroupRunawayOptionList (1x) + 58703: 1481, // RoleSpecList (1x) + 58710: 1482, // RowOrRows (1x) + 58715: 1483, // SearchedWhenThenList (1x) + 58719: 1484, // SelectStmtFieldList (1x) + 58727: 1485, // SelectStmtOpts (1x) + 58728: 1486, // SelectStmtOptsList (1x) + 58732: 1487, // SequenceOptionList (1x) + 58737: 1488, // SetOpr (1x) + 58744: 1489, // SetRoleOpt (1x) + 58747: 1490, // ShardableStmt (1x) + 58749: 1491, // ShowIndexKwd (1x) + 58750: 1492, // ShowLikeOrWhereOpt (1x) + 58751: 1493, // ShowPlacementTarget (1x) + 58752: 1494, // ShowProfileArgsOpt (1x) + 58754: 1495, // ShowProfileTypes (1x) + 58755: 1496, // ShowProfileTypesOpt (1x) + 58758: 1497, // ShowTargetFilterable (1x) + 58765: 1498, // SimpleWhenThenList (1x) + 57544: 1499, // spatial (1x) + 58771: 1500, // SplitSyntaxOption (1x) + 58768: 1501, // SpPdparams (1x) + 57552: 1502, // ssl (1x) + 58772: 1503, // Start (1x) + 58773: 1504, // Starting (1x) + 57553: 1505, // starting (1x) + 58775: 1506, // StatementList (1x) + 58776: 1507, // StatementScope (1x) + 58780: 1508, // StorageMedia (1x) + 57554: 1509, // stored (1x) + 58781: 1510, // StringList (1x) + 58786: 1511, // StringNameOrBRIEOptionKeyword (1x) + 58789: 1512, // SubPartDefinitionList (1x) + 58790: 1513, // SubPartDefinitionListOpt (1x) + 58792: 1514, // SubPartitionNumOpt (1x) + 58793: 1515, // SubPartitionOpt (1x) + 58803: 1516, // TableElementListOpt (1x) + 58806: 1517, // TableLockList (1x) + 58818: 1518, // TableRefsClause (1x) + 58819: 1519, // TableSampleMethodOpt (1x) + 58820: 1520, // TableSampleOpt (1x) + 58821: 1521, // TableSampleUnitOpt (1x) + 58823: 1522, // TableToTableList (1x) + 58834: 1523, // TrafficCaptureOptList (1x) + 58836: 1524, // TrafficReplayOptList (1x) + 57565: 1525, // trailing (1x) + 58840: 1526, // TrimDirection (1x) + 58847: 1527, // UpdateIndexesList (1x) + 58848: 1528, // UpdateIndexesOpt (1x) + 58855: 1529, // UserToUserList (1x) + 58857: 1530, // UserVariableList (1x) + 58860: 1531, // UsingRoles (1x) + 58862: 1532, // Values (1x) + 58864: 1533, // ValuesOpt (1x) + 58871: 1534, // ViewAlgorithm (1x) + 58872: 1535, // ViewCheckOption (1x) + 58873: 1536, // ViewDefiner (1x) + 58874: 1537, // ViewFieldList (1x) + 58875: 1538, // ViewName (1x) + 58876: 1539, // ViewSQLSecurity (1x) + 57585: 1540, // virtual (1x) + 58877: 1541, // VirtualOrStored (1x) + 58878: 1542, // WatchDurationOption (1x) + 58880: 1543, // WhenClauseList (1x) + 58883: 1544, // WindowClauseOptional (1x) + 58885: 1545, // WindowDefinitionList (1x) + 58886: 1546, // WindowFrameBetween (1x) + 58888: 1547, // WindowFrameExtent (1x) + 58890: 1548, // WindowFrameUnits (1x) + 58893: 1549, // WindowNameOrSpec (1x) + 58895: 1550, // WindowSpecDetails (1x) + 58901: 1551, // WithReadLockOpt (1x) + 58902: 1552, // WithRollupClause (1x) + 58903: 1553, // WithValidation (1x) + 58904: 1554, // WithValidationOpt (1x) + 58217: 1555, // $default (0x) + 58177: 1556, // andnot (0x) + 58201: 1557, // createTableSelect (0x) + 58191: 1558, // empty (0x) + 57345: 1559, // error (0x) + 58216: 1560, // higherThanComma (0x) + 58210: 1561, // higherThanParenthese (0x) + 58199: 1562, // insertValues (0x) + 57356: 1563, // invalid (0x) + 58202: 1564, // lowerThanCharsetKwd (0x) + 58215: 1565, // lowerThanComma (0x) + 58200: 1566, // lowerThanCreateTableSelect (0x) + 58212: 1567, // lowerThanEq (0x) + 58207: 1568, // lowerThanFunction (0x) + 58198: 1569, // lowerThanInsertValues (0x) + 58203: 1570, // lowerThanKey (0x) + 58204: 1571, // lowerThanLocal (0x) + 58214: 1572, // lowerThanNot (0x) + 58211: 1573, // lowerThanOn (0x) + 58209: 1574, // lowerThanParenthese (0x) + 58205: 1575, // lowerThanRemove (0x) + 58192: 1576, // lowerThanSelectOpt (0x) + 58197: 1577, // lowerThanSelectStmt (0x) + 58196: 1578, // lowerThanSetKeyword (0x) + 58195: 1579, // lowerThanStringLitToken (0x) + 58193: 1580, // lowerThanValueKeyword (0x) + 58194: 1581, // lowerThanWith (0x) + 58206: 1582, // lowerThenOrder (0x) + 58213: 1583, // neg (0x) + 57360: 1584, // odbcDateType (0x) + 57362: 1585, // odbcTimestampType (0x) + 57361: 1586, // odbcTimeType (0x) + 58208: 1587, // tableRefPriority (0x) } yySymNames = []string{ @@ -2565,10 +2582,11 @@ var ( "resource", "')'", "attribute", + "identifier", "account", "failedLoginAttempts", "passwordLockTime", - "identifier", + "encryptionMethod", "local", "resume", "signed", @@ -2587,7 +2605,6 @@ var ( "csvSeparator", "csvTrimLastSeparators", "encryptionKeyFile", - "encryptionMethod", "fullBackupStorage", "gcTTL", "ignoreStats", @@ -2641,6 +2658,7 @@ var ( "subpartition", "yearType", "partitions", + "timeDuration", "sqlTsiYear", "constraints", "followerConstraints", @@ -2659,6 +2677,7 @@ var ( "importKwd", "processedKeys", "ru", + "user", "view", "day", "defined", @@ -2682,11 +2701,13 @@ var ( "tables", "unicodeSym", "fields", + "readOnly", + "speed", "logs", - "timeDuration", "query", "separator", "cipher", + "compress", "issuer", "jsonType", "maxConnectionsPerHour", @@ -2713,6 +2734,7 @@ var ( "definer", "hash", "identified", + "jobs", "respect", "role", "textType", @@ -2743,9 +2765,7 @@ var ( "predicate", "replica", "temporary", - "user", "digest", - "jobs", "location", "planCache", "prepare", @@ -2754,6 +2774,7 @@ var ( "wait", "btree", "cooldown", + "ddl", "declare", "dryRun", "format", @@ -2772,13 +2793,14 @@ var ( "session", "slow", "switchGroup", + "traffic", "unlimited", "validation", "variables", "attributes", "cancel", + "capture", "compact", - "ddl", "disable", "do", "dynamic", @@ -2811,7 +2833,6 @@ var ( "briefType", "buckets", "calibrate", - "capture", "cardinality", "chain", "clientErrorsSummary", @@ -2952,6 +2973,7 @@ var ( "queries", "recent", "region", + "replay", "replayer", "restores", "reuse", @@ -3083,11 +3105,11 @@ var ( "except", "intersect", "replace", - "charType", "eq", + "charType", "fetch", - "set", "intLit", + "set", "limit", "forKwd", "into", @@ -3109,9 +3131,9 @@ var ( "use", "join", "desc", - "ifKwd", "natural", "cross", + "ifKwd", "inner", "explain", "like", @@ -3149,25 +3171,25 @@ var ( "div", "lsh", "rsh", - "caseKwd", "ge", "is", "le", "neq", "neqSynonym", "nulleq", + "caseKwd", "repeat", - "singleAtIdentifier", - "between", "falseKwd", "trueKwd", + "between", + "singleAtIdentifier", "currentUser", "ilike", "regexpKwd", "rlike", - "memberof", "decLit", "floatLit", + "memberof", "hexLit", "bitLit", "row", @@ -3177,9 +3199,8 @@ var ( "key", "database", "exists", - "convert", "underscoreCS", - "selectKwd", + "convert", "builtinCurDate", "builtinNow", "currentDate", @@ -3187,9 +3208,9 @@ var ( "doubleAtIdentifier", "localTime", "localTs", + "selectKwd", "sql", "builtinCount", - "primary", "'!'", "'~'", "builtinApproxCountDistinct", @@ -3216,7 +3237,6 @@ var ( "builtinUser", "builtinVarPop", "builtinVarSamp", - "check", "cumeDist", "currentRole", "currentTime", @@ -3228,16 +3248,18 @@ var ( "nthValue", "ntile", "percentRank", + "primary", "rank", "rowNumber", "tidbCurrentTSO", "utcDate", "utcTime", "utcTimestamp", + "check", "unique", "constraint", - "references", "pipes", + "references", "generated", "character", "index", @@ -3248,13 +3270,13 @@ var ( "'.'", "all", "array", - "assignmentEq", "jss", "juss", + "assignmentEq", "maxValue", "by", - "lines", "alter", + "lines", "require", "'@'", "drop", @@ -3331,9 +3353,9 @@ var ( "BoolPri", "Expression", "NUM", + "EqOpt", "logAnd", "logOr", - "EqOpt", "deleteKwd", "TableName", "StringName", @@ -3361,8 +3383,8 @@ var ( "describe", "distinct", "distinctRow", - "while", "Int64Num", + "while", "lowPriority", "WindowingClause", "delayed", @@ -3385,11 +3407,11 @@ var ( "sqlSmallResult", "terminated", "CharsetKw", + "ExpressionList", "Username", "enclosed", "ExplainStmt", "ExplainSym", - "ExpressionList", "IfExists", "PartitionNameList", "TruncateTableStmt", @@ -3442,21 +3464,21 @@ var ( "ImportIntoStmt", "load", "NoWriteToBinLogAliasOpt", + "NumLiteral", "OrderByOptional", "PartDefOption", "SignedNum", "BuggyDefaultFalseDistinctOpt", "DefaultFalseDistinctOpt", + "ExpressionListOpt", "IndexPartSpecification", "JoinType", "KeyOrIndex", "NotSym", - "NumLiteral", "Rolename", "RoleNameString", "CrossOpt", "ExplainableStmt", - "ExpressionListOpt", "IndexPartSpecificationList", "ResourceGroupName", "SelectStmtLimitOpt", @@ -3482,6 +3504,7 @@ var ( "varying", "WithClustered", "BeginTransactionStmt", + "Boolean", "BRIEBooleanOptionName", "BRIEIntegerOptionName", "BRIEKeywordOptionName", @@ -3531,7 +3554,6 @@ var ( "AsOfClause", "Assignment", "AuthString", - "Boolean", "BuiltinFunction", "ByList", "ConfigItemName", @@ -3549,6 +3571,7 @@ var ( "RestrictOrCascadeOpt", "RowStmt", "SequenceOption", + "SignedLiteral", "TableAsName", "TableAsNameOpt", "TableNameOptWild", @@ -3616,7 +3639,6 @@ var ( "RoleOrPrivElem", "SelectStmtGroup", "SetOprOpt", - "SignedLiteral", "StringLitOrUserVariable", "StringType", "TableAliasRefList", @@ -3640,6 +3662,7 @@ var ( "AllColumnsOrPredicateColumnsOpt", "AlterDatabaseStmt", "AlterInstanceStmt", + "AlterJobOption", "AlterOrderItem", "AlterPolicyStmt", "AlterRangeStmt", @@ -3835,6 +3858,9 @@ var ( "TableToTable", "TextStringList", "TraceStmt", + "TrafficCaptureOpt", + "TrafficReplayOpt", + "TrafficStmt", "UnlockStatsStmt", "UnlockTablesStmt", "UpdateIndexElem", @@ -3850,6 +3876,7 @@ var ( "':'", "AdminShowSlow", "AdminStmtLimitOpt", + "AlterJobOptionList", "AlterOrderList", "AlterSequenceOptionList", "AlterTableSpecList", @@ -4024,6 +4051,8 @@ var ( "TableSampleOpt", "TableSampleUnitOpt", "TableToTableList", + "TrafficCaptureOptList", + "TrafficReplayOptList", "trailing", "TrimDirection", "UpdateIndexesList", @@ -4091,1382 +4120,1225 @@ var ( yyReductions = []struct{ xsym, components int }{ {0, 1}, - {1493, 1}, - {925, 6}, - {925, 8}, - {925, 10}, - {925, 5}, - {925, 7}, - {925, 7}, - {925, 9}, - {1281, 1}, - {1281, 2}, - {1281, 3}, - {1469, 1}, - {1469, 1}, - {1469, 1}, - {1470, 1}, - {1470, 2}, - {1470, 3}, - {1283, 1}, - {1283, 1}, - {1283, 1}, - {1282, 1}, - {1282, 1}, - {1282, 1}, - {1282, 4}, - {1063, 3}, - {1063, 3}, - {1063, 3}, - {1063, 3}, - {1063, 4}, - {1530, 0}, - {1530, 3}, - {1530, 3}, - {1001, 3}, - {1001, 3}, - {1001, 3}, - {1001, 1}, - {1001, 3}, - {1001, 5}, - {1001, 4}, - {1001, 3}, - {1001, 5}, - {1001, 4}, - {1001, 3}, - {1468, 1}, - {1468, 2}, - {1468, 3}, - {1062, 3}, - {1062, 3}, - {1261, 1}, - {1261, 2}, - {1261, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {1000, 3}, - {885, 4}, - {885, 4}, - {885, 4}, - {885, 4}, - {1049, 3}, - {1049, 3}, - {1310, 3}, - {1310, 3}, - {1343, 1}, - {1343, 2}, - {1343, 4}, - {1343, 8}, - {1343, 8}, - {1343, 3}, - {1343, 3}, - {1343, 2}, - {1079, 0}, - {1079, 3}, - {1135, 1}, - {1135, 5}, - {1135, 6}, - {1135, 5}, - {1135, 5}, - {1135, 5}, - {1135, 6}, - {1135, 2}, - {1135, 2}, - {1135, 5}, - {1135, 6}, - {1135, 8}, - {1135, 8}, - {1135, 1}, - {1135, 1}, - {1135, 3}, - {1135, 4}, - {1135, 5}, - {1135, 3}, - {1135, 4}, - {1135, 8}, - {1135, 4}, - {1135, 7}, - {1135, 3}, - {1135, 4}, - {1135, 4}, - {1135, 4}, - {1135, 4}, - {1135, 2}, - {1135, 2}, - {1135, 4}, - {1135, 4}, - {1135, 4}, - {1135, 3}, - {1135, 2}, - {1135, 2}, - {1135, 5}, - {1135, 6}, - {1135, 6}, - {1135, 8}, - {1135, 5}, - {1135, 5}, - {1135, 3}, - {1135, 3}, - {1135, 3}, - {1135, 5}, - {1135, 1}, - {1135, 1}, - {1135, 1}, - {1135, 1}, - {1135, 2}, - {1135, 2}, - {1135, 1}, - {1135, 1}, - {1135, 4}, - {1135, 3}, - {1135, 4}, - {1135, 1}, - {1135, 1}, - {1465, 0}, - {1465, 5}, - {950, 1}, - {950, 1}, + {1503, 1}, + {930, 6}, + {930, 8}, + {930, 10}, + {930, 5}, + {930, 7}, + {930, 7}, + {930, 9}, + {1287, 1}, + {1287, 2}, + {1287, 3}, + {1479, 1}, + {1479, 1}, + {1479, 1}, + {1480, 1}, + {1480, 2}, + {1480, 3}, + {1289, 1}, + {1289, 1}, + {1289, 1}, + {1288, 1}, + {1288, 1}, + {1288, 1}, + {1288, 4}, + {1069, 3}, + {1069, 3}, + {1069, 3}, + {1069, 3}, + {1069, 4}, {1542, 0}, - {1542, 1}, - {1541, 2}, - {1541, 2}, - {969, 1}, - {969, 1}, - {1071, 0}, - {1071, 1}, - {1071, 1}, - {996, 3}, - {996, 3}, - {996, 3}, - {996, 3}, - {996, 3}, + {1542, 3}, + {1542, 3}, {1007, 3}, {1007, 3}, - {1335, 2}, - {1335, 2}, - {938, 1}, - {938, 1}, - {1219, 0}, - {1219, 1}, - {999, 0}, - {999, 1}, - {1054, 0}, - {1054, 1}, - {1054, 2}, - {1342, 0}, - {1342, 1}, - {1341, 1}, - {1341, 3}, - {880, 1}, - {880, 3}, - {952, 0}, - {952, 1}, - {952, 2}, - {1316, 1}, - {1277, 3}, - {1512, 1}, - {1512, 3}, - {1321, 3}, - {1278, 3}, - {1517, 1}, - {1517, 3}, - {1327, 3}, - {1274, 5}, - {1274, 3}, - {1274, 4}, - {1201, 4}, - {1201, 5}, - {1201, 5}, - {1201, 4}, - {1201, 5}, - {1201, 5}, - {1199, 4}, - {1200, 0}, - {1200, 2}, - {1198, 4}, - {1303, 6}, - {1303, 8}, - {1302, 6}, - {1302, 2}, - {1490, 0}, - {1490, 2}, - {1490, 1}, - {1490, 3}, - {865, 6}, - {865, 7}, - {865, 8}, - {865, 8}, - {865, 9}, - {865, 10}, - {865, 9}, - {865, 8}, - {865, 7}, - {865, 9}, - {1126, 0}, - {1126, 2}, - {1126, 2}, - {922, 0}, - {922, 2}, - {1344, 1}, - {1344, 3}, - {1137, 2}, - {1137, 2}, - {1137, 3}, - {1137, 3}, - {1137, 2}, - {1137, 2}, - {1018, 3}, - {1048, 1}, - {1048, 3}, - {970, 1}, - {970, 2}, - {970, 2}, - {970, 2}, - {970, 4}, - {970, 5}, - {970, 6}, - {970, 4}, - {970, 5}, - {1138, 2}, - {979, 3}, - {979, 3}, - {841, 1}, - {841, 3}, - {841, 5}, - {923, 1}, - {923, 3}, - {1147, 0}, - {1147, 1}, - {1398, 0}, - {1398, 3}, - {1004, 1}, - {1004, 3}, - {1363, 0}, - {1363, 1}, - {1362, 1}, - {1362, 3}, - {1148, 1}, - {1148, 1}, - {1149, 0}, - {1149, 3}, - {866, 1}, - {866, 2}, - {1092, 0}, - {1092, 1}, - {939, 1}, - {939, 1}, - {1066, 1}, - {1066, 2}, - {1192, 0}, - {1192, 1}, - {1381, 2}, - {1381, 1}, - {1053, 2}, - {1053, 1}, - {1053, 1}, - {1053, 3}, - {1053, 4}, - {1053, 2}, - {1053, 2}, - {1053, 1}, - {1053, 3}, - {1053, 2}, - {1053, 3}, - {1053, 3}, - {1053, 2}, - {1053, 6}, - {1053, 6}, - {1053, 1}, - {1053, 2}, - {1053, 2}, - {1053, 2}, - {1053, 2}, - {1351, 0}, + {1007, 3}, + {1007, 1}, + {1007, 3}, + {1007, 5}, + {1007, 4}, + {1007, 3}, + {1007, 5}, + {1007, 4}, + {1007, 3}, + {1478, 1}, + {1478, 2}, + {1478, 3}, + {1068, 3}, + {1068, 3}, + {1267, 1}, + {1267, 2}, + {1267, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {1006, 3}, + {890, 4}, + {890, 4}, + {890, 4}, + {890, 4}, + {1055, 3}, + {1055, 3}, + {1316, 3}, + {1316, 3}, + {1353, 1}, + {1353, 2}, + {1353, 4}, + {1353, 8}, + {1353, 8}, + {1353, 3}, + {1353, 3}, + {1353, 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}, + {1475, 0}, + {1475, 5}, + {955, 1}, + {955, 1}, + {1554, 0}, + {1554, 1}, + {1553, 2}, + {1553, 2}, + {974, 1}, + {974, 1}, + {1077, 0}, + {1077, 1}, + {1077, 1}, + {1002, 3}, + {1002, 3}, + {1002, 3}, + {1002, 3}, + {1002, 3}, + {1013, 3}, + {1013, 3}, + {1344, 2}, + {1344, 2}, + {945, 1}, + {945, 1}, + {1225, 0}, + {1225, 1}, + {1005, 0}, + {1005, 1}, + {1060, 0}, + {1060, 1}, + {1060, 2}, + {1352, 0}, + {1352, 1}, + {1351, 1}, {1351, 3}, - {1351, 5}, - {1498, 1}, - {1498, 1}, - {1498, 1}, - {1360, 1}, - {1360, 1}, - {1360, 1}, - {1070, 0}, - {1070, 2}, - {1529, 0}, - {1529, 1}, + {885, 1}, + {885, 3}, + {957, 0}, + {957, 1}, + {957, 2}, + {1322, 1}, + {1283, 3}, + {1522, 1}, + {1522, 3}, + {1327, 3}, + {1284, 3}, {1529, 1}, - {1150, 1}, - {1150, 2}, - {1151, 0}, - {1151, 1}, - {1156, 7}, - {1156, 7}, - {1156, 7}, - {1156, 7}, - {1156, 8}, - {1156, 5}, - {1421, 2}, - {1421, 2}, - {1421, 2}, - {1422, 0}, - {1422, 1}, - {1034, 5}, - {1241, 3}, - {1242, 3}, - {1426, 0}, - {1426, 1}, - {1426, 1}, - {1426, 2}, - {1426, 2}, - {1275, 1}, - {1275, 1}, - {1275, 2}, - {1275, 2}, - {1275, 2}, - {1376, 1}, - {1376, 1}, - {1376, 1}, - {1376, 1}, - {1021, 3}, - {1021, 3}, - {1021, 4}, - {1021, 4}, - {1236, 3}, - {1236, 1}, - {1083, 1}, - {1083, 3}, - {1083, 4}, - {1083, 3}, - {1083, 1}, - {1234, 3}, - {1234, 1}, - {800, 4}, - {800, 4}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1082, 1}, - {1081, 1}, - {1081, 1}, - {1081, 1}, - {1058, 1}, - {1058, 1}, - {1105, 1}, - {1105, 2}, - {1105, 2}, - {940, 1}, - {940, 1}, - {940, 1}, - {1312, 1}, - {1312, 1}, - {1312, 1}, - {1354, 1}, + {1529, 3}, + {1336, 3}, + {1280, 5}, + {1280, 3}, + {1280, 4}, + {1207, 4}, + {1207, 5}, + {1207, 5}, + {1207, 4}, + {1207, 5}, + {1207, 5}, + {1205, 4}, + {1206, 0}, + {1206, 2}, + {1204, 4}, + {1309, 6}, + {1309, 8}, + {1308, 6}, + {1308, 2}, + {1500, 0}, + {1500, 2}, + {1500, 1}, + {1500, 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}, {1354, 1}, - {1165, 12}, - {1183, 3}, - {1159, 13}, - {1404, 0}, - {1404, 3}, - {946, 1}, - {946, 3}, - {936, 3}, - {936, 4}, - {1215, 0}, - {1215, 1}, - {1215, 1}, - {1215, 2}, - {1215, 2}, - {1403, 0}, - {1403, 1}, - {1403, 1}, - {1403, 1}, - {1403, 1}, - {1127, 4}, - {1127, 3}, - {1158, 5}, - {927, 1}, + {1354, 3}, + {1143, 2}, + {1143, 2}, + {1143, 3}, + {1143, 3}, + {1143, 2}, + {1143, 2}, + {1024, 3}, + {1054, 1}, + {1054, 3}, + {975, 1}, + {975, 2}, + {975, 2}, + {975, 2}, + {975, 4}, + {975, 5}, + {975, 6}, + {975, 4}, + {975, 5}, + {1144, 2}, + {985, 3}, + {985, 3}, + {846, 1}, + {846, 3}, + {846, 5}, + {928, 1}, + {928, 3}, + {1153, 0}, + {1153, 1}, + {1408, 0}, + {1408, 3}, {1010, 1}, - {947, 1}, - {947, 1}, - {980, 4}, - {980, 4}, - {980, 4}, - {980, 2}, - {980, 1}, - {980, 5}, + {1010, 3}, {1373, 0}, {1373, 1}, + {1372, 1}, + {1372, 3}, + {1154, 1}, + {1154, 1}, + {1155, 0}, + {1155, 3}, + {871, 1}, + {871, 2}, + {1098, 0}, + {1098, 1}, + {946, 1}, + {946, 1}, + {1072, 1}, + {1072, 2}, + {1198, 0}, + {1198, 1}, + {1391, 2}, + {1391, 1}, + {1059, 2}, {1059, 1}, + {1059, 1}, + {1059, 3}, + {1059, 4}, {1059, 2}, - {1057, 12}, - {1057, 7}, - {1240, 0}, - {1240, 4}, - {1240, 4}, - {911, 0}, - {911, 1}, - {1257, 0}, - {1257, 7}, - {1396, 1}, - {1396, 1}, - {1326, 2}, - {1515, 1}, - {1515, 3}, - {1516, 0}, - {1516, 5}, - {1315, 6}, - {1315, 5}, - {1444, 0}, - {1444, 3}, - {1445, 1}, - {1445, 5}, - {1445, 6}, - {1445, 4}, - {1445, 5}, - {1445, 4}, - {1445, 3}, - {1445, 1}, - {1256, 0}, - {1256, 7}, - {1408, 1}, - {1408, 2}, - {1425, 0}, - {1425, 2}, - {1423, 0}, - {1423, 2}, - {1389, 0}, - {1389, 14}, - {1225, 0}, - {1225, 1}, - {1505, 0}, - {1505, 4}, - {1504, 0}, - {1504, 2}, - {1446, 0}, - {1446, 2}, - {1255, 0}, - {1255, 3}, - {1254, 1}, - {1254, 3}, - {1089, 5}, - {1503, 0}, - {1503, 3}, - {1502, 1}, - {1502, 3}, - {1314, 3}, - {1088, 0}, - {1088, 2}, - {932, 3}, - {932, 3}, - {932, 4}, - {932, 3}, - {932, 4}, - {932, 4}, - {932, 3}, - {932, 3}, - {932, 3}, - {932, 3}, - {932, 1}, - {1443, 0}, - {1443, 4}, - {1443, 6}, - {1443, 1}, - {1443, 5}, - {1443, 1}, - {1443, 1}, - {1188, 0}, - {1188, 1}, - {1188, 1}, - {1348, 0}, - {1348, 1}, - {1370, 0}, - {1370, 1}, + {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}, + {1361, 0}, + {1361, 3}, + {1361, 5}, + {1508, 1}, + {1508, 1}, + {1508, 1}, {1370, 1}, {1370, 1}, {1370, 1}, - {1371, 1}, - {1371, 1}, - {1371, 1}, - {1371, 1}, - {1413, 2}, - {1413, 4}, - {1168, 11}, - {1441, 0}, - {1441, 2}, - {1522, 0}, - {1522, 3}, - {1522, 3}, - {1522, 3}, - {1524, 0}, - {1524, 3}, - {1527, 0}, - {1527, 3}, - {1527, 3}, - {1526, 1}, - {1525, 0}, - {1525, 3}, - {1361, 1}, - {1361, 3}, - {1523, 0}, - {1523, 4}, - {1523, 4}, - {1173, 2}, - {843, 13}, - {843, 9}, - {855, 10}, - {859, 1}, - {859, 1}, - {859, 2}, - {859, 2}, - {953, 1}, - {1175, 4}, - {1176, 7}, - {1176, 7}, - {1185, 6}, - {1087, 0}, + {1076, 0}, + {1076, 2}, + {1541, 0}, + {1541, 1}, + {1541, 1}, + {1156, 1}, + {1156, 2}, + {1157, 0}, + {1157, 1}, + {1162, 7}, + {1162, 7}, + {1162, 7}, + {1162, 7}, + {1162, 8}, + {1162, 5}, + {1431, 2}, + {1431, 2}, + {1431, 2}, + {1432, 0}, + {1432, 1}, + {1039, 5}, + {1247, 3}, + {1248, 3}, + {1436, 0}, + {1436, 1}, + {1436, 1}, + {1436, 2}, + {1436, 2}, + {1281, 1}, + {1281, 1}, + {1281, 2}, + {1281, 2}, + {1281, 2}, + {1386, 1}, + {1386, 1}, + {1386, 1}, + {1386, 1}, + {1026, 3}, + {1026, 3}, + {1026, 4}, + {1026, 4}, + {1242, 3}, + {1242, 1}, + {1089, 1}, + {1089, 3}, + {1089, 4}, + {1089, 3}, + {1089, 1}, + {1240, 3}, + {1240, 1}, + {805, 4}, + {805, 4}, + {1088, 1}, + {1088, 1}, + {1088, 1}, + {1088, 1}, {1087, 1}, - {1087, 2}, - {1187, 4}, - {1187, 6}, - {1186, 3}, - {1186, 5}, - {1181, 3}, - {1181, 5}, - {1184, 3}, - {1184, 5}, - {1184, 4}, - {1035, 0}, - {1035, 1}, - {1035, 1}, - {1110, 1}, - {1110, 1}, - {822, 0}, - {822, 1}, - {1190, 0}, - {1323, 2}, - {1323, 5}, - {1323, 3}, - {1323, 6}, - {877, 1}, - {877, 1}, - {877, 1}, - {876, 2}, - {876, 3}, - {876, 2}, - {876, 4}, - {876, 7}, - {876, 5}, - {876, 7}, - {876, 5}, - {876, 3}, - {876, 6}, - {876, 6}, - {1194, 1}, - {1194, 1}, - {1194, 1}, - {1194, 1}, - {1194, 1}, - {1194, 1}, + {1087, 1}, + {1087, 1}, + {1064, 1}, + {1064, 1}, + {1043, 1}, + {1043, 2}, + {1043, 2}, + {936, 1}, + {936, 1}, + {936, 1}, + {1318, 1}, + {1318, 1}, + {1318, 1}, + {1364, 1}, + {1364, 1}, + {1171, 12}, + {1189, 3}, + {1165, 13}, + {1414, 0}, + {1414, 3}, + {951, 1}, + {951, 3}, + {943, 3}, + {943, 4}, + {1221, 0}, + {1221, 1}, + {1221, 1}, + {1221, 2}, + {1221, 2}, + {1413, 0}, + {1413, 1}, + {1413, 1}, + {1413, 1}, + {1413, 1}, + {1132, 4}, + {1132, 3}, + {1164, 5}, + {932, 1}, + {1016, 1}, + {952, 1}, + {952, 1}, + {986, 4}, + {986, 4}, + {986, 4}, + {986, 2}, + {986, 1}, + {986, 5}, + {1383, 0}, + {1383, 1}, + {1065, 1}, + {1065, 2}, + {1063, 12}, + {1063, 7}, + {1246, 0}, + {1246, 4}, + {1246, 4}, + {916, 0}, + {916, 1}, + {1263, 0}, + {1263, 7}, + {1406, 1}, + {1406, 1}, + {1335, 2}, + {1527, 1}, + {1527, 3}, + {1528, 0}, + {1528, 5}, + {1321, 6}, + {1321, 5}, + {1454, 0}, + {1454, 3}, + {1455, 1}, + {1455, 5}, + {1455, 6}, + {1455, 4}, + {1455, 5}, + {1455, 4}, + {1455, 3}, + {1455, 1}, + {1262, 0}, + {1262, 7}, + {1418, 1}, + {1418, 2}, + {1435, 0}, + {1435, 2}, + {1433, 0}, + {1433, 2}, + {1399, 0}, + {1399, 14}, + {1231, 0}, + {1231, 1}, + {1515, 0}, + {1515, 4}, + {1514, 0}, + {1514, 2}, + {1456, 0}, + {1456, 2}, + {1261, 0}, + {1261, 3}, + {1260, 1}, + {1260, 3}, + {1095, 5}, + {1513, 0}, + {1513, 3}, + {1512, 1}, + {1512, 3}, + {1320, 3}, + {1094, 0}, + {1094, 2}, + {938, 3}, + {938, 3}, + {938, 4}, + {938, 3}, + {938, 4}, + {938, 4}, + {938, 3}, + {938, 3}, + {938, 3}, + {938, 3}, + {938, 1}, + {1453, 0}, + {1453, 4}, + {1453, 6}, + {1453, 1}, + {1453, 5}, + {1453, 1}, + {1453, 1}, + {1194, 0}, {1194, 1}, {1194, 1}, - {994, 2}, - {992, 3}, - {1139, 5}, - {1139, 5}, - {1139, 3}, - {1139, 4}, - {1139, 3}, - {1139, 6}, - {1139, 4}, - {1139, 6}, - {1139, 4}, - {1139, 5}, - {1139, 4}, - {1139, 5}, - {1139, 5}, - {1139, 5}, - {1140, 2}, - {1140, 2}, - {1140, 2}, - {1374, 1}, - {1374, 3}, - {975, 0}, - {975, 2}, - {972, 1}, - {972, 1}, - {972, 1}, - {972, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {971, 1}, - {976, 1}, - {976, 1}, - {976, 1}, - {976, 1}, + {1358, 0}, + {1358, 1}, + {1380, 0}, + {1380, 1}, + {1380, 1}, + {1380, 1}, + {1380, 1}, + {1381, 1}, + {1381, 1}, + {1381, 1}, + {1381, 1}, + {1423, 2}, + {1423, 4}, + {1174, 11}, + {1451, 0}, + {1451, 2}, + {1534, 0}, + {1534, 3}, + {1534, 3}, + {1534, 3}, + {1536, 0}, + {1536, 3}, + {1539, 0}, + {1539, 3}, + {1539, 3}, + {1538, 1}, + {1537, 0}, + {1537, 3}, + {1371, 1}, + {1371, 3}, + {1535, 0}, + {1535, 4}, + {1535, 4}, + {1179, 2}, + {848, 13}, + {848, 9}, + {860, 10}, + {864, 1}, + {864, 1}, + {864, 2}, + {864, 2}, + {958, 1}, + {1181, 4}, + {1182, 7}, + {1182, 7}, + {1191, 6}, + {1093, 0}, + {1093, 1}, + {1093, 2}, + {1193, 4}, + {1193, 6}, + {1192, 3}, + {1192, 5}, + {1187, 3}, + {1187, 5}, + {1190, 3}, + {1190, 5}, + {1190, 4}, + {1040, 0}, + {1040, 1}, + {1040, 1}, + {1115, 1}, + {1115, 1}, + {825, 0}, + {825, 1}, + {1196, 0}, + {1329, 2}, + {1329, 5}, + {1329, 3}, + {1329, 6}, + {883, 1}, + {883, 1}, + {883, 1}, + {882, 2}, + {882, 3}, + {882, 2}, + {882, 4}, + {882, 7}, + {882, 5}, + {882, 7}, + {882, 5}, + {882, 3}, + {882, 6}, + {882, 6}, + {1200, 1}, + {1200, 1}, + {1200, 1}, + {1200, 1}, + {1200, 1}, + {1200, 1}, + {1200, 1}, + {1200, 1}, + {1000, 2}, + {998, 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}, + {1384, 1}, + {1384, 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}, + {855, 1}, + {824, 1}, {976, 1}, {976, 1}, {976, 1}, - {973, 1}, - {973, 1}, - {973, 2}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 5}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 6}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {974, 3}, - {834, 1}, - {851, 1}, - {819, 1}, - {1020, 1}, - {1020, 1}, - {1020, 1}, - {1248, 1}, - {1248, 1}, - {1248, 1}, - {1144, 4}, - {818, 3}, - {818, 3}, - {818, 3}, - {818, 3}, - {818, 2}, - {818, 9}, - {818, 3}, - {818, 3}, - {818, 3}, - {818, 1}, - {1172, 1}, - {1172, 1}, - {1233, 1}, - {1233, 1}, - {1393, 0}, - {1393, 4}, - {1393, 7}, - {1393, 3}, - {1393, 3}, - {821, 1}, - {821, 1}, - {820, 1}, - {820, 1}, - {878, 1}, - {878, 3}, - {1424, 1}, - {1424, 3}, + {1254, 1}, + {1254, 1}, + {1254, 1}, + {1150, 4}, + {823, 3}, + {823, 3}, + {823, 3}, + {823, 3}, + {823, 2}, + {823, 9}, + {823, 3}, + {823, 3}, + {823, 3}, + {823, 1}, + {1178, 1}, + {1178, 1}, + {1239, 1}, + {1239, 1}, + {1403, 0}, + {1403, 4}, + {1403, 7}, + {1403, 3}, + {1403, 3}, + {827, 1}, + {827, 1}, + {826, 1}, + {826, 1}, + {879, 1}, + {879, 3}, + {1434, 1}, + {1434, 3}, + {1385, 1}, + {1385, 3}, + {942, 0}, + {942, 1}, + {1211, 0}, + {1211, 1}, + {1210, 1}, + {822, 3}, + {822, 3}, + {822, 4}, + {822, 5}, + {822, 1}, {1375, 1}, - {1375, 3}, - {945, 0}, - {945, 1}, - {1205, 0}, - {1205, 1}, - {1204, 1}, - {817, 3}, - {817, 3}, - {817, 4}, - {817, 5}, - {817, 1}, - {1365, 1}, - {1365, 1}, - {1365, 1}, - {1365, 1}, - {1365, 1}, - {1365, 1}, - {1365, 1}, - {1365, 1}, - {1353, 1}, - {1353, 2}, + {1375, 1}, + {1375, 1}, + {1375, 1}, + {1375, 1}, + {1375, 1}, + {1375, 1}, + {1375, 1}, + {1363, 1}, + {1363, 2}, + {1420, 1}, + {1420, 2}, + {1416, 1}, + {1416, 2}, + {1422, 1}, + {1422, 2}, {1410, 1}, {1410, 2}, - {1406, 1}, - {1406, 2}, - {1412, 1}, - {1412, 2}, - {1400, 1}, - {1400, 2}, - {1464, 1}, - {1464, 2}, - {1345, 1}, - {1345, 1}, - {1345, 1}, - {816, 5}, - {816, 3}, - {816, 5}, - {816, 4}, - {816, 4}, - {816, 3}, - {816, 5}, - {816, 1}, - {1276, 1}, - {1276, 1}, - {1222, 0}, - {1222, 2}, - {1195, 1}, - {1195, 3}, - {1195, 5}, - {1195, 2}, - {1386, 0}, - {1386, 1}, - {1385, 1}, - {1385, 2}, - {1385, 1}, - {1385, 2}, - {1388, 1}, - {1388, 3}, - {1540, 0}, - {1540, 2}, - {1073, 4}, - {1211, 0}, - {1211, 2}, - {1347, 0}, - {1347, 1}, - {1017, 3}, - {879, 0}, - {879, 2}, - {888, 0}, - {888, 3}, - {984, 0}, - {984, 1}, - {985, 0}, - {985, 1}, - {988, 0}, - {988, 2}, - {987, 3}, - {987, 1}, - {987, 3}, - {987, 2}, - {987, 1}, - {987, 1}, - {987, 1}, - {987, 1}, - {1026, 1}, - {1026, 3}, - {1026, 3}, - {1405, 0}, - {1405, 1}, - {957, 2}, - {957, 2}, - {1027, 1}, - {1027, 1}, - {1027, 1}, - {1027, 1}, - {1027, 1}, - {956, 1}, - {956, 1}, - {791, 1}, - {791, 1}, - {791, 1}, - {791, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {794, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {793, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {792, 1}, - {1143, 2}, - {1451, 1}, - {1451, 3}, - {1451, 4}, - {1451, 6}, - {844, 9}, - {1218, 0}, - {1218, 1}, - {1217, 5}, - {1217, 4}, - {1217, 4}, - {1217, 4}, - {1217, 4}, - {1217, 2}, - {1217, 1}, - {1217, 1}, - {1217, 1}, - {1217, 1}, + {1474, 1}, + {1474, 2}, + {1355, 1}, + {1355, 1}, + {1355, 1}, + {821, 5}, + {821, 3}, + {821, 5}, + {821, 4}, + {821, 4}, + {821, 3}, + {821, 5}, + {821, 1}, + {1282, 1}, + {1282, 1}, + {1228, 0}, + {1228, 2}, + {1201, 1}, + {1201, 3}, + {1201, 5}, + {1201, 2}, + {1396, 0}, + {1396, 1}, + {1395, 1}, + {1395, 2}, + {1395, 1}, + {1395, 2}, + {1398, 1}, + {1398, 3}, + {1552, 0}, + {1552, 2}, + {1079, 4}, + {1217, 0}, {1217, 2}, - {1120, 1}, - {1120, 1}, - {1118, 1}, - {1118, 3}, - {962, 3}, - {1521, 0}, - {1521, 1}, - {1520, 3}, - {1520, 1}, - {913, 1}, - {913, 1}, - {1364, 3}, - {1364, 5}, - {1427, 0}, - {1427, 5}, - {845, 7}, + {1357, 0}, + {1357, 1}, + {1023, 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}, + {1415, 0}, + {1415, 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}, + {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}, @@ -5474,7599 +5346,7853 @@ var ( {797, 1}, {797, 1}, {797, 1}, - {797, 2}, {797, 1}, {797, 1}, - {797, 2}, - {797, 2}, - {798, 1}, - {798, 2}, - {1339, 1}, - {1339, 3}, - {1129, 2}, - {862, 3}, - {1022, 1}, - {1022, 3}, - {997, 1}, - {997, 2}, - {1440, 1}, - {1440, 1}, - {1086, 0}, - {1086, 1}, - {1086, 1}, - {931, 0}, - {931, 1}, - {815, 3}, - {815, 3}, - {815, 3}, + {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}, + {1461, 1}, + {1461, 3}, + {1461, 4}, + {1461, 6}, + {849, 9}, + {1224, 0}, + {1224, 1}, + {1223, 5}, + {1223, 4}, + {1223, 4}, + {1223, 4}, + {1223, 4}, + {1223, 2}, + {1223, 1}, + {1223, 1}, + {1223, 1}, + {1223, 1}, + {1223, 2}, + {1125, 1}, + {1125, 1}, + {1123, 1}, + {1123, 3}, + {967, 3}, + {1533, 0}, + {1533, 1}, + {1532, 3}, + {1532, 1}, + {918, 1}, + {918, 1}, + {1374, 3}, + {1374, 5}, + {1437, 0}, + {1437, 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}, + {1349, 1}, + {1349, 3}, + {1135, 2}, + {867, 3}, + {1027, 1}, + {1027, 3}, + {1003, 1}, + {1003, 2}, + {1450, 1}, + {1450, 1}, + {1092, 0}, + {1092, 1}, + {1092, 1}, + {937, 0}, + {937, 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, 5}, - {815, 3}, - {815, 3}, - {815, 3}, + {815, 6}, + {815, 6}, + {815, 4}, + {815, 4}, {815, 3}, {815, 3}, - {815, 3}, - {815, 1}, - {799, 1}, - {799, 3}, - {799, 5}, - {810, 1}, - {810, 1}, - {810, 1}, - {810, 1}, - {810, 3}, - {810, 1}, - {810, 1}, - {810, 1}, - {810, 1}, + {1356, 0}, + {1356, 1}, + {911, 1}, + {911, 1}, + {913, 1}, + {913, 1}, + {941, 0}, + {941, 1}, + {1067, 0}, + {1067, 1}, + {940, 1}, + {940, 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}, + {1253, 0}, + {1253, 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}, + {808, 4}, + {1405, 1}, + {1405, 1}, + {1405, 1}, + {1405, 1}, {810, 1}, - {810, 2}, - {810, 2}, - {810, 2}, - {810, 2}, - {810, 3}, - {810, 2}, {810, 1}, - {810, 3}, - {810, 5}, - {810, 6}, - {810, 2}, - {810, 4}, - {810, 2}, - {810, 7}, - {810, 5}, - {810, 6}, - {810, 6}, - {810, 4}, - {810, 4}, - {810, 3}, - {810, 3}, - {1346, 0}, - {1346, 1}, - {906, 1}, - {906, 1}, - {908, 1}, - {908, 1}, - {935, 0}, - {935, 1}, - {1061, 0}, - {1061, 1}, - {934, 1}, - {934, 2}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {804, 1}, - {1247, 0}, - {1247, 2}, - {808, 1}, - {808, 1}, - {808, 1}, - {808, 1}, - {808, 1}, - {807, 1}, - {807, 1}, - {807, 1}, - {807, 1}, - {807, 1}, - {807, 1}, - {802, 4}, - {802, 4}, - {802, 2}, - {802, 3}, - {802, 2}, - {802, 4}, - {802, 6}, - {802, 2}, - {802, 2}, - {802, 2}, - {802, 4}, - {802, 6}, - {802, 4}, - {803, 4}, - {803, 4}, - {803, 6}, - {803, 8}, - {803, 8}, - {803, 6}, - {803, 6}, - {803, 6}, - {803, 6}, - {803, 6}, - {803, 8}, - {803, 8}, - {803, 8}, - {803, 8}, - {803, 4}, - {803, 6}, - {803, 6}, - {803, 7}, - {803, 4}, - {803, 7}, - {803, 7}, - {803, 1}, - {803, 8}, - {1395, 1}, - {1395, 1}, - {1395, 1}, - {1395, 1}, - {805, 1}, - {805, 1}, - {806, 1}, - {806, 1}, - {1514, 1}, - {1514, 1}, - {1514, 1}, - {809, 4}, - {809, 6}, - {809, 1}, - {811, 6}, - {811, 4}, - {811, 4}, - {811, 5}, - {811, 6}, - {811, 5}, - {811, 6}, - {811, 5}, - {811, 6}, - {811, 5}, - {811, 6}, - {811, 5}, - {811, 5}, - {811, 8}, - {811, 6}, - {811, 6}, - {811, 6}, - {811, 6}, - {811, 6}, - {811, 6}, - {811, 6}, - {811, 5}, - {811, 6}, - {811, 7}, - {811, 8}, - {811, 8}, - {811, 9}, - {1432, 0}, - {1432, 2}, - {801, 4}, - {801, 6}, - {1394, 0}, - {1394, 2}, - {1394, 3}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {921, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {907, 1}, - {1383, 0}, - {1383, 1}, - {1531, 1}, - {1531, 2}, - {1329, 4}, - {1380, 0}, - {1380, 2}, - {1145, 2}, - {1145, 3}, - {1145, 1}, - {1145, 1}, - {1145, 2}, - {1145, 2}, - {1145, 2}, - {1145, 2}, - {1145, 2}, - {1145, 1}, - {1145, 1}, - {1145, 2}, - {1145, 1}, - {1145, 3}, - {959, 1}, - {959, 1}, - {959, 1}, - {1011, 0}, - {1011, 1}, - {824, 1}, - {824, 3}, - {824, 3}, - {904, 1}, - {904, 3}, - {1040, 2}, - {1040, 4}, - {1108, 1}, - {1108, 3}, - {1031, 0}, - {1031, 2}, - {1270, 0}, - {1270, 1}, - {1263, 4}, - {1449, 1}, - {1449, 1}, - {1193, 2}, - {1193, 4}, - {1518, 1}, - {1518, 3}, - {1170, 3}, - {1171, 1}, - {1171, 1}, - {867, 1}, - {867, 2}, - {867, 3}, - {867, 4}, - {1153, 4}, - {1153, 4}, - {1153, 5}, - {1153, 2}, - {1153, 3}, - {1153, 1}, - {1153, 2}, - {1300, 1}, - {1284, 1}, - {1212, 2}, - {827, 4}, - {828, 3}, - {829, 7}, - {1510, 0}, - {1510, 7}, - {1510, 5}, - {1509, 0}, - {1509, 1}, - {1509, 1}, - {1509, 1}, - {1511, 0}, - {1511, 1}, - {1511, 1}, - {1279, 0}, - {1279, 4}, - {826, 7}, - {826, 6}, - {826, 5}, - {826, 6}, - {826, 6}, - {836, 2}, - {836, 2}, - {835, 2}, - {835, 3}, - {1334, 3}, - {1334, 1}, - {1055, 4}, - {1392, 2}, - {1532, 0}, - {1532, 2}, - {1533, 1}, - {1533, 3}, - {1330, 3}, - {1047, 1}, - {1332, 3}, - {1538, 4}, - {1430, 0}, - {1430, 1}, - {1434, 0}, - {1434, 3}, - {1439, 0}, - {1439, 3}, - {1438, 0}, - {1438, 2}, - {1536, 1}, - {1536, 1}, - {1536, 1}, - {1535, 1}, - {1535, 1}, - {1122, 2}, - {1122, 2}, - {1122, 2}, - {1122, 4}, - {1122, 2}, - {1534, 4}, - {1331, 1}, - {1331, 2}, - {1331, 2}, - {1331, 2}, - {1331, 4}, - {864, 0}, - {864, 1}, - {853, 2}, - {1537, 1}, - {1537, 1}, - {814, 4}, - {814, 4}, - {814, 4}, - {814, 4}, + {811, 1}, + {811, 1}, + {1526, 1}, + {1526, 1}, + {1526, 1}, {814, 4}, - {814, 5}, - {814, 7}, - {814, 7}, {814, 6}, - {814, 6}, - {814, 9}, - {1249, 0}, - {1249, 3}, - {1249, 3}, - {1250, 0}, - {1250, 2}, - {1009, 0}, - {1009, 2}, - {1009, 2}, - {1431, 0}, - {1431, 2}, - {1431, 2}, - {1508, 1}, - {1015, 1}, - {1015, 3}, - {981, 1}, - {981, 4}, - {920, 1}, - {920, 1}, + {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}, + {1442, 0}, + {1442, 2}, + {806, 4}, + {806, 6}, + {1404, 0}, + {1404, 2}, + {1404, 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}, + {1393, 0}, + {1393, 1}, + {1543, 1}, + {1543, 2}, + {1338, 4}, + {1390, 0}, + {1390, 2}, + {1151, 2}, + {1151, 3}, + {1151, 1}, + {1151, 1}, + {1151, 2}, + {1151, 2}, + {1151, 2}, + {1151, 2}, + {1151, 2}, + {1151, 1}, + {1151, 1}, + {1151, 2}, + {1151, 1}, + {1151, 3}, + {964, 1}, + {964, 1}, + {964, 1}, + {1017, 0}, + {1017, 1}, + {829, 1}, + {829, 3}, + {829, 3}, + {909, 1}, + {909, 3}, + {1046, 2}, + {1046, 4}, + {1113, 1}, + {1113, 3}, + {1036, 0}, + {1036, 2}, + {1276, 0}, + {1276, 1}, + {1269, 4}, + {1459, 1}, + {1459, 1}, + {1199, 2}, + {1199, 4}, + {1530, 1}, + {1530, 3}, + {1176, 3}, + {1177, 1}, + {1177, 1}, + {872, 1}, + {872, 2}, + {872, 3}, + {872, 4}, + {1159, 4}, + {1159, 4}, + {1159, 5}, + {1159, 2}, + {1159, 3}, + {1159, 1}, + {1159, 2}, + {1306, 1}, + {1290, 1}, + {1218, 2}, + {832, 4}, + {833, 3}, + {834, 7}, + {1520, 0}, + {1520, 7}, + {1520, 5}, + {1519, 0}, + {1519, 1}, + {1519, 1}, + {1519, 1}, + {1521, 0}, + {1521, 1}, + {1521, 1}, + {1285, 0}, + {1285, 4}, + {831, 7}, + {831, 6}, + {831, 5}, + {831, 6}, + {831, 6}, + {841, 2}, + {841, 2}, + {840, 2}, + {840, 3}, + {1343, 3}, + {1343, 1}, + {1061, 4}, + {1402, 2}, + {1544, 0}, + {1544, 2}, + {1545, 1}, + {1545, 3}, + {1339, 3}, + {1053, 1}, + {1341, 3}, + {1550, 4}, + {1440, 0}, + {1440, 1}, + {1444, 0}, + {1444, 3}, + {1449, 0}, + {1449, 3}, + {1448, 0}, + {1448, 2}, + {1548, 1}, + {1548, 1}, + {1548, 1}, + {1547, 1}, + {1547, 1}, + {1127, 2}, + {1127, 2}, + {1127, 2}, + {1127, 4}, + {1127, 2}, + {1546, 4}, + {1340, 1}, + {1340, 2}, + {1340, 2}, + {1340, 2}, + {1340, 4}, + {869, 0}, + {869, 1}, + {858, 2}, + {1549, 1}, + {1549, 1}, + {819, 4}, + {819, 4}, + {819, 4}, + {819, 4}, + {819, 4}, + {819, 5}, + {819, 7}, + {819, 7}, + {819, 6}, + {819, 6}, + {819, 9}, + {1255, 0}, + {1255, 3}, + {1255, 3}, + {1256, 0}, + {1256, 2}, + {1015, 0}, + {1015, 2}, + {1015, 2}, + {1441, 0}, + {1441, 2}, + {1441, 2}, + {1518, 1}, + {1021, 1}, + {1021, 3}, + {987, 1}, + {987, 4}, + {925, 1}, + {925, 1}, + {924, 6}, + {924, 2}, + {924, 3}, + {996, 0}, + {996, 4}, + {1045, 0}, + {1045, 1}, + {1044, 1}, + {1044, 2}, + {1081, 2}, + {1081, 2}, + {1081, 2}, + {1412, 0}, + {1412, 2}, + {1412, 3}, + {1412, 3}, + {1080, 5}, + {992, 0}, + {992, 1}, + {992, 3}, + {992, 1}, + {992, 3}, + {1219, 1}, + {1219, 2}, + {1220, 0}, + {1220, 1}, + {919, 3}, + {919, 5}, + {919, 7}, + {919, 7}, + {919, 9}, + {919, 4}, {919, 6}, - {919, 2}, {919, 3}, - {990, 0}, - {990, 4}, - {1039, 0}, - {1039, 1}, - {1038, 1}, - {1038, 2}, - {1075, 2}, - {1075, 2}, - {1075, 2}, - {1402, 0}, - {1402, 2}, - {1402, 3}, - {1402, 3}, - {1074, 5}, - {986, 0}, - {986, 1}, - {986, 3}, - {986, 1}, - {986, 3}, - {1213, 1}, - {1213, 2}, - {1214, 0}, - {1214, 1}, - {914, 3}, - {914, 5}, - {914, 7}, - {914, 7}, - {914, 9}, - {914, 4}, - {914, 6}, - {914, 3}, - {914, 5}, - {914, 7}, - {937, 1}, - {937, 1}, - {1253, 0}, - {1253, 1}, - {943, 1}, - {943, 2}, - {943, 2}, - {1223, 0}, - {1223, 2}, - {1006, 1}, - {1006, 1}, - {1472, 1}, - {1472, 1}, - {1390, 1}, - {1390, 1}, - {1384, 0}, - {1384, 1}, - {863, 2}, - {863, 4}, - {863, 4}, - {863, 5}, - {948, 0}, - {948, 1}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1291, 1}, - {1475, 0}, - {1475, 1}, - {1476, 2}, - {1476, 1}, - {966, 1}, - {1014, 0}, - {1014, 1}, - {1292, 1}, - {1292, 1}, - {1474, 1}, - {1103, 0}, - {1103, 1}, - {1013, 0}, - {1013, 5}, - {795, 3}, - {795, 3}, - {795, 3}, - {795, 3}, - {1012, 0}, - {1012, 3}, - {1012, 3}, - {1012, 4}, - {1012, 5}, - {1012, 4}, - {1012, 5}, - {1012, 5}, - {1012, 4}, - {1239, 0}, - {1239, 2}, - {837, 1}, - {837, 1}, - {837, 2}, - {837, 2}, - {833, 3}, - {833, 3}, - {832, 4}, - {832, 4}, - {832, 5}, - {832, 2}, - {832, 2}, - {832, 3}, - {831, 1}, - {831, 3}, - {830, 1}, - {830, 1}, - {1478, 2}, - {1478, 2}, - {1478, 2}, - {1104, 1}, + {919, 5}, + {919, 7}, + {944, 1}, + {944, 1}, + {1259, 0}, + {1259, 1}, + {949, 1}, + {949, 2}, + {949, 2}, + {1229, 0}, + {1229, 2}, + {1012, 1}, + {1012, 1}, + {1482, 1}, + {1482, 1}, + {1400, 1}, + {1400, 1}, + {1394, 0}, + {1394, 1}, {868, 2}, {868, 4}, - {868, 6}, - {868, 4}, {868, 4}, - {868, 3}, - {868, 6}, - {868, 6}, - {868, 3}, - {868, 4}, - {1296, 3}, - {1295, 6}, - {1294, 1}, - {1294, 1}, - {1294, 1}, - {1479, 3}, - {1479, 1}, - {1479, 1}, - {1112, 1}, - {1112, 3}, - {1044, 3}, - {1044, 2}, - {1044, 2}, - {1044, 3}, - {1409, 2}, - {1409, 2}, - {1409, 2}, - {1409, 1}, - {963, 1}, - {963, 1}, - {963, 1}, - {912, 1}, - {912, 1}, - {949, 1}, - {949, 3}, - {1023, 1}, - {1023, 3}, - {1023, 3}, - {1121, 3}, - {1121, 4}, - {1121, 4}, - {1121, 4}, - {1121, 3}, - {1121, 3}, - {1121, 2}, - {1121, 4}, - {1121, 4}, - {1121, 2}, - {1121, 2}, - {1358, 1}, - {1358, 1}, - {926, 1}, - {926, 1}, - {998, 1}, - {998, 1}, - {1328, 1}, - {1328, 3}, - {813, 1}, - {813, 1}, - {812, 1}, - {796, 1}, - {874, 1}, - {874, 3}, - {874, 2}, - {874, 2}, - {995, 1}, - {995, 3}, - {1258, 1}, - {1258, 4}, - {1019, 1}, - {942, 1}, - {942, 1}, - {918, 3}, - {918, 2}, - {1101, 1}, - {1101, 1}, - {941, 1}, - {941, 1}, - {993, 1}, - {993, 3}, - {1338, 2}, - {1338, 4}, - {1338, 4}, - {1352, 1}, - {1352, 1}, - {1125, 3}, - {1125, 5}, - {1125, 6}, - {1125, 4}, - {1125, 4}, - {1125, 5}, - {1125, 5}, - {1125, 5}, - {1125, 6}, - {1125, 4}, - {1125, 5}, - {1125, 5}, - {1125, 5}, - {1125, 6}, - {1125, 6}, - {1125, 4}, - {1125, 3}, - {1125, 3}, - {1125, 4}, - {1125, 4}, - {1125, 5}, - {1125, 5}, - {1125, 3}, - {1125, 3}, - {1125, 3}, - {1125, 3}, - {1125, 3}, - {1125, 3}, - {1125, 4}, - {1125, 5}, - {1125, 4}, - {1125, 4}, - {1337, 2}, - {1337, 2}, - {1337, 3}, - {1337, 3}, - {1397, 1}, - {1397, 3}, - {1209, 5}, - {1028, 1}, - {1028, 3}, - {1298, 3}, - {1298, 4}, - {1298, 4}, - {1298, 5}, - {1298, 4}, - {1298, 5}, - {1298, 5}, - {1298, 4}, - {1298, 6}, - {1298, 4}, - {1298, 8}, - {1298, 2}, - {1298, 5}, - {1298, 3}, - {1298, 4}, - {1298, 3}, - {1298, 3}, - {1298, 2}, - {1298, 5}, - {1298, 2}, - {1298, 2}, - {1298, 4}, - {1298, 4}, - {1298, 4}, - {1483, 2}, - {1483, 2}, - {1483, 4}, - {1486, 0}, - {1486, 1}, - {1485, 1}, - {1485, 3}, + {868, 5}, + {953, 0}, + {953, 1}, {1297, 1}, {1297, 1}, - {1297, 2}, - {1297, 2}, - {1297, 2}, {1297, 1}, {1297, 1}, {1297, 1}, {1297, 1}, - {1484, 0}, - {1484, 3}, - {1519, 0}, - {1519, 2}, - {1481, 1}, - {1481, 1}, - {1481, 1}, - {924, 1}, - {924, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 3}, - {1487, 3}, - {1487, 3}, - {1487, 3}, - {1487, 5}, - {1487, 4}, - {1487, 5}, - {1487, 5}, - {1487, 1}, - {1487, 5}, - {1487, 1}, - {1487, 2}, - {1487, 2}, - {1487, 2}, - {1487, 1}, - {1487, 2}, - {1487, 2}, - {1487, 2}, - {1487, 2}, - {1487, 2}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 2}, - {1487, 1}, - {1487, 1}, - {1487, 1}, - {1487, 2}, - {1487, 2}, - {1482, 0}, - {1482, 2}, - {1482, 2}, - {1072, 0}, - {1072, 1}, - {1072, 1}, - {1497, 0}, - {1497, 1}, - {1497, 1}, - {1497, 1}, - {1244, 0}, - {1244, 1}, - {965, 0}, - {965, 2}, - {1299, 2}, - {1466, 1}, - {1466, 1}, - {1202, 3}, - {1091, 1}, - {1091, 3}, - {1391, 1}, - {1391, 1}, - {1391, 3}, - {1391, 1}, - {1391, 2}, - {1391, 3}, - {1391, 1}, - {1419, 0}, - {1419, 1}, - {1419, 1}, - {1419, 1}, - {1419, 1}, + {1297, 1}, + {1297, 1}, + {1297, 1}, + {1485, 0}, + {1485, 1}, + {1486, 2}, + {1486, 1}, + {971, 1}, + {1020, 0}, + {1020, 1}, + {1298, 1}, + {1298, 1}, + {1484, 1}, + {1109, 0}, + {1109, 1}, + {1019, 0}, + {1019, 5}, + {800, 3}, + {800, 3}, + {800, 3}, + {800, 3}, + {1018, 0}, + {1018, 3}, + {1018, 3}, + {1018, 4}, + {1018, 5}, + {1018, 4}, + {1018, 5}, + {1018, 5}, + {1018, 4}, + {1245, 0}, + {1245, 2}, + {842, 1}, + {842, 1}, + {842, 2}, + {842, 2}, + {838, 3}, + {838, 3}, + {837, 4}, + {837, 4}, + {837, 5}, + {837, 2}, + {837, 2}, + {837, 3}, + {836, 1}, + {836, 3}, + {835, 1}, + {835, 1}, + {1488, 2}, + {1488, 2}, + {1488, 2}, + {1110, 1}, + {873, 2}, + {873, 4}, + {873, 6}, + {873, 4}, + {873, 4}, + {873, 3}, + {873, 6}, + {873, 6}, + {873, 3}, + {873, 4}, + {1302, 3}, + {1301, 6}, + {1300, 1}, + {1300, 1}, + {1300, 1}, + {1489, 3}, + {1489, 1}, + {1489, 1}, + {1117, 1}, + {1117, 3}, + {1050, 3}, + {1050, 2}, + {1050, 2}, + {1050, 3}, + {1419, 2}, + {1419, 2}, + {1419, 2}, {1419, 1}, - {930, 0}, - {930, 1}, - {930, 1}, - {1319, 0}, - {1319, 1}, - {1539, 0}, - {1539, 3}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1309, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {1043, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, - {944, 1}, + {968, 1}, + {968, 1}, + {968, 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}, + {1368, 1}, + {1368, 1}, + {931, 1}, + {931, 1}, + {1004, 1}, + {1004, 1}, + {1337, 1}, + {1337, 3}, + {818, 1}, + {818, 1}, + {817, 1}, + {801, 1}, + {880, 1}, + {880, 3}, + {880, 2}, + {880, 2}, + {1001, 1}, + {1001, 3}, + {1264, 1}, + {1264, 4}, + {1025, 1}, + {948, 1}, + {948, 1}, + {923, 3}, + {923, 2}, + {1107, 1}, + {1107, 1}, + {947, 1}, + {947, 1}, + {999, 1}, + {999, 3}, + {1347, 2}, + {1347, 4}, + {1347, 4}, + {1362, 1}, + {1362, 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}, + {1348, 1}, + {1348, 3}, + {1134, 3}, + {1346, 2}, + {1346, 2}, + {1346, 3}, + {1346, 3}, + {1407, 1}, + {1407, 3}, + {1215, 5}, + {1033, 1}, + {1033, 3}, + {1304, 3}, + {1304, 4}, + {1304, 4}, + {1304, 5}, + {1304, 4}, + {1304, 5}, + {1304, 5}, + {1304, 4}, + {1304, 6}, + {1304, 4}, + {1304, 8}, + {1304, 2}, + {1304, 5}, + {1304, 3}, + {1304, 4}, + {1304, 3}, + {1304, 3}, + {1304, 2}, + {1304, 5}, + {1304, 2}, + {1304, 2}, + {1304, 4}, + {1304, 4}, + {1304, 4}, + {1493, 2}, + {1493, 2}, + {1493, 4}, + {1496, 0}, {1496, 1}, - {1496, 3}, - {1367, 2}, - {1024, 8}, - {1056, 2}, - {1056, 1}, - {1146, 1}, - {1146, 1}, - {1109, 1}, - {1109, 1}, - {1317, 1}, - {1317, 3}, - {1506, 0}, + {1495, 1}, + {1495, 3}, + {1303, 1}, + {1303, 1}, + {1303, 2}, + {1303, 2}, + {1303, 2}, + {1303, 1}, + {1303, 1}, + {1303, 1}, + {1303, 1}, + {1494, 0}, + {1494, 3}, + {1531, 0}, + {1531, 2}, + {1491, 1}, + {1491, 1}, + {1491, 1}, + {929, 1}, + {929, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 3}, + {1497, 3}, + {1497, 3}, + {1497, 3}, + {1497, 5}, + {1497, 4}, + {1497, 5}, + {1497, 5}, + {1497, 1}, + {1497, 5}, + {1497, 1}, + {1497, 2}, + {1497, 2}, + {1497, 2}, + {1497, 1}, + {1497, 2}, + {1497, 2}, + {1497, 2}, + {1497, 2}, + {1497, 2}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 2}, + {1497, 1}, + {1497, 1}, + {1497, 1}, + {1497, 2}, + {1497, 2}, + {1492, 0}, + {1492, 2}, + {1492, 2}, + {1078, 0}, + {1078, 1}, + {1078, 1}, + {1507, 0}, + {1507, 1}, + {1507, 1}, + {1507, 1}, + {1250, 0}, + {1250, 1}, + {970, 0}, + {970, 2}, + {1305, 2}, + {1476, 1}, + {1476, 1}, + {1208, 3}, + {1097, 1}, + {1097, 3}, + {1401, 1}, + {1401, 1}, + {1401, 3}, + {1401, 1}, + {1401, 2}, + {1401, 3}, + {1401, 1}, + {1429, 0}, + {1429, 1}, + {1429, 1}, + {1429, 1}, + {1429, 1}, + {1429, 1}, + {935, 0}, + {935, 1}, + {935, 1}, + {1325, 0}, + {1325, 1}, + {1551, 0}, + {1551, 3}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 1}, + {1315, 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}, + {950, 1}, + {950, 1}, + {950, 1}, + {950, 1}, + {950, 1}, + {950, 1}, + {950, 1}, + {950, 1}, + {950, 1}, + {950, 1}, + {1506, 1}, {1506, 3}, - {967, 1}, - {967, 4}, - {967, 4}, - {967, 4}, - {967, 3}, - {967, 4}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 3}, - {967, 1}, - {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, 2}, - {967, 2}, - {967, 3}, - {967, 3}, - {967, 5}, - {967, 3}, - {967, 7}, - {967, 3}, - {967, 3}, - {955, 0}, - {955, 1}, - {1311, 1}, - {1311, 1}, - {1166, 0}, - {1166, 1}, - {1041, 1}, - {1041, 2}, - {1041, 3}, - {1436, 0}, - {1436, 1}, - {881, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {961, 3}, - {1114, 1}, + {1377, 2}, + {1029, 8}, + {1062, 2}, + {1062, 1}, + {1152, 1}, + {1152, 1}, {1114, 1}, {1114, 1}, - {1084, 3}, - {1084, 2}, - {1084, 3}, - {1084, 3}, - {1084, 2}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, - {1076, 1}, + {1323, 1}, + {1323, 3}, + {1516, 0}, + {1516, 3}, + {972, 1}, + {972, 4}, + {972, 4}, + {972, 4}, + {972, 3}, + {972, 4}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 1}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 3}, + {972, 2}, + {972, 2}, + {972, 3}, + {972, 3}, + {972, 5}, + {972, 3}, + {972, 7}, + {972, 3}, + {972, 3}, + {960, 0}, + {960, 1}, + {1317, 1}, + {1317, 1}, + {1172, 0}, + {1172, 1}, + {1047, 1}, + {1047, 2}, + {1047, 3}, + {1446, 0}, + {1446, 1}, + {886, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 3}, + {966, 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}, + {1252, 0}, + {1252, 1}, + {1252, 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}, + {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}, - {1246, 0}, - {1246, 1}, - {1246, 1}, - {1068, 1}, - {1068, 1}, - {1068, 1}, - {1069, 1}, - {1069, 1}, - {1069, 1}, - {1069, 2}, - {1069, 1}, - {1069, 1}, - {1050, 1}, - {1107, 3}, - {1107, 2}, - {1107, 3}, - {1107, 2}, - {1107, 3}, - {1107, 3}, - {1107, 2}, - {1107, 2}, - {1107, 1}, - {1107, 2}, - {1107, 5}, - {1107, 5}, - {1107, 1}, - {1107, 3}, - {1107, 2}, - {1107, 3}, - {977, 1}, - {977, 1}, - {1080, 1}, - {1080, 2}, - {1080, 2}, - {1046, 2}, - {1046, 2}, - {1046, 1}, - {1046, 1}, - {1085, 2}, - {1085, 2}, - {1085, 1}, - {1085, 2}, - {1085, 2}, - {1085, 3}, - {1085, 3}, - {1085, 2}, - {1123, 1}, - {1123, 1}, - {1051, 1}, - {1051, 2}, - {1051, 1}, - {1051, 1}, - {1051, 2}, - {1111, 1}, - {1111, 2}, - {1111, 1}, - {1111, 1}, - {1008, 1}, + {1091, 2}, + {1091, 2}, + {1091, 1}, + {1091, 2}, + {1091, 2}, + {1091, 3}, + {1091, 3}, + {1091, 2}, + {1128, 1}, + {1128, 1}, + {1057, 1}, + {1057, 2}, + {1057, 1}, + {1057, 1}, + {1057, 2}, + {1116, 1}, + {1116, 2}, + {1116, 1}, + {1116, 1}, + {1014, 1}, + {1014, 1}, + {1014, 1}, + {1014, 1}, + {1066, 1}, + {1066, 2}, + {1066, 2}, + {1066, 2}, + {1066, 3}, + {866, 3}, + {910, 0}, + {910, 1}, {1008, 1}, {1008, 1}, {1008, 1}, - {1060, 1}, - {1060, 2}, - {1060, 2}, - {1060, 2}, - {1060, 3}, - {861, 3}, - {905, 0}, - {905, 1}, - {1002, 1}, - {1002, 1}, - {1002, 1}, - {1003, 0}, - {1003, 2}, - {1025, 0}, - {1025, 1}, - {1025, 1}, - {1033, 5}, - {1428, 0}, - {1428, 1}, - {1251, 0}, - {1251, 3}, - {1251, 3}, - {916, 0}, - {916, 2}, - {916, 3}, - {1429, 0}, - {1429, 2}, - {873, 2}, - {873, 1}, - {873, 2}, - {1243, 0}, - {1243, 2}, - {1500, 1}, - {1500, 3}, - {1042, 1}, - {1042, 1}, - {1042, 1}, - {1322, 1}, - {1322, 3}, - {825, 1}, - {825, 1}, - {1501, 1}, - {1501, 1}, - {1501, 1}, - {846, 1}, - {846, 2}, - {842, 10}, - {842, 8}, - {882, 2}, - {909, 2}, - {910, 0}, - {910, 1}, - {1167, 9}, - {1163, 4}, - {1136, 9}, - {1136, 9}, - {1128, 3}, - {1131, 4}, - {1407, 2}, - {1407, 6}, - {1016, 2}, - {1045, 1}, - {1045, 3}, - {1155, 0}, - {1155, 2}, - {1366, 1}, - {1366, 2}, - {1154, 2}, - {1154, 2}, - {1154, 2}, - {1154, 2}, - {1099, 0}, + {1009, 0}, + {1009, 2}, + {1030, 0}, + {1030, 1}, + {1030, 1}, + {1038, 5}, + {1438, 0}, + {1438, 1}, + {1257, 0}, + {1257, 3}, + {1257, 3}, + {921, 0}, + {921, 2}, + {921, 3}, + {1439, 0}, + {1439, 2}, + {878, 2}, + {878, 1}, + {878, 2}, + {1249, 0}, + {1249, 2}, + {1510, 1}, + {1510, 3}, + {1048, 1}, + {1048, 1}, + {1048, 1}, + {1328, 1}, + {1328, 3}, + {830, 1}, + {830, 1}, + {1511, 1}, + {1511, 1}, + {1511, 1}, + {851, 1}, + {851, 2}, + {847, 10}, + {847, 8}, + {887, 2}, + {914, 2}, + {915, 0}, + {915, 1}, + {1173, 9}, + {1169, 4}, + {1142, 9}, + {1142, 9}, + {1133, 3}, + {1137, 4}, + {1417, 2}, + {1417, 6}, + {1022, 2}, + {1051, 1}, + {1051, 3}, + {1161, 0}, + {1161, 2}, + {1376, 1}, + {1376, 2}, + {1160, 2}, + {1160, 2}, + {1160, 2}, + {1160, 2}, + {1105, 0}, + {1105, 1}, + {1104, 2}, + {1104, 2}, + {1104, 2}, + {1104, 2}, + {1477, 1}, + {1477, 3}, + {1477, 2}, + {1106, 2}, + {1106, 2}, + {1106, 2}, + {1106, 2}, + {1106, 2}, + {1158, 0}, + {1158, 2}, + {1158, 2}, + {1286, 0}, + {1286, 3}, + {1266, 0}, + {1266, 1}, + {1265, 1}, + {1265, 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}, + {1359, 0}, + {1359, 3}, + {1359, 3}, + {1359, 5}, + {1359, 5}, + {1359, 4}, + {1360, 1}, + {1216, 1}, + {1216, 1}, + {1295, 1}, + {1481, 1}, + {1481, 3}, + {956, 1}, + {956, 1}, + {956, 1}, + {956, 1}, + {956, 1}, + {956, 1}, + {956, 1}, + {956, 1}, + {1163, 7}, + {1163, 5}, + {1163, 9}, + {1319, 1}, + {1319, 3}, + {1111, 1}, + {1111, 1}, + {1180, 5}, + {1180, 7}, + {1180, 7}, + {1299, 5}, + {1299, 7}, + {1299, 7}, + {1279, 6}, + {1279, 4}, + {1279, 3}, + {1279, 4}, + {1279, 4}, + {1279, 4}, + {1278, 0}, + {1278, 2}, + {1277, 1}, + {1277, 3}, + {1103, 3}, + {1214, 9}, + {1212, 7}, + {1213, 4}, + {1342, 0}, + {1342, 3}, + {1342, 3}, + {1342, 3}, + {1342, 3}, + {1342, 3}, + {1073, 1}, + {1073, 2}, + {1108, 1}, + {1108, 1}, + {1108, 1}, + {1108, 3}, + {1108, 3}, + {1294, 1}, + {1294, 3}, {1099, 1}, - {1098, 2}, - {1098, 2}, - {1098, 2}, - {1098, 2}, - {1467, 1}, - {1467, 3}, - {1467, 2}, + {1099, 4}, + {1100, 1}, {1100, 2}, + {1100, 1}, + {1100, 1}, {1100, 2}, {1100, 2}, + {1100, 1}, + {1100, 1}, + {1100, 1}, + {1100, 1}, + {1100, 1}, + {1100, 1}, + {1100, 1}, + {1100, 1}, + {1100, 1}, {1100, 2}, + {1100, 1}, {1100, 2}, - {1152, 0}, - {1152, 2}, - {1152, 2}, - {1280, 0}, - {1280, 3}, - {1260, 0}, - {1260, 1}, - {1259, 1}, - {1259, 2}, - {1090, 2}, - {1090, 2}, - {1090, 3}, - {1090, 3}, - {1090, 4}, - {1090, 5}, - {1090, 2}, - {1090, 5}, - {1090, 3}, - {1090, 3}, - {1090, 2}, - {1090, 2}, - {1090, 2}, - {1090, 4}, - {1349, 0}, - {1349, 3}, - {1349, 3}, - {1349, 5}, - {1349, 5}, - {1349, 4}, - {1350, 1}, - {1210, 1}, - {1210, 1}, - {1289, 1}, - {1471, 1}, - {1471, 3}, - {951, 1}, - {951, 1}, - {951, 1}, - {951, 1}, - {951, 1}, - {951, 1}, - {951, 1}, - {951, 1}, - {1157, 7}, - {1157, 5}, - {1157, 9}, - {1313, 1}, - {1313, 3}, - {1106, 1}, - {1106, 1}, - {1174, 5}, - {1174, 7}, - {1174, 7}, - {1293, 5}, - {1293, 7}, + {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}, + {1243, 0}, + {1243, 1}, + {1243, 1}, + {1243, 1}, + {1270, 1}, + {1270, 3}, + {1270, 3}, + {1270, 3}, + {1270, 1}, {1293, 7}, - {1273, 6}, - {1273, 4}, - {1273, 3}, - {1273, 4}, - {1273, 4}, - {1273, 4}, - {1272, 0}, - {1272, 2}, - {1271, 1}, - {1271, 3}, - {1097, 3}, - {1208, 9}, - {1206, 7}, - {1207, 4}, - {1333, 0}, - {1333, 3}, - {1333, 3}, - {1333, 3}, - {1333, 3}, - {1333, 3}, - {1067, 1}, - {1067, 2}, - {1102, 1}, - {1102, 1}, - {1102, 1}, - {1102, 3}, - {1102, 3}, - {1288, 1}, - {1288, 3}, - {1093, 1}, - {1093, 4}, - {1094, 1}, - {1094, 2}, - {1094, 1}, - {1094, 1}, - {1094, 2}, - {1094, 2}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 2}, - {1094, 1}, - {1094, 2}, - {1094, 1}, - {1094, 2}, - {1094, 2}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 1}, - {1094, 3}, - {1094, 2}, - {1094, 2}, - {1094, 2}, - {1094, 2}, - {1094, 2}, - {1094, 2}, - {1094, 2}, - {1094, 1}, - {1094, 1}, - {1237, 0}, - {1237, 1}, - {1237, 1}, - {1237, 1}, - {1264, 1}, - {1264, 3}, - {1264, 3}, - {1264, 3}, - {1264, 1}, - {1287, 7}, - {1286, 4}, - {989, 18}, - {1420, 0}, - {1420, 1}, + {1292, 4}, + {995, 18}, + {1430, 0}, + {1430, 1}, + {1209, 0}, + {1209, 2}, + {1409, 0}, + {1409, 3}, + {1369, 0}, + {1369, 3}, + {1427, 0}, + {1427, 1}, {1203, 0}, {1203, 2}, - {1399, 0}, - {1399, 3}, - {1359, 0}, - {1359, 3}, - {1417, 0}, - {1417, 1}, - {1197, 0}, - {1197, 2}, - {954, 1}, - {954, 1}, + {959, 1}, + {959, 1}, + {1397, 2}, + {1397, 1}, + {1202, 3}, + {1202, 2}, + {1202, 3}, + {1202, 3}, + {1202, 4}, + {1202, 6}, + {988, 1}, + {988, 1}, + {988, 1}, + {1232, 0}, + {1232, 3}, + {1504, 0}, + {1504, 3}, + {1424, 0}, + {1424, 3}, + {1235, 0}, + {1235, 2}, + {1426, 3}, + {1426, 1}, + {1234, 3}, + {1084, 0}, + {1084, 2}, + {1425, 1}, + {1425, 3}, + {1233, 1}, + {1233, 3}, + {933, 9}, + {933, 8}, + {1411, 1}, + {1411, 1}, + {1411, 1}, + {1411, 1}, + {1334, 2}, + {1238, 3}, + {1326, 1}, + {1326, 1}, + {1324, 2}, + {1428, 1}, + {1428, 2}, + {1428, 1}, + {1428, 2}, + {1517, 1}, + {1517, 3}, + {1241, 6}, + {1490, 1}, + {1490, 1}, + {1490, 1}, + {1490, 1}, + {1387, 0}, {1387, 2}, - {1387, 1}, - {1196, 3}, - {1196, 2}, - {1196, 3}, - {1196, 3}, - {1196, 4}, - {1196, 6}, - {982, 1}, - {982, 1}, - {982, 1}, - {1226, 0}, - {1226, 3}, - {1494, 0}, - {1494, 3}, - {1414, 0}, - {1414, 3}, - {1229, 0}, - {1229, 2}, - {1416, 3}, - {1416, 1}, - {1228, 3}, - {1078, 0}, - {1078, 2}, - {1415, 1}, - {1415, 3}, - {1227, 1}, + {1387, 3}, + {1443, 0}, + {1443, 2}, + {1251, 4}, + {1227, 2}, {1227, 3}, - {928, 9}, - {928, 8}, - {1401, 1}, - {1401, 1}, - {1401, 1}, - {1401, 1}, - {1325, 2}, - {1232, 3}, - {1320, 1}, - {1320, 1}, - {1318, 2}, - {1418, 1}, - {1418, 2}, - {1418, 1}, - {1418, 2}, - {1507, 1}, - {1507, 3}, - {1235, 6}, - {1480, 1}, - {1480, 1}, - {1480, 1}, - {1480, 1}, - {1377, 0}, - {1377, 2}, - {1377, 3}, - {1433, 0}, - {1433, 2}, - {1245, 4}, - {1221, 2}, - {1221, 3}, - {1221, 3}, - {1221, 2}, - {1220, 1}, - {1220, 2}, - {1230, 3}, - {1231, 3}, - {1231, 5}, - {1231, 7}, - {1324, 3}, - {1324, 5}, - {1324, 7}, - {1177, 5}, - {1162, 6}, - {1132, 6}, - {1180, 5}, - {1160, 7}, - {1130, 6}, - {1164, 6}, - {1369, 0}, - {1369, 1}, - {1477, 1}, - {1477, 2}, - {1037, 3}, - {1037, 3}, - {1037, 3}, - {1037, 3}, - {1037, 3}, - {1037, 1}, - {1037, 2}, - {1037, 3}, - {1037, 1}, - {1037, 2}, - {1037, 3}, - {1037, 1}, - {1037, 2}, - {1037, 1}, - {1037, 1}, - {1037, 2}, - {933, 1}, - {933, 2}, - {933, 2}, - {1182, 4}, - {1134, 5}, - {1340, 1}, - {1340, 2}, - {1133, 1}, - {1133, 1}, - {1133, 3}, - {1133, 3}, - {1191, 1}, - {1119, 1}, - {1119, 3}, - {1036, 2}, - {1262, 6}, - {1262, 7}, - {1262, 10}, - {1262, 11}, - {1262, 6}, - {1262, 7}, - {1262, 4}, - {1262, 5}, - {1262, 6}, + {1227, 3}, + {1227, 2}, + {1226, 1}, + {1226, 2}, + {1236, 3}, + {1237, 3}, + {1237, 5}, + {1237, 7}, + {1333, 3}, + {1333, 5}, + {1333, 7}, + {1183, 5}, + {1168, 6}, + {1138, 6}, + {1186, 5}, + {1166, 7}, + {1136, 6}, + {1170, 6}, + {1379, 0}, + {1379, 1}, + {1487, 1}, + {1487, 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}, + {939, 1}, + {939, 2}, + {939, 2}, + {1188, 4}, + {1140, 5}, + {1350, 1}, + {1350, 2}, + {1139, 1}, + {1139, 1}, + {1139, 3}, + {1139, 3}, + {1197, 1}, + {1124, 1}, + {1124, 3}, + {1041, 2}, + {1268, 6}, + {1268, 7}, + {1268, 10}, + {1268, 11}, + {1268, 6}, + {1268, 7}, + {1268, 4}, + {1268, 5}, + {1268, 6}, + {1457, 0}, + {1457, 3}, + {1332, 5}, + {1332, 5}, + {1332, 3}, + {1332, 3}, + {1523, 1}, + {1523, 2}, + {1330, 3}, + {1330, 3}, + {1330, 3}, + {1524, 1}, + {1524, 2}, + {1331, 3}, + {1331, 3}, + {1331, 3}, + {1331, 3}, + {1445, 0}, + {1445, 1}, + {1501, 3}, + {1501, 1}, + {1311, 3}, + {1310, 0}, + {1310, 1}, + {1310, 1}, + {1310, 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}, + {1462, 1}, + {1462, 1}, + {1462, 1}, + {1462, 1}, + {907, 1}, + {1463, 1}, + {1463, 3}, + {1469, 0}, + {1469, 2}, + {1273, 4}, + {1273, 5}, + {1273, 6}, + {1467, 1}, + {1467, 1}, + {1468, 1}, + {1468, 3}, + {1274, 1}, + {1274, 1}, + {1274, 2}, + {1274, 1}, + {1271, 1}, + {1271, 3}, {1447, 0}, - {1447, 3}, - {1435, 0}, - {1435, 1}, - {1491, 3}, - {1491, 1}, - {1305, 3}, - {1304, 0}, - {1304, 1}, - {1304, 1}, - {1304, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {901, 1}, - {1452, 1}, - {1452, 1}, - {1452, 1}, - {1452, 1}, - {902, 1}, - {1453, 1}, - {1453, 3}, - {1459, 0}, - {1459, 2}, - {1267, 4}, - {1267, 5}, - {1267, 6}, - {1457, 1}, - {1457, 1}, - {1458, 1}, - {1458, 3}, - {1268, 1}, - {1268, 1}, - {1268, 2}, - {1268, 1}, - {1265, 1}, - {1265, 3}, - {1437, 0}, - {1437, 1}, - {897, 2}, - {891, 5}, - {890, 2}, + {1447, 1}, + {902, 2}, + {896, 5}, + {895, 2}, + {1470, 0}, + {1470, 2}, + {1470, 1}, + {1466, 1}, + {1466, 3}, + {1465, 0}, + {1465, 1}, + {1464, 2}, + {1464, 3}, + {1471, 0}, + {1471, 3}, + {965, 2}, + {965, 3}, + {891, 4}, + {897, 4}, + {1275, 4}, {1460, 0}, {1460, 2}, - {1460, 1}, - {1456, 1}, - {1456, 3}, - {1455, 0}, - {1455, 1}, - {1454, 2}, - {1454, 3}, - {1461, 0}, - {1461, 3}, - {960, 2}, - {960, 3}, - {886, 4}, - {892, 4}, - {1269, 4}, - {1450, 0}, - {1450, 2}, - {1450, 2}, - {889, 1}, - {889, 1}, - {1488, 1}, - {1488, 2}, - {1473, 1}, - {1473, 2}, - {1301, 4}, - {1290, 4}, - {1189, 0}, - {1189, 2}, - {900, 6}, - {899, 5}, + {1460, 2}, + {894, 1}, + {894, 1}, + {1498, 1}, + {1498, 2}, + {1483, 1}, + {1483, 2}, + {1307, 4}, + {1296, 4}, + {1195, 0}, + {1195, 2}, + {905, 6}, + {904, 5}, + {908, 1}, + {892, 6}, + {892, 6}, + {899, 4}, + {1272, 0}, + {1272, 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}, - {887, 6}, - {887, 6}, - {894, 4}, - {1266, 0}, - {1266, 1}, - {895, 4}, - {893, 2}, - {896, 2}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {898, 1}, - {1161, 8}, - {1178, 4}, - {1141, 3}, - {1356, 0}, - {1356, 1}, - {1356, 1}, - {1379, 1}, - {1379, 2}, - {1379, 3}, - {1064, 3}, - {1064, 3}, - {1064, 3}, - {1064, 5}, - {1357, 2}, - {1357, 2}, - {1357, 2}, - {1357, 2}, - {1357, 2}, - {1124, 4}, - {1462, 1}, - {1462, 2}, - {1462, 3}, - {1095, 3}, - {1095, 3}, - {1095, 3}, - {1095, 1}, - {1096, 3}, - {1096, 3}, - {1096, 5}, - {1179, 4}, + {1167, 8}, + {1184, 4}, + {1147, 3}, + {1366, 0}, + {1366, 1}, + {1366, 1}, + {1389, 1}, + {1389, 2}, + {1389, 3}, + {1070, 3}, + {1070, 3}, + {1070, 3}, + {1070, 5}, + {1367, 2}, + {1367, 2}, + {1367, 2}, + {1367, 2}, + {1367, 2}, + {1129, 4}, + {1472, 1}, + {1472, 2}, + {1472, 3}, + {1101, 3}, + {1101, 3}, + {1101, 3}, + {1101, 1}, + {1102, 3}, + {1102, 3}, + {1102, 5}, + {1185, 4}, } yyXErrors = map[yyXError]string{} - yyParseTab = [5037][]uint16{ + yyParseTab = [5096][]uint16{ // 0 - {2366, 2366, 3: 2934, 59: 2957, 95: 2936, 2939, 98: 2969, 2937, 3086, 119: 2971, 126: 3101, 145: 3094, 173: 3103, 206: 2954, 218: 2952, 237: 2965, 265: 2960, 269: 2942, 274: 2989, 280: 2956, 283: 2932, 291: 2988, 3097, 294: 2938, 299: 3102, 311: 2968, 320: 2966, 322: 2933, 324: 2972, 344: 2958, 346: 3090, 349: 2961, 357: 2970, 362: 2955, 375: 2947, 550: 2980, 2979, 567: 2978, 571: 2964, 575: 2987, 582: 3096, 595: 3089, 597: 2950, 602: 2948, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 2935, 743: 2930, 746: 2941, 762: 2940, 786: 3098, 2931, 795: 2984, 823: 2943, 826: 2986, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 3065, 3064, 842: 3087, 2944, 3047, 3058, 3074, 2949, 855: 2945, 859: 3006, 865: 3000, 3004, 3055, 3066, 876: 3008, 2951, 881: 3073, 3075, 917: 2953, 925: 2993, 928: 3046, 3093, 958: 3100, 964: 2959, 970: 3001, 983: 3091, 989: 3049, 992: 3060, 994: 3063, 1057: 3012, 1115: 3095, 1124: 3020, 2991, 1127: 2992, 2995, 1130: 2998, 2996, 2999, 1134: 2997, 1136: 2994, 1138: 3002, 3003, 1141: 3009, 2962, 3045, 3084, 1157: 3016, 3010, 3011, 3017, 3018, 3019, 3015, 3021, 3022, 1167: 3014, 3013, 1170: 3005, 2967, 1173: 3023, 3037, 3024, 3025, 3028, 3027, 3033, 3032, 3034, 3029, 3035, 3036, 3026, 3031, 3030, 1190: 2990, 1193: 3007, 1198: 3041, 3039, 1201: 3040, 3038, 1206: 3043, 3044, 3042, 1212: 3081, 1220: 3099, 3048, 1230: 3050, 3051, 3077, 1235: 3082, 1245: 3083, 1262: 3053, 3054, 1273: 3080, 3059, 1277: 3056, 3057, 1284: 3079, 3092, 3062, 3061, 1293: 3067, 1295: 3069, 3068, 1298: 3071, 1300: 3078, 1303: 3070, 1309: 3085, 1323: 3072, 3052, 3076, 1493: 2928, 1496: 2929}, - {1: 2927}, - {7962, 2926}, - {18: 7915, 51: 7914, 232: 7911, 257: 7916, 332: 7912, 568: 4781, 610: 7913, 627: 2161, 664: 6813, 953: 7910, 984: 4780}, - {232: 7895, 627: 7894}, + {2392, 2392, 3: 2960, 60: 2983, 95: 2962, 2965, 98: 2995, 2963, 3113, 119: 2997, 126: 3128, 146: 3121, 176: 3131, 211: 2980, 223: 2978, 240: 2991, 265: 3129, 270: 2986, 274: 2968, 279: 3015, 285: 2982, 288: 2958, 296: 3014, 3124, 299: 2964, 304: 3130, 315: 2994, 324: 2992, 326: 2959, 328: 2998, 348: 2984, 350: 3117, 353: 2987, 361: 2996, 366: 2981, 379: 2973, 555: 3006, 3005, 572: 3004, 576: 2990, 581: 3013, 587: 3123, 600: 3116, 602: 2976, 607: 2974, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 2961, 747: 2956, 751: 2967, 767: 2966, 791: 3125, 2957, 800: 3010, 828: 2969, 831: 3012, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 3091, 3090, 847: 3114, 2970, 3073, 3084, 3100, 2975, 860: 2971, 864: 3032, 870: 3026, 3030, 3081, 3092, 882: 3034, 2977, 886: 3099, 3101, 922: 2979, 930: 3019, 933: 3072, 3120, 963: 3127, 969: 2985, 975: 3027, 989: 3118, 995: 3075, 998: 3086, 1000: 3089, 1063: 3038, 1120: 3122, 1129: 3046, 3017, 1132: 3018, 3021, 1136: 3024, 3022, 3025, 1140: 3023, 1142: 3020, 1144: 3028, 3029, 1147: 3035, 2988, 3071, 3110, 1163: 3042, 3036, 3037, 3043, 3044, 3045, 3041, 3047, 3048, 1173: 3040, 3039, 1176: 3031, 2993, 1179: 3049, 3063, 3050, 3051, 3054, 3053, 3059, 3058, 3060, 3055, 3061, 3062, 3052, 3057, 3056, 1196: 3016, 1199: 3033, 1204: 3067, 3065, 1207: 3066, 3064, 1212: 3069, 3070, 3068, 1218: 3107, 1226: 3126, 3074, 1236: 3076, 3077, 3103, 1241: 3108, 1251: 3109, 1268: 3079, 3080, 1279: 3106, 3085, 1283: 3082, 3083, 1290: 3105, 3119, 3088, 3087, 1299: 3093, 1301: 3095, 3094, 1304: 3097, 1306: 3104, 1309: 3096, 1315: 3112, 1329: 3098, 1332: 3111, 3078, 3102, 1503: 2954, 1506: 2955}, + {1: 2953}, + {8047, 2952}, + {18: 8000, 51: 7999, 149: 7996, 261: 8001, 336: 7997, 573: 4854, 615: 7998, 632: 2187, 669: 6897, 958: 7995, 990: 4853}, + {149: 7980, 632: 7979}, // 5 - {627: 7888}, - {392: 7866, 627: 7867, 664: 6813, 953: 7868}, - {440: 7847, 565: 7848, 627: 2720, 1490: 7846}, - {58: 5374, 329: 779, 627: 779, 915: 5373, 930: 7800}, - {2690, 2690, 427: 7799, 433: 7798}, + {632: 7973}, + {396: 7951, 632: 7952, 669: 6897, 958: 7953}, + {444: 7932, 570: 7933, 632: 2746, 1500: 7931}, + {59: 5447, 333: 795, 632: 795, 920: 5446, 935: 7885}, + {2716, 2716, 431: 7884, 437: 7883}, // 10 - {463: 7787}, - {552: 7786}, - {2659, 2659, 97: 6727, 586: 6725, 917: 6726, 1153: 7785}, - {18: 2417, 51: 7300, 94: 7215, 110: 2417, 148: 2417, 194: 7293, 199: 2417, 203: 7298, 223: 809, 231: 6328, 7297, 257: 7301, 6979, 287: 7288, 587: 7296, 627: 2385, 664: 6813, 676: 2417, 723: 7290, 729: 2532, 766: 7292, 953: 7294, 991: 7302, 1072: 7299, 1087: 6327, 1403: 7289, 1441: 7295, 1489: 7291}, - {18: 7221, 51: 7222, 94: 7215, 148: 7216, 168: 2385, 203: 7218, 223: 809, 7213, 231: 6328, 7217, 237: 1254, 7219, 257: 7223, 6979, 287: 7210, 627: 2385, 664: 6813, 729: 7212, 953: 7211, 991: 7224, 1072: 7220, 1087: 7214}, + {468: 7872}, + {557: 7871}, + {2685, 2685, 97: 6811, 591: 6809, 922: 6810, 1159: 7870}, + {18: 2443, 51: 7385, 94: 7300, 110: 2443, 149: 7382, 2443, 198: 7378, 203: 2443, 208: 7383, 228: 825, 236: 6412, 261: 7386, 7062, 292: 7373, 592: 7381, 632: 2411, 669: 6897, 681: 2443, 728: 7375, 734: 2558, 771: 7377, 958: 7379, 997: 7387, 1078: 7384, 1093: 6411, 1413: 7374, 1451: 7380, 1499: 7376}, + {18: 7306, 51: 7307, 94: 7300, 149: 7302, 7301, 170: 2411, 208: 7303, 228: 825, 7298, 236: 6412, 240: 1274, 7304, 261: 7308, 7062, 292: 7295, 632: 2411, 669: 6897, 734: 7297, 958: 7296, 997: 7309, 1078: 7305, 1093: 7299}, // 15 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 7209}, - {2: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 10: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 53: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 568: 1072, 581: 1072, 852: 1072, 854: 1072, 856: 1072, 860: 6125, 966: 6126, 1014: 7197}, - {2394, 2394}, - {2393, 2393}, - {550: 2980, 567: 2978, 627: 2977, 668: 2973, 731: 3088, 795: 3944, 823: 2943, 826: 3943, 2974, 2975, 2976, 2985, 2983, 3945, 3946, 842: 5844, 5842, 855: 5843}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 7294}, + {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, 573: 1092, 586: 1092, 857: 1092, 859: 1092, 861: 1092, 865: 6198, 971: 6199, 1020: 7282}, + {2420, 2420}, + {2419, 2419}, + {555: 3006, 572: 3004, 632: 3003, 680: 2999, 736: 3115, 800: 3978, 828: 2969, 831: 3977, 3000, 3001, 3002, 3011, 3009, 3979, 3980, 847: 5917, 5915, 860: 5916}, // 20 - {95: 2936, 2939, 98: 2969, 2937, 126: 7170, 218: 2952, 245: 7169, 550: 2980, 2979, 567: 2978, 571: 2964, 575: 7173, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 2935, 795: 7171, 823: 2943, 826: 7172, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7179, 7178, 842: 3087, 2944, 7176, 7177, 7175, 855: 2945, 859: 7174, 865: 7187, 7182, 7185, 7186, 917: 2953, 929: 7188, 970: 7181, 989: 7180, 992: 7184, 994: 7183, 1043: 7168}, - {2: 2361, 2361, 2361, 2361, 2361, 2361, 2361, 10: 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 53: 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 550: 2361, 2361, 567: 2361, 571: 2361, 578: 2361, 580: 2361, 606: 2361, 627: 2361, 668: 2361, 731: 2361, 733: 2361, 743: 2361, 823: 2361}, - {2: 2360, 2360, 2360, 2360, 2360, 2360, 2360, 10: 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 53: 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 550: 2360, 2360, 567: 2360, 571: 2360, 578: 2360, 580: 2360, 606: 2360, 627: 2360, 668: 2360, 731: 2360, 733: 2360, 743: 2360, 823: 2360}, - {2: 2359, 2359, 2359, 2359, 2359, 2359, 2359, 10: 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 53: 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 550: 2359, 2359, 567: 2359, 571: 2359, 578: 2359, 580: 2359, 606: 2359, 627: 2359, 668: 2359, 731: 2359, 733: 2359, 743: 2359, 823: 2359}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 7138, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 7136, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2980, 2979, 567: 2978, 571: 2964, 578: 7135, 580: 4018, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 7137, 743: 4751, 791: 4017, 3121, 3122, 3120, 4752, 823: 2943, 7133, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 7134}, + {95: 2962, 2965, 98: 2995, 2963, 126: 7255, 223: 2978, 249: 7254, 555: 3006, 3005, 572: 3004, 576: 2990, 581: 7258, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 2961, 800: 7256, 828: 2969, 831: 7257, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7264, 7263, 847: 3114, 2970, 7261, 7262, 7260, 860: 2971, 864: 7259, 870: 7272, 7267, 7270, 7271, 922: 2979, 934: 7273, 975: 7266, 995: 7265, 998: 7269, 1000: 7268, 1049: 7253}, + {2: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 10: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 53: 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, 555: 2387, 2387, 572: 2387, 576: 2387, 583: 2387, 585: 2387, 611: 2387, 632: 2387, 680: 2387, 736: 2387, 738: 2387, 747: 2387, 828: 2387}, + {2: 2386, 2386, 2386, 2386, 2386, 2386, 2386, 10: 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 53: 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 555: 2386, 2386, 572: 2386, 576: 2386, 583: 2386, 585: 2386, 611: 2386, 632: 2386, 680: 2386, 736: 2386, 738: 2386, 747: 2386, 828: 2386}, + {2: 2385, 2385, 2385, 2385, 2385, 2385, 2385, 10: 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 53: 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385, 555: 2385, 2385, 572: 2385, 576: 2385, 583: 2385, 585: 2385, 611: 2385, 632: 2385, 680: 2385, 736: 2385, 738: 2385, 747: 2385, 828: 2385}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 7223, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 7221, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 3006, 3005, 572: 3004, 576: 2990, 583: 7220, 585: 4052, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 7222, 747: 4824, 796: 4051, 3149, 3150, 3148, 4825, 828: 2969, 7218, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 7219}, // 25 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7132, 3121, 3122, 3120}, - {218: 7130}, - {171: 7123, 627: 6817, 664: 6813, 953: 6816, 1140: 7122}, - {206: 7120}, - {206: 7117}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7217, 3149, 3150, 3148}, + {223: 7215}, + {175: 7208, 632: 6901, 669: 6897, 958: 6900, 1146: 7207}, + {211: 7205}, + {211: 7202}, // 30 - {206: 7115}, - {206: 7110}, - {16: 4519, 18: 6942, 30: 6970, 6969, 94: 6978, 108: 6951, 143: 802, 145: 6943, 167: 809, 802, 170: 802, 196: 809, 206: 6928, 230: 6981, 253: 6940, 258: 6979, 263: 809, 275: 6980, 281: 6964, 802, 296: 6929, 328: 6956, 330: 6945, 358: 6982, 360: 6966, 379: 6955, 384: 6976, 386: 6960, 6941, 393: 6958, 6974, 396: 6949, 403: 6947, 6963, 408: 6953, 411: 6962, 6933, 6973, 421: 6934, 436: 6939, 6938, 442: 6977, 448: 6965, 450: 6971, 6968, 6972, 6967, 464: 6959, 572: 4520, 605: 6935, 627: 6932, 677: 6954, 728: 4518, 6944, 733: 6975, 762: 6931, 873: 6950, 991: 6961, 1072: 6957, 1077: 6946, 1169: 6948, 1244: 6937, 1466: 6936, 1481: 6952, 1487: 6930}, - {145: 6923, 296: 6922}, - {434: 6815, 627: 6817, 664: 6813, 953: 6816, 1140: 6814}, + {211: 7200}, + {211: 7195}, + {16: 4553, 18: 7025, 30: 7053, 7052, 94: 7061, 108: 7034, 144: 818, 146: 7026, 169: 825, 818, 172: 818, 200: 825, 211: 7011, 235: 7064, 257: 7023, 262: 7062, 265: 7066, 268: 825, 280: 7063, 286: 7047, 818, 301: 7012, 332: 7039, 334: 7028, 362: 7065, 364: 7049, 383: 7038, 388: 7059, 390: 7043, 7024, 397: 7041, 7057, 400: 7032, 407: 7030, 7046, 412: 7036, 415: 7045, 7016, 7056, 425: 7017, 440: 7022, 7021, 447: 7060, 453: 7048, 455: 7054, 7051, 7055, 7050, 469: 7042, 578: 4554, 610: 7018, 632: 7015, 682: 7037, 733: 4552, 7027, 738: 7058, 767: 7014, 878: 7033, 997: 7044, 1078: 7040, 1083: 7029, 1175: 7031, 1250: 7020, 1476: 7019, 1491: 7035, 1497: 7013}, + {146: 7004, 265: 7005, 301: 7003}, + {438: 6899, 632: 6901, 669: 6897, 958: 6900, 1146: 6898}, // 35 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6802, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6804, 3121, 3122, 3120, 1451: 6803}, - {2: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 10: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 53: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 568: 1072, 579: 1072, 1072, 852: 1072, 854: 1072, 856: 1072, 860: 6125, 966: 6126, 1014: 6789}, - {2: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 10: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 53: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 579: 1072, 1072, 852: 1072, 854: 1072, 856: 1072, 860: 6125, 966: 6126, 1014: 6753}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6748, 3121, 3122, 3120}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6742, 3121, 3122, 3120}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6886, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6888, 3149, 3150, 3148, 1461: 6887}, + {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, 573: 1092, 584: 1092, 1092, 857: 1092, 859: 1092, 861: 1092, 865: 6198, 971: 6199, 1020: 6873}, + {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, 584: 1092, 1092, 857: 1092, 859: 1092, 861: 1092, 865: 6198, 971: 6199, 1020: 6837}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6832, 3149, 3150, 3148}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6826, 3149, 3150, 3148}, // 40 - {237: 6740}, - {237: 1255}, - {1253, 1253, 97: 6727, 586: 6725, 732: 6724, 917: 6726, 1153: 6723}, - {1242, 1242}, - {1241, 1241}, + {240: 6824}, + {240: 1275}, + {1273, 1273, 97: 6811, 591: 6809, 737: 6808, 922: 6810, 1159: 6807}, + {1262, 1262}, + {1261, 1261}, // 45 - {552: 6722}, - {2: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 10: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 53: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 6692, 6698, 6699, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 550: 1077, 552: 1077, 1077, 1077, 1077, 559: 1077, 1077, 562: 1077, 1077, 1077, 566: 1077, 1077, 571: 1077, 1077, 576: 1077, 580: 1077, 593: 6695, 598: 1077, 605: 1077, 1077, 638: 1077, 645: 1077, 1077, 648: 1077, 1077, 1077, 655: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 664: 1077, 1077, 1077, 1077, 669: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 677: 1077, 679: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 706: 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 730: 1077, 735: 4267, 848: 4265, 4266, 852: 6128, 854: 6130, 856: 6129, 860: 6125, 869: 6691, 6694, 6690, 906: 6610, 908: 6688, 959: 6689, 966: 6687, 1291: 6697, 6693, 1475: 6686, 6696}, - {438, 438, 52: 438, 549: 438, 551: 438, 558: 438, 561: 438, 569: 438, 438, 574: 438, 577: 438, 438, 438, 581: 6661, 438, 4767, 438, 591: 438, 909: 4768, 6662, 1392: 6660}, - {1067, 1067, 52: 1067, 549: 1067, 551: 1067, 558: 1067, 561: 1067, 569: 1067, 1067, 574: 1067, 577: 1067, 1067, 1067, 582: 1067, 584: 1067, 591: 6648, 1073: 6650, 1103: 6649}, - {1523, 1523, 52: 1523, 549: 1523, 551: 1523, 558: 1523, 561: 1523, 569: 1523, 1523, 574: 1523, 577: 1523, 1523, 1523, 582: 1523, 584: 3947, 862: 4001, 931: 6644}, + {557: 6806}, + {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, 53: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 6776, 6782, 6783, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 555: 1097, 557: 1097, 1097, 1097, 1097, 564: 1097, 1097, 567: 1097, 1097, 1097, 571: 1097, 1097, 576: 1097, 578: 1097, 580: 1097, 585: 1097, 598: 6779, 605: 1097, 610: 1097, 1097, 649: 1097, 1097, 1097, 1097, 654: 1097, 1097, 659: 1097, 1097, 662: 1097, 1097, 1097, 1097, 1097, 1097, 669: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 682: 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 721: 1097, 1097, 1097, 1097, 1097, 1097, 735: 1097, 740: 4301, 853: 4299, 4300, 857: 6201, 859: 6203, 861: 6202, 865: 6198, 874: 6775, 6778, 6774, 911: 6694, 913: 6772, 964: 6773, 971: 6771, 1297: 6781, 6777, 1485: 6770, 6780}, + {453, 453, 52: 453, 554: 453, 556: 453, 563: 453, 566: 453, 574: 453, 453, 579: 453, 582: 453, 453, 453, 586: 6745, 453, 4840, 453, 596: 453, 914: 4841, 6746, 1402: 6744}, + {1087, 1087, 52: 1087, 554: 1087, 556: 1087, 563: 1087, 566: 1087, 574: 1087, 1087, 579: 1087, 582: 1087, 1087, 1087, 587: 1087, 589: 1087, 596: 6732, 1079: 6734, 1109: 6733}, + {1544, 1544, 52: 1544, 554: 1544, 556: 1544, 563: 1544, 566: 1544, 574: 1544, 1544, 579: 1544, 582: 1544, 1544, 1544, 587: 1544, 589: 3981, 867: 4035, 937: 6728}, // 50 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6639}, - {659: 3982, 1036: 3981, 1119: 3980}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6626, 3121, 3122, 3120, 1055: 6625, 1334: 6623, 1463: 6624}, - {550: 2980, 2979, 567: 2978, 627: 2977, 668: 2973, 795: 6622, 826: 3937, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 3939, 3938}, - {1048, 1048, 52: 1048, 549: 1048, 551: 1048, 561: 1048}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6723}, + {664: 4016, 1041: 4015, 1124: 4014}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6710, 3149, 3150, 3148, 1061: 6709, 1343: 6707, 1473: 6708}, + {555: 3006, 3005, 572: 3004, 632: 3003, 680: 2999, 800: 6706, 831: 3971, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 3973, 3972}, + {1068, 1068, 52: 1068, 554: 1068, 556: 1068, 566: 1068}, // 55 - {1047, 1047, 52: 1047, 549: 1047, 551: 1047, 561: 1047}, - {558: 6607, 569: 6608, 6609, 1478: 6606}, - {695, 695, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {558: 1036, 569: 1036, 1036}, - {697, 697, 558: 1034, 569: 1034, 1034}, + {1067, 1067, 52: 1067, 554: 1067, 556: 1067, 566: 1067}, + {563: 6691, 574: 6692, 6693, 1488: 6690}, + {711, 711, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {563: 1056, 574: 1056, 1056}, + {713, 713, 563: 1054, 574: 1054, 1054}, // 60 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 6444, 6439, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 6445, 53: 3127, 3348, 3478, 3479, 3785, 6442, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 6441, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 6446, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 6449, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 6447, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 6440, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 6450, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 6448, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 6443, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 6452, 572: 4520, 646: 6456, 673: 6455, 728: 4518, 791: 6453, 3121, 3122, 3120, 873: 6457, 949: 6454, 1121: 6458, 1328: 6451}, - {17: 6296, 59: 6299, 265: 6297, 274: 6303, 280: 6298, 6301, 283: 6294, 6302, 300: 6304, 348: 6300, 390: 6295, 405: 6305, 467: 6307, 575: 6306, 705: 6293, 964: 6292}, - {22: 779, 58: 5374, 167: 779, 779, 171: 779, 253: 779, 259: 779, 272: 779, 289: 779, 303: 779, 323: 779, 327: 779, 605: 779, 627: 779, 915: 5373, 930: 6267}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 6528, 6523, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 6529, 53: 3155, 3818, 3376, 3506, 3507, 3528, 6526, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 6525, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 6530, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 6533, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 6531, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 6524, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 6534, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 6532, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 6527, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 6536, 578: 4554, 654: 6540, 677: 6539, 733: 4552, 796: 6537, 3149, 3150, 3148, 878: 6541, 954: 6538, 1126: 6542, 1337: 6535}, + {17: 6369, 60: 6372, 270: 6370, 6377, 279: 6376, 285: 6371, 6374, 288: 6367, 6375, 352: 6373, 394: 6368, 409: 6378, 472: 6380, 581: 6379, 727: 6366, 747: 6381, 969: 6365}, + {22: 795, 59: 5447, 169: 795, 795, 175: 795, 257: 795, 263: 795, 277: 795, 294: 795, 307: 795, 327: 795, 331: 795, 610: 795, 632: 795, 920: 5446, 935: 6340}, + {788, 788}, + {787, 787}, + // 65 + {786, 786}, + {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}, - // 65 {770, 770}, {769, 769}, {768, 768}, {767, 767}, + // 85 {766, 766}, - // 70 {765, 765}, {764, 764}, {763, 763}, {762, 762}, + // 90 {761, 761}, - // 75 {760, 760}, {759, 759}, {758, 758}, {757, 757}, + // 95 {756, 756}, - // 80 {755, 755}, {754, 754}, {753, 753}, {752, 752}, + // 100 {751, 751}, - // 85 {750, 750}, {749, 749}, {748, 748}, {747, 747}, + // 105 {746, 746}, - // 90 {745, 745}, {744, 744}, {743, 743}, {742, 742}, + // 110 {741, 741}, - // 95 {740, 740}, {739, 739}, {738, 738}, {737, 737}, + // 115 {736, 736}, - // 100 {735, 735}, {734, 734}, {733, 733}, {732, 732}, + // 120 {731, 731}, - // 105 {730, 730}, {729, 729}, {728, 728}, {727, 727}, + // 125 {726, 726}, - // 110 {725, 725}, {724, 724}, {723, 723}, {722, 722}, + // 130 {721, 721}, - // 115 {720, 720}, {719, 719}, {718, 718}, {717, 717}, + // 135 {716, 716}, - // 120 {715, 715}, {714, 714}, - {713, 713}, {712, 712}, - {711, 711}, - // 125 {710, 710}, + // 140 {709, 709}, {708, 708}, {707, 707}, {706, 706}, - // 130 {705, 705}, + // 145 {704, 704}, {703, 703}, {702, 702}, {701, 701}, - // 135 {700, 700}, + // 150 {699, 699}, {698, 698}, + {697, 697}, {696, 696}, + {695, 695}, + // 155 {694, 694}, - // 140 {693, 693}, {692, 692}, {691, 691}, - {690, 690}, - {689, 689}, - // 145 - {688, 688}, - {687, 687}, - {686, 686}, - {685, 685}, - {684, 684}, - // 150 - {683, 683}, - {682, 682}, - {681, 681}, - {680, 680}, - {679, 679}, - // 155 - {678, 678}, - {677, 677}, - {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, 580: 589, 627: 6264, 1436: 6265}, + {664, 664}, // 160 - {444, 444, 561: 444}, - {2: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 10: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 53: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 550: 1072, 568: 1072, 580: 1072, 662: 1072, 852: 1072, 854: 1072, 856: 1072, 860: 6125, 966: 6126, 1014: 6127}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 6124}, - {729: 6102}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 5945, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 5947, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 5953, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 5949, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 5946, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 5954, 3301, 3560, 5948, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 5951, 6055, 3207, 3455, 5952, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 5950, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 5956, 582: 5979, 606: 5973, 668: 5962, 725: 5977, 729: 5972, 731: 5975, 735: 5966, 743: 5967, 746: 5971, 762: 5968, 791: 3827, 3121, 3122, 3120, 823: 5970, 825: 5955, 918: 5957, 929: 5961, 964: 5974, 983: 5976, 1067: 5958, 1093: 5959, 5965, 1101: 5960, 5963, 1113: 5969, 1117: 5978, 1288: 6056}, + {2: 604, 604, 604, 604, 604, 604, 604, 10: 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, 604, 604, 604, 604, 604, 604, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 585: 604, 632: 6337, 1446: 6338}, + {459, 459, 566: 459}, + {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, 573: 1092, 585: 1092, 667: 1092, 857: 1092, 859: 1092, 861: 1092, 865: 6198, 971: 6199, 1020: 6200}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 6197}, + {734: 6175}, // 165 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 5945, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 5947, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 5953, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 5949, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 5946, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 5954, 3301, 3560, 5948, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 5951, 3206, 3207, 3455, 5952, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 5950, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 5956, 582: 5979, 606: 5973, 668: 5962, 725: 5977, 729: 5972, 731: 5975, 735: 5966, 743: 5967, 746: 5971, 762: 5968, 791: 3827, 3121, 3122, 3120, 823: 5970, 825: 5955, 918: 5957, 929: 5961, 964: 5974, 983: 5976, 1067: 5958, 1093: 5959, 5965, 1101: 5960, 5963, 1113: 5969, 1117: 5978, 1288: 5964}, - {23: 5916, 238: 5917}, - {579: 5875}, - {168: 5846, 238: 5867, 627: 5847, 1320: 5866}, - {168: 5846, 238: 5848, 627: 5847, 1320: 5845}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6018, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 6020, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 6026, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 6022, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 6019, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 6027, 3329, 3589, 6021, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 6024, 6128, 3235, 3483, 6025, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 6023, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6029, 587: 6052, 611: 6046, 680: 6035, 731: 6050, 734: 6045, 736: 6048, 740: 6039, 747: 6040, 751: 6044, 767: 6041, 796: 3861, 3149, 3150, 3148, 828: 6043, 830: 6028, 923: 6030, 934: 6034, 969: 6047, 989: 6049, 1073: 6031, 1099: 6032, 6038, 1107: 6033, 6036, 1118: 6042, 1122: 6051, 1294: 6129}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6018, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 6020, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 6026, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 6022, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 6019, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 6027, 3329, 3589, 6021, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 6024, 3234, 3235, 3483, 6025, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 6023, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6029, 587: 6052, 611: 6046, 680: 6035, 731: 6050, 734: 6045, 736: 6048, 740: 6039, 747: 6040, 751: 6044, 767: 6041, 796: 3861, 3149, 3150, 3148, 828: 6043, 830: 6028, 923: 6030, 934: 6034, 969: 6047, 989: 6049, 1073: 6031, 1099: 6032, 6038, 1107: 6033, 6036, 1118: 6042, 1122: 6051, 1294: 6037}, + {23: 5989, 241: 5990}, + {584: 5948}, + {170: 5919, 241: 5940, 632: 5920, 1326: 5939}, // 170 - {549: 5828, 577: 202, 1433: 5827}, - {58: 5374, 168: 779, 627: 779, 915: 5373, 930: 5822}, - {28: 5817, 57: 5319, 173: 5818, 550: 5815, 571: 5320, 576: 3107, 819: 5816, 1021: 5819}, - {28: 195, 57: 195, 173: 195, 289: 5814, 550: 195, 571: 195, 576: 195}, - {441: 4733}, + {170: 5919, 241: 5921, 632: 5920, 1326: 5918}, + {554: 5901, 582: 217, 1443: 5900}, + {59: 5447, 170: 795, 632: 795, 920: 5446, 935: 5895}, + {28: 5890, 54: 5392, 176: 5891, 555: 5888, 576: 5393, 580: 3135, 824: 5889, 1026: 5892}, + {28: 210, 54: 210, 176: 210, 294: 5887, 555: 210, 576: 210, 580: 210}, // 175 - {51: 4707}, - {142: 3104}, - {2: 3106, 789: 3105}, - {51: 3111, 101: 3112, 126: 3115, 676: 3114, 1095: 3110, 3113, 1462: 3109}, - {576: 3107, 819: 3108}, + {446: 4806}, + {271: 4770, 445: 4771}, + {51: 4744}, + {143: 3132}, + {2: 3134, 794: 3133}, // 180 - {2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 15: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 61: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 102: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 115: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 127: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 149: 2267, 151: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 178: 2267, 2267, 2267, 2267, 191: 2267, 193: 2267, 227: 2267, 235: 2267, 278: 2267, 317: 2267, 549: 2267, 2267, 2267, 554: 2267, 556: 2267, 2267, 2267, 561: 2267, 565: 2267, 567: 2267, 2267, 2267, 2267, 2267, 2267, 574: 2267, 2267, 577: 2267, 2267, 2267, 582: 2267, 2267, 585: 2267, 595: 2267, 597: 2267, 2267, 602: 2267, 606: 2267, 2267, 627: 2267, 638: 2267, 645: 2267, 659: 2267, 668: 2267, 728: 2267, 2267, 731: 2267, 733: 2267, 740: 2267, 742: 2267, 823: 2267, 847: 2267, 850: 2267, 857: 2267, 2267}, + {51: 3139, 101: 3140, 126: 3143, 681: 3142, 1101: 3138, 3141, 1472: 3137}, + {580: 3135, 824: 3136}, + {2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 15: 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, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 62: 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, 2293, 2293, 2293, 2293, 2293, 2293, 102: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 115: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 127: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 149: 2293, 151: 2293, 153: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 173: 2293, 2293, 179: 2293, 182: 2293, 2293, 2293, 2293, 195: 2293, 197: 2293, 232: 2293, 238: 2293, 283: 2293, 321: 2293, 554: 2293, 2293, 2293, 559: 2293, 561: 2293, 2293, 2293, 566: 2293, 570: 2293, 572: 2293, 2293, 2293, 2293, 2293, 578: 2293, 2293, 581: 2293, 2293, 2293, 2293, 587: 2293, 2293, 590: 2293, 600: 2293, 602: 2293, 605: 2293, 607: 2293, 611: 2293, 2293, 632: 2293, 649: 2293, 2293, 664: 2293, 680: 2293, 733: 2293, 2293, 736: 2293, 738: 2293, 745: 2293, 748: 2293, 828: 2293, 852: 2293, 856: 2293, 862: 2293, 2293}, {1, 1}, - {12, 12, 9: 4705, 51: 3111, 101: 3112, 126: 3115, 676: 3114, 1095: 4704, 3113}, - {11, 11, 9: 11, 51: 11, 101: 11, 126: 11, 676: 11}, - {591: 4701}, + {12, 12, 9: 4742, 51: 3139, 101: 3140, 126: 3143, 681: 3142, 1101: 4741, 3141}, // 185 - {242: 2368, 244: 2368, 260: 2368, 573: 4689, 822: 4690, 958: 2368}, - {5, 5, 9: 5, 51: 5, 101: 5, 126: 5, 676: 5}, - {204: 4681, 233: 4680}, - {233: 3116}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3681, 3686, 3768, 3685, 3682}, + {11, 11, 9: 11, 51: 11, 101: 11, 126: 11, 681: 11}, + {596: 4738}, + {245: 2394, 248: 2394, 264: 2394, 577: 4726, 825: 4727, 963: 2394}, + {5, 5, 9: 5, 51: 5, 101: 5, 126: 5, 681: 5}, + {209: 4718, 237: 4717}, // 190 - {1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 4677, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 551: 1823, 1823, 1823, 555: 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 568: 1823, 1823, 1823, 573: 1823, 1823, 1823, 577: 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 599: 1823, 1823, 1823, 1823, 1823, 1823, 607: 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 628: 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 639: 1823, 1823, 1823, 1823, 1823, 1823, 647: 1823, 651: 1823, 1823, 1823, 1823, 676: 1823, 726: 1823, 734: 1823, 738: 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, 4674, 1822, 1822, 1822, 555: 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 568: 1822, 1822, 1822, 573: 1822, 1822, 1822, 577: 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 599: 1822, 1822, 1822, 1822, 1822, 1822, 607: 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 628: 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 639: 1822, 1822, 1822, 1822, 1822, 1822, 647: 1822, 651: 1822, 1822, 1822, 1822, 676: 1822, 726: 1822, 734: 1822, 738: 1822, 1822}, - {2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 4671, 2133, 2133, 2133, 555: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 568: 2133, 2133, 2133, 573: 2133, 2133, 2133, 577: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 599: 2133, 2133, 2133, 2133, 2133, 2133, 607: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 628: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 639: 2133, 2133, 2133, 2133, 2133, 2133, 647: 2133, 651: 2133, 2133, 2133, 2133, 676: 2133, 726: 2133, 734: 2133, 738: 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}, - {2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131}, + {237: 3144}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3714, 3719, 3801, 3718, 3715}, + {1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 4714, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 556: 1849, 1849, 1849, 560: 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 573: 1849, 1849, 1849, 577: 1849, 579: 1849, 581: 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 606: 1849, 1849, 1849, 1849, 612: 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 633: 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 653: 1849, 656: 1849, 1849, 1849, 661: 1849, 681: 1849, 730: 1849, 739: 1849, 742: 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, 4711, 1848, 1848, 1848, 560: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 573: 1848, 1848, 1848, 577: 1848, 579: 1848, 581: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 606: 1848, 1848, 1848, 1848, 612: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 633: 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 653: 1848, 656: 1848, 1848, 1848, 661: 1848, 681: 1848, 730: 1848, 739: 1848, 742: 1848, 1848}, + {2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 4708, 2159, 2159, 2159, 560: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 573: 2159, 2159, 2159, 577: 2159, 579: 2159, 581: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 606: 2159, 2159, 2159, 2159, 612: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 633: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 653: 2159, 656: 2159, 2159, 2159, 661: 2159, 681: 2159, 730: 2159, 739: 2159, 742: 2159, 2159}, // 195 - {2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 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}, - {2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 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, 1459, 2127, 2127, 2127, 555: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 568: 2127, 2127, 2127, 573: 2127, 2127, 2127, 577: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 599: 2127, 2127, 2127, 2127, 2127, 2127, 607: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 628: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 639: 2127, 2127, 2127, 2127, 2127, 2127, 647: 2127, 651: 2127, 2127, 2127, 2127, 676: 2127, 726: 2127, 734: 2127, 738: 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}, + {2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 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}, + {2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156}, + {2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 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}, // 200 - {2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 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}, - {2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 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}, - {2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121}, + {2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 1480, 2153, 2153, 2153, 560: 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 573: 2153, 2153, 2153, 577: 2153, 579: 2153, 581: 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 606: 2153, 2153, 2153, 2153, 612: 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 633: 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 653: 2153, 656: 2153, 2153, 2153, 661: 2153, 681: 2153, 730: 2153, 739: 2153, 742: 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}, + {2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151}, + {2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 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}, // 205 - {2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 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}, - {2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 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}, - {2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116}, + {2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 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}, + {2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 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}, // 210 - {2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 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, 4666, 2114, 2114, 2114, 555: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 568: 2114, 2114, 2114, 573: 2114, 2114, 2114, 577: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 599: 2114, 2114, 2114, 2114, 2114, 2114, 607: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 628: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 639: 2114, 2114, 2114, 2114, 2114, 2114, 647: 2114, 651: 2114, 2114, 2114, 2114, 676: 2114, 726: 2114, 734: 2114, 738: 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}, - {2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 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}, + {2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 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}, + {2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 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, 4703, 2140, 2140, 2140, 560: 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 573: 2140, 2140, 2140, 577: 2140, 579: 2140, 581: 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 606: 2140, 2140, 2140, 2140, 612: 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 633: 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 653: 2140, 656: 2140, 2140, 2140, 661: 2140, 681: 2140, 730: 2140, 739: 2140, 742: 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}, // 215 - {2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 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}, - {2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 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}, - {2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106}, + {2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 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, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 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}, // 220 - {2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 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, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 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}, - {2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 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, 1458, 2101, 2101, 2101, 555: 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 568: 2101, 2101, 2101, 573: 2101, 2101, 2101, 577: 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 599: 2101, 2101, 2101, 2101, 2101, 2101, 607: 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 628: 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 639: 2101, 2101, 2101, 2101, 2101, 2101, 647: 2101, 651: 2101, 2101, 2101, 2101, 676: 2101, 726: 2101, 734: 2101, 738: 2101, 2101}, + {2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 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}, + {2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 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}, // 225 - {2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 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}, - {2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 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}, - {2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096}, + {2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 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, 1479, 2127, 2127, 2127, 560: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 573: 2127, 2127, 2127, 577: 2127, 579: 2127, 581: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 606: 2127, 2127, 2127, 2127, 612: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 633: 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 653: 2127, 656: 2127, 2127, 2127, 661: 2127, 681: 2127, 730: 2127, 739: 2127, 742: 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}, // 230 - {2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 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}, - {2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 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}, - {2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091}, + {2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 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}, + {2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 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}, // 235 - {2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 1455, 2090, 4665, 2090, 555: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 568: 2090, 2090, 2090, 573: 2090, 2090, 2090, 577: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 599: 2090, 2090, 2090, 2090, 2090, 2090, 607: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 628: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 639: 2090, 2090, 2090, 2090, 2090, 2090, 647: 2090, 651: 2090, 2090, 2090, 2090, 676: 2090, 726: 2090, 734: 2090, 738: 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}, - {2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 1453, 2088, 2088, 2088, 555: 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 568: 2088, 2088, 2088, 573: 2088, 2088, 2088, 577: 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 599: 2088, 2088, 2088, 2088, 2088, 2088, 607: 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 628: 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 639: 2088, 2088, 2088, 2088, 2088, 2088, 647: 2088, 651: 2088, 2088, 2088, 2088, 676: 2088, 726: 2088, 734: 2088, 738: 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}, - {2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086}, + {2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 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}, + {2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 1476, 2116, 4702, 2116, 560: 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 573: 2116, 2116, 2116, 577: 2116, 579: 2116, 581: 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 606: 2116, 2116, 2116, 2116, 612: 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 633: 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 653: 2116, 656: 2116, 2116, 2116, 661: 2116, 681: 2116, 730: 2116, 739: 2116, 742: 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, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 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, 1474, 2114, 2114, 2114, 560: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 573: 2114, 2114, 2114, 577: 2114, 579: 2114, 581: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 606: 2114, 2114, 2114, 2114, 612: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 633: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 653: 2114, 656: 2114, 2114, 2114, 661: 2114, 681: 2114, 730: 2114, 739: 2114, 742: 2114, 2114}, // 240 - {2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 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}, - {2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 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}, - {2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081}, + {2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 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, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 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}, // 245 - {2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 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, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 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}, - {2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 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}, + {2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 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}, + {2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 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, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104}, // 250 - {2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 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}, - {2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 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}, - {2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071}, + {2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 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}, + {2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 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}, // 255 - {2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 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}, - {2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 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}, - {2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066}, + {2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 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}, + {2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 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}, // 260 - {2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 1448, 2065, 2065, 2065, 555: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 568: 2065, 2065, 2065, 573: 2065, 2065, 2065, 577: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 599: 2065, 2065, 2065, 2065, 2065, 2065, 607: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 628: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 639: 2065, 2065, 2065, 2065, 2065, 2065, 647: 2065, 651: 2065, 2065, 2065, 2065, 676: 2065, 726: 2065, 734: 2065, 738: 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}, - {2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 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, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 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}, + {2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 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}, + {2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 1469, 2091, 2091, 2091, 560: 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 573: 2091, 2091, 2091, 577: 2091, 579: 2091, 581: 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 606: 2091, 2091, 2091, 2091, 612: 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 633: 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 653: 2091, 656: 2091, 2091, 2091, 661: 2091, 681: 2091, 730: 2091, 739: 2091, 742: 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}, // 265 - {2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 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, 1452, 2059, 2059, 2059, 555: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 568: 2059, 2059, 2059, 573: 2059, 2059, 2059, 577: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 599: 2059, 2059, 2059, 2059, 2059, 2059, 607: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 628: 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 639: 2059, 2059, 2059, 2059, 2059, 2059, 647: 2059, 651: 2059, 2059, 2059, 2059, 676: 2059, 726: 2059, 734: 2059, 738: 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}, - {2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 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}, + {2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 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}, + {2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 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, 1473, 2085, 2085, 2085, 560: 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 573: 2085, 2085, 2085, 577: 2085, 579: 2085, 581: 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 606: 2085, 2085, 2085, 2085, 612: 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 633: 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 653: 2085, 656: 2085, 2085, 2085, 661: 2085, 681: 2085, 730: 2085, 739: 2085, 742: 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}, // 270 - {2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 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}, - {2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 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, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 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}, + {2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 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}, + {2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 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, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079}, // 275 - {2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 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, 4662, 2049, 2049, 2049, 555: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 568: 2049, 2049, 2049, 573: 2049, 2049, 2049, 577: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 599: 2049, 2049, 2049, 2049, 2049, 2049, 607: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 628: 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 639: 2049, 2049, 2049, 2049, 2049, 2049, 647: 2049, 651: 2049, 2049, 2049, 2049, 676: 2049, 726: 2049, 734: 2049, 738: 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}, - {2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 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}, + {2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 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}, + {2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 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, 4699, 2075, 2075, 2075, 560: 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 573: 2075, 2075, 2075, 577: 2075, 579: 2075, 581: 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 606: 2075, 2075, 2075, 2075, 612: 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 633: 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 653: 2075, 656: 2075, 2075, 2075, 661: 2075, 681: 2075, 730: 2075, 739: 2075, 742: 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}, // 280 - {2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 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}, - {2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 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}, - {2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041}, + {2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 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}, + {2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 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}, // 285 - {2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 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}, - {2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 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}, - {2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036}, + {2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 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}, + {2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 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}, // 290 - {2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 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}, - {2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 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}, - {2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031}, + {2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 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, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 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}, // 295 - {2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 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}, - {2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 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, 1442, 2027, 2027, 2027, 555: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 568: 2027, 2027, 2027, 573: 2027, 2027, 2027, 577: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 599: 2027, 2027, 2027, 2027, 2027, 2027, 607: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 628: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 639: 2027, 2027, 2027, 2027, 2027, 2027, 647: 2027, 651: 2027, 2027, 2027, 2027, 676: 2027, 726: 2027, 734: 2027, 738: 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}, + {2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 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}, + {2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 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}, // 300 - {2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 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}, - {2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 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}, - {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021}, + {2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 1463, 2053, 2053, 2053, 560: 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 573: 2053, 2053, 2053, 577: 2053, 579: 2053, 581: 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 606: 2053, 2053, 2053, 2053, 612: 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 633: 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 653: 2053, 656: 2053, 2053, 2053, 661: 2053, 681: 2053, 730: 2053, 739: 2053, 742: 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, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 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}, // 305 - {2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 1434, 2020, 4661, 2020, 555: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 568: 2020, 2020, 2020, 573: 2020, 2020, 2020, 577: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 599: 2020, 2020, 2020, 2020, 2020, 2020, 607: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 628: 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 639: 2020, 2020, 2020, 2020, 2020, 2020, 647: 2020, 651: 2020, 2020, 2020, 2020, 676: 2020, 726: 2020, 734: 2020, 738: 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, 1433, 2019, 4660, 2019, 555: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 568: 2019, 2019, 2019, 573: 2019, 2019, 2019, 577: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 599: 2019, 2019, 2019, 2019, 2019, 2019, 607: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 628: 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 639: 2019, 2019, 2019, 2019, 2019, 2019, 647: 2019, 651: 2019, 2019, 2019, 2019, 676: 2019, 726: 2019, 734: 2019, 738: 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}, - {2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 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, 1432, 2016, 2016, 2016, 555: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 568: 2016, 2016, 2016, 573: 2016, 2016, 2016, 577: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 599: 2016, 2016, 2016, 2016, 2016, 2016, 607: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 628: 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 639: 2016, 2016, 2016, 2016, 2016, 2016, 647: 2016, 651: 2016, 2016, 2016, 2016, 676: 2016, 726: 2016, 734: 2016, 738: 2016, 2016}, + {2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 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}, + {2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 1455, 2046, 4698, 2046, 560: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 573: 2046, 2046, 2046, 577: 2046, 579: 2046, 581: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 606: 2046, 2046, 2046, 2046, 612: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 633: 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 653: 2046, 656: 2046, 2046, 2046, 661: 2046, 681: 2046, 730: 2046, 739: 2046, 742: 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, 1454, 2045, 4697, 2045, 560: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 573: 2045, 2045, 2045, 577: 2045, 579: 2045, 581: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 606: 2045, 2045, 2045, 2045, 612: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 633: 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 653: 2045, 656: 2045, 2045, 2045, 661: 2045, 681: 2045, 730: 2045, 739: 2045, 742: 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}, // 310 - {2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 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}, - {2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 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}, - {2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011}, + {2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 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, 1453, 2042, 2042, 2042, 560: 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 573: 2042, 2042, 2042, 577: 2042, 579: 2042, 581: 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 606: 2042, 2042, 2042, 2042, 612: 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 633: 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 653: 2042, 656: 2042, 2042, 2042, 661: 2042, 681: 2042, 730: 2042, 739: 2042, 742: 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, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 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}, // 315 - {2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 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, 1429, 2009, 2009, 2009, 555: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 568: 2009, 2009, 2009, 573: 2009, 2009, 2009, 577: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 599: 2009, 2009, 2009, 2009, 2009, 2009, 607: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 628: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 639: 2009, 2009, 2009, 2009, 2009, 2009, 647: 2009, 651: 2009, 2009, 2009, 2009, 676: 2009, 726: 2009, 734: 2009, 738: 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}, - {2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 1430, 2007, 2007, 2007, 555: 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 568: 2007, 2007, 2007, 573: 2007, 2007, 2007, 577: 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 599: 2007, 2007, 2007, 2007, 2007, 2007, 607: 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 628: 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 639: 2007, 2007, 2007, 2007, 2007, 2007, 647: 2007, 651: 2007, 2007, 2007, 2007, 676: 2007, 726: 2007, 734: 2007, 738: 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, 4650, 2006, 2006, 2006, 555: 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 568: 2006, 2006, 2006, 573: 2006, 2006, 2006, 577: 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 599: 2006, 2006, 2006, 2006, 2006, 2006, 607: 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 628: 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 639: 2006, 2006, 2006, 2006, 2006, 2006, 647: 2006, 651: 2006, 2006, 2006, 2006, 676: 2006, 726: 2006, 734: 2006, 738: 2006, 2006}, + {2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 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}, + {2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 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, 1450, 2035, 2035, 2035, 560: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 573: 2035, 2035, 2035, 577: 2035, 579: 2035, 581: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 606: 2035, 2035, 2035, 2035, 612: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 633: 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 653: 2035, 656: 2035, 2035, 2035, 661: 2035, 681: 2035, 730: 2035, 739: 2035, 742: 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}, // 320 - {2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 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}, - {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 1431, 2003, 2003, 2003, 555: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 568: 2003, 2003, 2003, 573: 2003, 2003, 2003, 577: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 599: 2003, 2003, 2003, 2003, 2003, 2003, 607: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 628: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 639: 2003, 2003, 2003, 2003, 2003, 2003, 647: 2003, 651: 2003, 2003, 2003, 2003, 676: 2003, 726: 2003, 734: 2003, 738: 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}, - {2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 1456, 2001, 2001, 2001, 555: 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 568: 2001, 2001, 2001, 573: 2001, 2001, 2001, 577: 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 599: 2001, 2001, 2001, 2001, 2001, 2001, 607: 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 628: 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 639: 2001, 2001, 2001, 2001, 2001, 2001, 647: 2001, 651: 2001, 2001, 2001, 2001, 676: 2001, 726: 2001, 734: 2001, 738: 2001, 2001}, + {2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 1451, 2033, 2033, 2033, 560: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 573: 2033, 2033, 2033, 577: 2033, 579: 2033, 581: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 606: 2033, 2033, 2033, 2033, 612: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 633: 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 653: 2033, 656: 2033, 2033, 2033, 661: 2033, 681: 2033, 730: 2033, 739: 2033, 742: 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, 4687, 2032, 2032, 2032, 560: 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 573: 2032, 2032, 2032, 577: 2032, 579: 2032, 581: 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 606: 2032, 2032, 2032, 2032, 612: 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 633: 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 653: 2032, 656: 2032, 2032, 2032, 661: 2032, 681: 2032, 730: 2032, 739: 2032, 742: 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}, + {2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 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, 1452, 2029, 2029, 2029, 560: 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 573: 2029, 2029, 2029, 577: 2029, 579: 2029, 581: 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 606: 2029, 2029, 2029, 2029, 612: 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 633: 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 653: 2029, 656: 2029, 2029, 2029, 661: 2029, 681: 2029, 730: 2029, 739: 2029, 742: 2029, 2029}, // 325 - {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 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}, - {1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 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}, - {1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996}, + {2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 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, 1477, 2027, 2027, 2027, 560: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 573: 2027, 2027, 2027, 577: 2027, 579: 2027, 581: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 606: 2027, 2027, 2027, 2027, 612: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 633: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 653: 2027, 656: 2027, 2027, 2027, 661: 2027, 681: 2027, 730: 2027, 739: 2027, 742: 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}, // 330 - {1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 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}, - {1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 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}, - {1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991}, + {2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 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}, + {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 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, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019}, // 335 - {1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 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}, - {1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1441, 1988, 1988, 1988, 555: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 568: 1988, 1988, 1988, 573: 1988, 1988, 1988, 577: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 599: 1988, 1988, 1988, 1988, 1988, 1988, 607: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 628: 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 639: 1988, 1988, 1988, 1988, 1988, 1988, 647: 1988, 651: 1988, 1988, 1988, 1988, 676: 1988, 726: 1988, 734: 1988, 738: 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}, - {1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986}, + {2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 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}, + {2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 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, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 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, 1462, 2014, 2014, 2014, 560: 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 573: 2014, 2014, 2014, 577: 2014, 579: 2014, 581: 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 606: 2014, 2014, 2014, 2014, 612: 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 633: 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 653: 2014, 656: 2014, 2014, 2014, 661: 2014, 681: 2014, 730: 2014, 739: 2014, 742: 2014, 2014}, // 340 - {1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 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}, - {1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 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}, - {1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981}, + {2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 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}, + {2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 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}, // 345 - {1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 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}, - {1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 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}, - {1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976}, + {2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 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}, + {2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 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}, // 350 - {1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 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}, - {1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 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, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 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}, + {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 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}, + {2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 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, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 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}, // 355 - {1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 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}, - {1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 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}, - {1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966}, + {1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 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}, + {1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 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}, // 360 - {1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1438, 1965, 1965, 1965, 555: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 568: 1965, 1965, 1965, 573: 1965, 1965, 1965, 577: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 599: 1965, 1965, 1965, 1965, 1965, 1965, 607: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 628: 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 639: 1965, 1965, 1965, 1965, 1965, 1965, 647: 1965, 651: 1965, 1965, 1965, 1965, 676: 1965, 726: 1965, 734: 1965, 738: 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}, - {1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 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}, - {1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961}, + {1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 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}, + {1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1459, 1991, 1991, 1991, 560: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 573: 1991, 1991, 1991, 577: 1991, 579: 1991, 581: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 606: 1991, 1991, 1991, 1991, 612: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 633: 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 653: 1991, 656: 1991, 1991, 1991, 661: 1991, 681: 1991, 730: 1991, 739: 1991, 742: 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}, // 365 - {1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 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}, - {1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 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}, - {1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956}, + {1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 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}, + {1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 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}, // 370 - {1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 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, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 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}, - {1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 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}, + {1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 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}, + {1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 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}, // 375 - {1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 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}, - {1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1436, 1948, 1948, 1948, 555: 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 568: 1948, 1948, 1948, 573: 1948, 1948, 1948, 577: 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 599: 1948, 1948, 1948, 1948, 1948, 1948, 607: 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 628: 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 639: 1948, 1948, 1948, 1948, 1948, 1948, 647: 1948, 651: 1948, 1948, 1948, 1948, 676: 1948, 726: 1948, 734: 1948, 738: 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, 1457, 1947, 1947, 1947, 555: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 568: 1947, 1947, 1947, 573: 1947, 1947, 1947, 577: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 599: 1947, 1947, 1947, 1947, 1947, 1947, 607: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 628: 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 639: 1947, 1947, 1947, 1947, 1947, 1947, 647: 1947, 651: 1947, 1947, 1947, 1947, 676: 1947, 726: 1947, 734: 1947, 738: 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, 1444, 1946, 1946, 1946, 555: 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 568: 1946, 1946, 1946, 573: 1946, 1946, 1946, 577: 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 599: 1946, 1946, 1946, 1946, 1946, 1946, 607: 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 628: 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 639: 1946, 1946, 1946, 1946, 1946, 1946, 647: 1946, 651: 1946, 1946, 1946, 1946, 676: 1946, 726: 1946, 734: 1946, 738: 1946, 1946}, + {1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 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}, + {1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 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, 1457, 1974, 1974, 1974, 560: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 573: 1974, 1974, 1974, 577: 1974, 579: 1974, 581: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 606: 1974, 1974, 1974, 1974, 612: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 633: 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 653: 1974, 656: 1974, 1974, 1974, 661: 1974, 681: 1974, 730: 1974, 739: 1974, 742: 1974, 1974}, // 380 - {1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 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}, - {1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 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, 1446, 1942, 1942, 1942, 555: 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 568: 1942, 1942, 1942, 573: 1942, 1942, 1942, 577: 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 599: 1942, 1942, 1942, 1942, 1942, 1942, 607: 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 628: 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 639: 1942, 1942, 1942, 1942, 1942, 1942, 647: 1942, 651: 1942, 1942, 1942, 1942, 676: 1942, 726: 1942, 734: 1942, 738: 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, 1445, 1941, 1941, 1941, 555: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 568: 1941, 1941, 1941, 573: 1941, 1941, 1941, 577: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 599: 1941, 1941, 1941, 1941, 1941, 1941, 607: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 628: 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 639: 1941, 1941, 1941, 1941, 1941, 1941, 647: 1941, 651: 1941, 1941, 1941, 1941, 676: 1941, 726: 1941, 734: 1941, 738: 1941, 1941}, + {1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1478, 1973, 1973, 1973, 560: 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 573: 1973, 1973, 1973, 577: 1973, 579: 1973, 581: 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 606: 1973, 1973, 1973, 1973, 612: 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 633: 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 653: 1973, 656: 1973, 1973, 1973, 661: 1973, 681: 1973, 730: 1973, 739: 1973, 742: 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, 1465, 1972, 1972, 1972, 560: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 573: 1972, 1972, 1972, 577: 1972, 579: 1972, 581: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 606: 1972, 1972, 1972, 1972, 612: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 633: 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 653: 1972, 656: 1972, 1972, 1972, 661: 1972, 681: 1972, 730: 1972, 739: 1972, 742: 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}, // 385 - {1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 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}, - {1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 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}, - {1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936}, + {1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1467, 1968, 1968, 1968, 560: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 573: 1968, 1968, 1968, 577: 1968, 579: 1968, 581: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 606: 1968, 1968, 1968, 1968, 612: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 633: 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 653: 1968, 656: 1968, 1968, 1968, 661: 1968, 681: 1968, 730: 1968, 739: 1968, 742: 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, 1466, 1967, 1967, 1967, 560: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 573: 1967, 1967, 1967, 577: 1967, 579: 1967, 581: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 606: 1967, 1967, 1967, 1967, 612: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 633: 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 653: 1967, 656: 1967, 1967, 1967, 661: 1967, 681: 1967, 730: 1967, 739: 1967, 742: 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}, // 390 - {1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1435, 1935, 1935, 1935, 555: 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 568: 1935, 1935, 1935, 573: 1935, 1935, 1935, 577: 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 599: 1935, 1935, 1935, 1935, 1935, 1935, 607: 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 628: 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 639: 1935, 1935, 1935, 1935, 1935, 1935, 647: 1935, 651: 1935, 1935, 1935, 1935, 676: 1935, 726: 1935, 734: 1935, 738: 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}, - {1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 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}, - {1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931}, + {1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 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}, + {1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1456, 1961, 1961, 1961, 560: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 573: 1961, 1961, 1961, 577: 1961, 579: 1961, 581: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 606: 1961, 1961, 1961, 1961, 612: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 633: 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 653: 1961, 656: 1961, 1961, 1961, 661: 1961, 681: 1961, 730: 1961, 739: 1961, 742: 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, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 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}, // 395 - {1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 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}, - {1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 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}, - {1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926}, + {1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 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}, + {1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 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, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954}, // 400 - {1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 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}, - {1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 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}, - {1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921}, + {1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 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}, + {1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 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}, // 405 - {1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 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}, - {1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 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}, - {1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916}, + {1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 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}, + {1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 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}, // 410 - {1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 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}, - {1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 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}, - {1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911}, + {1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 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}, + {1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 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}, // 415 - {1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 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}, - {1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 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}, - {1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906}, + {1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 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}, + {1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 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}, // 420 - {1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 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}, - {1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 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}, - {1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901}, + {1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 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}, + {1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 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}, // 425 - {1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 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}, - {1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 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}, - {1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896}, + {1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 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}, + {1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 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}, // 430 - {1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 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}, - {1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 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}, - {1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891}, + {1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 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}, + {1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 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}, // 435 - {1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 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}, - {1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 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}, - {1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886}, + {1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 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}, + {1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 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}, // 440 - {1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 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}, - {1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 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}, - {1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881}, + {1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 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}, + {1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 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}, // 445 - {1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 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}, - {1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 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}, - {1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876}, + {1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 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}, + {1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 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}, // 450 - {1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 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}, - {1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 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}, - {1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871}, + {1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 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}, + {1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 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}, // 455 - {1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 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}, - {1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 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}, - {1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866}, + {1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 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}, + {1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 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}, // 460 - {1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 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}, - {1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 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}, - {1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861}, + {1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 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}, + {1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 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}, // 465 - {1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 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}, - {1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 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}, - {1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856}, + {1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 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}, + {1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 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}, // 470 - {1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 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}, - {1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 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}, - {1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851}, + {1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 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}, + {1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 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}, // 475 - {1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 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}, - {1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 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}, - {1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846}, + {1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 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}, + {1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 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}, // 480 - {1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 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}, - {1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 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}, - {1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841}, + {1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 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}, + {1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 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}, // 485 - {1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 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}, - {1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 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}, - {1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836}, + {1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 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}, + {1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 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}, // 490 - {1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 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}, - {1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 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}, - {1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831}, + {1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 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}, + {1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 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}, // 495 - {1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 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}, - {1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 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}, - {1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826}, + {1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 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}, + {1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 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}, // 500 - {1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 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}, - {1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 4647, 1821, 1821, 1821, 555: 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 568: 1821, 1821, 1821, 573: 1821, 1821, 1821, 577: 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 599: 1821, 1821, 1821, 1821, 1821, 1821, 607: 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 628: 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 639: 1821, 1821, 1821, 1821, 1821, 1821, 647: 1821, 651: 1821, 1821, 1821, 1821, 676: 1821, 726: 1821, 734: 1821, 738: 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, 4636, 1820, 1820, 1820, 555: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 568: 1820, 1820, 1820, 573: 1820, 1820, 1820, 577: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 599: 1820, 1820, 1820, 1820, 1820, 1820, 607: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 628: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 639: 1820, 1820, 1820, 1820, 1820, 1820, 647: 1820, 651: 1820, 1820, 1820, 1820, 676: 1820, 726: 1820, 734: 1820, 738: 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}, + {1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 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}, + {1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 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}, + {1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 4684, 1847, 1847, 1847, 560: 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 573: 1847, 1847, 1847, 577: 1847, 579: 1847, 581: 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 606: 1847, 1847, 1847, 1847, 612: 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 633: 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 653: 1847, 656: 1847, 1847, 1847, 661: 1847, 681: 1847, 730: 1847, 739: 1847, 742: 1847, 1847}, // 505 - {1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 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}, - {1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 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}, - {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814}, + {1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 4673, 1846, 1846, 1846, 560: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 573: 1846, 1846, 1846, 577: 1846, 579: 1846, 581: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 606: 1846, 1846, 1846, 1846, 612: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 633: 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 653: 1846, 656: 1846, 1846, 1846, 661: 1846, 681: 1846, 730: 1846, 739: 1846, 742: 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}, + {1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842}, // 510 - {1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 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}, - {1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 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}, - {1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809}, + {1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 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}, + {1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837}, // 515 - {1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 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}, - {1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 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}, - {1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804}, + {1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 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}, + {1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 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}, + {1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832}, // 520 - {1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 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}, - {1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 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}, - {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799}, + {1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 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}, + {1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 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}, // 525 - {1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 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}, - {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 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}, - {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794}, + {1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 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}, + {1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 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}, // 530 - {1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 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}, - {1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 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}, - {1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789}, + {1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 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}, + {1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 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}, // 535 - {1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 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}, - {1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 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}, - {1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784}, + {1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 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}, + {1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 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}, // 540 - {1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 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}, - {1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 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}, - {1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779}, + {1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 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}, + {1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 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}, // 545 - {1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 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}, - {1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 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}, - {1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774}, + {1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 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}, + {1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 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}, // 550 - {1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 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}, - {1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 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}, - {1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769}, + {1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 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}, + {1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 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}, // 555 - {1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 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}, - {1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 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}, - {1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764}, + {1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 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}, + {1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 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}, // 560 - {1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 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}, - {1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 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}, - {1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759}, + {1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 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}, + {1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 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}, // 565 - {1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 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}, - {1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 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}, - {1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754}, + {1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 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}, + {1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 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}, // 570 - {1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 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}, - {1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 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}, - {1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749}, + {1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 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}, + {1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 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}, // 575 - {1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 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}, - {1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 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}, - {1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744}, + {1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 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}, + {1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 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}, // 580 - {1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 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}, - {1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 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, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 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}, + {1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 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}, + {1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 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}, // 585 - {1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 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}, - {1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 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}, - {1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734}, + {1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 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}, + {1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 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}, // 590 - {1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 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}, - {1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 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}, - {1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729}, + {1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 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}, + {1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 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}, // 595 - {1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 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}, - {1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 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}, - {1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724}, + {1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 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}, + {1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 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}, // 600 - {1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 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}, - {1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 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}, - {1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719}, + {1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 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}, + {1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 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}, // 605 - {1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 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}, - {1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 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, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 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}, + {1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 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}, + {1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 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}, // 610 - {1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 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}, - {1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 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}, - {1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709}, + {1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 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, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 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}, // 615 - {1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 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, 1373, 1707, 1707, 1707, 555: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 568: 1707, 1707, 1707, 573: 1707, 1707, 1707, 577: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 599: 1707, 1707, 1707, 1707, 1707, 1707, 607: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 628: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 639: 1707, 1707, 1707, 1707, 1707, 1707, 647: 1707, 651: 1707, 1707, 1707, 1707, 676: 1707, 726: 1707, 734: 1707, 738: 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}, - {1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 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}, + {1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 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}, + {1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 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, 1393, 1733, 1733, 1733, 560: 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 573: 1733, 1733, 1733, 577: 1733, 579: 1733, 581: 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 606: 1733, 1733, 1733, 1733, 612: 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 633: 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 653: 1733, 656: 1733, 1733, 1733, 661: 1733, 681: 1733, 730: 1733, 739: 1733, 742: 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}, // 620 - {1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 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}, - {1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 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, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 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}, + {1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 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}, + {1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 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}, // 625 - {1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 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, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 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}, - {1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 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}, + {1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 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, 4670, 1725, 1725, 1725, 560: 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 573: 1725, 1725, 1725, 577: 1725, 579: 1725, 581: 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 606: 1725, 1725, 1725, 1725, 612: 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 633: 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 653: 1725, 656: 1725, 1725, 1725, 661: 1725, 681: 1725, 730: 1725, 739: 1725, 742: 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}, // 630 - {1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 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}, - {1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 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}, - {1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689}, + {1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 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}, + {1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 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}, // 635 - {1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 4627, 1688, 1688, 1688, 555: 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 568: 1688, 1688, 1688, 573: 1688, 1688, 1688, 577: 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 599: 1688, 1688, 1688, 1688, 1688, 1688, 607: 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 628: 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 639: 1688, 1688, 1688, 1688, 1688, 1688, 647: 1688, 651: 1688, 1688, 1688, 1688, 676: 1688, 726: 1688, 734: 1688, 738: 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}, - {1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 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}, - {1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684}, + {1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 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, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 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, 4661, 1713, 1713, 1713, 560: 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 573: 1713, 1713, 1713, 577: 1713, 579: 1713, 581: 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 606: 1713, 1713, 1713, 1713, 612: 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 633: 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 653: 1713, 656: 1713, 1713, 1713, 661: 1713, 681: 1713, 730: 1713, 739: 1713, 742: 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}, // 640 - {1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 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, 1449, 1682, 1682, 1682, 555: 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 568: 1682, 1682, 1682, 573: 1682, 1682, 1682, 577: 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 599: 1682, 1682, 1682, 1682, 1682, 1682, 607: 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 628: 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 639: 1682, 1682, 1682, 1682, 1682, 1682, 647: 1682, 651: 1682, 1682, 1682, 1682, 676: 1682, 726: 1682, 734: 1682, 738: 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}, - {1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 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}, + {1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 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}, + {1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 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, 1470, 1707, 1707, 1707, 560: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 573: 1707, 1707, 1707, 577: 1707, 579: 1707, 581: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 606: 1707, 1707, 1707, 1707, 612: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 633: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 653: 1707, 656: 1707, 1707, 1707, 661: 1707, 681: 1707, 730: 1707, 739: 1707, 742: 1707, 1707}, // 645 - {1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 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, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 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}, - {1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 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}, + {1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 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}, + {1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 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}, // 650 - {1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 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}, - {1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 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}, - {1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669}, + {1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 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, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 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, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697}, // 655 - {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1372, 1668, 1668, 1668, 555: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 568: 1668, 1668, 1668, 573: 1668, 1668, 1668, 577: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 599: 1668, 1668, 1668, 1668, 1668, 1668, 607: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 628: 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 639: 1668, 1668, 1668, 1668, 1668, 1668, 647: 1668, 651: 1668, 1668, 1668, 1668, 676: 1668, 726: 1668, 734: 1668, 738: 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}, - {1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 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}, - {1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664}, + {1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 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}, + {1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 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}, // 660 - {1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 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}, - {1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 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}, - {1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659}, + {1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 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, 1392, 1690, 1690, 1690, 560: 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 573: 1690, 1690, 1690, 577: 1690, 579: 1690, 581: 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 606: 1690, 1690, 1690, 1690, 612: 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 633: 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 653: 1690, 656: 1690, 1690, 1690, 661: 1690, 681: 1690, 730: 1690, 739: 1690, 742: 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}, // 665 - {1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 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}, - {1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 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, 4620, 1655, 1655, 1655, 555: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 568: 1655, 1655, 1655, 573: 1655, 1655, 1655, 577: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 599: 1655, 1655, 1655, 1655, 1655, 1655, 607: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 628: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 639: 1655, 1655, 1655, 1655, 1655, 1655, 647: 1655, 651: 1655, 1655, 1655, 1655, 676: 1655, 726: 1655, 734: 1655, 738: 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, 4613, 1654, 1654, 1654, 555: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 568: 1654, 1654, 1654, 573: 1654, 1654, 1654, 577: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 599: 1654, 1654, 1654, 1654, 1654, 1654, 607: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 628: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 639: 1654, 1654, 1654, 1654, 1654, 1654, 647: 1654, 651: 1654, 1654, 1654, 1654, 676: 1654, 726: 1654, 734: 1654, 738: 1654, 1654}, + {1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 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}, + {1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 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}, // 670 - {1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 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}, - {1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 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}, - {1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649}, + {1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 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}, + {1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 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, 4654, 1677, 1677, 1677, 560: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 573: 1677, 1677, 1677, 577: 1677, 579: 1677, 581: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 606: 1677, 1677, 1677, 1677, 612: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 633: 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 653: 1677, 656: 1677, 1677, 1677, 661: 1677, 681: 1677, 730: 1677, 739: 1677, 742: 1677, 1677}, // 675 - {1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 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}, - {1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 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}, - {1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644}, + {1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 4647, 1676, 1676, 1676, 560: 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 573: 1676, 1676, 1676, 577: 1676, 579: 1676, 581: 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 606: 1676, 1676, 1676, 1676, 612: 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 633: 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 653: 1676, 656: 1676, 1676, 1676, 661: 1676, 681: 1676, 730: 1676, 739: 1676, 742: 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}, + {1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 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}, // 680 - {1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 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}, - {1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 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}, - {1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639}, + {1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 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}, + {1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 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}, // 685 - {1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 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}, - {1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 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}, - {1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 4593, 1634, 1634, 1634, 555: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 568: 1634, 1634, 1634, 573: 1634, 1634, 1634, 577: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 599: 1634, 1634, 1634, 1634, 1634, 1634, 607: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 628: 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 639: 1634, 1634, 1634, 1634, 1634, 1634, 647: 1634, 651: 1634, 1634, 1634, 1634, 676: 1634, 726: 1634, 734: 1634, 738: 1634, 1634}, + {1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 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}, + {1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 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}, + {1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662}, // 690 - {1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 4585, 1633, 1633, 1633, 555: 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 568: 1633, 1633, 1633, 573: 1633, 1633, 1633, 577: 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 599: 1633, 1633, 1633, 1633, 1633, 1633, 607: 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 628: 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 639: 1633, 1633, 1633, 1633, 1633, 1633, 647: 1633, 651: 1633, 1633, 1633, 1633, 676: 1633, 726: 1633, 734: 1633, 738: 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}, - {1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 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}, - {1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629}, + {1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 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}, + {1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 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}, // 695 - {1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 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}, - {1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 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}, - {1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624}, + {1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 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, 4627, 1655, 1655, 1655, 560: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 573: 1655, 1655, 1655, 577: 1655, 579: 1655, 581: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 606: 1655, 1655, 1655, 1655, 612: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 633: 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 653: 1655, 656: 1655, 1655, 1655, 661: 1655, 681: 1655, 730: 1655, 739: 1655, 742: 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, 4619, 1654, 1654, 1654, 560: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 573: 1654, 1654, 1654, 577: 1654, 579: 1654, 581: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 606: 1654, 1654, 1654, 1654, 612: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 633: 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 653: 1654, 656: 1654, 1654, 1654, 661: 1654, 681: 1654, 730: 1654, 739: 1654, 742: 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}, // 700 - {1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, 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}, - {1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 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}, - {1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619}, + {1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 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}, + {1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 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}, // 705 - {1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 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}, - {1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616}, - {1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 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}, + {1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 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}, + {1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 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, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 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}, // 710 - {1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 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}, - {1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611}, - {1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 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}, + {1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 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}, + {1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 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}, // 715 - {1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 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}, - {1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606}, - {1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 1605, 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}, + {1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 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}, + {1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 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}, // 720 - {1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, 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}, - {1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601}, - {1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 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}, + {1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 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}, + {1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 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}, // 725 - {1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 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}, - {1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596}, - {1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595}, - {1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594}, + {1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 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}, + {1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 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}, // 730 - {1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593}, - {1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592}, - {1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591}, - {1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590}, - {1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589}, + {1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 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}, + {1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 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}, // 735 - {1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588}, - {1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587}, - {1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586}, - {1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 551: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 568: 1550, 1550, 1550, 573: 1550, 1550, 1550, 577: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 599: 1550, 1550, 1550, 1550, 1550, 1550, 607: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 628: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 639: 1550, 1550, 1550, 1550, 1550, 1550, 647: 1550, 651: 1550, 1550, 1550, 1550, 663: 1550, 676: 1550, 678: 1550, 705: 1550, 723: 1550, 1550, 1550, 1550, 1550}, - {1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 551: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 568: 1549, 1549, 1549, 573: 1549, 1549, 1549, 577: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 599: 1549, 1549, 1549, 1549, 1549, 1549, 607: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 628: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 639: 1549, 1549, 1549, 1549, 1549, 1549, 647: 1549, 651: 1549, 1549, 1549, 1549, 663: 1549, 676: 1549, 678: 1549, 705: 1549, 723: 1549, 1549, 1549, 1549, 1549}, + {1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616}, + {1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 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}, // 740 - {1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 551: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 568: 1548, 1548, 1548, 573: 1548, 1548, 1548, 577: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 599: 1548, 1548, 1548, 1548, 1548, 1548, 607: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 628: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 639: 1548, 1548, 1548, 1548, 1548, 1548, 647: 1548, 651: 1548, 1548, 1548, 1548, 663: 1548, 676: 1548, 678: 1548, 705: 1548, 723: 1548, 1548, 1548, 1548, 1548}, - {1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 551: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 568: 1547, 1547, 1547, 573: 1547, 1547, 1547, 577: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 599: 1547, 1547, 1547, 1547, 1547, 1547, 607: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 628: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 639: 1547, 1547, 1547, 1547, 1547, 1547, 647: 1547, 651: 1547, 1547, 1547, 1547, 663: 1547, 676: 1547, 678: 1547, 705: 1547, 723: 1547, 1547, 1547, 1547, 1547}, - {1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 551: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 568: 1546, 1546, 1546, 573: 1546, 1546, 1546, 577: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 599: 1546, 1546, 1546, 1546, 1546, 1546, 607: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 628: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 639: 1546, 1546, 1546, 1546, 1546, 1546, 647: 1546, 651: 1546, 1546, 1546, 1546, 663: 1546, 676: 1546, 678: 1546, 705: 1546, 723: 1546, 1546, 1546, 1546, 1546}, - {1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 551: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 568: 1545, 1545, 1545, 573: 1545, 1545, 1545, 577: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 599: 1545, 1545, 1545, 1545, 1545, 1545, 607: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 628: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 639: 1545, 1545, 1545, 1545, 1545, 1545, 647: 1545, 651: 1545, 1545, 1545, 1545, 663: 1545, 676: 1545, 678: 1545, 705: 1545, 723: 1545, 1545, 1545, 1545, 1545}, - {1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 551: 1544, 4584, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 568: 1544, 1544, 1544, 573: 1544, 1544, 1544, 577: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 599: 1544, 1544, 1544, 1544, 1544, 1544, 607: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 628: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 639: 1544, 1544, 1544, 1544, 1544, 1544, 647: 1544, 651: 1544, 1544, 1544, 1544, 663: 1544, 676: 1544, 678: 1544, 705: 1544, 723: 1544, 1544, 1544, 1544, 1544}, + {1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611}, + {1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 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}, // 745 - {552: 4581, 657: 4582, 4583}, - {1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 551: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 568: 1542, 1542, 1542, 573: 1542, 1542, 1542, 577: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 599: 1542, 1542, 1542, 1542, 1542, 1542, 607: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 628: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 639: 1542, 1542, 1542, 1542, 1542, 1542, 647: 1542, 651: 1542, 1542, 1542, 1542, 663: 1542, 676: 1542, 678: 1542, 705: 1542, 723: 1542, 1542, 1542, 1542, 1542}, - {1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 551: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 568: 1541, 1541, 1541, 573: 1541, 1541, 1541, 577: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 599: 1541, 1541, 1541, 1541, 1541, 1541, 607: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 628: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 639: 1541, 1541, 1541, 1541, 1541, 1541, 647: 1541, 651: 1541, 1541, 1541, 1541, 663: 1541, 676: 1541, 678: 1541, 705: 1541, 723: 1541, 1541, 1541, 1541, 1541}, - {1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 551: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 568: 1538, 1538, 1538, 573: 1538, 1538, 1538, 577: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 599: 1538, 1538, 1538, 1538, 1538, 1538, 607: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 628: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 639: 1538, 1538, 1538, 1538, 1538, 1538, 647: 1538, 651: 1538, 1538, 1538, 1538, 663: 1538, 676: 1538, 678: 1538, 705: 1538, 723: 1538, 1538, 1538, 1538, 1538}, - {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 551: 1505, 1505, 1505, 555: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 568: 1505, 1505, 1505, 573: 1505, 1505, 1505, 577: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 599: 1505, 1505, 1505, 1505, 1505, 1505, 607: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 628: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 639: 1505, 1505, 1505, 1505, 1505, 1505, 647: 1505, 651: 1505, 1505, 1505, 1505, 676: 1505, 726: 1505, 734: 4576, 738: 1505, 1505}, + {1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 556: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 573: 1571, 1571, 1571, 577: 1571, 579: 1571, 581: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 606: 1571, 1571, 1571, 1571, 612: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 633: 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 653: 1571, 656: 1571, 1571, 1571, 661: 1571, 668: 1571, 681: 1571, 720: 1571, 727: 1571, 1571, 1571, 1571, 1571, 1571}, + {1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 556: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 573: 1570, 1570, 1570, 577: 1570, 579: 1570, 581: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 606: 1570, 1570, 1570, 1570, 612: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 633: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 653: 1570, 656: 1570, 1570, 1570, 661: 1570, 668: 1570, 681: 1570, 720: 1570, 727: 1570, 1570, 1570, 1570, 1570, 1570}, + {1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 556: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 573: 1569, 1569, 1569, 577: 1569, 579: 1569, 581: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 606: 1569, 1569, 1569, 1569, 612: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 633: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 653: 1569, 656: 1569, 1569, 1569, 661: 1569, 668: 1569, 681: 1569, 720: 1569, 727: 1569, 1569, 1569, 1569, 1569, 1569}, + {1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 556: 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 573: 1568, 1568, 1568, 577: 1568, 579: 1568, 581: 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 606: 1568, 1568, 1568, 1568, 612: 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 633: 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 653: 1568, 656: 1568, 1568, 1568, 661: 1568, 668: 1568, 681: 1568, 720: 1568, 727: 1568, 1568, 1568, 1568, 1568, 1568}, + {1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 556: 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 573: 1567, 1567, 1567, 577: 1567, 579: 1567, 581: 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 606: 1567, 1567, 1567, 1567, 612: 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 633: 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 653: 1567, 656: 1567, 1567, 1567, 661: 1567, 668: 1567, 681: 1567, 720: 1567, 727: 1567, 1567, 1567, 1567, 1567, 1567}, // 750 - {1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 551: 1502, 1502, 1502, 555: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 568: 1502, 1502, 1502, 573: 1502, 1502, 1502, 577: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 599: 1502, 1502, 1502, 1502, 1502, 1502, 607: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 628: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 639: 1502, 1502, 1502, 1502, 1502, 1502, 647: 1502, 651: 1502, 1502, 1502, 1502, 676: 1502, 726: 1502, 738: 4572, 4573}, - {1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 551: 1501, 1501, 1501, 555: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 568: 1501, 1501, 1501, 573: 1501, 1501, 1501, 577: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 599: 1501, 1501, 1501, 1501, 1501, 1501, 607: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 628: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 639: 1501, 1501, 1501, 1501, 1501, 1501, 647: 1501, 651: 1501, 1501, 1501, 1501, 676: 1501, 726: 1501}, - {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 551: 1500, 1500, 1500, 555: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 568: 1500, 1500, 1500, 573: 1500, 1500, 1500, 577: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 599: 1500, 1500, 1500, 1500, 1500, 1500, 607: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 628: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 639: 1500, 1500, 1500, 1500, 1500, 1500, 647: 1500, 651: 1500, 1500, 1500, 1500, 676: 1500, 726: 1500}, - {1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 551: 1499, 1499, 1499, 555: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 568: 1499, 1499, 1499, 573: 1499, 1499, 1499, 577: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 599: 1499, 1499, 1499, 1499, 1499, 1499, 607: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 628: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 639: 1499, 1499, 1499, 1499, 1499, 1499, 647: 1499, 651: 1499, 1499, 1499, 1499, 676: 1499, 726: 1499}, - {3, 3, 9: 3, 51: 3, 101: 3, 126: 3, 557: 3782, 676: 3, 726: 3783}, + {1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 556: 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 573: 1566, 1566, 1566, 577: 1566, 579: 1566, 581: 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 606: 1566, 1566, 1566, 1566, 612: 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 633: 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 653: 1566, 656: 1566, 1566, 1566, 661: 1566, 668: 1566, 681: 1566, 720: 1566, 727: 1566, 1566, 1566, 1566, 1566, 1566}, + {1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 556: 1565, 4618, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 573: 1565, 1565, 1565, 577: 1565, 579: 1565, 581: 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 606: 1565, 1565, 1565, 1565, 612: 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 633: 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 653: 1565, 656: 1565, 1565, 1565, 661: 1565, 668: 1565, 681: 1565, 720: 1565, 727: 1565, 1565, 1565, 1565, 1565, 1565}, + {557: 4615, 662: 4616, 4617}, + {1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 556: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 573: 1563, 1563, 1563, 577: 1563, 579: 1563, 581: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 606: 1563, 1563, 1563, 1563, 612: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 633: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 653: 1563, 656: 1563, 1563, 1563, 661: 1563, 668: 1563, 681: 1563, 720: 1563, 727: 1563, 1563, 1563, 1563, 1563, 1563}, + {1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 556: 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 573: 1562, 1562, 1562, 577: 1562, 579: 1562, 581: 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 606: 1562, 1562, 1562, 1562, 612: 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 633: 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 653: 1562, 656: 1562, 1562, 1562, 661: 1562, 668: 1562, 681: 1562, 720: 1562, 727: 1562, 1562, 1562, 1562, 1562, 1562}, // 755 - {1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 551: 1497, 1497, 1497, 555: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 568: 1497, 1497, 1497, 573: 1497, 1497, 1497, 577: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 599: 1497, 1497, 1497, 1497, 1497, 1497, 607: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 628: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 639: 1497, 1497, 1497, 1497, 1497, 1497, 647: 1497, 651: 1497, 1497, 1497, 1497, 676: 1497, 726: 1497}, - {1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 551: 1496, 1496, 1496, 555: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 568: 1496, 1496, 1496, 573: 1496, 1496, 1496, 577: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 599: 1496, 1496, 1496, 1496, 1496, 1496, 607: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 628: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 639: 1496, 1496, 1496, 1496, 1496, 1496, 647: 1496, 651: 1496, 1496, 1496, 1496, 676: 1496, 726: 1496}, - {1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 551: 1495, 1495, 1495, 555: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 568: 1495, 1495, 1495, 573: 1495, 1495, 1495, 577: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 599: 1495, 1495, 1495, 1495, 1495, 1495, 607: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 628: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 639: 1495, 1495, 1495, 1495, 1495, 1495, 647: 1495, 651: 1495, 1495, 1495, 1495, 676: 1495, 726: 1495}, - {1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 551: 1494, 1494, 1494, 555: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 568: 1494, 1494, 1494, 573: 1494, 1494, 1494, 577: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 599: 1494, 1494, 1494, 1494, 1494, 1494, 607: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 628: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 639: 1494, 1494, 1494, 1494, 1494, 1494, 647: 1494, 651: 1494, 1494, 1494, 1494, 676: 1494, 726: 1494}, - {1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 551: 1493, 1493, 1493, 555: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 568: 1493, 1493, 1493, 573: 1493, 1493, 1493, 577: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 599: 1493, 1493, 1493, 1493, 1493, 1493, 607: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 628: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 639: 1493, 1493, 1493, 1493, 1493, 1493, 647: 1493, 651: 1493, 1493, 1493, 1493, 676: 1493, 726: 1493}, + {1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 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, 577: 1559, 579: 1559, 581: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 606: 1559, 1559, 1559, 1559, 612: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 633: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 653: 1559, 656: 1559, 1559, 1559, 661: 1559, 668: 1559, 681: 1559, 720: 1559, 727: 1559, 1559, 1559, 1559, 1559, 1559}, + {1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 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, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 573: 1526, 1526, 1526, 577: 1526, 579: 1526, 581: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 606: 1526, 1526, 1526, 1526, 612: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 633: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 653: 1526, 656: 1526, 1526, 1526, 661: 1526, 681: 1526, 730: 1526, 739: 4610, 742: 1526, 1526}, + {1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 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, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 573: 1523, 1523, 1523, 577: 1523, 579: 1523, 581: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 606: 1523, 1523, 1523, 1523, 612: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 633: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 653: 1523, 656: 1523, 1523, 1523, 661: 1523, 681: 1523, 730: 1523, 742: 4606, 4607}, + {1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 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, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 573: 1522, 1522, 1522, 577: 1522, 579: 1522, 581: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 606: 1522, 1522, 1522, 1522, 612: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 633: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 653: 1522, 656: 1522, 1522, 1522, 661: 1522, 681: 1522, 730: 1522}, + {1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 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, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 573: 1521, 1521, 1521, 577: 1521, 579: 1521, 581: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 606: 1521, 1521, 1521, 1521, 612: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 633: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 653: 1521, 656: 1521, 1521, 1521, 661: 1521, 681: 1521, 730: 1521}, // 760 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4571, 3686, 3768, 3685, 3682}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4570, 3686, 3768, 3685, 3682}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4569, 3686, 3768, 3685, 3682}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4568, 3686, 3768, 3685, 3682}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4567, 3686, 3768, 3685, 3682}, + {1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 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, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 573: 1520, 1520, 1520, 577: 1520, 579: 1520, 581: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 606: 1520, 1520, 1520, 1520, 612: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 633: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 653: 1520, 656: 1520, 1520, 1520, 661: 1520, 681: 1520, 730: 1520}, + {3, 3, 9: 3, 51: 3, 101: 3, 126: 3, 562: 3815, 681: 3, 730: 3816}, + {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 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, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 573: 1518, 1518, 1518, 577: 1518, 579: 1518, 581: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 606: 1518, 1518, 1518, 1518, 612: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 633: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 653: 1518, 656: 1518, 1518, 1518, 661: 1518, 681: 1518, 730: 1518}, + {1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 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, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 573: 1517, 1517, 1517, 577: 1517, 579: 1517, 581: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 606: 1517, 1517, 1517, 1517, 612: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 633: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 653: 1517, 656: 1517, 1517, 1517, 661: 1517, 681: 1517, 730: 1517}, + {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 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, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 573: 1516, 1516, 1516, 577: 1516, 579: 1516, 581: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 606: 1516, 1516, 1516, 1516, 612: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 633: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 653: 1516, 656: 1516, 1516, 1516, 661: 1516, 681: 1516, 730: 1516}, // 765 - {1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 551: 1486, 1486, 1486, 555: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 568: 1486, 1486, 1486, 573: 1486, 1486, 1486, 577: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 599: 1486, 1486, 1486, 1486, 1486, 1486, 607: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 628: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 639: 1486, 1486, 1486, 1486, 1486, 1486, 647: 1486, 651: 1486, 1486, 1486, 1486, 676: 1486, 726: 1486}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 2979, 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3935, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 627: 2977, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 2973, 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3934, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4561, 826: 3937, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 3939, 3938, 878: 4562}, - {550: 4556}, - {550: 2980, 795: 4555}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4552, 3121, 3122, 3120}, + {1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 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, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 573: 1515, 1515, 1515, 577: 1515, 579: 1515, 581: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 606: 1515, 1515, 1515, 1515, 612: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 633: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 653: 1515, 656: 1515, 1515, 1515, 661: 1515, 681: 1515, 730: 1515}, + {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 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, 577: 1514, 579: 1514, 581: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 606: 1514, 1514, 1514, 1514, 612: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 633: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 653: 1514, 656: 1514, 1514, 1514, 661: 1514, 681: 1514, 730: 1514}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4605, 3719, 3801, 3718, 3715}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4604, 3719, 3801, 3718, 3715}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4603, 3719, 3801, 3718, 3715}, // 770 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4551, 3686, 3768, 3685, 3682}, - {550: 4544}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 608: 1302, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4531, 1383: 4532}, - {550: 4465}, - {550: 3990}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4602, 3719, 3801, 3718, 3715}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4601, 3719, 3801, 3718, 3715}, + {1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 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, 577: 1507, 579: 1507, 581: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 606: 1507, 1507, 1507, 1507, 612: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 633: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 653: 1507, 656: 1507, 1507, 1507, 661: 1507, 681: 1507, 730: 1507}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 3005, 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3969, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 632: 3003, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 2999, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3968, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4595, 831: 3971, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 3973, 3972, 879: 4596}, + {555: 4590}, // 775 - {550: 3979}, - {550: 1454}, - {550: 1451}, - {550: 1450}, - {550: 1447}, + {555: 3006, 800: 4589}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4586, 3149, 3150, 3148}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4585, 3719, 3801, 3718, 3715}, + {555: 4578}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 613: 1322, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4565, 1393: 4566}, // 780 - {550: 1443}, - {550: 1440}, - {550: 1439}, - {550: 1437}, - {1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 555: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 568: 1426, 1426, 1426, 573: 1426, 1426, 1426, 577: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 599: 1426, 1426, 1426, 1426, 1426, 1426, 607: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 628: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 639: 1426, 1426, 1426, 1426, 1426, 1426, 647: 1426, 651: 1426, 1426, 1426, 1426, 676: 1426, 726: 1426}, + {555: 4499}, + {555: 4024}, + {555: 4013}, + {555: 1475}, + {555: 1472}, // 785 - {1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 555: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 568: 1425, 1425, 1425, 573: 1425, 1425, 1425, 577: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 599: 1425, 1425, 1425, 1425, 1425, 1425, 607: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 628: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 639: 1425, 1425, 1425, 1425, 1425, 1425, 647: 1425, 651: 1425, 1425, 1425, 1425, 676: 1425, 726: 1425}, - {1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 555: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 568: 1424, 1424, 1424, 573: 1424, 1424, 1424, 577: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 599: 1424, 1424, 1424, 1424, 1424, 1424, 607: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 628: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 639: 1424, 1424, 1424, 1424, 1424, 1424, 647: 1424, 651: 1424, 1424, 1424, 1424, 676: 1424, 726: 1424}, - {1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 555: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 568: 1423, 1423, 1423, 573: 1423, 1423, 1423, 577: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 599: 1423, 1423, 1423, 1423, 1423, 1423, 607: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 628: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 639: 1423, 1423, 1423, 1423, 1423, 1423, 647: 1423, 651: 1423, 1423, 1423, 1423, 676: 1423, 726: 1423}, - {1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 555: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 568: 1422, 1422, 1422, 573: 1422, 1422, 1422, 577: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 599: 1422, 1422, 1422, 1422, 1422, 1422, 607: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 628: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 639: 1422, 1422, 1422, 1422, 1422, 1422, 647: 1422, 651: 1422, 1422, 1422, 1422, 676: 1422, 726: 1422}, - {1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 555: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 568: 1421, 1421, 1421, 573: 1421, 1421, 1421, 577: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 599: 1421, 1421, 1421, 1421, 1421, 1421, 607: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 628: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 639: 1421, 1421, 1421, 1421, 1421, 1421, 647: 1421, 651: 1421, 1421, 1421, 1421, 676: 1421, 726: 1421}, + {555: 1471}, + {555: 1468}, + {555: 1464}, + {555: 1461}, + {555: 1460}, // 790 - {1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 555: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 568: 1420, 1420, 1420, 573: 1420, 1420, 1420, 577: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 599: 1420, 1420, 1420, 1420, 1420, 1420, 607: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 628: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 639: 1420, 1420, 1420, 1420, 1420, 1420, 647: 1420, 651: 1420, 1420, 1420, 1420, 676: 1420, 726: 1420}, - {1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 555: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 568: 1419, 1419, 1419, 573: 1419, 1419, 1419, 577: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 599: 1419, 1419, 1419, 1419, 1419, 1419, 607: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 628: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 639: 1419, 1419, 1419, 1419, 1419, 1419, 647: 1419, 651: 1419, 1419, 1419, 1419, 676: 1419, 726: 1419}, - {1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 555: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 568: 1418, 1418, 1418, 573: 1418, 1418, 1418, 577: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 599: 1418, 1418, 1418, 1418, 1418, 1418, 607: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 628: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 639: 1418, 1418, 1418, 1418, 1418, 1418, 647: 1418, 651: 1418, 1418, 1418, 1418, 676: 1418, 726: 1418}, - {1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 555: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 568: 1417, 1417, 1417, 573: 1417, 1417, 1417, 577: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 599: 1417, 1417, 1417, 1417, 1417, 1417, 607: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 628: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 639: 1417, 1417, 1417, 1417, 1417, 1417, 647: 1417, 651: 1417, 1417, 1417, 1417, 676: 1417, 726: 1417}, - {1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 555: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 568: 1416, 1416, 1416, 573: 1416, 1416, 1416, 577: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 599: 1416, 1416, 1416, 1416, 1416, 1416, 607: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 628: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 639: 1416, 1416, 1416, 1416, 1416, 1416, 647: 1416, 651: 1416, 1416, 1416, 1416, 676: 1416, 726: 1416}, + {555: 1458}, + {1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 560: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 573: 1447, 1447, 1447, 577: 1447, 579: 1447, 581: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 606: 1447, 1447, 1447, 1447, 612: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 633: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 653: 1447, 656: 1447, 1447, 1447, 661: 1447, 681: 1447, 730: 1447}, + {1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 560: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 573: 1446, 1446, 1446, 577: 1446, 579: 1446, 581: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 606: 1446, 1446, 1446, 1446, 612: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 633: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 653: 1446, 656: 1446, 1446, 1446, 661: 1446, 681: 1446, 730: 1446}, + {1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 560: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 573: 1445, 1445, 1445, 577: 1445, 579: 1445, 581: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 606: 1445, 1445, 1445, 1445, 612: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 633: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 653: 1445, 656: 1445, 1445, 1445, 661: 1445, 681: 1445, 730: 1445}, + {1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 560: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 573: 1444, 1444, 1444, 577: 1444, 579: 1444, 581: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 606: 1444, 1444, 1444, 1444, 612: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 633: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 653: 1444, 656: 1444, 1444, 1444, 661: 1444, 681: 1444, 730: 1444}, // 795 - {550: 4462}, - {550: 4459}, - {1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 4456, 1428, 1428, 1428, 555: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 568: 1428, 1428, 1428, 573: 1428, 1428, 1428, 577: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 599: 1428, 1428, 1428, 1428, 1428, 1428, 607: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 628: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 639: 1428, 1428, 1428, 1428, 1428, 1428, 647: 1428, 651: 1428, 1428, 1428, 1428, 676: 1428, 726: 1428, 1247: 4457}, - {550: 4454}, - {1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 4450, 1334, 1334, 1334, 555: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 568: 1334, 1334, 1334, 573: 1334, 1334, 1334, 577: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 599: 1334, 1334, 1334, 1334, 1334, 1334, 607: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 628: 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 639: 1334, 1334, 1334, 1334, 1334, 1334, 647: 1334, 651: 1334, 1334, 1334, 1334, 676: 1334, 726: 1334, 1394: 4449}, + {1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 560: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 573: 1443, 1443, 1443, 577: 1443, 579: 1443, 581: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 606: 1443, 1443, 1443, 1443, 612: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 633: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 653: 1443, 656: 1443, 1443, 1443, 661: 1443, 681: 1443, 730: 1443}, + {1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 560: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 573: 1442, 1442, 1442, 577: 1442, 579: 1442, 581: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 606: 1442, 1442, 1442, 1442, 612: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 633: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 653: 1442, 656: 1442, 1442, 1442, 661: 1442, 681: 1442, 730: 1442}, + {1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 560: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 573: 1441, 1441, 1441, 577: 1441, 579: 1441, 581: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 606: 1441, 1441, 1441, 1441, 612: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 633: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 653: 1441, 656: 1441, 1441, 1441, 661: 1441, 681: 1441, 730: 1441}, + {1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 560: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 573: 1440, 1440, 1440, 577: 1440, 579: 1440, 581: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 606: 1440, 1440, 1440, 1440, 612: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 633: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 653: 1440, 656: 1440, 1440, 1440, 661: 1440, 681: 1440, 730: 1440}, + {1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 560: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 573: 1439, 1439, 1439, 577: 1439, 579: 1439, 581: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 606: 1439, 1439, 1439, 1439, 612: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 633: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 653: 1439, 656: 1439, 1439, 1439, 661: 1439, 681: 1439, 730: 1439}, // 800 - {550: 4441}, - {550: 4437}, - {550: 4432}, - {550: 4429}, - {550: 4424}, + {1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 560: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 573: 1438, 1438, 1438, 577: 1438, 579: 1438, 581: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 606: 1438, 1438, 1438, 1438, 612: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 633: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 653: 1438, 656: 1438, 1438, 1438, 661: 1438, 681: 1438, 730: 1438}, + {1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 560: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 573: 1437, 1437, 1437, 577: 1437, 579: 1437, 581: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 606: 1437, 1437, 1437, 1437, 612: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 633: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 653: 1437, 656: 1437, 1437, 1437, 661: 1437, 681: 1437, 730: 1437}, + {555: 4496}, + {555: 4493}, + {1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 4490, 1449, 1449, 1449, 560: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 573: 1449, 1449, 1449, 577: 1449, 579: 1449, 581: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 606: 1449, 1449, 1449, 1449, 612: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 633: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 653: 1449, 656: 1449, 1449, 1449, 661: 1449, 681: 1449, 730: 1449, 1253: 4491}, // 805 - {550: 4415}, - {550: 4408}, - {550: 4403}, - {550: 4398}, - {550: 4384}, + {555: 4488}, + {1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 4484, 1354, 1354, 1354, 560: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 573: 1354, 1354, 1354, 577: 1354, 579: 1354, 581: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 606: 1354, 1354, 1354, 1354, 612: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 633: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 653: 1354, 656: 1354, 1354, 1354, 661: 1354, 681: 1354, 730: 1354, 1404: 4483}, + {555: 4475}, + {555: 4471}, + {555: 4466}, // 810 - {550: 4367}, - {1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 551: 1381, 1381, 1381, 555: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 568: 1381, 1381, 1381, 573: 1381, 1381, 1381, 577: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 599: 1381, 1381, 1381, 1381, 1381, 1381, 607: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 628: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 639: 1381, 1381, 1381, 1381, 1381, 1381, 647: 1381, 651: 1381, 1381, 1381, 1381, 676: 1381, 726: 1381}, - {550: 4360}, - {550: 1375}, - {550: 1374}, + {555: 4463}, + {555: 4458}, + {555: 4449}, + {555: 4442}, + {555: 4437}, // 815 - {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 551: 1366, 1366, 1366, 555: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 568: 1366, 1366, 1366, 573: 1366, 1366, 1366, 577: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 599: 1366, 1366, 1366, 1366, 1366, 1366, 607: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 628: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 639: 1366, 1366, 1366, 1366, 1366, 1366, 647: 1366, 651: 1366, 1366, 1366, 1366, 676: 1366, 726: 1366}, - {550: 4357}, - {550: 4354}, - {550: 4346}, - {550: 4338}, + {555: 4432}, + {555: 4418}, + {555: 4401}, + {1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 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, 577: 1402, 579: 1402, 581: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 606: 1402, 1402, 1402, 1402, 612: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 633: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 653: 1402, 656: 1402, 1402, 1402, 661: 1402, 681: 1402, 730: 1402}, + {555: 4394}, // 820 - {550: 4330}, - {550: 4316}, - {550: 4307}, - {550: 4302}, - {550: 4297}, + {555: 1395}, + {555: 1394}, + {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 556: 1386, 1386, 1386, 560: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 573: 1386, 1386, 1386, 577: 1386, 579: 1386, 581: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 606: 1386, 1386, 1386, 1386, 612: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 633: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 653: 1386, 656: 1386, 1386, 1386, 661: 1386, 681: 1386, 730: 1386}, + {555: 4391}, + {555: 4388}, // 825 - {550: 4292}, - {550: 4287}, - {550: 4282}, - {550: 4277}, - {550: 4264}, + {555: 4380}, + {555: 4372}, + {555: 4364}, + {555: 4350}, + {555: 4341}, // 830 - {550: 4261}, - {550: 4258}, - {550: 4255}, - {550: 4252}, - {550: 4249}, + {555: 4336}, + {555: 4331}, + {555: 4326}, + {555: 4321}, + {555: 4316}, // 835 - {550: 4245}, - {550: 4239}, - {550: 4226}, - {550: 4221}, - {550: 4216}, + {555: 4311}, + {555: 4298}, + {555: 4295}, + {555: 4292}, + {555: 4289}, // 840 - {550: 3772}, - {971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 551: 971, 971, 971, 555: 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 568: 971, 971, 971, 573: 971, 971, 971, 577: 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 599: 971, 971, 971, 971, 971, 971, 607: 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 628: 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 639: 971, 971, 971, 971, 971, 971, 647: 971, 651: 971, 971, 971, 971, 676: 971, 726: 971}, - {970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 551: 970, 970, 970, 555: 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 568: 970, 970, 970, 573: 970, 970, 970, 577: 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 599: 970, 970, 970, 970, 970, 970, 607: 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 628: 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 639: 970, 970, 970, 970, 970, 970, 647: 970, 651: 970, 970, 970, 970, 676: 970, 726: 970}, - {969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 551: 969, 969, 969, 555: 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 568: 969, 969, 969, 573: 969, 969, 969, 577: 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 599: 969, 969, 969, 969, 969, 969, 607: 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 628: 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 639: 969, 969, 969, 969, 969, 969, 647: 969, 651: 969, 969, 969, 969, 676: 969, 726: 969}, - {968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 551: 968, 968, 968, 555: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 568: 968, 968, 968, 573: 968, 968, 968, 577: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 599: 968, 968, 968, 968, 968, 968, 607: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 628: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 639: 968, 968, 968, 968, 968, 968, 647: 968, 651: 968, 968, 968, 968, 676: 968, 726: 968}, + {555: 4286}, + {555: 4283}, + {555: 4279}, + {555: 4273}, + {555: 4260}, // 845 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3774}, - {968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 551: 968, 968, 968, 555: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 568: 968, 968, 968, 573: 968, 968, 968, 577: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 599: 968, 968, 968, 968, 968, 968, 607: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 628: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 639: 968, 968, 968, 968, 968, 968, 647: 968, 651: 968, 968, 968, 968, 726: 968, 737: 4214}, - {9: 4145, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4144}, - {550: 4116}, + {555: 4255}, + {555: 4250}, + {555: 3805}, + {991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 556: 991, 991, 991, 560: 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 573: 991, 991, 991, 577: 991, 579: 991, 581: 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 606: 991, 991, 991, 991, 612: 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 633: 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 653: 991, 656: 991, 991, 991, 661: 991, 681: 991, 730: 991}, + {990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 556: 990, 990, 990, 560: 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 573: 990, 990, 990, 577: 990, 579: 990, 581: 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 606: 990, 990, 990, 990, 612: 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 633: 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 653: 990, 656: 990, 990, 990, 661: 990, 681: 990, 730: 990}, // 850 - {2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 551: 2250, 2250, 556: 2250, 558: 2250, 2250, 2250, 2250, 568: 2250, 2250, 2250, 573: 4099, 2250, 2250, 577: 2250, 2250, 2250, 581: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 599: 2250, 2250, 2250, 2250, 604: 2250, 607: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 626: 2250, 629: 4096, 4094, 639: 4093, 4101, 4095, 4097, 4098, 4100, 1365: 4092, 1410: 4091}, - {2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 551: 2221, 2221, 556: 2221, 558: 2221, 2221, 2221, 2221, 568: 2221, 2221, 2221, 573: 2221, 2221, 2221, 577: 2221, 2221, 2221, 581: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 599: 2221, 2221, 2221, 2221, 604: 2221, 607: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 626: 2221, 629: 2221, 2221, 639: 2221, 2221, 2221, 2221, 2221, 2221}, - {2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 551: 2190, 2190, 3902, 555: 3901, 2190, 558: 2190, 2190, 2190, 2190, 3872, 3873, 3878, 568: 2190, 2190, 2190, 573: 2190, 2190, 2190, 577: 2190, 2190, 2190, 3874, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 599: 2190, 2190, 2190, 2190, 3906, 2190, 607: 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 3905, 2190, 628: 3875, 2190, 2190, 3876, 3869, 3879, 3868, 3877, 3870, 3871, 639: 2190, 2190, 2190, 2190, 2190, 2190, 647: 3903, 651: 3907, 3915, 3916, 3914, 939: 3904, 1276: 3908, 1353: 3910, 1400: 3912, 1406: 3909, 1412: 3911, 1464: 3913}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 1450, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3828}, - {1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 551: 1506, 1506, 1506, 555: 1506, 1506, 3782, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 568: 1506, 1506, 1506, 573: 1506, 1506, 1506, 577: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 599: 1506, 1506, 1506, 1506, 1506, 1506, 607: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 628: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 639: 1506, 1506, 1506, 1506, 1506, 1506, 647: 1506, 651: 1506, 1506, 1506, 1506, 726: 3783}, + {989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 556: 989, 989, 989, 560: 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 573: 989, 989, 989, 577: 989, 579: 989, 581: 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 606: 989, 989, 989, 989, 612: 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 633: 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 653: 989, 656: 989, 989, 989, 661: 989, 681: 989, 730: 989}, + {988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 556: 988, 988, 988, 560: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 573: 988, 988, 988, 577: 988, 579: 988, 581: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 606: 988, 988, 988, 988, 612: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 633: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 653: 988, 656: 988, 988, 988, 661: 988, 681: 988, 730: 988}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3807}, + {988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 556: 988, 988, 988, 560: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 573: 988, 988, 988, 577: 988, 579: 988, 581: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 606: 988, 988, 988, 988, 612: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 633: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 653: 988, 656: 988, 988, 988, 661: 988, 730: 988, 744: 4248}, + {9: 4179, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 855 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 3825, 791: 3827, 3121, 3122, 3120, 825: 3824, 998: 3823}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3784, 3686, 3768, 3685, 3682}, - {1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 551: 1488, 1488, 1488, 555: 1488, 1488, 3782, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 568: 1488, 1488, 1488, 573: 1488, 1488, 1488, 577: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 599: 1488, 1488, 1488, 1488, 1488, 1488, 607: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 628: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 639: 1488, 1488, 1488, 1488, 1488, 1488, 647: 1488, 651: 1488, 1488, 1488, 1488, 676: 1488, 726: 1488}, - {2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133}, - {2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4178}, + {555: 4150}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2276, 2276, 561: 2276, 563: 2276, 2276, 2276, 2276, 573: 2276, 2276, 2276, 577: 4133, 579: 2276, 581: 2276, 2276, 2276, 2276, 586: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 606: 2276, 2276, 609: 2276, 612: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 631: 2276, 634: 4130, 4128, 643: 4127, 4135, 4129, 4131, 4132, 4134, 1375: 4126, 1420: 4125}, + {2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 556: 2247, 2247, 561: 2247, 563: 2247, 2247, 2247, 2247, 573: 2247, 2247, 2247, 577: 2247, 579: 2247, 581: 2247, 2247, 2247, 2247, 586: 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 606: 2247, 2247, 609: 2247, 612: 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 631: 2247, 634: 2247, 2247, 643: 2247, 2247, 2247, 2247, 2247, 2247}, + {2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 556: 2216, 2216, 3936, 560: 3935, 2216, 563: 2216, 2216, 2216, 2216, 3906, 3907, 3912, 573: 2216, 2216, 2216, 577: 2216, 579: 2216, 581: 2216, 2216, 2216, 2216, 3908, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 606: 2216, 2216, 3940, 2216, 612: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 3939, 2216, 633: 3909, 2216, 2216, 3910, 3903, 3913, 3902, 3911, 3904, 3905, 2216, 2216, 2216, 2216, 2216, 2216, 653: 3937, 656: 3941, 3949, 3950, 661: 3948, 946: 3938, 1282: 3942, 1363: 3944, 1410: 3946, 1416: 3943, 1422: 3945, 1474: 3947}, // 860 - {2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114}, - {2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101}, - {2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090}, - {2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088}, - {2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 1471, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3862}, + {1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 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, 3815, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 573: 1527, 1527, 1527, 577: 1527, 579: 1527, 581: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 606: 1527, 1527, 1527, 1527, 612: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 633: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 653: 1527, 656: 1527, 1527, 1527, 661: 1527, 730: 3816}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 3859, 796: 3861, 3149, 3150, 3148, 830: 3858, 1004: 3857}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3817, 3719, 3801, 3718, 3715}, + {1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 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, 3815, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 573: 1509, 1509, 1509, 577: 1509, 579: 1509, 581: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 606: 1509, 1509, 1509, 1509, 612: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 633: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 653: 1509, 656: 1509, 1509, 1509, 661: 1509, 681: 1509, 730: 1509}, // 865 - {2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059}, - {2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049}, - {2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027}, - {2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 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, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019}, + {2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159}, + {2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153}, + {2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140}, + {2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127}, + {2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116}, // 870 - {2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016}, - {2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009}, - {2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 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}, - {2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003}, + {2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114}, + {2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091}, + {2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085}, + {2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075}, + {2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053}, // 875 - {2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001}, - {1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988}, - {1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965}, - {1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 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}, + {2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 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}, + {2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042}, + {2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035}, + {2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033}, // 880 - {1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946}, - {1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 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}, - {1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935}, - {1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823}, + {2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032}, + {2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029}, + {2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027}, + {2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014}, + {1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991}, // 885 - {1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 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}, - {1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820}, - {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707}, - {1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688}, + {1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 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}, + {1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972}, + {1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 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}, // 890 - {1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682}, - {1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668}, - {1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 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}, - {1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634}, + {1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961}, + {1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 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}, + {1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 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}, // 895 - {1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633}, - {1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 551: 1498, 1498, 1498, 555: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 568: 1498, 1498, 1498, 573: 1498, 1498, 1498, 577: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 599: 1498, 1498, 1498, 1498, 1498, 1498, 607: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 628: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 639: 1498, 1498, 1498, 1498, 1498, 1498, 647: 1498, 651: 1498, 1498, 1498, 1498, 676: 1498, 726: 1498}, - {975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 577: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 599: 975, 975, 975, 975, 975, 975, 607: 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 639: 975, 975, 975, 975, 975, 975, 647: 975, 651: 975, 975, 975, 975, 663: 975, 668: 975, 676: 975, 678: 975, 705: 975, 723: 975, 975, 975, 975, 975, 975, 975}, - {974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 577: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 599: 974, 974, 974, 974, 974, 974, 607: 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 639: 974, 974, 974, 974, 974, 974, 647: 974, 651: 974, 974, 974, 974, 663: 974, 668: 974, 676: 974, 678: 974, 705: 974, 723: 974, 974, 974, 974, 974, 974, 974}, - {449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 577: 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 599: 449, 449, 449, 449, 449, 449, 449, 607: 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 639: 449, 449, 449, 449, 449, 449, 646: 449, 449, 651: 449, 449, 449, 449, 663: 449, 668: 449, 676: 449, 678: 449, 705: 449, 723: 449, 449, 449, 449, 449, 449, 449, 732: 449, 449, 736: 449, 449, 741: 449, 449, 744: 449, 449}, + {1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733}, + {1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725}, + {1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713}, + {1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707}, + {1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690}, // 900 - {448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 577: 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 599: 448, 448, 448, 448, 448, 448, 448, 607: 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 639: 448, 448, 448, 448, 448, 448, 646: 448, 448, 651: 448, 448, 448, 448, 663: 448, 668: 448, 676: 448, 678: 448, 705: 448, 723: 448, 448, 448, 448, 448, 448, 448, 732: 448, 448, 736: 448, 448, 741: 448, 448, 744: 448, 448}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 3836}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3900}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3899}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3898}, + {1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 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}, + {1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 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}, + {1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 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, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 573: 1519, 1519, 1519, 577: 1519, 579: 1519, 581: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 606: 1519, 1519, 1519, 1519, 612: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 633: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 653: 1519, 656: 1519, 1519, 1519, 661: 1519, 681: 1519, 730: 1519}, // 905 - {2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 10: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 53: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 550: 2240, 552: 2240, 2240, 2240, 2240, 559: 2240, 2240, 562: 2240, 2240, 2240, 566: 2240, 2240, 571: 2240, 2240, 576: 2240, 598: 2240, 605: 2240, 2240, 638: 2240, 645: 2240, 2240, 648: 2240, 2240, 2240, 655: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 664: 2240, 2240, 2240, 2240, 669: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 677: 2240, 679: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 706: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 730: 2240}, - {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, 53: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 550: 2239, 552: 2239, 2239, 2239, 2239, 559: 2239, 2239, 562: 2239, 2239, 2239, 566: 2239, 2239, 571: 2239, 2239, 576: 2239, 598: 2239, 605: 2239, 2239, 638: 2239, 645: 2239, 2239, 648: 2239, 2239, 2239, 655: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 664: 2239, 2239, 2239, 2239, 669: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 677: 2239, 679: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 706: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 730: 2239}, - {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, 53: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 550: 2238, 552: 2238, 2238, 2238, 2238, 559: 2238, 2238, 562: 2238, 2238, 2238, 566: 2238, 2238, 571: 2238, 2238, 576: 2238, 598: 2238, 605: 2238, 2238, 638: 2238, 645: 2238, 2238, 648: 2238, 2238, 2238, 655: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 664: 2238, 2238, 2238, 2238, 669: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 677: 2238, 679: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 706: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 730: 2238}, - {2: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 10: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 53: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 550: 2237, 552: 2237, 2237, 2237, 2237, 559: 2237, 2237, 562: 2237, 2237, 2237, 566: 2237, 2237, 571: 2237, 2237, 576: 2237, 598: 2237, 605: 2237, 2237, 638: 2237, 645: 2237, 2237, 648: 2237, 2237, 2237, 655: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 664: 2237, 2237, 2237, 2237, 669: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 677: 2237, 679: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 706: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 730: 2237}, - {562: 3866}, + {995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 581: 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 606: 995, 995, 995, 995, 612: 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 653: 995, 656: 995, 995, 995, 661: 995, 668: 995, 680: 995, 995, 720: 995, 727: 995, 995, 995, 995, 995, 995, 995, 995}, + {994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 581: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 606: 994, 994, 994, 994, 612: 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 653: 994, 656: 994, 994, 994, 661: 994, 668: 994, 680: 994, 994, 720: 994, 727: 994, 994, 994, 994, 994, 994, 994, 994}, + {464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 581: 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 606: 464, 464, 464, 464, 464, 612: 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 653: 464, 464, 656: 464, 464, 464, 661: 464, 668: 464, 680: 464, 464, 720: 464, 727: 464, 464, 464, 464, 464, 464, 464, 464, 737: 464, 464, 741: 464, 744: 464, 746: 464, 748: 464, 464, 464}, + {463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 581: 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 606: 463, 463, 463, 463, 463, 612: 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 653: 463, 463, 656: 463, 463, 463, 661: 463, 668: 463, 680: 463, 463, 720: 463, 727: 463, 463, 463, 463, 463, 463, 463, 463, 737: 463, 463, 741: 463, 744: 463, 746: 463, 748: 463, 463, 463}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 3870}, // 910 - {1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 567: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 577: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 599: 1331, 1331, 1331, 1331, 1331, 1331, 607: 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 639: 1331, 1331, 1331, 1331, 1331, 1331, 647: 1331, 651: 1331, 1331, 1331, 1331, 668: 1331, 728: 1331, 1331, 731: 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, 567: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 577: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 599: 1330, 1330, 1330, 1330, 1330, 1330, 607: 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 639: 1330, 1330, 1330, 1330, 1330, 1330, 647: 1330, 651: 1330, 1330, 1330, 1330, 668: 1330, 728: 1330, 1330, 731: 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, 567: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 577: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 599: 1329, 1329, 1329, 1329, 1329, 1329, 607: 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 639: 1329, 1329, 1329, 1329, 1329, 1329, 647: 1329, 651: 1329, 1329, 1329, 1329, 668: 1329, 728: 1329, 1329, 731: 1329}, - {1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 567: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 577: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 599: 1328, 1328, 1328, 1328, 1328, 1328, 607: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 639: 1328, 1328, 1328, 1328, 1328, 1328, 647: 1328, 651: 1328, 1328, 1328, 1328, 668: 1328, 728: 1328, 1328, 731: 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, 567: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 577: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 599: 1327, 1327, 1327, 1327, 1327, 1327, 607: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 639: 1327, 1327, 1327, 1327, 1327, 1327, 647: 1327, 651: 1327, 1327, 1327, 1327, 668: 1327, 728: 1327, 1327, 731: 1327}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3934}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3933}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3932}, + {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, 53: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 555: 2266, 557: 2266, 2266, 2266, 2266, 564: 2266, 2266, 567: 2266, 2266, 2266, 571: 2266, 2266, 576: 2266, 578: 2266, 580: 2266, 605: 2266, 610: 2266, 2266, 649: 2266, 2266, 2266, 2266, 654: 2266, 2266, 659: 2266, 2266, 662: 2266, 2266, 2266, 2266, 2266, 2266, 669: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 682: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 721: 2266, 2266, 2266, 2266, 2266, 2266, 735: 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, 53: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 555: 2265, 557: 2265, 2265, 2265, 2265, 564: 2265, 2265, 567: 2265, 2265, 2265, 571: 2265, 2265, 576: 2265, 578: 2265, 580: 2265, 605: 2265, 610: 2265, 2265, 649: 2265, 2265, 2265, 2265, 654: 2265, 2265, 659: 2265, 2265, 662: 2265, 2265, 2265, 2265, 2265, 2265, 669: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 682: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 721: 2265, 2265, 2265, 2265, 2265, 2265, 735: 2265}, // 915 - {1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 567: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 577: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 599: 1326, 1326, 1326, 1326, 1326, 1326, 607: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 639: 1326, 1326, 1326, 1326, 1326, 1326, 647: 1326, 651: 1326, 1326, 1326, 1326, 668: 1326, 728: 1326, 1326, 731: 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, 567: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 577: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 599: 1325, 1325, 1325, 1325, 1325, 1325, 607: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 639: 1325, 1325, 1325, 1325, 1325, 1325, 647: 1325, 651: 1325, 1325, 1325, 1325, 668: 1325, 728: 1325, 1325, 731: 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, 567: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 577: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 599: 1324, 1324, 1324, 1324, 1324, 1324, 607: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 639: 1324, 1324, 1324, 1324, 1324, 1324, 647: 1324, 651: 1324, 1324, 1324, 1324, 668: 1324, 728: 1324, 1324, 731: 1324}, - {1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 567: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 577: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 599: 1323, 1323, 1323, 1323, 1323, 1323, 607: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 639: 1323, 1323, 1323, 1323, 1323, 1323, 647: 1323, 651: 1323, 1323, 1323, 1323, 668: 1323, 728: 1323, 1323, 731: 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, 567: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 577: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 599: 1322, 1322, 1322, 1322, 1322, 1322, 607: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 639: 1322, 1322, 1322, 1322, 1322, 1322, 647: 1322, 651: 1322, 1322, 1322, 1322, 668: 1322, 728: 1322, 1322, 731: 1322}, + {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, 53: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 555: 2264, 557: 2264, 2264, 2264, 2264, 564: 2264, 2264, 567: 2264, 2264, 2264, 571: 2264, 2264, 576: 2264, 578: 2264, 580: 2264, 605: 2264, 610: 2264, 2264, 649: 2264, 2264, 2264, 2264, 654: 2264, 2264, 659: 2264, 2264, 662: 2264, 2264, 2264, 2264, 2264, 2264, 669: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 682: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 721: 2264, 2264, 2264, 2264, 2264, 2264, 735: 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, 53: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 555: 2263, 557: 2263, 2263, 2263, 2263, 564: 2263, 2263, 567: 2263, 2263, 2263, 571: 2263, 2263, 576: 2263, 578: 2263, 580: 2263, 605: 2263, 610: 2263, 2263, 649: 2263, 2263, 2263, 2263, 654: 2263, 2263, 659: 2263, 2263, 662: 2263, 2263, 2263, 2263, 2263, 2263, 669: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 682: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 721: 2263, 2263, 2263, 2263, 2263, 2263, 735: 2263}, + {567: 3900}, + {1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 572: 1351, 1351, 1351, 1351, 1351, 1351, 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, 1351, 1351, 606: 1351, 1351, 1351, 1351, 612: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 653: 1351, 656: 1351, 1351, 1351, 661: 1351, 680: 1351, 733: 1351, 1351, 736: 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, 572: 1350, 1350, 1350, 1350, 1350, 1350, 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, 1350, 1350, 606: 1350, 1350, 1350, 1350, 612: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 653: 1350, 656: 1350, 1350, 1350, 661: 1350, 680: 1350, 733: 1350, 1350, 736: 1350}, // 920 - {1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 567: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 577: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 599: 1321, 1321, 1321, 1321, 1321, 1321, 607: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 639: 1321, 1321, 1321, 1321, 1321, 1321, 647: 1321, 651: 1321, 1321, 1321, 1321, 668: 1321, 728: 1321, 1321, 731: 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, 567: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 577: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 599: 1320, 1320, 1320, 1320, 1320, 1320, 607: 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 639: 1320, 1320, 1320, 1320, 1320, 1320, 647: 1320, 651: 1320, 1320, 1320, 1320, 668: 1320, 728: 1320, 1320, 731: 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, 567: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 577: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 599: 1319, 1319, 1319, 1319, 1319, 1319, 607: 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 639: 1319, 1319, 1319, 1319, 1319, 1319, 647: 1319, 651: 1319, 1319, 1319, 1319, 668: 1319, 728: 1319, 1319, 731: 1319}, - {1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 567: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 577: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 599: 1318, 1318, 1318, 1318, 1318, 1318, 607: 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 639: 1318, 1318, 1318, 1318, 1318, 1318, 647: 1318, 651: 1318, 1318, 1318, 1318, 668: 1318, 728: 1318, 1318, 731: 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, 567: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 577: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 599: 1317, 1317, 1317, 1317, 1317, 1317, 607: 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 639: 1317, 1317, 1317, 1317, 1317, 1317, 647: 1317, 651: 1317, 1317, 1317, 1317, 668: 1317, 728: 1317, 1317, 731: 1317}, + {1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 572: 1349, 1349, 1349, 1349, 1349, 1349, 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, 1349, 1349, 606: 1349, 1349, 1349, 1349, 612: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 653: 1349, 656: 1349, 1349, 1349, 661: 1349, 680: 1349, 733: 1349, 1349, 736: 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, 572: 1348, 1348, 1348, 1348, 1348, 1348, 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, 1348, 1348, 606: 1348, 1348, 1348, 1348, 612: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 653: 1348, 656: 1348, 1348, 1348, 661: 1348, 680: 1348, 733: 1348, 1348, 736: 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, 572: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 581: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 606: 1347, 1347, 1347, 1347, 612: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 653: 1347, 656: 1347, 1347, 1347, 661: 1347, 680: 1347, 733: 1347, 1347, 736: 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, 572: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 581: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 606: 1346, 1346, 1346, 1346, 612: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 653: 1346, 656: 1346, 1346, 1346, 661: 1346, 680: 1346, 733: 1346, 1346, 736: 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, 572: 1345, 1345, 1345, 1345, 1345, 1345, 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, 1345, 1345, 606: 1345, 1345, 1345, 1345, 612: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 653: 1345, 656: 1345, 1345, 1345, 661: 1345, 680: 1345, 733: 1345, 1345, 736: 1345}, // 925 - {1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 567: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 577: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 599: 1316, 1316, 1316, 1316, 1316, 1316, 607: 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 639: 1316, 1316, 1316, 1316, 1316, 1316, 647: 1316, 651: 1316, 1316, 1316, 1316, 668: 1316, 728: 1316, 1316, 731: 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, 567: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 577: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 599: 1315, 1315, 1315, 1315, 1315, 1315, 607: 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 639: 1315, 1315, 1315, 1315, 1315, 1315, 647: 1315, 651: 1315, 1315, 1315, 1315, 668: 1315, 728: 1315, 1315, 731: 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, 567: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 577: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 599: 1314, 1314, 1314, 1314, 1314, 1314, 607: 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 639: 1314, 1314, 1314, 1314, 1314, 1314, 647: 1314, 651: 1314, 1314, 1314, 1314, 668: 1314, 728: 1314, 1314, 731: 1314}, - {1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 567: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 577: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 599: 1313, 1313, 1313, 1313, 1313, 1313, 607: 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 639: 1313, 1313, 1313, 1313, 1313, 1313, 647: 1313, 651: 1313, 1313, 1313, 1313, 668: 1313, 728: 1313, 1313, 731: 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, 567: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 577: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 599: 1312, 1312, 1312, 1312, 1312, 1312, 607: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 639: 1312, 1312, 1312, 1312, 1312, 1312, 647: 1312, 651: 1312, 1312, 1312, 1312, 668: 1312, 728: 1312, 1312, 731: 1312}, + {1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 572: 1344, 1344, 1344, 1344, 1344, 1344, 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, 1344, 1344, 606: 1344, 1344, 1344, 1344, 612: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 653: 1344, 656: 1344, 1344, 1344, 661: 1344, 680: 1344, 733: 1344, 1344, 736: 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, 572: 1343, 1343, 1343, 1343, 1343, 1343, 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, 1343, 1343, 606: 1343, 1343, 1343, 1343, 612: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 653: 1343, 656: 1343, 1343, 1343, 661: 1343, 680: 1343, 733: 1343, 1343, 736: 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, 572: 1342, 1342, 1342, 1342, 1342, 1342, 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, 1342, 1342, 606: 1342, 1342, 1342, 1342, 612: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 653: 1342, 656: 1342, 1342, 1342, 661: 1342, 680: 1342, 733: 1342, 1342, 736: 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, 572: 1341, 1341, 1341, 1341, 1341, 1341, 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, 1341, 1341, 606: 1341, 1341, 1341, 1341, 612: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 653: 1341, 656: 1341, 1341, 1341, 661: 1341, 680: 1341, 733: 1341, 1341, 736: 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, 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, 1340, 1340, 606: 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, 1340, 1340, 1340, 1340, 1340, 1340, 653: 1340, 656: 1340, 1340, 1340, 661: 1340, 680: 1340, 733: 1340, 1340, 736: 1340}, // 930 - {1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 567: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 577: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 599: 1311, 1311, 1311, 1311, 1311, 1311, 607: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 639: 1311, 1311, 1311, 1311, 1311, 1311, 647: 1311, 651: 1311, 1311, 1311, 1311, 668: 1311, 728: 1311, 1311, 731: 1311}, - {1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 567: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 577: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 599: 1310, 1310, 1310, 1310, 1310, 1310, 607: 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 639: 1310, 1310, 1310, 1310, 1310, 1310, 647: 1310, 651: 1310, 1310, 1310, 1310, 668: 1310, 728: 1310, 1310, 731: 1310}, - {1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 567: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 577: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 599: 1309, 1309, 1309, 1309, 1309, 1309, 607: 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 639: 1309, 1309, 1309, 1309, 1309, 1309, 647: 1309, 651: 1309, 1309, 1309, 1309, 668: 1309, 728: 1309, 1309, 731: 1309}, - {1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 567: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 577: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 599: 1308, 1308, 1308, 1308, 1308, 1308, 607: 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 639: 1308, 1308, 1308, 1308, 1308, 1308, 647: 1308, 651: 1308, 1308, 1308, 1308, 668: 1308, 728: 1308, 1308, 731: 1308}, - {1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 567: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 577: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 599: 1307, 1307, 1307, 1307, 1307, 1307, 607: 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 639: 1307, 1307, 1307, 1307, 1307, 1307, 647: 1307, 651: 1307, 1307, 1307, 1307, 668: 1307, 728: 1307, 1307, 731: 1307}, + {1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 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, 1339, 1339, 606: 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, 1339, 1339, 1339, 1339, 1339, 1339, 653: 1339, 656: 1339, 1339, 1339, 661: 1339, 680: 1339, 733: 1339, 1339, 736: 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, 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, 1338, 1338, 606: 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, 1338, 1338, 1338, 1338, 1338, 1338, 653: 1338, 656: 1338, 1338, 1338, 661: 1338, 680: 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, 1337, 1337, 606: 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, 1337, 1337, 1337, 1337, 1337, 1337, 653: 1337, 656: 1337, 1337, 1337, 661: 1337, 680: 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, 1336, 1336, 606: 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, 1336, 1336, 1336, 1336, 1336, 1336, 653: 1336, 656: 1336, 1336, 1336, 661: 1336, 680: 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, 1335, 1335, 606: 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, 1335, 1335, 1335, 1335, 1335, 1335, 653: 1335, 656: 1335, 1335, 1335, 661: 1335, 680: 1335, 733: 1335, 1335, 736: 1335}, // 935 - {1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 567: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 577: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 599: 1306, 1306, 1306, 1306, 1306, 1306, 607: 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 639: 1306, 1306, 1306, 1306, 1306, 1306, 647: 1306, 651: 1306, 1306, 1306, 1306, 668: 1306, 728: 1306, 1306, 731: 1306}, - {1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 567: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 577: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 599: 1305, 1305, 1305, 1305, 1305, 1305, 607: 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 639: 1305, 1305, 1305, 1305, 1305, 1305, 647: 1305, 651: 1305, 1305, 1305, 1305, 668: 1305, 728: 1305, 1305, 731: 1305}, - {1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 567: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 577: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 599: 1304, 1304, 1304, 1304, 1304, 1304, 607: 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 639: 1304, 1304, 1304, 1304, 1304, 1304, 647: 1304, 651: 1304, 1304, 1304, 1304, 668: 1304, 728: 1304, 1304, 731: 1304}, - {1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 567: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 577: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 599: 1303, 1303, 1303, 1303, 1303, 1303, 607: 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 639: 1303, 1303, 1303, 1303, 1303, 1303, 647: 1303, 651: 1303, 1303, 1303, 1303, 668: 1303, 728: 1303, 1303, 731: 1303}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3867}, + {1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 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, 1334, 1334, 606: 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, 1334, 1334, 1334, 1334, 1334, 1334, 653: 1334, 656: 1334, 1334, 1334, 661: 1334, 680: 1334, 733: 1334, 1334, 736: 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, 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, 1333, 1333, 606: 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, 1333, 1333, 1333, 1333, 1333, 1333, 653: 1333, 656: 1333, 1333, 1333, 661: 1333, 680: 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, 1332, 1332, 606: 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, 1332, 1332, 1332, 1332, 1332, 1332, 653: 1332, 656: 1332, 1332, 1332, 661: 1332, 680: 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, 1331, 1331, 606: 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, 1331, 1331, 1331, 1331, 1331, 1331, 653: 1331, 656: 1331, 1331, 1331, 661: 1331, 680: 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, 1330, 1330, 606: 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, 1330, 1330, 1330, 1330, 1330, 1330, 653: 1330, 656: 1330, 1330, 1330, 661: 1330, 680: 1330, 733: 1330, 1330, 736: 1330}, // 940 - {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 551: 1513, 1513, 1513, 555: 1513, 1513, 558: 1513, 1513, 1513, 1513, 1513, 1513, 3878, 568: 1513, 1513, 1513, 573: 1513, 1513, 1513, 577: 1513, 1513, 1513, 3874, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 599: 1513, 1513, 1513, 1513, 1513, 1513, 607: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 628: 3875, 1513, 1513, 3876, 1513, 3879, 1513, 3877, 1513, 1513, 639: 1513, 1513, 1513, 1513, 1513, 1513, 647: 1513, 651: 1513, 1513, 1513, 1513}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3897}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3896}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3895}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3894}, + {1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 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, 1329, 1329, 606: 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, 1329, 1329, 1329, 1329, 1329, 1329, 653: 1329, 656: 1329, 1329, 1329, 661: 1329, 680: 1329, 733: 1329, 1329, 736: 1329}, + {1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 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, 1328, 1328, 606: 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, 1328, 1328, 1328, 1328, 1328, 1328, 653: 1328, 656: 1328, 1328, 1328, 661: 1328, 680: 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, 1327, 1327, 606: 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, 1327, 1327, 1327, 1327, 1327, 1327, 653: 1327, 656: 1327, 1327, 1327, 661: 1327, 680: 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, 1326, 1326, 606: 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, 1326, 1326, 1326, 1326, 1326, 1326, 653: 1326, 656: 1326, 1326, 1326, 661: 1326, 680: 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, 1325, 1325, 606: 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, 1325, 1325, 1325, 1325, 1325, 1325, 653: 1325, 656: 1325, 1325, 1325, 661: 1325, 680: 1325, 733: 1325, 1325, 736: 1325}, // 945 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3891, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3890}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3887, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3886}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3885}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3884}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3883}, + {1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 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, 1324, 1324, 606: 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, 1324, 1324, 1324, 1324, 1324, 1324, 653: 1324, 656: 1324, 1324, 1324, 661: 1324, 680: 1324, 733: 1324, 1324, 736: 1324}, + {1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 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, 1323, 1323, 606: 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, 1323, 1323, 1323, 1323, 1323, 1323, 653: 1323, 656: 1323, 1323, 1323, 661: 1323, 680: 1323, 733: 1323, 1323, 736: 1323}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3901}, + {1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 556: 1534, 1534, 1534, 560: 1534, 1534, 563: 1534, 1534, 1534, 1534, 1534, 1534, 3912, 573: 1534, 1534, 1534, 577: 1534, 579: 1534, 581: 1534, 1534, 1534, 1534, 3908, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 606: 1534, 1534, 1534, 1534, 612: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 633: 3909, 1534, 1534, 3910, 1534, 3913, 1534, 3911, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 653: 1534, 656: 1534, 1534, 1534, 661: 1534}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3931}, // 950 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3882}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3881}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3880}, - {1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 551: 1507, 1507, 1507, 555: 1507, 1507, 558: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 568: 1507, 1507, 1507, 573: 1507, 1507, 1507, 577: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 599: 1507, 1507, 1507, 1507, 1507, 1507, 607: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 628: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 639: 1507, 1507, 1507, 1507, 1507, 1507, 647: 1507, 651: 1507, 1507, 1507, 1507}, - {1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 551: 1508, 1508, 1508, 555: 1508, 1508, 558: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 568: 1508, 1508, 1508, 573: 1508, 1508, 1508, 577: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 599: 1508, 1508, 1508, 1508, 1508, 1508, 607: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 628: 1508, 1508, 1508, 1508, 1508, 3879, 1508, 1508, 1508, 1508, 639: 1508, 1508, 1508, 1508, 1508, 1508, 647: 1508, 651: 1508, 1508, 1508, 1508}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3930}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3929}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3928}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3925, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3924}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3921, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3920}, // 955 - {1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 551: 1509, 1509, 1509, 555: 1509, 1509, 558: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 568: 1509, 1509, 1509, 573: 1509, 1509, 1509, 577: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 599: 1509, 1509, 1509, 1509, 1509, 1509, 607: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 628: 1509, 1509, 1509, 1509, 1509, 3879, 1509, 1509, 1509, 1509, 639: 1509, 1509, 1509, 1509, 1509, 1509, 647: 1509, 651: 1509, 1509, 1509, 1509}, - {1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 551: 1510, 1510, 1510, 555: 1510, 1510, 558: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 568: 1510, 1510, 1510, 573: 1510, 1510, 1510, 577: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 599: 1510, 1510, 1510, 1510, 1510, 1510, 607: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 628: 1510, 1510, 1510, 1510, 1510, 3879, 1510, 1510, 1510, 1510, 639: 1510, 1510, 1510, 1510, 1510, 1510, 647: 1510, 651: 1510, 1510, 1510, 1510}, - {1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 551: 1511, 1511, 1511, 555: 1511, 1511, 558: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 568: 1511, 1511, 1511, 573: 1511, 1511, 1511, 577: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 599: 1511, 1511, 1511, 1511, 1511, 1511, 607: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 628: 1511, 1511, 1511, 1511, 1511, 3879, 1511, 1511, 1511, 1511, 639: 1511, 1511, 1511, 1511, 1511, 1511, 647: 1511, 651: 1511, 1511, 1511, 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, 551: 1512, 1512, 1512, 555: 1512, 1512, 558: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 568: 1512, 1512, 1512, 573: 1512, 1512, 1512, 577: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 599: 1512, 1512, 1512, 1512, 1512, 1512, 607: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 628: 1512, 1512, 1512, 1512, 1512, 3879, 1512, 1512, 1512, 1512, 639: 1512, 1512, 1512, 1512, 1512, 1512, 647: 1512, 651: 1512, 1512, 1512, 1512}, - {1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 551: 1516, 1516, 1516, 555: 1516, 1516, 558: 1516, 1516, 1516, 1516, 1516, 1516, 3878, 568: 1516, 1516, 1516, 573: 1516, 1516, 1516, 577: 1516, 1516, 1516, 3874, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 599: 1516, 1516, 1516, 1516, 1516, 1516, 607: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 628: 3875, 1516, 1516, 3876, 1516, 3879, 1516, 3877, 1516, 1516, 639: 1516, 1516, 1516, 1516, 1516, 1516, 647: 1516, 651: 1516, 1516, 1516, 1516}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3919}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3918}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3917}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3916}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3915}, // 960 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 1450, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3888}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 3889}, - {1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 551: 1514, 1514, 1514, 555: 1514, 1514, 558: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 568: 1514, 1514, 1514, 573: 1514, 1514, 1514, 577: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 599: 1514, 1514, 1514, 1514, 1514, 1514, 607: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 628: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 639: 1514, 1514, 1514, 1514, 1514, 1514, 647: 1514, 651: 1514, 1514, 1514, 1514}, - {1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 551: 1517, 1517, 1517, 555: 1517, 1517, 558: 1517, 1517, 1517, 1517, 1517, 1517, 3878, 568: 1517, 1517, 1517, 573: 1517, 1517, 1517, 577: 1517, 1517, 1517, 3874, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 599: 1517, 1517, 1517, 1517, 1517, 1517, 607: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 628: 3875, 1517, 1517, 3876, 1517, 3879, 1517, 3877, 1517, 1517, 639: 1517, 1517, 1517, 1517, 1517, 1517, 647: 1517, 651: 1517, 1517, 1517, 1517}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 1450, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3892}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3914}, + {1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 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, 1528, 1528, 1528, 573: 1528, 1528, 1528, 577: 1528, 579: 1528, 581: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 606: 1528, 1528, 1528, 1528, 612: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 633: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 653: 1528, 656: 1528, 1528, 1528, 661: 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, 1529, 1529, 1529, 573: 1529, 1529, 1529, 577: 1529, 579: 1529, 581: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 606: 1529, 1529, 1529, 1529, 612: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 633: 1529, 1529, 1529, 1529, 1529, 3913, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 653: 1529, 656: 1529, 1529, 1529, 661: 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, 1530, 1530, 1530, 573: 1530, 1530, 1530, 577: 1530, 579: 1530, 581: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 606: 1530, 1530, 1530, 1530, 612: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 633: 1530, 1530, 1530, 1530, 1530, 3913, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 653: 1530, 656: 1530, 1530, 1530, 661: 1530}, + {1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 556: 1531, 1531, 1531, 560: 1531, 1531, 563: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 573: 1531, 1531, 1531, 577: 1531, 579: 1531, 581: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 606: 1531, 1531, 1531, 1531, 612: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 633: 1531, 1531, 1531, 1531, 1531, 3913, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 653: 1531, 656: 1531, 1531, 1531, 661: 1531}, // 965 - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 3893}, - {1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 551: 1515, 1515, 1515, 555: 1515, 1515, 558: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 568: 1515, 1515, 1515, 573: 1515, 1515, 1515, 577: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 599: 1515, 1515, 1515, 1515, 1515, 1515, 607: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 628: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 639: 1515, 1515, 1515, 1515, 1515, 1515, 647: 1515, 651: 1515, 1515, 1515, 1515}, - {1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 551: 1518, 1518, 1518, 555: 1518, 1518, 558: 1518, 1518, 1518, 1518, 3872, 3873, 3878, 568: 1518, 1518, 1518, 573: 1518, 1518, 1518, 577: 1518, 1518, 1518, 3874, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 599: 1518, 1518, 1518, 1518, 1518, 1518, 607: 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 628: 3875, 1518, 1518, 3876, 1518, 3879, 1518, 3877, 1518, 1518, 639: 1518, 1518, 1518, 1518, 1518, 1518, 647: 1518, 651: 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, 551: 1519, 1519, 1519, 555: 1519, 1519, 558: 1519, 1519, 1519, 1519, 3872, 3873, 3878, 568: 1519, 1519, 1519, 573: 1519, 1519, 1519, 577: 1519, 1519, 1519, 3874, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 599: 1519, 1519, 1519, 1519, 1519, 1519, 607: 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 628: 3875, 1519, 1519, 3876, 1519, 3879, 1519, 3877, 1519, 1519, 639: 1519, 1519, 1519, 1519, 1519, 1519, 647: 1519, 651: 1519, 1519, 1519, 1519}, - {1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 551: 1520, 1520, 1520, 555: 1520, 1520, 558: 1520, 1520, 1520, 1520, 3872, 3873, 3878, 568: 1520, 1520, 1520, 573: 1520, 1520, 1520, 577: 1520, 1520, 1520, 3874, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 599: 1520, 1520, 1520, 1520, 1520, 1520, 607: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 628: 3875, 1520, 1520, 3876, 1520, 3879, 1520, 3877, 3870, 3871, 639: 1520, 1520, 1520, 1520, 1520, 1520, 647: 1520, 651: 1520, 1520, 1520, 1520}, + {1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 556: 1532, 1532, 1532, 560: 1532, 1532, 563: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 573: 1532, 1532, 1532, 577: 1532, 579: 1532, 581: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 606: 1532, 1532, 1532, 1532, 612: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 633: 1532, 1532, 1532, 1532, 1532, 3913, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 653: 1532, 656: 1532, 1532, 1532, 661: 1532}, + {1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 556: 1533, 1533, 1533, 560: 1533, 1533, 563: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 573: 1533, 1533, 1533, 577: 1533, 579: 1533, 581: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 606: 1533, 1533, 1533, 1533, 612: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 633: 1533, 1533, 1533, 1533, 1533, 3913, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 653: 1533, 656: 1533, 1533, 1533, 661: 1533}, + {1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 556: 1537, 1537, 1537, 560: 1537, 1537, 563: 1537, 1537, 1537, 1537, 1537, 1537, 3912, 573: 1537, 1537, 1537, 577: 1537, 579: 1537, 581: 1537, 1537, 1537, 1537, 3908, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 606: 1537, 1537, 1537, 1537, 612: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 633: 3909, 1537, 1537, 3910, 1537, 3913, 1537, 3911, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 653: 1537, 656: 1537, 1537, 1537, 661: 1537}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 1471, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3922}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 3923}, // 970 - {1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 551: 1521, 1521, 1521, 555: 1521, 1521, 558: 1521, 1521, 1521, 1521, 3872, 3873, 3878, 568: 1521, 1521, 1521, 573: 1521, 1521, 1521, 577: 1521, 1521, 1521, 3874, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 599: 1521, 1521, 1521, 1521, 1521, 1521, 607: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 628: 3875, 1521, 1521, 3876, 3869, 3879, 1521, 3877, 3870, 3871, 639: 1521, 1521, 1521, 1521, 1521, 1521, 647: 1521, 651: 1521, 1521, 1521, 1521}, - {2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 551: 2256, 2256, 556: 2256, 558: 2256, 2256, 2256, 2256, 568: 2256, 2256, 2256, 574: 2256, 2256, 577: 2256, 2256, 2256, 581: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 599: 2256, 2256, 2256, 2256, 604: 2256, 607: 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 626: 2256, 820: 3831, 3829}, - {2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 551: 2257, 2257, 556: 2257, 558: 2257, 2257, 2257, 2257, 568: 2257, 2257, 2257, 574: 2257, 2257, 577: 2257, 2257, 2257, 581: 2257, 2257, 2257, 2257, 2257, 3835, 2257, 3834, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 599: 2257, 2257, 2257, 2257, 604: 2257, 607: 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 626: 2257, 820: 3831, 3829}, - {2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 551: 2258, 2258, 556: 2258, 558: 2258, 2258, 2258, 2258, 568: 2258, 2258, 2258, 574: 2258, 2258, 577: 2258, 2258, 2258, 581: 2258, 2258, 2258, 2258, 2258, 3835, 2258, 3834, 2258, 3830, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 599: 2258, 2258, 2258, 2258, 604: 2258, 607: 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 626: 2258, 820: 3831, 3829}, - {209: 2655, 239: 2655, 566: 2655, 603: 2655, 625: 2655, 647: 2655, 2655, 2655, 651: 2655, 2655, 2655, 665: 2655}, + {1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 556: 1535, 1535, 1535, 560: 1535, 1535, 563: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 573: 1535, 1535, 1535, 577: 1535, 579: 1535, 581: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 606: 1535, 1535, 1535, 1535, 612: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 633: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 653: 1535, 656: 1535, 1535, 1535, 661: 1535}, + {1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 556: 1538, 1538, 1538, 560: 1538, 1538, 563: 1538, 1538, 1538, 1538, 1538, 1538, 3912, 573: 1538, 1538, 1538, 577: 1538, 579: 1538, 581: 1538, 1538, 1538, 1538, 3908, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 606: 1538, 1538, 1538, 1538, 612: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 633: 3909, 1538, 1538, 3910, 1538, 3913, 1538, 3911, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 653: 1538, 656: 1538, 1538, 1538, 661: 1538}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 1471, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3926}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 3927}, + {1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 556: 1536, 1536, 1536, 560: 1536, 1536, 563: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 573: 1536, 1536, 1536, 577: 1536, 579: 1536, 581: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 606: 1536, 1536, 1536, 1536, 612: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 633: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 653: 1536, 656: 1536, 1536, 1536, 661: 1536}, // 975 - {209: 2654, 239: 2654, 566: 2654, 603: 2654, 625: 2654, 647: 2654, 2654, 2654, 651: 2654, 2654, 2654, 665: 2654}, - {2: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 10: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 53: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 550: 2212, 552: 2212, 2212, 2212, 559: 2212, 2212, 562: 2212, 2212, 2212, 566: 2212, 2212, 571: 2212, 2212, 576: 2212, 598: 2212, 605: 2212, 2212, 638: 2212, 645: 2212, 2212, 648: 2212, 2212, 2212, 655: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 664: 2212, 2212, 2212, 2212, 669: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 677: 2212, 679: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 706: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212}, - {603: 4088, 625: 4087, 647: 4086, 651: 4089, 3915, 3916, 1276: 4090}, - {550: 2208}, - {2: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 10: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 53: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 550: 2206, 552: 2206, 2206, 2206, 559: 2206, 2206, 562: 2206, 2206, 2206, 566: 2206, 2206, 571: 2206, 2206, 576: 2206, 598: 2206, 605: 2206, 2206, 638: 2206, 645: 2206, 2206, 648: 2206, 2206, 2206, 655: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 664: 2206, 2206, 2206, 2206, 669: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 677: 2206, 679: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 706: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206}, + {1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 556: 1539, 1539, 1539, 560: 1539, 1539, 563: 1539, 1539, 1539, 1539, 3906, 3907, 3912, 573: 1539, 1539, 1539, 577: 1539, 579: 1539, 581: 1539, 1539, 1539, 1539, 3908, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 606: 1539, 1539, 1539, 1539, 612: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 633: 3909, 1539, 1539, 3910, 1539, 3913, 1539, 3911, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 653: 1539, 656: 1539, 1539, 1539, 661: 1539}, + {1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 556: 1540, 1540, 1540, 560: 1540, 1540, 563: 1540, 1540, 1540, 1540, 3906, 3907, 3912, 573: 1540, 1540, 1540, 577: 1540, 579: 1540, 581: 1540, 1540, 1540, 1540, 3908, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 606: 1540, 1540, 1540, 1540, 612: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 633: 3909, 1540, 1540, 3910, 1540, 3913, 1540, 3911, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 653: 1540, 656: 1540, 1540, 1540, 661: 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, 556: 1541, 1541, 1541, 560: 1541, 1541, 563: 1541, 1541, 1541, 1541, 3906, 3907, 3912, 573: 1541, 1541, 1541, 577: 1541, 579: 1541, 581: 1541, 1541, 1541, 1541, 3908, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 606: 1541, 1541, 1541, 1541, 612: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 633: 3909, 1541, 1541, 3910, 1541, 3913, 1541, 3911, 3904, 3905, 1541, 1541, 1541, 1541, 1541, 1541, 653: 1541, 656: 1541, 1541, 1541, 661: 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, 556: 1542, 1542, 1542, 560: 1542, 1542, 563: 1542, 1542, 1542, 1542, 3906, 3907, 3912, 573: 1542, 1542, 1542, 577: 1542, 579: 1542, 581: 1542, 1542, 1542, 1542, 3908, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 606: 1542, 1542, 1542, 1542, 612: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 633: 3909, 1542, 1542, 3910, 3903, 3913, 1542, 3911, 3904, 3905, 1542, 1542, 1542, 1542, 1542, 1542, 653: 1542, 656: 1542, 1542, 1542, 661: 1542}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2282, 2282, 561: 2282, 563: 2282, 2282, 2282, 2282, 573: 2282, 2282, 2282, 579: 2282, 581: 2282, 2282, 2282, 2282, 586: 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 606: 2282, 2282, 609: 2282, 612: 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 631: 2282, 826: 3865, 3863}, // 980 - {2: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 10: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 53: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 550: 2204, 552: 2204, 2204, 2204, 559: 2204, 2204, 562: 2204, 2204, 2204, 566: 2204, 2204, 571: 2204, 2204, 576: 2204, 598: 2204, 605: 2204, 2204, 638: 2204, 645: 2204, 2204, 648: 2204, 2204, 2204, 655: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 664: 2204, 2204, 2204, 2204, 669: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 677: 2204, 679: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 706: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204}, - {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, 550: 2202, 552: 2202, 2202, 2202, 559: 2202, 2202, 562: 2202, 2202, 2202, 566: 2202, 2202, 571: 2202, 2202, 576: 2202, 598: 2202, 605: 2202, 2202, 638: 2202, 645: 2202, 2202, 648: 2202, 2202, 2202, 655: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 664: 2202, 2202, 2202, 2202, 669: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 677: 2202, 679: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 706: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202}, - {550: 3930, 795: 3931}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3927}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3925, 3686, 3768, 3685, 3682}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 556: 2283, 2283, 561: 2283, 563: 2283, 2283, 2283, 2283, 573: 2283, 2283, 2283, 579: 2283, 581: 2283, 2283, 2283, 2283, 586: 2283, 2283, 2283, 2283, 2283, 3869, 2283, 3868, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 606: 2283, 2283, 609: 2283, 612: 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 631: 2283, 826: 3865, 3863}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2284, 2284, 561: 2284, 563: 2284, 2284, 2284, 2284, 573: 2284, 2284, 2284, 579: 2284, 581: 2284, 2284, 2284, 2284, 586: 2284, 2284, 2284, 2284, 2284, 3869, 2284, 3868, 2284, 3864, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 606: 2284, 2284, 609: 2284, 612: 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 631: 2284, 826: 3865, 3863}, + {214: 2681, 242: 2681, 571: 2681, 608: 2681, 630: 2681, 651: 2681, 2681, 2681, 656: 2681, 2681, 2681, 670: 2681}, + {214: 2680, 242: 2680, 571: 2680, 608: 2680, 630: 2680, 651: 2680, 2680, 2680, 656: 2680, 2680, 2680, 670: 2680}, + {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, 53: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 555: 2238, 557: 2238, 2238, 2238, 564: 2238, 2238, 567: 2238, 2238, 2238, 571: 2238, 2238, 576: 2238, 578: 2238, 580: 2238, 605: 2238, 610: 2238, 2238, 649: 2238, 2238, 2238, 2238, 654: 2238, 2238, 659: 2238, 2238, 662: 2238, 2238, 2238, 2238, 2238, 2238, 669: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 682: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 721: 2238, 2238, 2238, 2238, 2238, 2238}, // 985 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3921, 3686, 3768, 3685, 3682}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3920, 3686, 3768, 3685, 3682}, - {550: 3917}, - {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 550: 2189, 552: 2189, 2189, 2189, 559: 2189, 2189, 562: 2189, 2189, 2189, 566: 2189, 2189, 571: 2189, 2189, 576: 2189, 598: 2189, 605: 2189, 2189, 638: 2189, 645: 2189, 2189, 648: 2189, 2189, 2189, 655: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 664: 2189, 2189, 2189, 2189, 669: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 677: 2189, 679: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 706: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189}, - {2: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 10: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 53: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 550: 2188, 552: 2188, 2188, 2188, 559: 2188, 2188, 562: 2188, 2188, 2188, 566: 2188, 2188, 571: 2188, 2188, 576: 2188, 598: 2188, 605: 2188, 2188, 638: 2188, 645: 2188, 2188, 648: 2188, 2188, 2188, 655: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 664: 2188, 2188, 2188, 2188, 669: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 677: 2188, 679: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 706: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188}, + {608: 4122, 630: 4121, 653: 4120, 656: 4123, 3949, 3950, 1282: 4124}, + {555: 2234}, + {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, 578: 2232, 580: 2232, 605: 2232, 610: 2232, 2232, 649: 2232, 2232, 2232, 2232, 654: 2232, 2232, 659: 2232, 2232, 662: 2232, 2232, 2232, 2232, 2232, 2232, 669: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 682: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 721: 2232, 2232, 2232, 2232, 2232, 2232}, + {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, 578: 2230, 580: 2230, 605: 2230, 610: 2230, 2230, 649: 2230, 2230, 2230, 2230, 654: 2230, 2230, 659: 2230, 2230, 662: 2230, 2230, 2230, 2230, 2230, 2230, 669: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 682: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 721: 2230, 2230, 2230, 2230, 2230, 2230}, + {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, 578: 2228, 580: 2228, 605: 2228, 610: 2228, 2228, 649: 2228, 2228, 2228, 2228, 654: 2228, 2228, 659: 2228, 2228, 662: 2228, 2228, 2228, 2228, 2228, 2228, 669: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 682: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 721: 2228, 2228, 2228, 2228, 2228, 2228}, // 990 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3918, 3686, 3768, 3685, 3682}, - {52: 3919, 557: 3782, 726: 3783}, - {2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 551: 2191, 2191, 556: 2191, 558: 2191, 2191, 2191, 2191, 568: 2191, 2191, 2191, 573: 2191, 2191, 2191, 577: 2191, 2191, 2191, 581: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 599: 2191, 2191, 2191, 2191, 604: 2191, 607: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 626: 2191, 629: 2191, 2191, 639: 2191, 2191, 2191, 2191, 2191, 2191}, - {2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 551: 2192, 2192, 556: 2192, 3782, 2192, 2192, 2192, 2192, 568: 2192, 2192, 2192, 573: 2192, 2192, 2192, 577: 2192, 2192, 2192, 581: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 599: 2192, 2192, 2192, 2192, 604: 2192, 607: 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 626: 2192, 629: 2192, 2192, 639: 2192, 2192, 2192, 2192, 2192, 2192, 726: 3783}, - {2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 3923, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 551: 2187, 2187, 556: 2187, 3782, 2187, 2187, 2187, 2187, 568: 2187, 2187, 2187, 573: 2187, 2187, 2187, 577: 2187, 2187, 2187, 581: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 599: 2187, 2187, 2187, 2187, 604: 2187, 607: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 626: 2187, 629: 2187, 2187, 639: 2187, 2187, 2187, 2187, 2187, 2187, 726: 3783, 1222: 3922}, + {555: 3964, 800: 3965}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3961}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3959, 3719, 3801, 3718, 3715}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3955, 3719, 3801, 3718, 3715}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3954, 3719, 3801, 3718, 3715}, // 995 - {2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 551: 2193, 2193, 556: 2193, 558: 2193, 2193, 2193, 2193, 568: 2193, 2193, 2193, 573: 2193, 2193, 2193, 577: 2193, 2193, 2193, 581: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 599: 2193, 2193, 2193, 2193, 604: 2193, 607: 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 626: 2193, 629: 2193, 2193, 639: 2193, 2193, 2193, 2193, 2193, 2193}, - {552: 3924}, - {2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 551: 2186, 2186, 556: 2186, 558: 2186, 2186, 2186, 2186, 568: 2186, 2186, 2186, 573: 2186, 2186, 2186, 577: 2186, 2186, 2186, 581: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 599: 2186, 2186, 2186, 2186, 604: 2186, 607: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 626: 2186, 629: 2186, 2186, 639: 2186, 2186, 2186, 2186, 2186, 2186}, - {2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 3923, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 551: 2187, 2187, 556: 2187, 3782, 2187, 2187, 2187, 2187, 568: 2187, 2187, 2187, 573: 2187, 2187, 2187, 577: 2187, 2187, 2187, 581: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 599: 2187, 2187, 2187, 2187, 604: 2187, 607: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 626: 2187, 629: 2187, 2187, 639: 2187, 2187, 2187, 2187, 2187, 2187, 726: 3783, 1222: 3926}, - {2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 551: 2194, 2194, 556: 2194, 558: 2194, 2194, 2194, 2194, 568: 2194, 2194, 2194, 573: 2194, 2194, 2194, 577: 2194, 2194, 2194, 581: 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 599: 2194, 2194, 2194, 2194, 604: 2194, 607: 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 626: 2194, 629: 2194, 2194, 639: 2194, 2194, 2194, 2194, 2194, 2194}, + {555: 3951}, + {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, 578: 2215, 580: 2215, 605: 2215, 610: 2215, 2215, 649: 2215, 2215, 2215, 2215, 654: 2215, 2215, 659: 2215, 2215, 662: 2215, 2215, 2215, 2215, 2215, 2215, 669: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 682: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 721: 2215, 2215, 2215, 2215, 2215, 2215}, + {2: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 10: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 53: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 555: 2214, 557: 2214, 2214, 2214, 564: 2214, 2214, 567: 2214, 2214, 2214, 571: 2214, 2214, 576: 2214, 578: 2214, 580: 2214, 605: 2214, 610: 2214, 2214, 649: 2214, 2214, 2214, 2214, 654: 2214, 2214, 659: 2214, 2214, 662: 2214, 2214, 2214, 2214, 2214, 2214, 669: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 682: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 721: 2214, 2214, 2214, 2214, 2214, 2214}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3952, 3719, 3801, 3718, 3715}, + {52: 3953, 562: 3815, 730: 3816}, // 1000 - {562: 3872, 3873, 3878, 580: 3874, 586: 3928, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3929}, - {2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 551: 2195, 2195, 556: 2195, 558: 2195, 2195, 2195, 2195, 568: 2195, 2195, 2195, 573: 2195, 2195, 2195, 577: 2195, 2195, 2195, 581: 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 599: 2195, 2195, 2195, 2195, 604: 2195, 607: 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 626: 2195, 629: 2195, 2195, 639: 2195, 2195, 2195, 2195, 2195, 2195}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 2979, 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3935, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 627: 2977, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 2973, 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3934, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 826: 3937, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 3939, 3938, 878: 3933}, - {2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 551: 2196, 2196, 556: 2196, 558: 2196, 2196, 2196, 2196, 568: 2196, 2196, 2196, 573: 2196, 2196, 2196, 577: 2196, 2196, 2196, 581: 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 599: 2196, 2196, 2196, 2196, 604: 2196, 607: 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 626: 2196, 629: 2196, 2196, 639: 2196, 2196, 2196, 2196, 2196, 2196}, + {2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 556: 2217, 2217, 561: 2217, 563: 2217, 2217, 2217, 2217, 573: 2217, 2217, 2217, 577: 2217, 579: 2217, 581: 2217, 2217, 2217, 2217, 586: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 606: 2217, 2217, 609: 2217, 612: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 631: 2217, 634: 2217, 2217, 643: 2217, 2217, 2217, 2217, 2217, 2217}, + {2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 556: 2218, 2218, 561: 2218, 3815, 2218, 2218, 2218, 2218, 573: 2218, 2218, 2218, 577: 2218, 579: 2218, 581: 2218, 2218, 2218, 2218, 586: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 606: 2218, 2218, 609: 2218, 612: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 631: 2218, 634: 2218, 2218, 643: 2218, 2218, 2218, 2218, 2218, 2218, 730: 3816}, + {2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 3957, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 556: 2213, 2213, 561: 2213, 3815, 2213, 2213, 2213, 2213, 573: 2213, 2213, 2213, 577: 2213, 579: 2213, 581: 2213, 2213, 2213, 2213, 586: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 606: 2213, 2213, 609: 2213, 612: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 631: 2213, 634: 2213, 2213, 643: 2213, 2213, 2213, 2213, 2213, 2213, 730: 3816, 1228: 3956}, + {2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 556: 2219, 2219, 561: 2219, 563: 2219, 2219, 2219, 2219, 573: 2219, 2219, 2219, 577: 2219, 579: 2219, 581: 2219, 2219, 2219, 2219, 586: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 606: 2219, 2219, 609: 2219, 612: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 631: 2219, 634: 2219, 2219, 643: 2219, 2219, 2219, 2219, 2219, 2219}, + {557: 3958}, // 1005 - {2236, 2236, 9: 2236, 52: 2236, 174: 2236, 561: 2236, 584: 2236, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {9: 4083, 52: 4084}, - {9: 1486, 52: 1486, 553: 1486, 555: 1486, 557: 1486, 1033, 562: 1486, 1486, 1486, 569: 1033, 1033, 573: 1486, 3949, 577: 3948, 580: 1486, 584: 3947, 586: 1486, 1486, 1486, 1486, 1486, 603: 1486, 625: 1486, 628: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 639: 1486, 1486, 1486, 1486, 1486, 1486, 647: 1486, 651: 1486, 1486, 1486, 1486, 726: 1486, 862: 3950, 3951}, - {550: 3979, 659: 3982, 1036: 3981, 1119: 3980}, - {550: 2980, 567: 2978, 627: 2977, 668: 2973, 795: 3944, 826: 3943, 2974, 2975, 2976, 2985, 2983, 3945, 3946}, + {2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 556: 2212, 2212, 561: 2212, 563: 2212, 2212, 2212, 2212, 573: 2212, 2212, 2212, 577: 2212, 579: 2212, 581: 2212, 2212, 2212, 2212, 586: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 606: 2212, 2212, 609: 2212, 612: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 631: 2212, 634: 2212, 2212, 643: 2212, 2212, 2212, 2212, 2212, 2212}, + {2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 3957, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 556: 2213, 2213, 561: 2213, 3815, 2213, 2213, 2213, 2213, 573: 2213, 2213, 2213, 577: 2213, 579: 2213, 581: 2213, 2213, 2213, 2213, 586: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 606: 2213, 2213, 609: 2213, 612: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 631: 2213, 634: 2213, 2213, 643: 2213, 2213, 2213, 2213, 2213, 2213, 730: 3816, 1228: 3960}, + {2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 556: 2220, 2220, 561: 2220, 563: 2220, 2220, 2220, 2220, 573: 2220, 2220, 2220, 577: 2220, 579: 2220, 581: 2220, 2220, 2220, 2220, 586: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 606: 2220, 2220, 609: 2220, 612: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 631: 2220, 634: 2220, 2220, 643: 2220, 2220, 2220, 2220, 2220, 2220}, + {567: 3906, 3907, 3912, 585: 3908, 591: 3962, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3963}, // 1010 - {52: 3942, 558: 1034, 569: 1034, 1034}, - {52: 3941}, - {52: 3940}, - {1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 555: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 567: 1061, 1061, 1061, 1061, 573: 1061, 1061, 1061, 577: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 599: 1061, 1061, 1061, 1061, 1061, 1061, 607: 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 639: 1061, 1061, 1061, 1061, 1061, 1061, 647: 1061, 651: 1061, 1061, 1061, 1061, 668: 1061, 676: 1061, 726: 1061, 731: 1061, 823: 1061}, - {1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 555: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 567: 1062, 1062, 1062, 1062, 573: 1062, 1062, 1062, 577: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 599: 1062, 1062, 1062, 1062, 1062, 1062, 607: 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 639: 1062, 1062, 1062, 1062, 1062, 1062, 647: 1062, 651: 1062, 1062, 1062, 1062, 668: 1062, 676: 1062, 726: 1062, 731: 1062, 823: 1062}, + {2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 556: 2221, 2221, 561: 2221, 563: 2221, 2221, 2221, 2221, 573: 2221, 2221, 2221, 577: 2221, 579: 2221, 581: 2221, 2221, 2221, 2221, 586: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 606: 2221, 2221, 609: 2221, 612: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 631: 2221, 634: 2221, 2221, 643: 2221, 2221, 2221, 2221, 2221, 2221}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 3005, 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3969, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 632: 3003, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 2999, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3968, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 831: 3971, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 3973, 3972, 879: 3967}, + {2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 556: 2222, 2222, 561: 2222, 563: 2222, 2222, 2222, 2222, 573: 2222, 2222, 2222, 577: 2222, 579: 2222, 581: 2222, 2222, 2222, 2222, 586: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 606: 2222, 2222, 609: 2222, 612: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 631: 2222, 634: 2222, 2222, 643: 2222, 2222, 2222, 2222, 2222, 2222}, + {2262, 2262, 9: 2262, 52: 2262, 177: 2262, 566: 2262, 589: 2262, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {9: 4117, 52: 4118}, // 1015 - {1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 555: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 567: 1063, 1063, 1063, 1063, 573: 1063, 1063, 1063, 577: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 599: 1063, 1063, 1063, 1063, 1063, 1063, 607: 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 639: 1063, 1063, 1063, 1063, 1063, 1063, 647: 1063, 651: 1063, 1063, 1063, 1063, 668: 1063, 676: 1063, 726: 1063, 731: 1063, 823: 1063}, - {1219, 1219, 52: 1219, 549: 1219, 551: 1219, 558: 1034, 561: 1219, 569: 1034, 1034}, - {1218, 1218, 52: 1218, 549: 1218, 551: 1218, 558: 1033, 561: 1218, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {1046, 1046, 52: 1046, 549: 1046, 551: 1046, 561: 1046}, - {1045, 1045, 52: 1045, 549: 1045, 551: 1045, 561: 1045}, + {9: 1507, 52: 1507, 558: 1507, 560: 1507, 562: 1507, 1053, 567: 1507, 1507, 1507, 574: 1053, 1053, 577: 1507, 579: 3983, 582: 3982, 585: 1507, 589: 3981, 591: 1507, 1507, 1507, 1507, 1507, 608: 1507, 630: 1507, 633: 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 653: 1507, 656: 1507, 1507, 1507, 661: 1507, 730: 1507, 867: 3984, 3985}, + {555: 4013, 664: 4016, 1041: 4015, 1124: 4014}, + {555: 3006, 572: 3004, 632: 3003, 680: 2999, 800: 3978, 831: 3977, 3000, 3001, 3002, 3011, 3009, 3979, 3980}, + {52: 3976, 563: 1054, 574: 1054, 1054}, + {52: 3975}, // 1020 - {741: 3970}, - {576: 3107, 661: 3958, 819: 3956, 834: 3957, 1006: 3965}, - {10: 3953, 250: 3954, 1390: 3955}, - {1039, 1039, 52: 1039, 549: 1039, 551: 1039, 561: 1039, 574: 3949, 577: 3948, 863: 3952}, - {1038, 1038, 52: 1038, 549: 1038, 551: 1038, 561: 1038}, + {52: 3974}, + {1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 560: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 572: 1081, 1081, 1081, 1081, 577: 1081, 579: 1081, 581: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 606: 1081, 1081, 1081, 1081, 612: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 653: 1081, 656: 1081, 1081, 1081, 661: 1081, 680: 1081, 1081, 730: 1081, 736: 1081, 828: 1081}, + {1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 560: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 572: 1082, 1082, 1082, 1082, 577: 1082, 579: 1082, 581: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 606: 1082, 1082, 1082, 1082, 612: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 653: 1082, 656: 1082, 1082, 1082, 661: 1082, 680: 1082, 1082, 730: 1082, 736: 1082, 828: 1082}, + {1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 560: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 572: 1083, 1083, 1083, 1083, 577: 1083, 579: 1083, 581: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 606: 1083, 1083, 1083, 1083, 612: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 653: 1083, 656: 1083, 1083, 1083, 661: 1083, 680: 1083, 1083, 730: 1083, 736: 1083, 828: 1083}, + {1239, 1239, 52: 1239, 554: 1239, 556: 1239, 563: 1054, 566: 1239, 574: 1054, 1054}, // 1025 - {1037, 1037, 52: 1037, 549: 1037, 551: 1037, 561: 1037}, - {576: 1096, 607: 1096, 659: 1096, 661: 1096}, - {576: 1095, 607: 1095, 659: 1095, 661: 1095}, - {576: 3107, 607: 1094, 659: 1094, 661: 3958, 819: 3956, 834: 3957, 1006: 3959, 1384: 3960}, - {2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 15: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 52: 2269, 58: 2269, 2269, 61: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 103: 2269, 2269, 2269, 107: 2269, 109: 2269, 2269, 120: 2269, 2269, 2269, 2269, 2269, 2269, 127: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 149: 2269, 151: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 191: 2269, 193: 2269, 227: 2269, 235: 2269, 278: 2269, 549: 2269, 2269, 2269, 554: 2269, 556: 2269, 2269, 2269, 561: 2269, 565: 2269, 567: 2269, 2269, 2269, 2269, 2269, 2269, 575: 2269, 578: 2269, 2269, 582: 2269, 585: 2269, 607: 2269, 627: 2269, 659: 2269, 668: 2269, 728: 2269, 2269, 731: 2269, 733: 2269}, + {1238, 1238, 52: 1238, 554: 1238, 556: 1238, 563: 1053, 566: 1238, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {1066, 1066, 52: 1066, 554: 1066, 556: 1066, 566: 1066}, + {1065, 1065, 52: 1065, 554: 1065, 556: 1065, 566: 1065}, + {746: 4004}, + {580: 3135, 666: 3992, 824: 3990, 839: 3991, 1012: 3999}, // 1030 - {1100, 1100, 9: 1100, 52: 1100, 227: 1100, 549: 1100, 551: 1100, 558: 1100, 561: 1100, 569: 1100, 1100, 578: 1100, 1100, 582: 1100, 607: 1100, 659: 1100}, - {1099, 1099, 9: 1099, 52: 1099, 227: 1099, 549: 1099, 551: 1099, 558: 1099, 561: 1099, 569: 1099, 1099, 578: 1099, 1099, 582: 1099, 607: 1099, 659: 1099}, - {607: 1093, 659: 1093}, - {607: 3962, 659: 3961, 1472: 3963}, - {217: 1098}, + {10: 3987, 254: 3988, 1400: 3989}, + {1059, 1059, 52: 1059, 554: 1059, 556: 1059, 566: 1059, 579: 3983, 582: 3982, 868: 3986}, + {1058, 1058, 52: 1058, 554: 1058, 556: 1058, 566: 1058}, + {1057, 1057, 52: 1057, 554: 1057, 556: 1057, 566: 1057}, + {580: 1116, 612: 1116, 664: 1116, 666: 1116}, // 1035 - {217: 1097}, - {217: 3964}, - {1089, 1089, 52: 1089, 549: 1089, 551: 1089, 558: 1089, 561: 1089, 569: 1089, 1089, 578: 1089, 1089, 582: 1089}, - {1092, 1092, 9: 3966, 52: 1092, 227: 3967, 549: 1092, 551: 1092, 558: 1092, 561: 1092, 569: 1092, 1092, 578: 1092, 1092, 582: 1092}, - {576: 3107, 661: 3958, 819: 3956, 834: 3957, 1006: 3969}, + {580: 1115, 612: 1115, 664: 1115, 666: 1115}, + {580: 3135, 612: 1114, 664: 1114, 666: 3992, 824: 3990, 839: 3991, 1012: 3993, 1394: 3994}, + {2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 15: 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, 2295, 2295, 2295, 52: 2295, 58: 2295, 2295, 2295, 62: 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, 103: 2295, 2295, 2295, 107: 2295, 109: 2295, 2295, 120: 2295, 2295, 2295, 2295, 2295, 2295, 127: 2295, 2295, 2295, 131: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 151: 2295, 153: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 195: 2295, 197: 2295, 232: 2295, 238: 2295, 283: 2295, 554: 2295, 2295, 2295, 559: 2295, 561: 2295, 2295, 2295, 566: 2295, 570: 2295, 572: 2295, 2295, 2295, 2295, 2295, 578: 2295, 581: 2295, 583: 2295, 2295, 587: 2295, 590: 2295, 612: 2295, 632: 2295, 664: 2295, 680: 2295, 733: 2295, 2295, 736: 2295, 738: 2295}, + {1120, 1120, 9: 1120, 52: 1120, 232: 1120, 554: 1120, 556: 1120, 563: 1120, 566: 1120, 574: 1120, 1120, 583: 1120, 1120, 587: 1120, 612: 1120, 664: 1120}, + {1119, 1119, 9: 1119, 52: 1119, 232: 1119, 554: 1119, 556: 1119, 563: 1119, 566: 1119, 574: 1119, 1119, 583: 1119, 1119, 587: 1119, 612: 1119, 664: 1119}, // 1040 - {576: 3107, 661: 3958, 819: 3956, 834: 3957, 1006: 3968}, - {1090, 1090, 52: 1090, 549: 1090, 551: 1090, 558: 1090, 561: 1090, 569: 1090, 1090, 578: 1090, 1090, 582: 1090}, - {1091, 1091, 52: 1091, 549: 1091, 551: 1091, 558: 1091, 561: 1091, 569: 1091, 1091, 578: 1091, 1091, 582: 1091}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3971, 997: 3973, 1022: 3972}, - {1530, 1530, 9: 1530, 52: 1530, 174: 1530, 549: 1530, 551: 1530, 558: 1530, 561: 1530, 569: 1530, 1530, 574: 1530, 577: 1530, 1530, 1530, 582: 1530, 584: 1530, 586: 3835, 3833, 3834, 3832, 3830, 592: 1530, 594: 1530, 597: 3978, 607: 1530, 610: 1530, 612: 1530, 624: 3977, 820: 3831, 3829, 1440: 3976}, + {612: 1113, 664: 1113}, + {612: 3996, 664: 3995, 1482: 3997}, + {222: 1118}, + {222: 1117}, + {222: 3998}, // 1045 - {1533, 1533, 9: 3974, 52: 1533, 174: 1533, 549: 1533, 551: 1533, 558: 1533, 561: 1533, 569: 1533, 1533, 574: 1533, 577: 1533, 1533, 1533, 582: 1533}, - {1532, 1532, 9: 1532, 52: 1532, 174: 1532, 549: 1532, 551: 1532, 558: 1532, 561: 1532, 569: 1532, 1532, 574: 1532, 577: 1532, 1532, 1532, 582: 1532, 584: 1532, 592: 1532, 594: 1532, 607: 1532, 610: 1532, 612: 1532}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3971, 997: 3975}, - {1531, 1531, 9: 1531, 52: 1531, 174: 1531, 549: 1531, 551: 1531, 558: 1531, 561: 1531, 569: 1531, 1531, 574: 1531, 577: 1531, 1531, 1531, 582: 1531, 584: 1531, 592: 1531, 594: 1531, 607: 1531, 610: 1531, 612: 1531}, - {1529, 1529, 9: 1529, 52: 1529, 174: 1529, 549: 1529, 551: 1529, 558: 1529, 561: 1529, 569: 1529, 1529, 574: 1529, 577: 1529, 1529, 1529, 582: 1529, 584: 1529, 592: 1529, 594: 1529, 607: 1529, 610: 1529, 612: 1529}, + {1109, 1109, 52: 1109, 554: 1109, 556: 1109, 563: 1109, 566: 1109, 574: 1109, 1109, 583: 1109, 1109, 587: 1109}, + {1112, 1112, 9: 4000, 52: 1112, 232: 4001, 554: 1112, 556: 1112, 563: 1112, 566: 1112, 574: 1112, 1112, 583: 1112, 1112, 587: 1112}, + {580: 3135, 666: 3992, 824: 3990, 839: 3991, 1012: 4003}, + {580: 3135, 666: 3992, 824: 3990, 839: 3991, 1012: 4002}, + {1110, 1110, 52: 1110, 554: 1110, 556: 1110, 563: 1110, 566: 1110, 574: 1110, 1110, 583: 1110, 1110, 587: 1110}, // 1050 - {1528, 1528, 9: 1528, 52: 1528, 174: 1528, 549: 1528, 551: 1528, 558: 1528, 561: 1528, 569: 1528, 1528, 574: 1528, 577: 1528, 1528, 1528, 582: 1528, 584: 1528, 592: 1528, 594: 1528, 607: 1528, 610: 1528, 612: 1528}, - {1527, 1527, 9: 1527, 52: 1527, 174: 1527, 549: 1527, 551: 1527, 558: 1527, 561: 1527, 569: 1527, 1527, 574: 1527, 577: 1527, 1527, 1527, 582: 1527, 584: 1527, 592: 1527, 594: 1527, 607: 1527, 610: 1527, 612: 1527}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 3991, 3121, 3122, 3120, 799: 4080}, - {1523, 1523, 9: 4003, 52: 1523, 549: 1523, 551: 1523, 558: 1523, 561: 1523, 569: 1523, 1523, 574: 1523, 577: 1523, 1523, 1523, 582: 1523, 584: 3947, 862: 4001, 931: 4002}, - {147, 147, 9: 147, 52: 147, 549: 147, 551: 147, 558: 147, 561: 147, 569: 147, 147, 574: 147, 577: 147, 147, 147, 582: 147, 584: 147}, + {1111, 1111, 52: 1111, 554: 1111, 556: 1111, 563: 1111, 566: 1111, 574: 1111, 1111, 583: 1111, 1111, 587: 1111}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4005, 1003: 4007, 1027: 4006}, + {1551, 1551, 9: 1551, 52: 1551, 177: 1551, 554: 1551, 556: 1551, 563: 1551, 566: 1551, 574: 1551, 1551, 579: 1551, 582: 1551, 1551, 1551, 587: 1551, 589: 1551, 591: 3869, 3867, 3868, 3866, 3864, 597: 1551, 599: 1551, 602: 4012, 612: 1551, 615: 1551, 617: 1551, 629: 4011, 826: 3865, 3863, 1450: 4010}, + {1554, 1554, 9: 4008, 52: 1554, 177: 1554, 554: 1554, 556: 1554, 563: 1554, 566: 1554, 574: 1554, 1554, 579: 1554, 582: 1554, 1554, 1554, 587: 1554}, + {1553, 1553, 9: 1553, 52: 1553, 177: 1553, 554: 1553, 556: 1553, 563: 1553, 566: 1553, 574: 1553, 1553, 579: 1553, 582: 1553, 1553, 1553, 587: 1553, 589: 1553, 597: 1553, 599: 1553, 612: 1553, 615: 1553, 617: 1553}, // 1055 - {550: 3983, 962: 3984}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 1561, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 3988, 1520: 3987, 3986}, - {145, 145, 9: 145, 52: 145, 549: 145, 551: 145, 558: 145, 561: 145, 569: 145, 145, 574: 145, 577: 145, 145, 145, 582: 145, 584: 145}, - {1557, 1557, 9: 1557, 52: 1557, 549: 1557, 551: 1557, 561: 1557, 577: 1557, 581: 1557, 583: 1557, 1557, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {52: 4000}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4005, 1003: 4009}, + {1552, 1552, 9: 1552, 52: 1552, 177: 1552, 554: 1552, 556: 1552, 563: 1552, 566: 1552, 574: 1552, 1552, 579: 1552, 582: 1552, 1552, 1552, 587: 1552, 589: 1552, 597: 1552, 599: 1552, 612: 1552, 615: 1552, 617: 1552}, + {1550, 1550, 9: 1550, 52: 1550, 177: 1550, 554: 1550, 556: 1550, 563: 1550, 566: 1550, 574: 1550, 1550, 579: 1550, 582: 1550, 1550, 1550, 587: 1550, 589: 1550, 597: 1550, 599: 1550, 612: 1550, 615: 1550, 617: 1550}, + {1549, 1549, 9: 1549, 52: 1549, 177: 1549, 554: 1549, 556: 1549, 563: 1549, 566: 1549, 574: 1549, 1549, 579: 1549, 582: 1549, 1549, 1549, 587: 1549, 589: 1549, 597: 1549, 599: 1549, 612: 1549, 615: 1549, 617: 1549}, + {1548, 1548, 9: 1548, 52: 1548, 177: 1548, 554: 1548, 556: 1548, 563: 1548, 566: 1548, 574: 1548, 1548, 579: 1548, 582: 1548, 1548, 1548, 587: 1548, 589: 1548, 597: 1548, 599: 1548, 612: 1548, 615: 1548, 617: 1548}, // 1060 - {9: 3998, 52: 1560}, - {9: 1558, 52: 1558}, - {1556, 1556, 9: 1556, 52: 1556, 549: 1556, 3990, 1556, 561: 1556, 577: 1556, 581: 1556, 583: 1556, 1556}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 3991, 3121, 3122, 3120, 799: 3992}, - {52: 1505, 573: 1505, 734: 3994}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4025, 3149, 3150, 3148, 804: 4114}, + {1544, 1544, 9: 4037, 52: 1544, 554: 1544, 556: 1544, 563: 1544, 566: 1544, 574: 1544, 1544, 579: 1544, 582: 1544, 1544, 1544, 587: 1544, 589: 3981, 867: 4035, 937: 4036}, + {162, 162, 9: 162, 52: 162, 554: 162, 556: 162, 563: 162, 566: 162, 574: 162, 162, 579: 162, 582: 162, 162, 162, 587: 162, 589: 162}, + {555: 4017, 967: 4018}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 1582, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 4022, 1532: 4021, 4020}, // 1065 - {52: 3993}, - {1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 551: 1475, 1475, 1475, 555: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 568: 1475, 1475, 1475, 573: 1475, 1475, 1475, 577: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 599: 1475, 1475, 1475, 1475, 1475, 1475, 607: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 628: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 639: 1475, 1475, 1475, 1475, 1475, 1475, 647: 1475, 651: 1475, 1475, 1475, 1475, 676: 1475, 726: 1475}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 3995, 3121, 3122, 3120}, - {52: 1504, 573: 1504, 734: 3996}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 3997, 3121, 3122, 3120}, + {160, 160, 9: 160, 52: 160, 554: 160, 556: 160, 563: 160, 566: 160, 574: 160, 160, 579: 160, 582: 160, 160, 160, 587: 160, 589: 160}, + {1578, 1578, 9: 1578, 52: 1578, 554: 1578, 556: 1578, 566: 1578, 582: 1578, 586: 1578, 588: 1578, 1578, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {52: 4034}, + {9: 4032, 52: 1581}, + {9: 1579, 52: 1579}, // 1070 - {1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 551: 1503, 1503, 1503, 555: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 568: 1503, 1503, 1503, 573: 1503, 1503, 1503, 577: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 599: 1503, 1503, 1503, 1503, 1503, 1503, 607: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 628: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 639: 1503, 1503, 1503, 1503, 1503, 1503, 647: 1503, 651: 1503, 1503, 1503, 1503, 676: 1503, 726: 1503, 738: 1503, 1503}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 3999}, - {9: 1559, 52: 1559}, - {1562, 1562, 9: 1562, 52: 1562, 120: 1562, 549: 1562, 551: 1562, 558: 1562, 561: 1562, 569: 1562, 1562, 574: 1562, 577: 1562, 1562, 1562, 582: 1562, 584: 1562, 586: 1562}, - {1522, 1522, 52: 1522, 174: 1522, 549: 1522, 551: 1522, 558: 1522, 561: 1522, 569: 1522, 1522, 574: 1522, 577: 1522, 1522, 1522, 582: 1522}, + {1577, 1577, 9: 1577, 52: 1577, 554: 1577, 4024, 1577, 566: 1577, 582: 1577, 586: 1577, 588: 1577, 1577}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4025, 3149, 3150, 3148, 804: 4026}, + {52: 1526, 577: 1526, 739: 4028}, + {52: 4027}, + {1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 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, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 573: 1496, 1496, 1496, 577: 1496, 579: 1496, 581: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 606: 1496, 1496, 1496, 1496, 612: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 633: 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496, 653: 1496, 656: 1496, 1496, 1496, 661: 1496, 681: 1496, 730: 1496}, // 1075 - {1088, 1088, 52: 1088, 549: 1088, 551: 1088, 558: 1088, 561: 1088, 569: 1088, 1088, 574: 3949, 577: 3948, 1088, 1088, 582: 1088, 863: 4006, 948: 4005}, - {659: 3982, 1036: 4004}, - {146, 146, 9: 146, 52: 146, 549: 146, 551: 146, 558: 146, 561: 146, 569: 146, 146, 574: 146, 577: 146, 146, 146, 582: 146, 584: 146}, - {1059, 1059, 52: 1059, 549: 1059, 551: 1059, 558: 1059, 561: 1059, 569: 1059, 1059, 578: 4008, 1059, 582: 4009, 1012: 4007}, - {1087, 1087, 52: 1087, 549: 1087, 551: 1087, 558: 1087, 561: 1087, 569: 1087, 1087, 578: 1087, 1087, 582: 1087}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4029, 3149, 3150, 3148}, + {52: 1525, 577: 1525, 739: 4030}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4031, 3149, 3150, 3148}, + {1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 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, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 573: 1524, 1524, 1524, 577: 1524, 579: 1524, 581: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 606: 1524, 1524, 1524, 1524, 612: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 633: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 653: 1524, 656: 1524, 1524, 1524, 661: 1524, 681: 1524, 730: 1524, 742: 1524, 1524}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 4033}, // 1080 - {1065, 1065, 52: 1065, 549: 1065, 551: 1065, 558: 1065, 561: 1065, 569: 1065, 1065, 579: 4037, 1013: 4036}, - {356: 4014, 731: 4013}, - {625: 4010}, - {356: 4011}, - {279: 4012}, + {9: 1580, 52: 1580}, + {1583, 1583, 9: 1583, 52: 1583, 120: 1583, 554: 1583, 556: 1583, 563: 1583, 566: 1583, 574: 1583, 1583, 579: 1583, 582: 1583, 1583, 1583, 587: 1583, 589: 1583, 591: 1583}, + {1543, 1543, 52: 1543, 177: 1543, 554: 1543, 556: 1543, 563: 1543, 566: 1543, 574: 1543, 1543, 579: 1543, 582: 1543, 1543, 1543, 587: 1543}, + {1108, 1108, 52: 1108, 554: 1108, 556: 1108, 563: 1108, 566: 1108, 574: 1108, 1108, 579: 3983, 582: 3982, 1108, 1108, 587: 1108, 868: 4040, 953: 4039}, + {664: 4016, 1041: 4038}, // 1085 - {1051, 1051, 52: 1051, 549: 1051, 551: 1051, 558: 1051, 561: 1051, 569: 1051, 1051, 579: 1051}, - {1050, 1050, 52: 1050, 215: 1050, 219: 1050, 240: 1050, 549: 1050, 551: 1050, 558: 1050, 561: 1050, 569: 1050, 1050, 579: 1050, 1238: 4016, 4030}, - {1050, 1050, 52: 1050, 215: 1050, 219: 1050, 549: 1050, 551: 1050, 558: 1050, 561: 1050, 569: 1050, 1050, 579: 1050, 1238: 4016, 4015}, - {1057, 1057, 52: 1057, 215: 4027, 219: 4028, 549: 1057, 551: 1057, 558: 1057, 561: 1057, 569: 1057, 1057, 579: 1057}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 4020}, + {161, 161, 9: 161, 52: 161, 554: 161, 556: 161, 563: 161, 566: 161, 574: 161, 161, 579: 161, 582: 161, 161, 161, 587: 161, 589: 161}, + {1079, 1079, 52: 1079, 554: 1079, 556: 1079, 563: 1079, 566: 1079, 574: 1079, 1079, 583: 4042, 1079, 587: 4043, 1018: 4041}, + {1107, 1107, 52: 1107, 554: 1107, 556: 1107, 563: 1107, 566: 1107, 574: 1107, 1107, 583: 1107, 1107, 587: 1107}, + {1085, 1085, 52: 1085, 554: 1085, 556: 1085, 563: 1085, 566: 1085, 574: 1085, 1085, 584: 4071, 1019: 4070}, + {360: 4048, 736: 4047}, // 1090 - {1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 599: 1276, 1276, 1276, 1276, 1276, 1276, 607: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 639: 1276, 1276, 1276, 1276, 1276, 1276, 647: 1276, 651: 1276, 1276, 1276, 1276, 663: 1276, 666: 1276, 668: 1276, 676: 1276, 678: 1276, 705: 1276, 723: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 4025, 1276, 740: 1276, 1276, 1276, 1276, 746: 1276, 1276, 1276, 1276, 1276, 762: 1276, 784: 1276, 1276, 1276, 1276, 1276, 1276, 1276}, - {734: 4023}, - {1273, 1273, 9: 1273, 52: 1273, 215: 1273, 219: 1273, 240: 1273, 549: 1273, 551: 1273, 558: 1273, 561: 1273, 569: 1273, 1273, 579: 1273, 581: 1273, 732: 1273, 747: 1273, 749: 1273}, - {1049, 1049, 9: 4021, 52: 1049, 215: 1049, 219: 1049, 240: 1049, 549: 1049, 551: 1049, 558: 1049, 561: 1049, 569: 1049, 1049, 579: 1049}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4022}, + {630: 4044}, + {360: 4045}, + {284: 4046}, + {1071, 1071, 52: 1071, 554: 1071, 556: 1071, 563: 1071, 566: 1071, 574: 1071, 1071, 584: 1071}, + {1070, 1070, 52: 1070, 220: 1070, 224: 1070, 243: 1070, 554: 1070, 556: 1070, 563: 1070, 566: 1070, 574: 1070, 1070, 584: 1070, 1244: 4050, 4064}, // 1095 - {1272, 1272, 9: 1272, 52: 1272, 215: 1272, 219: 1272, 229: 1272, 240: 1272, 549: 1272, 551: 1272, 558: 1272, 561: 1272, 569: 1272, 1272, 579: 1272, 581: 1272, 732: 1272, 735: 1272, 747: 1272, 749: 1272, 784: 1272, 1272}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4024, 3121, 3122, 3120}, - {1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 599: 1274, 1274, 1274, 1274, 1274, 1274, 607: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 639: 1274, 1274, 1274, 1274, 1274, 1274, 647: 1274, 651: 1274, 1274, 1274, 1274, 663: 1274, 666: 1274, 668: 1274, 676: 1274, 678: 1274, 705: 1274, 723: 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 735: 1274, 740: 1274, 1274, 1274, 1274, 746: 1274, 1274, 1274, 1274, 1274, 762: 1274, 784: 1274, 1274, 1274, 1274, 1274, 1274, 1274}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4026, 3121, 3122, 3120}, - {1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 599: 1275, 1275, 1275, 1275, 1275, 1275, 607: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 639: 1275, 1275, 1275, 1275, 1275, 1275, 647: 1275, 651: 1275, 1275, 1275, 1275, 663: 1275, 666: 1275, 668: 1275, 676: 1275, 678: 1275, 705: 1275, 723: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 735: 1275, 740: 1275, 1275, 1275, 1275, 746: 1275, 1275, 1275, 1275, 1275, 762: 1275, 784: 1275, 1275, 1275, 1275, 1275, 1275, 1275}, + {1070, 1070, 52: 1070, 220: 1070, 224: 1070, 554: 1070, 556: 1070, 563: 1070, 566: 1070, 574: 1070, 1070, 584: 1070, 1244: 4050, 4049}, + {1077, 1077, 52: 1077, 220: 4061, 224: 4062, 554: 1077, 556: 1077, 563: 1077, 566: 1077, 574: 1077, 1077, 584: 1077}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 4054}, + {1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 606: 1296, 1296, 1296, 1296, 612: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 653: 1296, 656: 1296, 1296, 1296, 661: 1296, 668: 1296, 672: 1296, 680: 1296, 1296, 720: 1296, 727: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 4059, 1296, 745: 1296, 1296, 1296, 1296, 751: 1296, 1296, 1296, 1296, 1296, 767: 1296, 789: 1296, 1296, 1296, 1296, 1296, 1296, 1296}, + {739: 4057}, // 1100 - {1054, 1054, 52: 1054, 549: 1054, 551: 1054, 558: 1054, 561: 1054, 569: 1054, 1054, 579: 1054}, - {336: 4029}, - {1052, 1052, 52: 1052, 549: 1052, 551: 1052, 558: 1052, 561: 1052, 569: 1052, 1052, 579: 1052}, - {1058, 1058, 52: 1058, 215: 4031, 219: 4033, 240: 4032, 549: 1058, 551: 1058, 558: 1058, 561: 1058, 569: 1058, 1058, 579: 1058}, - {1056, 1056, 52: 1056, 549: 1056, 551: 1056, 558: 1056, 561: 1056, 569: 1056, 1056, 579: 1056}, + {1293, 1293, 9: 1293, 52: 1293, 220: 1293, 224: 1293, 243: 1293, 554: 1293, 556: 1293, 563: 1293, 566: 1293, 574: 1293, 1293, 584: 1293, 586: 1293, 737: 1293, 752: 1293, 754: 1293}, + {1069, 1069, 9: 4055, 52: 1069, 220: 1069, 224: 1069, 243: 1069, 554: 1069, 556: 1069, 563: 1069, 566: 1069, 574: 1069, 1069, 584: 1069}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4056}, + {1292, 1292, 9: 1292, 52: 1292, 220: 1292, 224: 1292, 234: 1292, 243: 1292, 554: 1292, 556: 1292, 563: 1292, 566: 1292, 574: 1292, 1292, 584: 1292, 586: 1292, 737: 1292, 740: 1292, 752: 1292, 754: 1292, 789: 1292, 1292}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4058, 3149, 3150, 3148}, // 1105 - {576: 3107, 819: 4035}, - {336: 4034}, - {1053, 1053, 52: 1053, 549: 1053, 551: 1053, 558: 1053, 561: 1053, 569: 1053, 1053, 579: 1053}, - {1055, 1055, 52: 1055, 549: 1055, 551: 1055, 558: 1055, 561: 1055, 569: 1055, 1055, 579: 1055}, - {1220, 1220, 52: 1220, 549: 1220, 551: 1220, 558: 1220, 561: 1220, 569: 1220, 1220}, + {1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 606: 1294, 1294, 1294, 1294, 612: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 653: 1294, 656: 1294, 1294, 1294, 661: 1294, 668: 1294, 672: 1294, 680: 1294, 1294, 720: 1294, 727: 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 740: 1294, 745: 1294, 1294, 1294, 1294, 751: 1294, 1294, 1294, 1294, 1294, 767: 1294, 789: 1294, 1294, 1294, 1294, 1294, 1294, 1294}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4060, 3149, 3150, 3148}, + {1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 606: 1295, 1295, 1295, 1295, 612: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 653: 1295, 656: 1295, 1295, 1295, 661: 1295, 668: 1295, 672: 1295, 680: 1295, 1295, 720: 1295, 727: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 740: 1295, 745: 1295, 1295, 1295, 1295, 751: 1295, 1295, 1295, 1295, 1295, 767: 1295, 789: 1295, 1295, 1295, 1295, 1295, 1295, 1295}, + {1074, 1074, 52: 1074, 554: 1074, 556: 1074, 563: 1074, 566: 1074, 574: 1074, 1074, 584: 1074}, + {340: 4063}, // 1110 - {1442: 4038}, - {552: 4039}, - {259, 259, 52: 259, 143: 4043, 170: 4042, 549: 259, 551: 259, 558: 259, 561: 259, 569: 259, 259, 742: 259, 954: 4041, 1197: 4040}, - {244, 244, 52: 244, 549: 244, 551: 244, 558: 244, 561: 244, 569: 244, 244, 742: 4071, 1226: 4070}, - {150: 4050, 872: 4046, 875: 4048, 883: 4049, 4047, 1196: 4045, 1387: 4044}, + {1072, 1072, 52: 1072, 554: 1072, 556: 1072, 563: 1072, 566: 1072, 574: 1072, 1072, 584: 1072}, + {1078, 1078, 52: 1078, 220: 4065, 224: 4067, 243: 4066, 554: 1078, 556: 1078, 563: 1078, 566: 1078, 574: 1078, 1078, 584: 1078}, + {1076, 1076, 52: 1076, 554: 1076, 556: 1076, 563: 1076, 566: 1076, 574: 1076, 1076, 584: 1076}, + {580: 3135, 824: 4069}, + {340: 4068}, // 1115 - {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, 549: 257, 257, 581: 257, 625: 257, 733: 257, 872: 257, 875: 257, 883: 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, 549: 256, 256, 581: 256, 625: 256, 733: 256, 872: 256, 875: 256, 883: 256, 256}, - {258, 258, 52: 258, 150: 4050, 549: 258, 258, 258, 558: 258, 561: 258, 568: 258, 258, 258, 575: 258, 742: 258, 872: 4046, 875: 4048, 883: 4049, 4047, 1196: 4069}, - {254, 254, 52: 254, 150: 254, 549: 254, 254, 254, 558: 254, 561: 254, 568: 254, 254, 254, 575: 254, 742: 254, 872: 254, 875: 254, 883: 254, 254}, - {741: 4067}, + {1073, 1073, 52: 1073, 554: 1073, 556: 1073, 563: 1073, 566: 1073, 574: 1073, 1073, 584: 1073}, + {1075, 1075, 52: 1075, 554: 1075, 556: 1075, 563: 1075, 566: 1075, 574: 1075, 1075, 584: 1075}, + {1240, 1240, 52: 1240, 554: 1240, 556: 1240, 563: 1240, 566: 1240, 574: 1240, 1240}, + {1452: 4072}, + {557: 4073}, // 1120 - {552: 4061, 657: 4062, 4063, 982: 4066}, - {741: 4064}, - {741: 4059}, - {566: 4051}, - {741: 4052}, + {274, 274, 52: 274, 144: 4077, 172: 4076, 554: 274, 556: 274, 563: 274, 566: 274, 574: 274, 274, 748: 274, 959: 4075, 1203: 4074}, + {259, 259, 52: 259, 554: 259, 556: 259, 563: 259, 566: 259, 574: 259, 259, 748: 4105, 1232: 4104}, + {152: 4084, 877: 4080, 881: 4082, 888: 4083, 4081, 1202: 4079, 1397: 4078}, + {272, 272, 17: 272, 58: 272, 60: 272, 62: 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 152: 272, 554: 272, 272, 586: 272, 630: 272, 738: 272, 877: 272, 881: 272, 888: 272, 272}, + {271, 271, 17: 271, 58: 271, 60: 271, 62: 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 152: 271, 554: 271, 271, 586: 271, 630: 271, 738: 271, 877: 271, 881: 271, 888: 271, 271}, // 1125 - {552: 4053, 657: 4054, 4055, 1042: 4056}, - {454, 454, 9: 454, 52: 454, 150: 454, 549: 454, 454, 454, 558: 454, 561: 454, 568: 454, 454, 454, 575: 454, 742: 454, 872: 454, 875: 454, 883: 454, 454, 1030: 454}, - {453, 453, 9: 453, 52: 453, 150: 453, 549: 453, 453, 453, 558: 453, 561: 453, 568: 453, 453, 453, 575: 453, 742: 453, 872: 453, 875: 453, 883: 453, 453, 1030: 453}, - {452, 452, 9: 452, 52: 452, 150: 452, 549: 452, 452, 452, 558: 452, 561: 452, 568: 452, 452, 452, 575: 452, 742: 452, 872: 452, 875: 452, 883: 452, 452, 1030: 452}, - {249, 249, 52: 249, 150: 249, 549: 249, 249, 249, 558: 249, 561: 249, 568: 249, 249, 249, 575: 249, 742: 249, 872: 249, 875: 249, 883: 249, 249, 1030: 4057}, + {273, 273, 52: 273, 152: 4084, 554: 273, 273, 273, 563: 273, 566: 273, 573: 273, 273, 273, 581: 273, 748: 273, 877: 4080, 881: 4082, 888: 4083, 4081, 1202: 4103}, + {269, 269, 52: 269, 152: 269, 554: 269, 269, 269, 563: 269, 566: 269, 573: 269, 269, 269, 581: 269, 748: 269, 877: 269, 881: 269, 888: 269, 269}, + {746: 4101}, + {557: 4095, 662: 4096, 4097, 988: 4100}, + {746: 4098}, // 1130 - {875: 4058}, - {248, 248, 52: 248, 150: 248, 549: 248, 248, 248, 558: 248, 561: 248, 568: 248, 248, 248, 575: 248, 742: 248, 872: 248, 875: 248, 883: 248, 248}, - {552: 4061, 657: 4062, 4063, 982: 4060}, - {250, 250, 52: 250, 150: 250, 549: 250, 250, 250, 558: 250, 561: 250, 568: 250, 250, 250, 575: 250, 742: 250, 872: 250, 875: 250, 883: 250, 250}, - {247, 247, 52: 247, 150: 247, 549: 247, 247, 247, 558: 247, 561: 247, 568: 247, 247, 247, 575: 247, 742: 247, 872: 247, 875: 247, 883: 247, 247}, + {746: 4093}, + {571: 4085}, + {746: 4086}, + {557: 4087, 662: 4088, 4089, 1048: 4090}, + {469, 469, 9: 469, 52: 469, 152: 469, 554: 469, 469, 469, 563: 469, 566: 469, 573: 469, 469, 469, 581: 469, 748: 469, 877: 469, 881: 469, 888: 469, 469, 1035: 469}, // 1135 - {246, 246, 52: 246, 150: 246, 549: 246, 246, 246, 558: 246, 561: 246, 568: 246, 246, 246, 575: 246, 742: 246, 872: 246, 875: 246, 883: 246, 246}, - {245, 245, 52: 245, 150: 245, 549: 245, 245, 245, 558: 245, 561: 245, 568: 245, 245, 245, 575: 245, 742: 245, 872: 245, 875: 245, 883: 245, 245}, - {552: 4061, 657: 4062, 4063, 982: 4065}, - {251, 251, 52: 251, 150: 251, 549: 251, 251, 251, 558: 251, 561: 251, 568: 251, 251, 251, 575: 251, 742: 251, 872: 251, 875: 251, 883: 251, 251}, - {252, 252, 52: 252, 150: 252, 549: 252, 252, 252, 558: 252, 561: 252, 568: 252, 252, 252, 575: 252, 742: 252, 872: 252, 875: 252, 883: 252, 252}, + {468, 468, 9: 468, 52: 468, 152: 468, 554: 468, 468, 468, 563: 468, 566: 468, 573: 468, 468, 468, 581: 468, 748: 468, 877: 468, 881: 468, 888: 468, 468, 1035: 468}, + {467, 467, 9: 467, 52: 467, 152: 467, 554: 467, 467, 467, 563: 467, 566: 467, 573: 467, 467, 467, 581: 467, 748: 467, 877: 467, 881: 467, 888: 467, 467, 1035: 467}, + {264, 264, 52: 264, 152: 264, 554: 264, 264, 264, 563: 264, 566: 264, 573: 264, 264, 264, 581: 264, 748: 264, 877: 264, 881: 264, 888: 264, 264, 1035: 4091}, + {881: 4092}, + {263, 263, 52: 263, 152: 263, 554: 263, 263, 263, 563: 263, 566: 263, 573: 263, 263, 263, 581: 263, 748: 263, 877: 263, 881: 263, 888: 263, 263}, // 1140 - {552: 4061, 657: 4062, 4063, 982: 4068}, - {253, 253, 52: 253, 150: 253, 549: 253, 253, 253, 558: 253, 561: 253, 568: 253, 253, 253, 575: 253, 742: 253, 872: 253, 875: 253, 883: 253, 253}, - {255, 255, 52: 255, 150: 255, 549: 255, 255, 255, 558: 255, 561: 255, 568: 255, 255, 255, 575: 255, 742: 255, 872: 255, 875: 255, 883: 255, 255}, - {1064, 1064, 52: 1064, 549: 1064, 551: 1064, 558: 1064, 561: 1064, 569: 1064, 1064}, - {242, 242, 52: 242, 549: 242, 242, 242, 558: 242, 561: 242, 568: 242, 242, 242, 575: 242, 872: 242, 1494: 4072, 4073}, + {557: 4095, 662: 4096, 4097, 988: 4094}, + {265, 265, 52: 265, 152: 265, 554: 265, 265, 265, 563: 265, 566: 265, 573: 265, 265, 265, 581: 265, 748: 265, 877: 265, 881: 265, 888: 265, 265}, + {262, 262, 52: 262, 152: 262, 554: 262, 262, 262, 563: 262, 566: 262, 573: 262, 262, 262, 581: 262, 748: 262, 877: 262, 881: 262, 888: 262, 262}, + {261, 261, 52: 261, 152: 261, 554: 261, 261, 261, 563: 261, 566: 261, 573: 261, 261, 261, 581: 261, 748: 261, 877: 261, 881: 261, 888: 261, 261}, + {260, 260, 52: 260, 152: 260, 554: 260, 260, 260, 563: 260, 566: 260, 573: 260, 260, 260, 581: 260, 748: 260, 877: 260, 881: 260, 888: 260, 260}, // 1145 - {240, 240, 52: 240, 549: 240, 240, 240, 558: 240, 561: 240, 568: 240, 240, 240, 575: 240, 872: 4077, 1414: 4076}, - {741: 4074}, - {552: 4061, 657: 4062, 4063, 982: 4075}, - {241, 241, 52: 241, 549: 241, 241, 241, 558: 241, 561: 241, 568: 241, 241, 241, 575: 241, 872: 241}, - {243, 243, 52: 243, 549: 243, 243, 243, 558: 243, 561: 243, 568: 243, 243, 243, 575: 243}, + {557: 4095, 662: 4096, 4097, 988: 4099}, + {266, 266, 52: 266, 152: 266, 554: 266, 266, 266, 563: 266, 566: 266, 573: 266, 266, 266, 581: 266, 748: 266, 877: 266, 881: 266, 888: 266, 266}, + {267, 267, 52: 267, 152: 267, 554: 267, 267, 267, 563: 267, 566: 267, 573: 267, 267, 267, 581: 267, 748: 267, 877: 267, 881: 267, 888: 267, 267}, + {557: 4095, 662: 4096, 4097, 988: 4102}, + {268, 268, 52: 268, 152: 268, 554: 268, 268, 268, 563: 268, 566: 268, 573: 268, 268, 268, 581: 268, 748: 268, 877: 268, 881: 268, 888: 268, 268}, // 1150 - {741: 4078}, - {552: 4061, 657: 4062, 4063, 982: 4079}, - {239, 239, 52: 239, 549: 239, 239, 239, 558: 239, 561: 239, 568: 239, 239, 239, 575: 239}, - {52: 4081}, - {1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 551: 1474, 1474, 1474, 555: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 568: 1474, 1474, 1474, 573: 1474, 1474, 1474, 577: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 599: 1474, 1474, 1474, 1474, 1474, 1474, 607: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 628: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 639: 1474, 1474, 1474, 1474, 1474, 1474, 647: 1474, 651: 1474, 1474, 1474, 1474, 676: 1474, 726: 1474}, + {270, 270, 52: 270, 152: 270, 554: 270, 270, 270, 563: 270, 566: 270, 573: 270, 270, 270, 581: 270, 748: 270, 877: 270, 881: 270, 888: 270, 270}, + {1084, 1084, 52: 1084, 554: 1084, 556: 1084, 563: 1084, 566: 1084, 574: 1084, 1084}, + {257, 257, 52: 257, 554: 257, 257, 257, 563: 257, 566: 257, 573: 257, 257, 257, 581: 257, 877: 257, 1504: 4106, 4107}, + {255, 255, 52: 255, 554: 255, 255, 255, 563: 255, 566: 255, 573: 255, 255, 255, 581: 255, 877: 4111, 1424: 4110}, + {746: 4108}, // 1155 - {1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 555: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 567: 1060, 1060, 1060, 1060, 573: 1060, 1060, 1060, 577: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 599: 1060, 1060, 1060, 1060, 1060, 1060, 607: 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 639: 1060, 1060, 1060, 1060, 1060, 1060, 647: 1060, 651: 1060, 1060, 1060, 1060, 668: 1060, 676: 1060, 726: 1060, 731: 1060, 823: 1060}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4085}, - {2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 551: 2197, 2197, 556: 2197, 558: 2197, 2197, 2197, 2197, 568: 2197, 2197, 2197, 573: 2197, 2197, 2197, 577: 2197, 2197, 2197, 581: 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 599: 2197, 2197, 2197, 2197, 604: 2197, 607: 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 626: 2197, 629: 2197, 2197, 639: 2197, 2197, 2197, 2197, 2197, 2197}, - {2235, 2235, 9: 2235, 52: 2235, 174: 2235, 561: 2235, 584: 2235, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {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, 53: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 550: 2211, 552: 2211, 2211, 2211, 559: 2211, 2211, 562: 2211, 2211, 2211, 566: 2211, 2211, 571: 2211, 2211, 576: 2211, 598: 2211, 605: 2211, 2211, 638: 2211, 645: 2211, 2211, 648: 2211, 2211, 2211, 655: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 664: 2211, 2211, 2211, 2211, 669: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 677: 2211, 679: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 706: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211}, + {557: 4095, 662: 4096, 4097, 988: 4109}, + {256, 256, 52: 256, 554: 256, 256, 256, 563: 256, 566: 256, 573: 256, 256, 256, 581: 256, 877: 256}, + {258, 258, 52: 258, 554: 258, 258, 258, 563: 258, 566: 258, 573: 258, 258, 258, 581: 258}, + {746: 4112}, + {557: 4095, 662: 4096, 4097, 988: 4113}, // 1160 - {550: 2207}, - {2: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 10: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 53: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 550: 2205, 552: 2205, 2205, 2205, 559: 2205, 2205, 562: 2205, 2205, 2205, 566: 2205, 2205, 571: 2205, 2205, 576: 2205, 598: 2205, 605: 2205, 2205, 638: 2205, 645: 2205, 2205, 648: 2205, 2205, 2205, 655: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 664: 2205, 2205, 2205, 2205, 669: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 677: 2205, 679: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 706: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205}, - {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, 550: 2203, 552: 2203, 2203, 2203, 559: 2203, 2203, 562: 2203, 2203, 2203, 566: 2203, 2203, 571: 2203, 2203, 576: 2203, 598: 2203, 605: 2203, 2203, 638: 2203, 645: 2203, 2203, 648: 2203, 2203, 2203, 655: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 664: 2203, 2203, 2203, 2203, 669: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 677: 2203, 679: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 706: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203}, - {2: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 10: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 53: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 550: 2201, 552: 2201, 2201, 2201, 559: 2201, 2201, 562: 2201, 2201, 2201, 566: 2201, 2201, 571: 2201, 2201, 576: 2201, 598: 2201, 605: 2201, 2201, 638: 2201, 645: 2201, 2201, 648: 2201, 2201, 2201, 655: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 664: 2201, 2201, 2201, 2201, 669: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 677: 2201, 679: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 706: 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201}, - {239: 4114, 566: 4115, 648: 4113, 4112}, + {254, 254, 52: 254, 554: 254, 254, 254, 563: 254, 566: 254, 573: 254, 254, 254, 581: 254}, + {52: 4115}, + {1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 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, 577: 1495, 579: 1495, 581: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 606: 1495, 1495, 1495, 1495, 612: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 633: 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 653: 1495, 656: 1495, 1495, 1495, 661: 1495, 681: 1495, 730: 1495}, + {1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 560: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 572: 1080, 1080, 1080, 1080, 577: 1080, 579: 1080, 581: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 606: 1080, 1080, 1080, 1080, 612: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 653: 1080, 656: 1080, 1080, 1080, 661: 1080, 680: 1080, 1080, 730: 1080, 736: 1080, 828: 1080}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4119}, // 1165 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 4106, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 4107, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 4105, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 735: 4108, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 4103, 1345: 4104}, - {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, 550: 2220, 552: 2220, 2220, 2220, 559: 2220, 2220, 562: 2220, 2220, 2220, 566: 2220, 2220, 571: 2220, 2220, 576: 2220, 598: 2220, 605: 2220, 2220, 638: 2220, 645: 2220, 2220, 648: 2220, 2220, 2220, 655: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 664: 2220, 2220, 2220, 2220, 669: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 677: 2220, 679: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 706: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 735: 2220}, - {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, 550: 2219, 552: 2219, 2219, 2219, 559: 2219, 2219, 562: 2219, 2219, 2219, 566: 2219, 2219, 571: 2219, 2219, 576: 2219, 598: 2219, 605: 2219, 2219, 638: 2219, 645: 2219, 2219, 648: 2219, 2219, 2219, 655: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 664: 2219, 2219, 2219, 2219, 669: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 677: 2219, 679: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 706: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 735: 2219}, - {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, 550: 2218, 552: 2218, 2218, 2218, 559: 2218, 2218, 562: 2218, 2218, 2218, 566: 2218, 2218, 571: 2218, 2218, 576: 2218, 598: 2218, 605: 2218, 2218, 638: 2218, 645: 2218, 2218, 648: 2218, 2218, 2218, 655: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 664: 2218, 2218, 2218, 2218, 669: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 677: 2218, 679: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 706: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 735: 2218}, - {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, 550: 2217, 552: 2217, 2217, 2217, 559: 2217, 2217, 562: 2217, 2217, 2217, 566: 2217, 2217, 571: 2217, 2217, 576: 2217, 598: 2217, 605: 2217, 2217, 638: 2217, 645: 2217, 2217, 648: 2217, 2217, 2217, 655: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 664: 2217, 2217, 2217, 2217, 669: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 677: 2217, 679: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 706: 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217, 735: 2217}, + {2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 556: 2223, 2223, 561: 2223, 563: 2223, 2223, 2223, 2223, 573: 2223, 2223, 2223, 577: 2223, 579: 2223, 581: 2223, 2223, 2223, 2223, 586: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 606: 2223, 2223, 609: 2223, 612: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 631: 2223, 634: 2223, 2223, 643: 2223, 2223, 2223, 2223, 2223, 2223}, + {2261, 2261, 9: 2261, 52: 2261, 177: 2261, 566: 2261, 589: 2261, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 10: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 53: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 555: 2237, 557: 2237, 2237, 2237, 564: 2237, 2237, 567: 2237, 2237, 2237, 571: 2237, 2237, 576: 2237, 578: 2237, 580: 2237, 605: 2237, 610: 2237, 2237, 649: 2237, 2237, 2237, 2237, 654: 2237, 2237, 659: 2237, 2237, 662: 2237, 2237, 2237, 2237, 2237, 2237, 669: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 682: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 721: 2237, 2237, 2237, 2237, 2237, 2237}, + {555: 2233}, + {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, 578: 2231, 580: 2231, 605: 2231, 610: 2231, 2231, 649: 2231, 2231, 2231, 2231, 654: 2231, 2231, 659: 2231, 2231, 662: 2231, 2231, 2231, 2231, 2231, 2231, 669: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 682: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 721: 2231, 2231, 2231, 2231, 2231, 2231}, // 1170 - {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, 550: 2216, 552: 2216, 2216, 2216, 559: 2216, 2216, 562: 2216, 2216, 2216, 566: 2216, 2216, 571: 2216, 2216, 576: 2216, 598: 2216, 605: 2216, 2216, 638: 2216, 645: 2216, 2216, 648: 2216, 2216, 2216, 655: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 664: 2216, 2216, 2216, 2216, 669: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 677: 2216, 679: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 706: 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 735: 2216}, - {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, 550: 2215, 552: 2215, 2215, 2215, 559: 2215, 2215, 562: 2215, 2215, 2215, 566: 2215, 2215, 571: 2215, 2215, 576: 2215, 598: 2215, 605: 2215, 2215, 638: 2215, 645: 2215, 2215, 648: 2215, 2215, 2215, 655: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 664: 2215, 2215, 2215, 2215, 669: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 677: 2215, 679: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 706: 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215, 735: 2215}, - {2: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 10: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 53: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 550: 2214, 552: 2214, 2214, 2214, 559: 2214, 2214, 562: 2214, 2214, 2214, 566: 2214, 2214, 571: 2214, 2214, 576: 2214, 598: 2214, 605: 2214, 2214, 638: 2214, 645: 2214, 2214, 648: 2214, 2214, 2214, 655: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 664: 2214, 2214, 2214, 2214, 669: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 677: 2214, 679: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 706: 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 735: 2214}, - {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, 53: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 550: 2213, 552: 2213, 2213, 2213, 559: 2213, 2213, 562: 2213, 2213, 2213, 566: 2213, 2213, 571: 2213, 2213, 576: 2213, 598: 2213, 605: 2213, 2213, 638: 2213, 645: 2213, 2213, 648: 2213, 2213, 2213, 655: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 664: 2213, 2213, 2213, 2213, 669: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 677: 2213, 679: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 706: 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 735: 2213}, - {239: 2210, 553: 3902, 555: 3901, 566: 2210, 648: 2210, 2210, 939: 4102}, + {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, 578: 2229, 580: 2229, 605: 2229, 610: 2229, 2229, 649: 2229, 2229, 2229, 2229, 654: 2229, 2229, 659: 2229, 2229, 662: 2229, 2229, 2229, 2229, 2229, 2229, 669: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 682: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 721: 2229, 2229, 2229, 2229, 2229, 2229}, + {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, 578: 2227, 580: 2227, 605: 2227, 610: 2227, 2227, 649: 2227, 2227, 2227, 2227, 654: 2227, 2227, 659: 2227, 2227, 662: 2227, 2227, 2227, 2227, 2227, 2227, 669: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 682: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 721: 2227, 2227, 2227, 2227, 2227, 2227}, + {242: 4148, 571: 4149, 651: 4147, 4146}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 4140, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 4141, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 4139, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 740: 4142, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 4137, 1355: 4138}, + {2: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 10: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 53: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 555: 2246, 557: 2246, 2246, 2246, 564: 2246, 2246, 567: 2246, 2246, 2246, 571: 2246, 2246, 576: 2246, 578: 2246, 580: 2246, 605: 2246, 610: 2246, 2246, 649: 2246, 2246, 2246, 2246, 654: 2246, 2246, 659: 2246, 2246, 662: 2246, 2246, 2246, 2246, 2246, 2246, 669: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 682: 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 721: 2246, 2246, 2246, 2246, 2246, 2246, 740: 2246}, // 1175 - {239: 2209, 566: 2209, 648: 2209, 2209}, - {2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 551: 2224, 2224, 556: 2224, 558: 2224, 2224, 2224, 2224, 568: 2224, 2224, 2224, 573: 2224, 2224, 2224, 577: 2224, 2224, 2224, 581: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 599: 2224, 2224, 2224, 2224, 604: 2224, 607: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 626: 2224, 629: 2224, 2224, 639: 2224, 2224, 2224, 2224, 2224, 2224}, - {550: 2980, 795: 4111}, - {968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 551: 968, 968, 968, 555: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 568: 968, 968, 968, 573: 968, 968, 968, 577: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 599: 968, 968, 968, 968, 968, 968, 607: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 628: 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 639: 968, 968, 968, 968, 968, 968, 647: 968, 651: 968, 968, 968, 968, 726: 968, 737: 4109}, - {2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2200, 2005, 2005, 2005, 555: 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 568: 2005, 2005, 2005, 573: 2005, 2005, 2005, 577: 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 599: 2005, 2005, 2005, 2005, 2005, 2005, 607: 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 628: 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 639: 2005, 2005, 2005, 2005, 2005, 2005, 647: 2005, 651: 2005, 2005, 2005, 2005, 726: 2005, 734: 2005, 738: 2005, 2005}, + {2: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 10: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 53: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 555: 2245, 557: 2245, 2245, 2245, 564: 2245, 2245, 567: 2245, 2245, 2245, 571: 2245, 2245, 576: 2245, 578: 2245, 580: 2245, 605: 2245, 610: 2245, 2245, 649: 2245, 2245, 2245, 2245, 654: 2245, 2245, 659: 2245, 2245, 662: 2245, 2245, 2245, 2245, 2245, 2245, 669: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 682: 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 721: 2245, 2245, 2245, 2245, 2245, 2245, 740: 2245}, + {2: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 10: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 53: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 555: 2244, 557: 2244, 2244, 2244, 564: 2244, 2244, 567: 2244, 2244, 2244, 571: 2244, 2244, 576: 2244, 578: 2244, 580: 2244, 605: 2244, 610: 2244, 2244, 649: 2244, 2244, 2244, 2244, 654: 2244, 2244, 659: 2244, 2244, 662: 2244, 2244, 2244, 2244, 2244, 2244, 669: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 682: 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 721: 2244, 2244, 2244, 2244, 2244, 2244, 740: 2244}, + {2: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 10: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 53: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 555: 2243, 557: 2243, 2243, 2243, 564: 2243, 2243, 567: 2243, 2243, 2243, 571: 2243, 2243, 576: 2243, 578: 2243, 580: 2243, 605: 2243, 610: 2243, 2243, 649: 2243, 2243, 2243, 2243, 654: 2243, 2243, 659: 2243, 2243, 662: 2243, 2243, 2243, 2243, 2243, 2243, 669: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 682: 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 721: 2243, 2243, 2243, 2243, 2243, 2243, 740: 2243}, + {2: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 10: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 53: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 555: 2242, 557: 2242, 2242, 2242, 564: 2242, 2242, 567: 2242, 2242, 2242, 571: 2242, 2242, 576: 2242, 578: 2242, 580: 2242, 605: 2242, 610: 2242, 2242, 649: 2242, 2242, 2242, 2242, 654: 2242, 2242, 659: 2242, 2242, 662: 2242, 2242, 2242, 2242, 2242, 2242, 669: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 682: 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 721: 2242, 2242, 2242, 2242, 2242, 2242, 740: 2242}, + {2: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 10: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 53: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 555: 2241, 557: 2241, 2241, 2241, 564: 2241, 2241, 567: 2241, 2241, 2241, 571: 2241, 2241, 576: 2241, 578: 2241, 580: 2241, 605: 2241, 610: 2241, 2241, 649: 2241, 2241, 2241, 2241, 654: 2241, 2241, 659: 2241, 2241, 662: 2241, 2241, 2241, 2241, 2241, 2241, 669: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 682: 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 721: 2241, 2241, 2241, 2241, 2241, 2241, 740: 2241}, // 1180 - {2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2199, 2004, 2004, 2004, 555: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 568: 2004, 2004, 2004, 573: 2004, 2004, 2004, 577: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 599: 2004, 2004, 2004, 2004, 2004, 2004, 607: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 628: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 639: 2004, 2004, 2004, 2004, 2004, 2004, 647: 2004, 651: 2004, 2004, 2004, 2004, 726: 2004, 734: 2004, 738: 2004, 2004}, - {550: 2198}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 4110}, - {2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 551: 2222, 2222, 556: 2222, 558: 2222, 2222, 2222, 2222, 568: 2222, 2222, 2222, 573: 2222, 2222, 2222, 577: 2222, 2222, 2222, 581: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 599: 2222, 2222, 2222, 2222, 604: 2222, 607: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 626: 2222, 629: 2222, 2222, 639: 2222, 2222, 2222, 2222, 2222, 2222}, - {2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 551: 2223, 2223, 556: 2223, 558: 2223, 2223, 2223, 2223, 568: 2223, 2223, 2223, 573: 2223, 2223, 2223, 577: 2223, 2223, 2223, 581: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 599: 2223, 2223, 2223, 2223, 604: 2223, 607: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 626: 2223, 629: 2223, 2223, 639: 2223, 2223, 2223, 2223, 2223, 2223}, + {2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 10: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 53: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 555: 2240, 557: 2240, 2240, 2240, 564: 2240, 2240, 567: 2240, 2240, 2240, 571: 2240, 2240, 576: 2240, 578: 2240, 580: 2240, 605: 2240, 610: 2240, 2240, 649: 2240, 2240, 2240, 2240, 654: 2240, 2240, 659: 2240, 2240, 662: 2240, 2240, 2240, 2240, 2240, 2240, 669: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 682: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 721: 2240, 2240, 2240, 2240, 2240, 2240, 740: 2240}, + {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, 53: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 555: 2239, 557: 2239, 2239, 2239, 564: 2239, 2239, 567: 2239, 2239, 2239, 571: 2239, 2239, 576: 2239, 578: 2239, 580: 2239, 605: 2239, 610: 2239, 2239, 649: 2239, 2239, 2239, 2239, 654: 2239, 2239, 659: 2239, 2239, 662: 2239, 2239, 2239, 2239, 2239, 2239, 669: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 682: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 721: 2239, 2239, 2239, 2239, 2239, 2239, 740: 2239}, + {242: 2236, 558: 3936, 560: 3935, 571: 2236, 651: 2236, 2236, 946: 4136}, + {242: 2235, 571: 2235, 651: 2235, 2235}, + {2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 556: 2250, 2250, 561: 2250, 563: 2250, 2250, 2250, 2250, 573: 2250, 2250, 2250, 577: 2250, 579: 2250, 581: 2250, 2250, 2250, 2250, 586: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 606: 2250, 2250, 609: 2250, 612: 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 631: 2250, 634: 2250, 2250, 643: 2250, 2250, 2250, 2250, 2250, 2250}, // 1185 - {2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 551: 2253, 2253, 556: 2253, 558: 2253, 2253, 2253, 2253, 568: 2253, 2253, 2253, 574: 2253, 2253, 577: 2253, 2253, 2253, 581: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 599: 2253, 2253, 2253, 2253, 604: 2253, 607: 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 626: 2253}, - {2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 551: 2252, 2252, 556: 2252, 558: 2252, 2252, 2252, 2252, 568: 2252, 2252, 2252, 574: 2252, 2252, 577: 2252, 2252, 2252, 581: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 599: 2252, 2252, 2252, 2252, 604: 2252, 607: 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 626: 2252}, - {2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 551: 2251, 2251, 556: 2251, 558: 2251, 2251, 2251, 2251, 568: 2251, 2251, 2251, 574: 2251, 2251, 577: 2251, 2251, 2251, 581: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 599: 2251, 2251, 2251, 2251, 604: 2251, 607: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 626: 2251}, - {2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 551: 2225, 2225, 556: 2225, 558: 2225, 2225, 2225, 2225, 568: 2225, 2225, 2225, 573: 2225, 2225, 2225, 577: 2225, 2225, 2225, 581: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 599: 2225, 2225, 2225, 2225, 604: 2225, 607: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 626: 2225, 629: 2225, 2225, 639: 2225, 2225, 2225, 2225, 2225, 2225}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 4119}, + {555: 3006, 800: 4145}, + {988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 556: 988, 988, 988, 560: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 573: 988, 988, 988, 577: 988, 579: 988, 581: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 606: 988, 988, 988, 988, 612: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 633: 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 653: 988, 656: 988, 988, 988, 661: 988, 730: 988, 744: 4143}, + {2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2226, 2031, 2031, 2031, 560: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 573: 2031, 2031, 2031, 577: 2031, 579: 2031, 581: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 606: 2031, 2031, 2031, 2031, 612: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 633: 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 653: 2031, 656: 2031, 2031, 2031, 661: 2031, 730: 2031, 739: 2031, 742: 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, 2225, 2030, 2030, 2030, 560: 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 573: 2030, 2030, 2030, 577: 2030, 579: 2030, 581: 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 606: 2030, 2030, 2030, 2030, 612: 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 633: 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 653: 2030, 656: 2030, 2030, 2030, 661: 2030, 730: 2030, 739: 2030, 742: 2030, 2030}, + {555: 2224}, // 1190 - {2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 550: 2678, 565: 2678, 572: 2678, 2678, 575: 2678, 577: 2678, 597: 2678, 605: 2678, 624: 2678, 728: 2678, 734: 4140, 737: 2678, 746: 2678, 2678, 749: 2678, 751: 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 763: 2678, 2678, 767: 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678}, - {9: 2675, 52: 2675}, - {9: 4120, 52: 4121}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4139}, - {380: 4122}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 4144}, + {2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 556: 2248, 2248, 561: 2248, 563: 2248, 2248, 2248, 2248, 573: 2248, 2248, 2248, 577: 2248, 579: 2248, 581: 2248, 2248, 2248, 2248, 586: 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 606: 2248, 2248, 609: 2248, 612: 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 631: 2248, 634: 2248, 2248, 643: 2248, 2248, 2248, 2248, 2248, 2248}, + {2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 556: 2249, 2249, 561: 2249, 563: 2249, 2249, 2249, 2249, 573: 2249, 2249, 2249, 577: 2249, 579: 2249, 581: 2249, 2249, 2249, 2249, 586: 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 606: 2249, 2249, 609: 2249, 612: 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 631: 2249, 634: 2249, 2249, 643: 2249, 2249, 2249, 2249, 2249, 2249}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2279, 2279, 561: 2279, 563: 2279, 2279, 2279, 2279, 573: 2279, 2279, 2279, 579: 2279, 581: 2279, 2279, 2279, 2279, 586: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 606: 2279, 2279, 609: 2279, 612: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 631: 2279}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2278, 2278, 561: 2278, 563: 2278, 2278, 2278, 2278, 573: 2278, 2278, 2278, 579: 2278, 581: 2278, 2278, 2278, 2278, 586: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 606: 2278, 2278, 609: 2278, 612: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 631: 2278}, // 1195 - {550: 4123}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 4124}, - {52: 2245, 551: 4127, 562: 3872, 3873, 3878, 580: 3874, 625: 4126, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871, 1393: 4125}, - {52: 4138}, - {197: 4131, 599: 4130}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2277, 2277, 561: 2277, 563: 2277, 2277, 2277, 2277, 573: 2277, 2277, 2277, 579: 2277, 581: 2277, 2277, 2277, 2277, 586: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 606: 2277, 2277, 609: 2277, 612: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 631: 2277}, + {2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 556: 2251, 2251, 561: 2251, 563: 2251, 2251, 2251, 2251, 573: 2251, 2251, 2251, 577: 2251, 579: 2251, 581: 2251, 2251, 2251, 2251, 586: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 606: 2251, 2251, 609: 2251, 612: 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 631: 2251, 634: 2251, 2251, 643: 2251, 2251, 2251, 2251, 2251, 2251}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 4153}, + {2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 555: 2704, 570: 2704, 577: 2704, 2704, 581: 2704, 2704, 602: 2704, 610: 2704, 629: 2704, 733: 2704, 739: 4174, 744: 2704, 751: 2704, 2704, 754: 2704, 756: 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 768: 2704, 2704, 772: 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704}, + {9: 2701, 52: 2701}, // 1200 - {173: 4128}, - {321: 4129}, - {52: 2241}, - {417: 4133}, - {279: 4132}, + {9: 4154, 52: 4155}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4173}, + {384: 4156}, + {555: 4157}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 4158}, // 1205 - {52: 2242}, - {279: 4134}, - {52: 2244, 551: 4135}, - {173: 4136}, - {321: 4137}, + {52: 2271, 556: 4161, 567: 3906, 3907, 3912, 585: 3908, 630: 4160, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905, 1403: 4159}, + {52: 4172}, + {201: 4165, 603: 4164}, + {176: 4162}, + {325: 4163}, // 1210 - {52: 2243}, - {2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 551: 2254, 2254, 556: 2254, 558: 2254, 2254, 2254, 2254, 568: 2254, 2254, 2254, 574: 2254, 2254, 577: 2254, 2254, 2254, 581: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 599: 2254, 2254, 2254, 2254, 604: 2254, 607: 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 626: 2254}, - {9: 2674, 52: 2674}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4141, 3121, 3122, 3120}, - {2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 550: 2677, 565: 2677, 572: 2677, 2677, 575: 2677, 577: 2677, 597: 2677, 605: 2677, 624: 2677, 728: 2677, 734: 4142, 737: 2677, 746: 2677, 2677, 749: 2677, 751: 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 763: 2677, 2677, 767: 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677}, + {52: 2267}, + {421: 4167}, + {284: 4166}, + {52: 2268}, + {284: 4168}, // 1215 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4143, 3121, 3122, 3120}, - {2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 550: 2676, 565: 2676, 572: 2676, 2676, 575: 2676, 577: 2676, 597: 2676, 605: 2676, 624: 2676, 728: 2676, 737: 2676, 746: 2676, 2676, 749: 2676, 751: 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 763: 2676, 2676, 767: 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676}, - {2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 551: 2255, 2255, 556: 2255, 558: 2255, 2255, 2255, 2255, 568: 2255, 2255, 2255, 574: 2255, 2255, 577: 2255, 2255, 2255, 581: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 599: 2255, 2255, 2255, 2255, 604: 2255, 607: 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 626: 2255, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4146, 3686, 3768, 3685, 3682}, - {52: 4147, 557: 3782, 726: 3783}, + {52: 2270, 556: 4169}, + {176: 4170}, + {325: 4171}, + {52: 2269}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2280, 2280, 561: 2280, 563: 2280, 2280, 2280, 2280, 573: 2280, 2280, 2280, 579: 2280, 581: 2280, 2280, 2280, 2280, 586: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 606: 2280, 2280, 609: 2280, 612: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 631: 2280}, // 1220 - {202: 1155, 568: 1155, 581: 4149, 840: 1155, 1431: 4148}, - {202: 4153, 568: 4154, 840: 1158, 1009: 4152}, - {10: 4150, 248: 4151}, - {202: 1154, 568: 1154, 840: 1154}, - {202: 1153, 568: 1153, 840: 1153}, + {9: 2700, 52: 2700}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4175, 3149, 3150, 3148}, + {2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 555: 2703, 570: 2703, 577: 2703, 2703, 581: 2703, 2703, 602: 2703, 610: 2703, 629: 2703, 733: 2703, 739: 4176, 744: 2703, 751: 2703, 2703, 754: 2703, 756: 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 768: 2703, 2703, 772: 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4177, 3149, 3150, 3148}, + {2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 555: 2702, 570: 2702, 577: 2702, 2702, 581: 2702, 2702, 602: 2702, 610: 2702, 629: 2702, 733: 2702, 744: 2702, 751: 2702, 2702, 754: 2702, 756: 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 768: 2702, 2702, 772: 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702}, // 1225 - {840: 4157, 853: 4158}, - {342: 4156}, - {342: 4155}, - {840: 1156}, - {840: 1157}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 556: 2281, 2281, 561: 2281, 563: 2281, 2281, 2281, 2281, 573: 2281, 2281, 2281, 579: 2281, 581: 2281, 2281, 2281, 2281, 586: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 606: 2281, 2281, 609: 2281, 612: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 631: 2281, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4180, 3719, 3801, 3718, 3715}, + {52: 4181, 562: 3815, 730: 3816}, + {207: 1175, 573: 1175, 586: 4183, 845: 1175, 1441: 4182}, + {207: 4187, 573: 4188, 845: 1178, 1015: 4186}, // 1230 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 4160, 791: 4159, 3121, 3122, 3120, 1047: 4162, 1332: 4163, 1537: 4161}, - {1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 551: 1164, 1164, 1164, 555: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 568: 1164, 1164, 1164, 573: 1164, 1164, 1164, 577: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 599: 1164, 1164, 1164, 1164, 1164, 1164, 607: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 628: 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 639: 1164, 1164, 1164, 1164, 1164, 1164, 647: 1164, 651: 1164, 1164, 1164, 1164, 676: 1164, 726: 1164}, - {1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 551: 1206, 1206, 1206, 555: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 568: 1206, 1206, 1206, 573: 1206, 1206, 1206, 577: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 599: 1206, 1206, 1206, 1206, 1206, 1206, 607: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 628: 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 639: 1206, 1206, 1206, 1206, 1206, 1206, 647: 1206, 651: 1206, 1206, 1206, 1206, 676: 1206, 726: 1206}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 1203, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 565: 1203, 584: 1203, 607: 1203, 610: 1203, 612: 1203, 791: 4159, 3121, 3122, 3120, 1047: 4166, 1430: 4165, 1538: 4164}, - {1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 551: 1177, 1177, 1177, 555: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 568: 1177, 1177, 1177, 573: 1177, 1177, 1177, 577: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 599: 1177, 1177, 1177, 1177, 1177, 1177, 607: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 628: 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 639: 1177, 1177, 1177, 1177, 1177, 1177, 647: 1177, 651: 1177, 1177, 1177, 1177, 676: 1177, 726: 1177}, + {10: 4184, 252: 4185}, + {207: 1174, 573: 1174, 845: 1174}, + {207: 1173, 573: 1173, 845: 1173}, + {845: 4191, 858: 4192}, + {346: 4190}, // 1235 - {1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 551: 1176, 1176, 1176, 555: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 568: 1176, 1176, 1176, 573: 1176, 1176, 1176, 577: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 599: 1176, 1176, 1176, 1176, 1176, 1176, 607: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 628: 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 639: 1176, 1176, 1176, 1176, 1176, 1176, 647: 1176, 651: 1176, 1176, 1176, 1176, 676: 1176, 726: 1176}, - {1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 551: 1175, 1175, 1175, 555: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 568: 1175, 1175, 1175, 573: 1175, 1175, 1175, 577: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 599: 1175, 1175, 1175, 1175, 1175, 1175, 607: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 628: 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 639: 1175, 1175, 1175, 1175, 1175, 1175, 647: 1175, 651: 1175, 1175, 1175, 1175, 676: 1175, 726: 1175}, - {52: 4213}, - {52: 1201, 565: 4168, 584: 1201, 607: 1201, 610: 1201, 612: 1201, 1434: 4167}, - {52: 1202, 565: 1202, 584: 1202, 607: 1202, 610: 1202, 612: 1202}, + {346: 4189}, + {845: 1176}, + {845: 1177}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 4194, 796: 4193, 3149, 3150, 3148, 1053: 4196, 1341: 4197, 1549: 4195}, + {1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 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, 577: 1184, 579: 1184, 581: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 606: 1184, 1184, 1184, 1184, 612: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 633: 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 653: 1184, 656: 1184, 1184, 1184, 661: 1184, 681: 1184, 730: 1184}, // 1240 - {52: 1199, 584: 4172, 607: 1199, 610: 1199, 612: 1199, 1439: 4171}, - {741: 4169}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3971, 997: 3973, 1022: 4170}, - {9: 3974, 52: 1200, 584: 1200, 607: 1200, 610: 1200, 612: 1200}, - {52: 1197, 607: 4177, 610: 4178, 612: 4179, 1438: 4175, 1536: 4176}, + {1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 556: 1226, 1226, 1226, 560: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 573: 1226, 1226, 1226, 577: 1226, 579: 1226, 581: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 606: 1226, 1226, 1226, 1226, 612: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 633: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 653: 1226, 656: 1226, 1226, 1226, 661: 1226, 681: 1226, 730: 1226}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 1223, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 570: 1223, 589: 1223, 612: 1223, 615: 1223, 617: 1223, 796: 4193, 3149, 3150, 3148, 1053: 4200, 1440: 4199, 1550: 4198}, + {1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 556: 1197, 1197, 1197, 560: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 573: 1197, 1197, 1197, 577: 1197, 579: 1197, 581: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 606: 1197, 1197, 1197, 1197, 612: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 633: 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 653: 1197, 656: 1197, 1197, 1197, 661: 1197, 681: 1197, 730: 1197}, + {1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 556: 1196, 1196, 1196, 560: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 573: 1196, 1196, 1196, 577: 1196, 579: 1196, 581: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 606: 1196, 1196, 1196, 1196, 612: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 633: 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 653: 1196, 656: 1196, 1196, 1196, 661: 1196, 681: 1196, 730: 1196}, + {1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 556: 1195, 1195, 1195, 560: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 573: 1195, 1195, 1195, 577: 1195, 579: 1195, 581: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 606: 1195, 1195, 1195, 1195, 612: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 633: 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 653: 1195, 656: 1195, 1195, 1195, 661: 1195, 681: 1195, 730: 1195}, // 1245 - {741: 4173}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3971, 997: 3973, 1022: 4174}, - {9: 3974, 52: 1198, 607: 1198, 610: 1198, 612: 1198}, - {52: 1204}, - {198: 4190, 222: 4186, 576: 4180, 647: 4191, 655: 4182, 4181, 660: 4189, 4188, 940: 4187, 1122: 4184, 1534: 4185, 4183}, + {52: 4247}, + {52: 1221, 570: 4202, 589: 1221, 612: 1221, 615: 1221, 617: 1221, 1444: 4201}, + {52: 1222, 570: 1222, 589: 1222, 612: 1222, 615: 1222, 617: 1222}, + {52: 1219, 589: 4206, 612: 1219, 615: 1219, 617: 1219, 1449: 4205}, + {746: 4203}, // 1250 - {198: 1195, 222: 1195, 576: 1195, 647: 1195, 655: 1195, 1195, 660: 1195, 1195}, - {198: 1194, 222: 1194, 576: 1194, 647: 1194, 655: 1194, 1194, 660: 1194, 1194}, - {198: 1193, 222: 1193, 576: 1193, 647: 1193, 655: 1193, 1193, 660: 1193, 1193}, - {2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 52: 2554, 182: 2554, 211: 2554, 549: 2554, 2554, 2554, 553: 2554, 2554, 2554, 2554, 2554, 2554, 565: 2554, 2554, 2554, 2554, 571: 2554, 2554, 585: 2554, 627: 2554, 663: 2554, 668: 2554, 678: 2554, 705: 2554, 723: 2554, 2554, 2554, 727: 2554, 2554, 2554}, - {2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 52: 2553, 182: 2553, 211: 2553, 256: 2553, 549: 2553, 2553, 2553, 553: 2553, 2553, 2553, 2553, 2553, 2553, 565: 2553, 2553, 2553, 2553, 571: 2553, 2553, 585: 2553, 627: 2553, 663: 2553, 668: 2553, 678: 2553, 705: 2553, 723: 2553, 2553, 2553, 727: 2553, 2553, 2553}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4005, 1003: 4007, 1027: 4204}, + {9: 4008, 52: 1220, 589: 1220, 612: 1220, 615: 1220, 617: 1220}, + {52: 1217, 612: 4211, 615: 4212, 617: 4213, 1448: 4209, 1548: 4210}, + {746: 4207}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4005, 1003: 4007, 1027: 4208}, // 1255 - {2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 52: 2552, 182: 2552, 211: 2552, 256: 2552, 549: 2552, 2552, 2552, 553: 2552, 2552, 2552, 2552, 2552, 2552, 565: 2552, 2552, 2552, 2552, 571: 2552, 2552, 585: 2552, 627: 2552, 663: 2552, 668: 2552, 678: 2552, 705: 2552, 723: 2552, 2552, 2552, 727: 2552, 2552, 2552}, - {52: 1196}, - {52: 1192}, - {52: 1191}, - {182: 4208}, + {9: 4008, 52: 1218, 612: 1218, 615: 1218, 617: 1218}, + {52: 1224}, + {202: 4224, 227: 4220, 580: 4214, 653: 4225, 659: 4216, 4215, 665: 4223, 4222, 936: 4221, 1127: 4218, 1546: 4219, 4217}, + {202: 1215, 227: 1215, 580: 1215, 653: 1215, 659: 1215, 1215, 665: 1215, 1215}, + {202: 1214, 227: 1214, 580: 1214, 653: 1214, 659: 1214, 1214, 665: 1214, 1214}, // 1260 - {182: 4206}, - {182: 4204}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4211}, - {659: 4210}, - {198: 4190, 222: 4192, 576: 4180, 655: 4182, 4181, 660: 4195, 4194, 940: 4193, 1122: 4197, 1331: 4196}, + {202: 1213, 227: 1213, 580: 1213, 653: 1213, 659: 1213, 1213, 665: 1213, 1213}, + {2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 52: 2580, 149: 2580, 173: 2580, 2580, 186: 2580, 216: 2580, 554: 2580, 2580, 2580, 558: 2580, 2580, 2580, 2580, 2580, 2580, 570: 2580, 2580, 2580, 2580, 576: 2580, 578: 2580, 590: 2580, 632: 2580, 668: 2580, 680: 2580, 720: 2580, 727: 2580, 2580, 2580, 731: 2580, 2580, 2580, 2580}, + {2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 52: 2579, 149: 2579, 173: 2579, 2579, 186: 2579, 216: 2579, 260: 2579, 554: 2579, 2579, 2579, 558: 2579, 2579, 2579, 2579, 2579, 2579, 570: 2579, 2579, 2579, 2579, 576: 2579, 578: 2579, 590: 2579, 632: 2579, 668: 2579, 680: 2579, 720: 2579, 727: 2579, 2579, 2579, 731: 2579, 2579, 2579, 2579}, + {2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 52: 2578, 149: 2578, 173: 2578, 2578, 186: 2578, 216: 2578, 260: 2578, 554: 2578, 2578, 2578, 558: 2578, 2578, 2578, 2578, 2578, 2578, 570: 2578, 2578, 2578, 2578, 576: 2578, 578: 2578, 590: 2578, 632: 2578, 668: 2578, 680: 2578, 720: 2578, 727: 2578, 2578, 2578, 731: 2578, 2578, 2578, 2578}, + {52: 1216}, // 1265 - {182: 4208, 211: 4209}, - {182: 4206, 211: 4207}, - {182: 4204, 211: 4205}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4200}, - {586: 4198}, + {52: 1212}, + {52: 1211}, + {186: 4242}, + {186: 4240}, + {186: 4238}, // 1270 - {52: 1184, 586: 1184}, - {198: 4190, 222: 4192, 576: 4180, 655: 4182, 4181, 660: 4195, 4194, 940: 4193, 1122: 4197, 1331: 4199}, - {52: 1185}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 4201}, - {182: 4202, 211: 4203}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4245}, + {664: 4244}, + {202: 4224, 227: 4226, 580: 4214, 659: 4216, 4215, 665: 4229, 4228, 936: 4227, 1127: 4231, 1340: 4230}, + {186: 4242, 216: 4243}, + {186: 4240, 216: 4241}, // 1275 - {52: 1187, 586: 1187}, - {52: 1180, 586: 1180}, - {52: 1188, 586: 1188}, - {52: 1181, 586: 1181}, - {52: 1189, 586: 1189}, + {186: 4238, 216: 4239}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4234}, + {591: 4232}, + {52: 1204, 591: 1204}, + {202: 4224, 227: 4226, 580: 4214, 659: 4216, 4215, 665: 4229, 4228, 936: 4227, 1127: 4231, 1340: 4233}, // 1280 - {52: 1182, 586: 1182}, - {52: 1190, 586: 1190}, - {52: 1183, 586: 1183}, - {52: 1186, 586: 1186}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 4212}, + {52: 1205}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 4235}, + {186: 4236, 216: 4237}, + {52: 1207, 591: 1207}, + {52: 1200, 591: 1200}, // 1285 - {182: 4202}, - {1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 551: 1205, 1205, 1205, 555: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 568: 1205, 1205, 1205, 573: 1205, 1205, 1205, 577: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 599: 1205, 1205, 1205, 1205, 1205, 1205, 607: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 628: 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 639: 1205, 1205, 1205, 1205, 1205, 1205, 647: 1205, 651: 1205, 1205, 1205, 1205, 676: 1205, 726: 1205}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4215}, - {2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 551: 2259, 2259, 556: 2259, 558: 2259, 2259, 2259, 2259, 568: 2259, 2259, 2259, 574: 2259, 2259, 577: 2259, 2259, 2259, 581: 2259, 2259, 2259, 2259, 2259, 3835, 3833, 3834, 3832, 3830, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 599: 2259, 2259, 2259, 2259, 604: 2259, 607: 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 626: 2259, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4217}, + {52: 1208, 591: 1208}, + {52: 1201, 591: 1201}, + {52: 1209, 591: 1209}, + {52: 1202, 591: 1202}, + {52: 1210, 591: 1210}, // 1290 - {52: 4218, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {202: 4153, 568: 4154, 840: 1158, 1009: 4219}, - {840: 4157, 853: 4220}, - {1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 551: 1165, 1165, 1165, 555: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 568: 1165, 1165, 1165, 573: 1165, 1165, 1165, 577: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 599: 1165, 1165, 1165, 1165, 1165, 1165, 607: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 628: 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 639: 1165, 1165, 1165, 1165, 1165, 1165, 647: 1165, 651: 1165, 1165, 1165, 1165, 676: 1165, 726: 1165}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4222}, + {52: 1203, 591: 1203}, + {52: 1206, 591: 1206}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 4246}, + {186: 4236}, + {1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 556: 1225, 1225, 1225, 560: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 573: 1225, 1225, 1225, 577: 1225, 579: 1225, 581: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 606: 1225, 1225, 1225, 1225, 612: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 633: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 653: 1225, 656: 1225, 1225, 1225, 661: 1225, 681: 1225, 730: 1225}, // 1295 - {52: 4223, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {202: 4153, 568: 4154, 840: 1158, 1009: 4224}, - {840: 4157, 853: 4225}, - {1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 551: 1166, 1166, 1166, 555: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 568: 1166, 1166, 1166, 573: 1166, 1166, 1166, 577: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 599: 1166, 1166, 1166, 1166, 1166, 1166, 607: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 628: 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 639: 1166, 1166, 1166, 1166, 1166, 1166, 647: 1166, 651: 1166, 1166, 1166, 1166, 676: 1166, 726: 1166}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4227}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4249}, + {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 556: 2285, 2285, 561: 2285, 563: 2285, 2285, 2285, 2285, 573: 2285, 2285, 2285, 579: 2285, 581: 2285, 2285, 2285, 2285, 586: 2285, 2285, 2285, 2285, 2285, 3869, 3867, 3868, 3866, 3864, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 606: 2285, 2285, 609: 2285, 612: 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 631: 2285, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4251}, + {52: 4252, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {207: 4187, 573: 4188, 845: 1178, 1015: 4253}, // 1300 - {9: 4229, 52: 1163, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829, 1249: 4228}, - {52: 4236}, - {576: 4180, 655: 4182, 4181, 661: 4231, 940: 4230}, - {9: 4233, 52: 1160, 1250: 4235}, - {9: 4233, 52: 1160, 1250: 4232}, + {845: 4191, 858: 4254}, + {1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 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, 577: 1185, 579: 1185, 581: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 606: 1185, 1185, 1185, 1185, 612: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 633: 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 653: 1185, 656: 1185, 1185, 1185, 661: 1185, 681: 1185, 730: 1185}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4256}, + {52: 4257, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {207: 4187, 573: 4188, 845: 1178, 1015: 4258}, // 1305 - {52: 1161}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4234}, - {52: 1159, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {52: 1162}, - {202: 4153, 568: 4154, 840: 1158, 1009: 4237}, + {845: 4191, 858: 4259}, + {1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 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, 577: 1186, 579: 1186, 581: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 606: 1186, 1186, 1186, 1186, 612: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 633: 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 653: 1186, 656: 1186, 1186, 1186, 661: 1186, 681: 1186, 730: 1186}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4261}, + {9: 4263, 52: 1183, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863, 1255: 4262}, + {52: 4270}, // 1310 - {840: 4157, 853: 4238}, - {1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 551: 1167, 1167, 1167, 555: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 568: 1167, 1167, 1167, 573: 1167, 1167, 1167, 577: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 599: 1167, 1167, 1167, 1167, 1167, 1167, 607: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 628: 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 639: 1167, 1167, 1167, 1167, 1167, 1167, 647: 1167, 651: 1167, 1167, 1167, 1167, 676: 1167, 726: 1167}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4240}, - {9: 4229, 52: 1163, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829, 1249: 4241}, - {52: 4242}, + {580: 4214, 659: 4216, 4215, 666: 4265, 936: 4264}, + {9: 4267, 52: 1180, 1256: 4269}, + {9: 4267, 52: 1180, 1256: 4266}, + {52: 1181}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4268}, // 1315 - {202: 4153, 568: 4154, 840: 1158, 1009: 4243}, - {840: 4157, 853: 4244}, - {1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 551: 1168, 1168, 1168, 555: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 568: 1168, 1168, 1168, 573: 1168, 1168, 1168, 577: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 599: 1168, 1168, 1168, 1168, 1168, 1168, 607: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 628: 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 639: 1168, 1168, 1168, 1168, 1168, 1168, 647: 1168, 651: 1168, 1168, 1168, 1168, 676: 1168, 726: 1168}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4246, 3686, 3768, 3685, 3682}, - {52: 4247, 557: 3782, 726: 3783}, + {52: 1179, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {52: 1182}, + {207: 4187, 573: 4188, 845: 1178, 1015: 4271}, + {845: 4191, 858: 4272}, + {1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 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, 577: 1187, 579: 1187, 581: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 606: 1187, 1187, 1187, 1187, 612: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 633: 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 653: 1187, 656: 1187, 1187, 1187, 661: 1187, 681: 1187, 730: 1187}, // 1320 - {840: 4157, 853: 4248}, - {1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 551: 1169, 1169, 1169, 555: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 568: 1169, 1169, 1169, 573: 1169, 1169, 1169, 577: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 599: 1169, 1169, 1169, 1169, 1169, 1169, 607: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 628: 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 639: 1169, 1169, 1169, 1169, 1169, 1169, 647: 1169, 651: 1169, 1169, 1169, 1169, 676: 1169, 726: 1169}, - {52: 4250}, - {840: 4157, 853: 4251}, - {1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 551: 1170, 1170, 1170, 555: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 568: 1170, 1170, 1170, 573: 1170, 1170, 1170, 577: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 599: 1170, 1170, 1170, 1170, 1170, 1170, 607: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 628: 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 639: 1170, 1170, 1170, 1170, 1170, 1170, 647: 1170, 651: 1170, 1170, 1170, 1170, 676: 1170, 726: 1170}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4274}, + {9: 4263, 52: 1183, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863, 1255: 4275}, + {52: 4276}, + {207: 4187, 573: 4188, 845: 1178, 1015: 4277}, + {845: 4191, 858: 4278}, // 1325 - {52: 4253}, - {840: 4157, 853: 4254}, - {1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 551: 1171, 1171, 1171, 555: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 568: 1171, 1171, 1171, 573: 1171, 1171, 1171, 577: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 599: 1171, 1171, 1171, 1171, 1171, 1171, 607: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 628: 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 639: 1171, 1171, 1171, 1171, 1171, 1171, 647: 1171, 651: 1171, 1171, 1171, 1171, 676: 1171, 726: 1171}, - {52: 4256}, - {840: 4157, 853: 4257}, + {1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 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, 577: 1188, 579: 1188, 581: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 606: 1188, 1188, 1188, 1188, 612: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 633: 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 653: 1188, 656: 1188, 1188, 1188, 661: 1188, 681: 1188, 730: 1188}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4280, 3719, 3801, 3718, 3715}, + {52: 4281, 562: 3815, 730: 3816}, + {845: 4191, 858: 4282}, + {1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 556: 1189, 1189, 1189, 560: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 573: 1189, 1189, 1189, 577: 1189, 579: 1189, 581: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 606: 1189, 1189, 1189, 1189, 612: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 633: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 653: 1189, 656: 1189, 1189, 1189, 661: 1189, 681: 1189, 730: 1189}, // 1330 - {1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 551: 1172, 1172, 1172, 555: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 568: 1172, 1172, 1172, 573: 1172, 1172, 1172, 577: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 599: 1172, 1172, 1172, 1172, 1172, 1172, 607: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 628: 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 639: 1172, 1172, 1172, 1172, 1172, 1172, 647: 1172, 651: 1172, 1172, 1172, 1172, 676: 1172, 726: 1172}, - {52: 4259}, - {840: 4157, 853: 4260}, - {1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 551: 1173, 1173, 1173, 555: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 568: 1173, 1173, 1173, 573: 1173, 1173, 1173, 577: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 599: 1173, 1173, 1173, 1173, 1173, 1173, 607: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 628: 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 639: 1173, 1173, 1173, 1173, 1173, 1173, 647: 1173, 651: 1173, 1173, 1173, 1173, 676: 1173, 726: 1173}, - {52: 4262}, + {52: 4284}, + {845: 4191, 858: 4285}, + {1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 556: 1190, 1190, 1190, 560: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 573: 1190, 1190, 1190, 577: 1190, 579: 1190, 581: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 606: 1190, 1190, 1190, 1190, 612: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 633: 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 653: 1190, 656: 1190, 1190, 1190, 661: 1190, 681: 1190, 730: 1190}, + {52: 4287}, + {845: 4191, 858: 4288}, // 1335 - {840: 4157, 853: 4263}, - {1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 551: 1174, 1174, 1174, 555: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 568: 1174, 1174, 1174, 573: 1174, 1174, 1174, 577: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 599: 1174, 1174, 1174, 1174, 1174, 1174, 607: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 628: 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 639: 1174, 1174, 1174, 1174, 1174, 1174, 647: 1174, 651: 1174, 1174, 1174, 1174, 676: 1174, 726: 1174}, - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4271, 4270}, - {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, 550: 1469, 552: 1469, 1469, 1469, 1469, 559: 1469, 1469, 562: 1469, 1469, 1469, 566: 1469, 1469, 571: 1469, 1469, 576: 1469, 580: 1469, 593: 1469, 598: 1469, 605: 1469, 1469, 627: 1469, 638: 1469, 645: 1469, 1469, 648: 1469, 1469, 1469, 655: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 664: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 677: 1469, 679: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 706: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 730: 1469, 735: 1469, 848: 1469, 1469, 852: 1469, 854: 1469, 856: 1469, 860: 1469, 869: 1469, 1469, 1469}, - {2: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 10: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 53: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 550: 1468, 552: 1468, 1468, 1468, 1468, 559: 1468, 1468, 562: 1468, 1468, 1468, 566: 1468, 1468, 571: 1468, 1468, 576: 1468, 580: 1468, 593: 1468, 598: 1468, 605: 1468, 1468, 627: 1468, 638: 1468, 645: 1468, 1468, 648: 1468, 1468, 1468, 655: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 664: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 677: 1468, 679: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 706: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 730: 1468, 735: 1468, 848: 1468, 1468, 852: 1468, 854: 1468, 856: 1468, 860: 1468, 869: 1468, 1468, 1468}, + {1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 556: 1191, 1191, 1191, 560: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 573: 1191, 1191, 1191, 577: 1191, 579: 1191, 581: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 606: 1191, 1191, 1191, 1191, 612: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 633: 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 653: 1191, 656: 1191, 1191, 1191, 661: 1191, 681: 1191, 730: 1191}, + {52: 4290}, + {845: 4191, 858: 4291}, + {1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 556: 1192, 1192, 1192, 560: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 573: 1192, 1192, 1192, 577: 1192, 579: 1192, 581: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 606: 1192, 1192, 1192, 1192, 612: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 633: 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 653: 1192, 656: 1192, 1192, 1192, 661: 1192, 681: 1192, 730: 1192}, + {52: 4293}, // 1340 - {2: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 10: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 53: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 550: 1467, 552: 1467, 1467, 1467, 1467, 559: 1467, 1467, 562: 1467, 1467, 1467, 566: 1467, 1467, 571: 1467, 1467, 576: 1467, 580: 1467, 593: 1467, 598: 1467, 605: 1467, 1467, 627: 1467, 638: 1467, 645: 1467, 1467, 648: 1467, 1467, 1467, 655: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 664: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 677: 1467, 679: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 706: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 730: 1467, 735: 1467, 848: 1467, 1467, 852: 1467, 854: 1467, 856: 1467, 860: 1467, 869: 1467, 1467, 1467}, - {2: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 10: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 53: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 550: 1466, 552: 1466, 1466, 1466, 1466, 559: 1466, 1466, 562: 1466, 1466, 1466, 566: 1466, 1466, 571: 1466, 1466, 576: 1466, 598: 1466, 605: 1466, 1466, 638: 1466, 645: 1466, 1466, 648: 1466, 1466, 1466, 655: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 664: 1466, 1466, 1466, 1466, 669: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 677: 1466, 679: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 706: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 730: 1466, 735: 4276}, - {2: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 10: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 53: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 550: 1464, 552: 1464, 1464, 1464, 1464, 559: 1464, 1464, 562: 1464, 1464, 1464, 566: 1464, 1464, 571: 1464, 1464, 576: 1464, 598: 1464, 605: 1464, 1464, 638: 1464, 645: 1464, 1464, 648: 1464, 1464, 1464, 655: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 664: 1464, 1464, 1464, 1464, 669: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 677: 1464, 679: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 706: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 730: 1464}, - {2: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 10: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 53: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 550: 1461, 552: 1461, 1461, 1461, 1461, 559: 1461, 1461, 562: 1461, 1461, 1461, 566: 1461, 1461, 571: 1461, 1461, 576: 1461, 598: 1461, 605: 1461, 1461, 638: 1461, 645: 1461, 1461, 648: 1461, 1461, 1461, 655: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 664: 1461, 1461, 1461, 1461, 669: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 677: 1461, 679: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 706: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 730: 1461}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4272}, + {845: 4191, 858: 4294}, + {1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 556: 1193, 1193, 1193, 560: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 573: 1193, 1193, 1193, 577: 1193, 579: 1193, 581: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 606: 1193, 1193, 1193, 1193, 612: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 633: 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 653: 1193, 656: 1193, 1193, 1193, 661: 1193, 681: 1193, 730: 1193}, + {52: 4296}, + {845: 4191, 858: 4297}, + {1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 556: 1194, 1194, 1194, 560: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 573: 1194, 1194, 1194, 577: 1194, 579: 1194, 581: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 606: 1194, 1194, 1194, 1194, 612: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 633: 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 653: 1194, 656: 1194, 1194, 1194, 661: 1194, 681: 1194, 730: 1194}, // 1345 - {52: 4273, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4274}, - {1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 551: 1345, 1345, 1345, 555: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 568: 1345, 1345, 1345, 573: 1345, 1345, 1345, 577: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 599: 1345, 1345, 1345, 1345, 1345, 1345, 607: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 628: 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 639: 1345, 1345, 1345, 1345, 1345, 1345, 647: 1345, 651: 1345, 1345, 1345, 1345, 676: 1345, 726: 1345}, - {1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 551: 1178, 1178, 1178, 555: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 568: 1178, 1178, 1178, 573: 1178, 1178, 1178, 577: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 599: 1178, 1178, 1178, 1178, 1178, 1178, 607: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 628: 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 639: 1178, 1178, 1178, 1178, 1178, 1178, 647: 1178, 651: 1178, 1178, 1178, 1178, 676: 1178, 726: 1178}, - {2: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 10: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 53: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 550: 1460, 552: 1460, 1460, 1460, 1460, 559: 1460, 1460, 562: 1460, 1460, 1460, 566: 1460, 1460, 571: 1460, 1460, 576: 1460, 598: 1460, 605: 1460, 1460, 638: 1460, 645: 1460, 1460, 648: 1460, 1460, 1460, 655: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 664: 1460, 1460, 1460, 1460, 669: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 677: 1460, 679: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 706: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 730: 1460}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4305, 4304}, + {2: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 10: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 53: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 555: 1490, 557: 1490, 1490, 1490, 1490, 564: 1490, 1490, 567: 1490, 1490, 1490, 571: 1490, 1490, 576: 1490, 578: 1490, 580: 1490, 585: 1490, 598: 1490, 605: 1490, 610: 1490, 1490, 632: 1490, 649: 1490, 1490, 1490, 1490, 654: 1490, 1490, 659: 1490, 1490, 662: 1490, 1490, 1490, 1490, 1490, 1490, 669: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 682: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 721: 1490, 1490, 1490, 1490, 1490, 1490, 735: 1490, 740: 1490, 853: 1490, 1490, 857: 1490, 859: 1490, 861: 1490, 865: 1490, 874: 1490, 1490, 1490}, + {2: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 10: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 53: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 555: 1489, 557: 1489, 1489, 1489, 1489, 564: 1489, 1489, 567: 1489, 1489, 1489, 571: 1489, 1489, 576: 1489, 578: 1489, 580: 1489, 585: 1489, 598: 1489, 605: 1489, 610: 1489, 1489, 632: 1489, 649: 1489, 1489, 1489, 1489, 654: 1489, 1489, 659: 1489, 1489, 662: 1489, 1489, 1489, 1489, 1489, 1489, 669: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 682: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 721: 1489, 1489, 1489, 1489, 1489, 1489, 735: 1489, 740: 1489, 853: 1489, 1489, 857: 1489, 859: 1489, 861: 1489, 865: 1489, 874: 1489, 1489, 1489}, + {2: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 10: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 53: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 555: 1488, 557: 1488, 1488, 1488, 1488, 564: 1488, 1488, 567: 1488, 1488, 1488, 571: 1488, 1488, 576: 1488, 578: 1488, 580: 1488, 585: 1488, 598: 1488, 605: 1488, 610: 1488, 1488, 632: 1488, 649: 1488, 1488, 1488, 1488, 654: 1488, 1488, 659: 1488, 1488, 662: 1488, 1488, 1488, 1488, 1488, 1488, 669: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 682: 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 721: 1488, 1488, 1488, 1488, 1488, 1488, 735: 1488, 740: 1488, 853: 1488, 1488, 857: 1488, 859: 1488, 861: 1488, 865: 1488, 874: 1488, 1488, 1488}, + {2: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 10: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 53: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 555: 1487, 557: 1487, 1487, 1487, 1487, 564: 1487, 1487, 567: 1487, 1487, 1487, 571: 1487, 1487, 576: 1487, 578: 1487, 580: 1487, 605: 1487, 610: 1487, 1487, 649: 1487, 1487, 1487, 1487, 654: 1487, 1487, 659: 1487, 1487, 662: 1487, 1487, 1487, 1487, 1487, 1487, 669: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 682: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 721: 1487, 1487, 1487, 1487, 1487, 1487, 735: 1487, 740: 4310}, // 1350 - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4278, 4270}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4279}, - {52: 4280, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4281}, - {1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 551: 1346, 1346, 1346, 555: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 568: 1346, 1346, 1346, 573: 1346, 1346, 1346, 577: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 599: 1346, 1346, 1346, 1346, 1346, 1346, 607: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 628: 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 639: 1346, 1346, 1346, 1346, 1346, 1346, 647: 1346, 651: 1346, 1346, 1346, 1346, 676: 1346, 726: 1346}, + {2: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 10: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 53: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 555: 1485, 557: 1485, 1485, 1485, 1485, 564: 1485, 1485, 567: 1485, 1485, 1485, 571: 1485, 1485, 576: 1485, 578: 1485, 580: 1485, 605: 1485, 610: 1485, 1485, 649: 1485, 1485, 1485, 1485, 654: 1485, 1485, 659: 1485, 1485, 662: 1485, 1485, 1485, 1485, 1485, 1485, 669: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 682: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 721: 1485, 1485, 1485, 1485, 1485, 1485, 735: 1485}, + {2: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 10: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 53: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 555: 1482, 557: 1482, 1482, 1482, 1482, 564: 1482, 1482, 567: 1482, 1482, 1482, 571: 1482, 1482, 576: 1482, 578: 1482, 580: 1482, 605: 1482, 610: 1482, 1482, 649: 1482, 1482, 1482, 1482, 654: 1482, 1482, 659: 1482, 1482, 662: 1482, 1482, 1482, 1482, 1482, 1482, 669: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 682: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 721: 1482, 1482, 1482, 1482, 1482, 1482, 735: 1482}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4306}, + {52: 4307, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4308}, // 1355 - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4283, 4270}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4284}, - {52: 4285, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4286}, - {1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 551: 1347, 1347, 1347, 555: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 568: 1347, 1347, 1347, 573: 1347, 1347, 1347, 577: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 599: 1347, 1347, 1347, 1347, 1347, 1347, 607: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 628: 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 639: 1347, 1347, 1347, 1347, 1347, 1347, 647: 1347, 651: 1347, 1347, 1347, 1347, 676: 1347, 726: 1347}, + {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 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, 577: 1365, 579: 1365, 581: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 606: 1365, 1365, 1365, 1365, 612: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 633: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 653: 1365, 656: 1365, 1365, 1365, 661: 1365, 681: 1365, 730: 1365}, + {1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 556: 1198, 1198, 1198, 560: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 573: 1198, 1198, 1198, 577: 1198, 579: 1198, 581: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 606: 1198, 1198, 1198, 1198, 612: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 633: 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 653: 1198, 656: 1198, 1198, 1198, 661: 1198, 681: 1198, 730: 1198}, + {2: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 10: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 53: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 555: 1481, 557: 1481, 1481, 1481, 1481, 564: 1481, 1481, 567: 1481, 1481, 1481, 571: 1481, 1481, 576: 1481, 578: 1481, 580: 1481, 605: 1481, 610: 1481, 1481, 649: 1481, 1481, 1481, 1481, 654: 1481, 1481, 659: 1481, 1481, 662: 1481, 1481, 1481, 1481, 1481, 1481, 669: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 682: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 721: 1481, 1481, 1481, 1481, 1481, 1481, 735: 1481}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4312, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4313}, // 1360 - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4288, 4270}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4289}, - {52: 4290, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4291}, - {1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 551: 1348, 1348, 1348, 555: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 568: 1348, 1348, 1348, 573: 1348, 1348, 1348, 577: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 599: 1348, 1348, 1348, 1348, 1348, 1348, 607: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 628: 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 639: 1348, 1348, 1348, 1348, 1348, 1348, 647: 1348, 651: 1348, 1348, 1348, 1348, 676: 1348, 726: 1348}, + {52: 4314, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4315}, + {1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 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, 577: 1366, 579: 1366, 581: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 606: 1366, 1366, 1366, 1366, 612: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 633: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 653: 1366, 656: 1366, 1366, 1366, 661: 1366, 681: 1366, 730: 1366}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4317, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4318}, // 1365 - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4293, 4270}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4294}, - {52: 4295, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4296}, - {1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 551: 1349, 1349, 1349, 555: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 568: 1349, 1349, 1349, 573: 1349, 1349, 1349, 577: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 599: 1349, 1349, 1349, 1349, 1349, 1349, 607: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 628: 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 639: 1349, 1349, 1349, 1349, 1349, 1349, 647: 1349, 651: 1349, 1349, 1349, 1349, 676: 1349, 726: 1349}, + {52: 4319, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4320}, + {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 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, 577: 1367, 579: 1367, 581: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 606: 1367, 1367, 1367, 1367, 612: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 633: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 653: 1367, 656: 1367, 1367, 1367, 661: 1367, 681: 1367, 730: 1367}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4322, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4323}, // 1370 - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4298, 4270}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4299}, - {52: 4300, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4301}, - {1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 551: 1350, 1350, 1350, 555: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 568: 1350, 1350, 1350, 573: 1350, 1350, 1350, 577: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 599: 1350, 1350, 1350, 1350, 1350, 1350, 607: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 628: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 639: 1350, 1350, 1350, 1350, 1350, 1350, 647: 1350, 651: 1350, 1350, 1350, 1350, 676: 1350, 726: 1350}, + {52: 4324, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4325}, + {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 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, 577: 1368, 579: 1368, 581: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 606: 1368, 1368, 1368, 1368, 612: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 633: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 653: 1368, 656: 1368, 1368, 1368, 661: 1368, 681: 1368, 730: 1368}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4327, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4328}, // 1375 - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4303, 4270}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4304}, - {52: 4305, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4306}, - {1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 551: 1351, 1351, 1351, 555: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 568: 1351, 1351, 1351, 573: 1351, 1351, 1351, 577: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 599: 1351, 1351, 1351, 1351, 1351, 1351, 607: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 628: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 639: 1351, 1351, 1351, 1351, 1351, 1351, 647: 1351, 651: 1351, 1351, 1351, 1351, 676: 1351, 726: 1351}, + {52: 4329, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4330}, + {1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 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, 577: 1369, 579: 1369, 581: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 606: 1369, 1369, 1369, 1369, 612: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 633: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 653: 1369, 656: 1369, 1369, 1369, 661: 1369, 681: 1369, 730: 1369}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4332, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4333}, // 1380 - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4308, 4270}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4309}, - {9: 4083, 52: 1523, 174: 1523, 584: 3947, 862: 4001, 931: 4310}, - {52: 1338, 174: 4312, 1432: 4311}, - {52: 4314}, + {52: 4334, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4335}, + {1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 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, 577: 1370, 579: 1370, 581: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 606: 1370, 1370, 1370, 1370, 612: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 633: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 653: 1370, 656: 1370, 1370, 1370, 661: 1370, 681: 1370, 730: 1370}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4337, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4338}, // 1385 - {552: 4313}, - {52: 1337}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4315}, - {1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 551: 1352, 1352, 1352, 555: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 568: 1352, 1352, 1352, 573: 1352, 1352, 1352, 577: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 599: 1352, 1352, 1352, 1352, 1352, 1352, 607: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 628: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 639: 1352, 1352, 1352, 1352, 1352, 1352, 647: 1352, 651: 1352, 1352, 1352, 1352, 676: 1352, 726: 1352}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 580: 4320, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4319, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4317, 848: 4265, 4266, 906: 4318}, + {52: 4339, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4340}, + {1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 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, 577: 1371, 579: 1371, 581: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 606: 1371, 1371, 1371, 1371, 612: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 633: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 653: 1371, 656: 1371, 1371, 1371, 661: 1371, 681: 1371, 730: 1371}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4342, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4343}, // 1390 - {52: 4328, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4326}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4323}, - {52: 4321}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4322}, + {9: 4117, 52: 1544, 177: 1544, 589: 3981, 867: 4035, 937: 4344}, + {52: 1358, 177: 4346, 1442: 4345}, + {52: 4348}, + {557: 4347}, + {52: 1357}, // 1395 - {1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 551: 1353, 1353, 1353, 555: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 568: 1353, 1353, 1353, 573: 1353, 1353, 1353, 577: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 599: 1353, 1353, 1353, 1353, 1353, 1353, 607: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 628: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 639: 1353, 1353, 1353, 1353, 1353, 1353, 647: 1353, 651: 1353, 1353, 1353, 1353, 676: 1353, 726: 1353}, - {52: 4324, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4325}, - {1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 551: 1355, 1355, 1355, 555: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 568: 1355, 1355, 1355, 573: 1355, 1355, 1355, 577: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 599: 1355, 1355, 1355, 1355, 1355, 1355, 607: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 628: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 639: 1355, 1355, 1355, 1355, 1355, 1355, 647: 1355, 651: 1355, 1355, 1355, 1355, 676: 1355, 726: 1355}, - {9: 4083, 52: 4327}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4349}, + {1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 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, 577: 1372, 579: 1372, 581: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 606: 1372, 1372, 1372, 1372, 612: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 633: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 653: 1372, 656: 1372, 1372, 1372, 661: 1372, 681: 1372, 730: 1372}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 585: 4354, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4353, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4351, 853: 4299, 4300, 911: 4352}, + {52: 4362, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4360}, // 1400 - {1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 551: 1356, 1356, 1356, 555: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 568: 1356, 1356, 1356, 573: 1356, 1356, 1356, 577: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 599: 1356, 1356, 1356, 1356, 1356, 1356, 607: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 628: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 639: 1356, 1356, 1356, 1356, 1356, 1356, 647: 1356, 651: 1356, 1356, 1356, 1356, 676: 1356, 726: 1356}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4329}, - {1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 551: 1354, 1354, 1354, 555: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 568: 1354, 1354, 1354, 573: 1354, 1354, 1354, 577: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 599: 1354, 1354, 1354, 1354, 1354, 1354, 607: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 628: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 639: 1354, 1354, 1354, 1354, 1354, 1354, 647: 1354, 651: 1354, 1354, 1354, 1354, 676: 1354, 726: 1354}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4332, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4331}, - {52: 4336, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4357}, + {52: 4355}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4356}, + {1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 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, 577: 1373, 579: 1373, 581: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 606: 1373, 1373, 1373, 1373, 612: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 633: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 653: 1373, 656: 1373, 1373, 1373, 661: 1373, 681: 1373, 730: 1373}, + {52: 4358, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1405 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4333}, - {52: 4334, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4335}, - {1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 551: 1357, 1357, 1357, 555: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 568: 1357, 1357, 1357, 573: 1357, 1357, 1357, 577: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 599: 1357, 1357, 1357, 1357, 1357, 1357, 607: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 628: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 639: 1357, 1357, 1357, 1357, 1357, 1357, 647: 1357, 651: 1357, 1357, 1357, 1357, 676: 1357, 726: 1357}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4337}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4359}, + {1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 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, 577: 1375, 579: 1375, 581: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 606: 1375, 1375, 1375, 1375, 612: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 633: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 653: 1375, 656: 1375, 1375, 1375, 661: 1375, 681: 1375, 730: 1375}, + {9: 4117, 52: 4361}, + {1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 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, 577: 1376, 579: 1376, 581: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 606: 1376, 1376, 1376, 1376, 612: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 633: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 653: 1376, 656: 1376, 1376, 1376, 661: 1376, 681: 1376, 730: 1376}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4363}, // 1410 - {1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 551: 1358, 1358, 1358, 555: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 568: 1358, 1358, 1358, 573: 1358, 1358, 1358, 577: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 599: 1358, 1358, 1358, 1358, 1358, 1358, 607: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 628: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 639: 1358, 1358, 1358, 1358, 1358, 1358, 647: 1358, 651: 1358, 1358, 1358, 1358, 676: 1358, 726: 1358}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4340, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4339}, - {52: 4344, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4341}, - {52: 4342, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 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, 577: 1374, 579: 1374, 581: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 606: 1374, 1374, 1374, 1374, 612: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 633: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 653: 1374, 656: 1374, 1374, 1374, 661: 1374, 681: 1374, 730: 1374}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4366, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4365}, + {52: 4370, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4367}, + {52: 4368, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1415 - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4343}, - {1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 551: 1359, 1359, 1359, 555: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 568: 1359, 1359, 1359, 573: 1359, 1359, 1359, 577: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 599: 1359, 1359, 1359, 1359, 1359, 1359, 607: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 628: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 639: 1359, 1359, 1359, 1359, 1359, 1359, 647: 1359, 651: 1359, 1359, 1359, 1359, 676: 1359, 726: 1359}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4345}, - {1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 551: 1360, 1360, 1360, 555: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 568: 1360, 1360, 1360, 573: 1360, 1360, 1360, 577: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 599: 1360, 1360, 1360, 1360, 1360, 1360, 607: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 628: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 639: 1360, 1360, 1360, 1360, 1360, 1360, 647: 1360, 651: 1360, 1360, 1360, 1360, 676: 1360, 726: 1360}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4348, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4347}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4369}, + {1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 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, 577: 1377, 579: 1377, 581: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 606: 1377, 1377, 1377, 1377, 612: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 633: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 653: 1377, 656: 1377, 1377, 1377, 661: 1377, 681: 1377, 730: 1377}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4371}, + {1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 556: 1378, 1378, 1378, 560: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 573: 1378, 1378, 1378, 577: 1378, 579: 1378, 581: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 606: 1378, 1378, 1378, 1378, 612: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 633: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 653: 1378, 656: 1378, 1378, 1378, 661: 1378, 681: 1378, 730: 1378}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4374, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4373}, // 1420 - {52: 4352, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4349}, - {52: 4350, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4351}, - {1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 551: 1361, 1361, 1361, 555: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 568: 1361, 1361, 1361, 573: 1361, 1361, 1361, 577: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 599: 1361, 1361, 1361, 1361, 1361, 1361, 607: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 628: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 639: 1361, 1361, 1361, 1361, 1361, 1361, 647: 1361, 651: 1361, 1361, 1361, 1361, 676: 1361, 726: 1361}, + {52: 4378, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4375}, + {52: 4376, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4377}, + {1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 556: 1379, 1379, 1379, 560: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 573: 1379, 1379, 1379, 577: 1379, 579: 1379, 581: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 606: 1379, 1379, 1379, 1379, 612: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 633: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 653: 1379, 656: 1379, 1379, 1379, 661: 1379, 681: 1379, 730: 1379}, // 1425 - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4353}, - {1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 551: 1362, 1362, 1362, 555: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 568: 1362, 1362, 1362, 573: 1362, 1362, 1362, 577: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 599: 1362, 1362, 1362, 1362, 1362, 1362, 607: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 628: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 639: 1362, 1362, 1362, 1362, 1362, 1362, 647: 1362, 651: 1362, 1362, 1362, 1362, 676: 1362, 726: 1362}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4355}, - {9: 4083, 52: 4356}, - {1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 551: 1363, 1363, 1363, 555: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 568: 1363, 1363, 1363, 573: 1363, 1363, 1363, 577: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 599: 1363, 1363, 1363, 1363, 1363, 1363, 607: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 628: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 639: 1363, 1363, 1363, 1363, 1363, 1363, 647: 1363, 651: 1363, 1363, 1363, 1363, 676: 1363, 726: 1363}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4379}, + {1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 556: 1380, 1380, 1380, 560: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 573: 1380, 1380, 1380, 577: 1380, 579: 1380, 581: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 606: 1380, 1380, 1380, 1380, 612: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 633: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 653: 1380, 656: 1380, 1380, 1380, 661: 1380, 681: 1380, 730: 1380}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4382, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4381}, + {52: 4386, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4383}, // 1430 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4358}, - {9: 4083, 52: 4359}, - {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 551: 1364, 1364, 1364, 555: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 568: 1364, 1364, 1364, 573: 1364, 1364, 1364, 577: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 599: 1364, 1364, 1364, 1364, 1364, 1364, 607: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 628: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 639: 1364, 1364, 1364, 1364, 1364, 1364, 647: 1364, 651: 1364, 1364, 1364, 1364, 676: 1364, 726: 1364}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4361}, - {9: 4362, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {52: 4384, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4385}, + {1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 556: 1381, 1381, 1381, 560: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 573: 1381, 1381, 1381, 577: 1381, 579: 1381, 581: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 606: 1381, 1381, 1381, 1381, 612: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 633: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 653: 1381, 656: 1381, 1381, 1381, 661: 1381, 681: 1381, 730: 1381}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4387}, + {1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 556: 1382, 1382, 1382, 560: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 573: 1382, 1382, 1382, 577: 1382, 579: 1382, 581: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 606: 1382, 1382, 1382, 1382, 612: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 633: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 653: 1382, 656: 1382, 1382, 1382, 661: 1382, 681: 1382, 730: 1382}, // 1435 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4363}, - {9: 4364, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4365}, - {52: 4366, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 551: 1380, 1380, 1380, 555: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 568: 1380, 1380, 1380, 573: 1380, 1380, 1380, 577: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 599: 1380, 1380, 1380, 1380, 1380, 1380, 607: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 628: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 639: 1380, 1380, 1380, 1380, 1380, 1380, 647: 1380, 651: 1380, 1380, 1380, 1380, 676: 1380, 726: 1380}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4389}, + {9: 4117, 52: 4390}, + {1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 556: 1383, 1383, 1383, 560: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 573: 1383, 1383, 1383, 577: 1383, 579: 1383, 581: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 606: 1383, 1383, 1383, 1383, 612: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 633: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 653: 1383, 656: 1383, 1383, 1383, 661: 1383, 681: 1383, 730: 1383}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4392}, + {9: 4117, 52: 4393}, // 1440 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4368, 1355: 4370, 1411: 4371, 1513: 4372, 4369}, - {52: 4380, 581: 4381, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 581: 4374, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4373}, - {2: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 10: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 53: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 550: 1371, 552: 1371, 1371, 1371, 1371, 559: 1371, 1371, 562: 1371, 1371, 1371, 566: 1371, 1371, 571: 1371, 1371, 576: 1371, 581: 1371, 598: 1371, 605: 1371, 1371, 638: 1371, 645: 1371, 1371, 648: 1371, 1371, 1371, 655: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 664: 1371, 1371, 1371, 1371, 669: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 677: 1371, 679: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 706: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 730: 1371}, - {2: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 10: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 53: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 550: 1370, 552: 1370, 1370, 1370, 1370, 559: 1370, 1370, 562: 1370, 1370, 1370, 566: 1370, 1370, 571: 1370, 1370, 576: 1370, 581: 1370, 598: 1370, 605: 1370, 1370, 638: 1370, 645: 1370, 1370, 648: 1370, 1370, 1370, 655: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 664: 1370, 1370, 1370, 1370, 669: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 677: 1370, 679: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 706: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 730: 1370}, + {1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 556: 1384, 1384, 1384, 560: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 573: 1384, 1384, 1384, 577: 1384, 579: 1384, 581: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 606: 1384, 1384, 1384, 1384, 612: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 633: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 653: 1384, 656: 1384, 1384, 1384, 661: 1384, 681: 1384, 730: 1384}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4395}, + {9: 4396, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4397}, + {9: 4398, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1445 - {2: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 10: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 53: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 550: 1369, 552: 1369, 1369, 1369, 1369, 559: 1369, 1369, 562: 1369, 1369, 1369, 566: 1369, 1369, 571: 1369, 1369, 576: 1369, 581: 1369, 598: 1369, 605: 1369, 1369, 638: 1369, 645: 1369, 1369, 648: 1369, 1369, 1369, 655: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 664: 1369, 1369, 1369, 1369, 669: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 677: 1369, 679: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 706: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 730: 1369}, - {581: 4377, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4375}, - {52: 4376, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 551: 1386, 1386, 1386, 555: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 568: 1386, 1386, 1386, 573: 1386, 1386, 1386, 577: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 599: 1386, 1386, 1386, 1386, 1386, 1386, 607: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 628: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 639: 1386, 1386, 1386, 1386, 1386, 1386, 647: 1386, 651: 1386, 1386, 1386, 1386, 676: 1386, 726: 1386}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4399}, + {52: 4400, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 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, 577: 1401, 579: 1401, 581: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 606: 1401, 1401, 1401, 1401, 612: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 633: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 653: 1401, 656: 1401, 1401, 1401, 661: 1401, 681: 1401, 730: 1401}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4402, 1365: 4404, 1421: 4405, 1525: 4406, 4403}, + {52: 4414, 586: 4415, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1450 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4378}, - {52: 4379, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 551: 1385, 1385, 1385, 555: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 568: 1385, 1385, 1385, 573: 1385, 1385, 1385, 577: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 599: 1385, 1385, 1385, 1385, 1385, 1385, 607: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 628: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 639: 1385, 1385, 1385, 1385, 1385, 1385, 647: 1385, 651: 1385, 1385, 1385, 1385, 676: 1385, 726: 1385}, - {1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 551: 1388, 1388, 1388, 555: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 568: 1388, 1388, 1388, 573: 1388, 1388, 1388, 577: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 599: 1388, 1388, 1388, 1388, 1388, 1388, 607: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 628: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 639: 1388, 1388, 1388, 1388, 1388, 1388, 647: 1388, 651: 1388, 1388, 1388, 1388, 676: 1388, 726: 1388}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4382}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 586: 4408, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4407}, + {2: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 10: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 53: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 555: 1391, 557: 1391, 1391, 1391, 1391, 564: 1391, 1391, 567: 1391, 1391, 1391, 571: 1391, 1391, 576: 1391, 578: 1391, 580: 1391, 586: 1391, 605: 1391, 610: 1391, 1391, 649: 1391, 1391, 1391, 1391, 654: 1391, 1391, 659: 1391, 1391, 662: 1391, 1391, 1391, 1391, 1391, 1391, 669: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 682: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 721: 1391, 1391, 1391, 1391, 1391, 1391, 735: 1391}, + {2: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 10: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 53: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 555: 1390, 557: 1390, 1390, 1390, 1390, 564: 1390, 1390, 567: 1390, 1390, 1390, 571: 1390, 1390, 576: 1390, 578: 1390, 580: 1390, 586: 1390, 605: 1390, 610: 1390, 1390, 649: 1390, 1390, 1390, 1390, 654: 1390, 1390, 659: 1390, 1390, 662: 1390, 1390, 1390, 1390, 1390, 1390, 669: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 682: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 721: 1390, 1390, 1390, 1390, 1390, 1390, 735: 1390}, + {2: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 10: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 53: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 555: 1389, 557: 1389, 1389, 1389, 1389, 564: 1389, 1389, 567: 1389, 1389, 1389, 571: 1389, 1389, 576: 1389, 578: 1389, 580: 1389, 586: 1389, 605: 1389, 610: 1389, 1389, 649: 1389, 1389, 1389, 1389, 654: 1389, 1389, 659: 1389, 1389, 662: 1389, 1389, 1389, 1389, 1389, 1389, 669: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 682: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 721: 1389, 1389, 1389, 1389, 1389, 1389, 735: 1389}, + {586: 4411, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1455 - {52: 4383, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 551: 1387, 1387, 1387, 555: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 568: 1387, 1387, 1387, 573: 1387, 1387, 1387, 577: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 599: 1387, 1387, 1387, 1387, 1387, 1387, 607: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 628: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 639: 1387, 1387, 1387, 1387, 1387, 1387, 647: 1387, 651: 1387, 1387, 1387, 1387, 676: 1387, 726: 1387}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4385}, - {9: 4386, 581: 4387, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4393}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4409}, + {52: 4410, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 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, 577: 1407, 579: 1407, 581: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 606: 1407, 1407, 1407, 1407, 612: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 633: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 653: 1407, 656: 1407, 1407, 1407, 661: 1407, 681: 1407, 730: 1407}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4412}, + {52: 4413, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1460 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4388}, - {52: 4389, 578: 4390, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 551: 1393, 1393, 1393, 555: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 568: 1393, 1393, 1393, 573: 1393, 1393, 1393, 577: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 599: 1393, 1393, 1393, 1393, 1393, 1393, 607: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 628: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 639: 1393, 1393, 1393, 1393, 1393, 1393, 647: 1393, 651: 1393, 1393, 1393, 1393, 676: 1393, 726: 1393}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4391}, - {52: 4392, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 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, 577: 1406, 579: 1406, 581: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 606: 1406, 1406, 1406, 1406, 612: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 633: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 653: 1406, 656: 1406, 1406, 1406, 661: 1406, 681: 1406, 730: 1406}, + {1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 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, 577: 1409, 579: 1409, 581: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 606: 1409, 1409, 1409, 1409, 612: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 633: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 653: 1409, 656: 1409, 1409, 1409, 661: 1409, 681: 1409, 730: 1409}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4416}, + {52: 4417, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 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, 577: 1408, 579: 1408, 581: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 606: 1408, 1408, 1408, 1408, 612: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 633: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 653: 1408, 656: 1408, 1408, 1408, 661: 1408, 681: 1408, 730: 1408}, // 1465 - {1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 551: 1391, 1391, 1391, 555: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 568: 1391, 1391, 1391, 573: 1391, 1391, 1391, 577: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 599: 1391, 1391, 1391, 1391, 1391, 1391, 607: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 628: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 639: 1391, 1391, 1391, 1391, 1391, 1391, 647: 1391, 651: 1391, 1391, 1391, 1391, 676: 1391, 726: 1391}, - {9: 4395, 52: 4394, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 551: 1394, 1394, 1394, 555: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 568: 1394, 1394, 1394, 573: 1394, 1394, 1394, 577: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 599: 1394, 1394, 1394, 1394, 1394, 1394, 607: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 628: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 639: 1394, 1394, 1394, 1394, 1394, 1394, 647: 1394, 651: 1394, 1394, 1394, 1394, 676: 1394, 726: 1394}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4396}, - {52: 4397, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4419}, + {9: 4420, 586: 4421, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4427}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4422}, + {52: 4423, 583: 4424, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1470 - {1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 551: 1392, 1392, 1392, 555: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 568: 1392, 1392, 1392, 573: 1392, 1392, 1392, 577: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 599: 1392, 1392, 1392, 1392, 1392, 1392, 607: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 628: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 639: 1392, 1392, 1392, 1392, 1392, 1392, 647: 1392, 651: 1392, 1392, 1392, 1392, 676: 1392, 726: 1392}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 4399}, - {562: 3872, 3873, 3878, 580: 3874, 625: 4400, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4401}, - {52: 4402, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 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, 577: 1414, 579: 1414, 581: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 606: 1414, 1414, 1414, 1414, 612: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 633: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 653: 1414, 656: 1414, 1414, 1414, 661: 1414, 681: 1414, 730: 1414}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4425}, + {52: 4426, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 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, 577: 1412, 579: 1412, 581: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 606: 1412, 1412, 1412, 1412, 612: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 633: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 653: 1412, 656: 1412, 1412, 1412, 661: 1412, 681: 1412, 730: 1412}, + {9: 4429, 52: 4428, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1475 - {1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 551: 1395, 1395, 1395, 555: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 568: 1395, 1395, 1395, 573: 1395, 1395, 1395, 577: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 599: 1395, 1395, 1395, 1395, 1395, 1395, 607: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 628: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 639: 1395, 1395, 1395, 1395, 1395, 1395, 647: 1395, 651: 1395, 1395, 1395, 1395, 676: 1395, 726: 1395}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 907: 3837, 921: 4404}, - {581: 4405}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4406}, - {52: 4407, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 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, 577: 1415, 579: 1415, 581: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 606: 1415, 1415, 1415, 1415, 612: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 633: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 653: 1415, 656: 1415, 1415, 1415, 661: 1415, 681: 1415, 730: 1415}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4430}, + {52: 4431, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 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, 577: 1413, 579: 1413, 581: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 606: 1413, 1413, 1413, 1413, 612: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 633: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 653: 1413, 656: 1413, 1413, 1413, 661: 1413, 681: 1413, 730: 1413}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 4433}, // 1480 - {1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 551: 1397, 1397, 1397, 555: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 568: 1397, 1397, 1397, 573: 1397, 1397, 1397, 577: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 599: 1397, 1397, 1397, 1397, 1397, 1397, 607: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 628: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 639: 1397, 1397, 1397, 1397, 1397, 1397, 647: 1397, 651: 1397, 1397, 1397, 1397, 676: 1397, 726: 1397}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4409}, - {9: 4410, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {660: 4411}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4412}, + {567: 3906, 3907, 3912, 585: 3908, 630: 4434, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4435}, + {52: 4436, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 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, 577: 1416, 579: 1416, 581: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 606: 1416, 1416, 1416, 1416, 612: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 633: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 653: 1416, 656: 1416, 1416, 1416, 661: 1416, 681: 1416, 730: 1416}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 912: 3871, 926: 4438}, // 1485 - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 4413}, - {52: 4414}, - {1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 551: 1398, 1398, 1398, 555: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 568: 1398, 1398, 1398, 573: 1398, 1398, 1398, 577: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 599: 1398, 1398, 1398, 1398, 1398, 1398, 607: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 628: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 639: 1398, 1398, 1398, 1398, 1398, 1398, 647: 1398, 651: 1398, 1398, 1398, 1398, 676: 1398, 726: 1398}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4416}, - {9: 4417, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {586: 4439}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4440}, + {52: 4441, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 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, 577: 1418, 579: 1418, 581: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 606: 1418, 1418, 1418, 1418, 612: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 633: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 653: 1418, 656: 1418, 1418, 1418, 661: 1418, 681: 1418, 730: 1418}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4443}, // 1490 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 4419, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4418}, - {52: 4423, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 1450, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4420}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 4421}, - {52: 4422, 562: 3866}, + {9: 4444, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {665: 4445}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4446}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 4447}, + {52: 4448}, // 1495 - {1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 551: 1399, 1399, 1399, 555: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 568: 1399, 1399, 1399, 573: 1399, 1399, 1399, 577: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 599: 1399, 1399, 1399, 1399, 1399, 1399, 607: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 628: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 639: 1399, 1399, 1399, 1399, 1399, 1399, 647: 1399, 651: 1399, 1399, 1399, 1399, 676: 1399, 726: 1399}, - {1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 551: 1400, 1400, 1400, 555: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 568: 1400, 1400, 1400, 573: 1400, 1400, 1400, 577: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 599: 1400, 1400, 1400, 1400, 1400, 1400, 607: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 628: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 639: 1400, 1400, 1400, 1400, 1400, 1400, 647: 1400, 651: 1400, 1400, 1400, 1400, 676: 1400, 726: 1400}, - {52: 2228, 576: 4426, 1204: 4425, 4427}, - {52: 2227}, - {52: 2226}, + {1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 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, 577: 1419, 579: 1419, 581: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 606: 1419, 1419, 1419, 1419, 612: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 633: 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 653: 1419, 656: 1419, 1419, 1419, 661: 1419, 681: 1419, 730: 1419}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4450}, + {9: 4451, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 4453, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4452}, + {52: 4457, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1500 - {52: 4428}, - {1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 551: 1401, 1401, 1401, 555: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 568: 1401, 1401, 1401, 573: 1401, 1401, 1401, 577: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 599: 1401, 1401, 1401, 1401, 1401, 1401, 607: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 628: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 639: 1401, 1401, 1401, 1401, 1401, 1401, 647: 1401, 651: 1401, 1401, 1401, 1401, 676: 1401, 726: 1401}, - {52: 2228, 576: 4426, 1204: 4425, 4430}, - {52: 4431}, - {1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 551: 1402, 1402, 1402, 555: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 568: 1402, 1402, 1402, 573: 1402, 1402, 1402, 577: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 599: 1402, 1402, 1402, 1402, 1402, 1402, 607: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 628: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 639: 1402, 1402, 1402, 1402, 1402, 1402, 647: 1402, 651: 1402, 1402, 1402, 1402, 676: 1402, 726: 1402}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 1471, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4454}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 4455}, + {52: 4456, 567: 3900}, + {1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 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, 577: 1420, 579: 1420, 581: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 606: 1420, 1420, 1420, 1420, 612: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 633: 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 653: 1420, 656: 1420, 1420, 1420, 661: 1420, 681: 1420, 730: 1420}, + {1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 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, 577: 1421, 579: 1421, 581: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 606: 1421, 1421, 1421, 1421, 612: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 633: 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 653: 1421, 656: 1421, 1421, 1421, 661: 1421, 681: 1421, 730: 1421}, // 1505 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 4433}, - {9: 4434, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 4435}, - {52: 4436, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 551: 1404, 1404, 1404, 555: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 568: 1404, 1404, 1404, 573: 1404, 1404, 1404, 577: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 599: 1404, 1404, 1404, 1404, 1404, 1404, 607: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 628: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 639: 1404, 1404, 1404, 1404, 1404, 1404, 647: 1404, 651: 1404, 1404, 1404, 1404, 676: 1404, 726: 1404}, + {52: 2254, 580: 4460, 1210: 4459, 4461}, + {52: 2253}, + {52: 2252}, + {52: 4462}, + {1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 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, 577: 1422, 579: 1422, 581: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 606: 1422, 1422, 1422, 1422, 612: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 633: 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 653: 1422, 656: 1422, 1422, 1422, 661: 1422, 681: 1422, 730: 1422}, // 1510 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 4439}, - {9: 4083, 52: 2229}, - {52: 4440}, - {1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 551: 1405, 1405, 1405, 555: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 568: 1405, 1405, 1405, 573: 1405, 1405, 1405, 577: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 599: 1405, 1405, 1405, 1405, 1405, 1405, 607: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 628: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 639: 1405, 1405, 1405, 1405, 1405, 1405, 647: 1405, 651: 1405, 1405, 1405, 1405, 676: 1405, 726: 1405}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4442}, + {52: 2254, 580: 4460, 1210: 4459, 4464}, + {52: 4465}, + {1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 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, 577: 1423, 579: 1423, 581: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 606: 1423, 1423, 1423, 1423, 612: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 633: 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 653: 1423, 656: 1423, 1423, 1423, 661: 1423, 681: 1423, 730: 1423}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 4467}, + {9: 4468, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, // 1515 - {9: 4083, 52: 4443, 561: 4444}, - {1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 551: 1410, 1410, 1410, 555: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 568: 1410, 1410, 1410, 573: 1410, 1410, 1410, 577: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 599: 1410, 1410, 1410, 1410, 1410, 1410, 607: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 628: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 639: 1410, 1410, 1410, 1410, 1410, 1410, 647: 1410, 651: 1410, 1410, 1410, 1410, 676: 1410, 726: 1410}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 4445}, - {52: 4448}, - {977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 52: 977, 143: 977, 170: 977, 549: 977, 977, 977, 553: 977, 977, 977, 977, 977, 977, 565: 977, 977, 977, 977, 571: 977, 977, 575: 977, 585: 977, 605: 977, 627: 977, 663: 977, 668: 977, 678: 977, 705: 977, 723: 977, 977, 977, 727: 977, 977, 977, 736: 977, 742: 977}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 4469}, + {52: 4470, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 556: 1425, 1425, 1425, 560: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 573: 1425, 1425, 1425, 577: 1425, 579: 1425, 581: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 606: 1425, 1425, 1425, 1425, 612: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 633: 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 653: 1425, 656: 1425, 1425, 1425, 661: 1425, 681: 1425, 730: 1425}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 4473}, + {9: 4117, 52: 2255}, // 1520 - {976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 52: 976, 143: 976, 170: 976, 549: 976, 976, 976, 553: 976, 976, 976, 976, 976, 976, 565: 976, 976, 976, 976, 571: 976, 976, 575: 976, 585: 976, 605: 976, 627: 976, 663: 976, 668: 976, 678: 976, 705: 976, 723: 976, 976, 976, 727: 976, 976, 976, 736: 976, 742: 976}, - {1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 551: 1409, 1409, 1409, 555: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 568: 1409, 1409, 1409, 573: 1409, 1409, 1409, 577: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 599: 1409, 1409, 1409, 1409, 1409, 1409, 607: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 628: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 639: 1409, 1409, 1409, 1409, 1409, 1409, 647: 1409, 651: 1409, 1409, 1409, 1409, 676: 1409, 726: 1409}, - {1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 551: 1411, 1411, 1411, 555: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 568: 1411, 1411, 1411, 573: 1411, 1411, 1411, 577: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 599: 1411, 1411, 1411, 1411, 1411, 1411, 607: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 628: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 639: 1411, 1411, 1411, 1411, 1411, 1411, 647: 1411, 651: 1411, 1411, 1411, 1411, 676: 1411, 726: 1411}, - {52: 4451, 576: 4452}, - {1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 551: 1333, 1333, 1333, 555: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 568: 1333, 1333, 1333, 573: 1333, 1333, 1333, 577: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 599: 1333, 1333, 1333, 1333, 1333, 1333, 607: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 628: 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 639: 1333, 1333, 1333, 1333, 1333, 1333, 647: 1333, 651: 1333, 1333, 1333, 1333, 676: 1333, 726: 1333}, + {52: 4474}, + {1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 556: 1426, 1426, 1426, 560: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 573: 1426, 1426, 1426, 577: 1426, 579: 1426, 581: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 606: 1426, 1426, 1426, 1426, 612: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 633: 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 653: 1426, 656: 1426, 1426, 1426, 661: 1426, 681: 1426, 730: 1426}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4476}, + {9: 4117, 52: 4477, 566: 4478}, + {1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 556: 1431, 1431, 1431, 560: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 573: 1431, 1431, 1431, 577: 1431, 579: 1431, 581: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 606: 1431, 1431, 1431, 1431, 612: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 633: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 653: 1431, 656: 1431, 1431, 1431, 661: 1431, 681: 1431, 730: 1431}, // 1525 - {52: 4453}, - {1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 551: 1332, 1332, 1332, 555: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 568: 1332, 1332, 1332, 573: 1332, 1332, 1332, 577: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 599: 1332, 1332, 1332, 1332, 1332, 1332, 607: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 628: 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 639: 1332, 1332, 1332, 1332, 1332, 1332, 647: 1332, 651: 1332, 1332, 1332, 1332, 676: 1332, 726: 1332}, - {52: 4455}, - {1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 551: 1412, 1412, 1412, 555: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 568: 1412, 1412, 1412, 573: 1412, 1412, 1412, 577: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 599: 1412, 1412, 1412, 1412, 1412, 1412, 607: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 628: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 639: 1412, 1412, 1412, 1412, 1412, 1412, 647: 1412, 651: 1412, 1412, 1412, 1412, 676: 1412, 726: 1412}, - {52: 4458}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 4479}, + {52: 4482}, + {997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 52: 997, 144: 997, 172: 997, 554: 997, 997, 997, 558: 997, 997, 997, 997, 997, 997, 570: 997, 997, 997, 997, 576: 997, 578: 997, 581: 997, 590: 997, 610: 997, 632: 997, 668: 997, 680: 997, 720: 997, 727: 997, 997, 997, 731: 997, 997, 997, 997, 741: 997, 748: 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, 52: 996, 144: 996, 172: 996, 554: 996, 996, 996, 558: 996, 996, 996, 996, 996, 996, 570: 996, 996, 996, 996, 576: 996, 578: 996, 581: 996, 590: 996, 610: 996, 632: 996, 668: 996, 680: 996, 720: 996, 727: 996, 996, 996, 731: 996, 996, 996, 996, 741: 996, 748: 996}, + {1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 556: 1430, 1430, 1430, 560: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 573: 1430, 1430, 1430, 577: 1430, 579: 1430, 581: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 606: 1430, 1430, 1430, 1430, 612: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 633: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 653: 1430, 656: 1430, 1430, 1430, 661: 1430, 681: 1430, 730: 1430}, // 1530 - {1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 551: 1413, 1413, 1413, 555: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 568: 1413, 1413, 1413, 573: 1413, 1413, 1413, 577: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 599: 1413, 1413, 1413, 1413, 1413, 1413, 607: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 628: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 639: 1413, 1413, 1413, 1413, 1413, 1413, 647: 1413, 651: 1413, 1413, 1413, 1413, 676: 1413, 726: 1413}, - {1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 551: 1427, 1427, 1427, 555: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 568: 1427, 1427, 1427, 573: 1427, 1427, 1427, 577: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 599: 1427, 1427, 1427, 1427, 1427, 1427, 607: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 628: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 639: 1427, 1427, 1427, 1427, 1427, 1427, 647: 1427, 651: 1427, 1427, 1427, 1427, 676: 1427, 726: 1427, 732: 1427, 737: 1427, 744: 1427}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 4460}, - {52: 4461}, - {1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 551: 1414, 1414, 1414, 555: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 568: 1414, 1414, 1414, 573: 1414, 1414, 1414, 577: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 599: 1414, 1414, 1414, 1414, 1414, 1414, 607: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 628: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 639: 1414, 1414, 1414, 1414, 1414, 1414, 647: 1414, 651: 1414, 1414, 1414, 1414, 676: 1414, 726: 1414}, + {1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 556: 1432, 1432, 1432, 560: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 573: 1432, 1432, 1432, 577: 1432, 579: 1432, 581: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 606: 1432, 1432, 1432, 1432, 612: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 633: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 653: 1432, 656: 1432, 1432, 1432, 661: 1432, 681: 1432, 730: 1432}, + {52: 4485, 580: 4486}, + {1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 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, 577: 1353, 579: 1353, 581: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 606: 1353, 1353, 1353, 1353, 612: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 633: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 653: 1353, 656: 1353, 1353, 1353, 661: 1353, 681: 1353, 730: 1353}, + {52: 4487}, + {1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 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, 577: 1352, 579: 1352, 581: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 606: 1352, 1352, 1352, 1352, 612: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 633: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 653: 1352, 656: 1352, 1352, 1352, 661: 1352, 681: 1352, 730: 1352}, // 1535 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 4463}, - {52: 4464}, - {1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 551: 1415, 1415, 1415, 555: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 568: 1415, 1415, 1415, 573: 1415, 1415, 1415, 577: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 599: 1415, 1415, 1415, 1415, 1415, 1415, 607: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 628: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 639: 1415, 1415, 1415, 1415, 1415, 1415, 647: 1415, 651: 1415, 1415, 1415, 1415, 676: 1415, 726: 1415}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4466}, - {9: 4467, 561: 4468, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {52: 4489}, + {1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 556: 1433, 1433, 1433, 560: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 573: 1433, 1433, 1433, 577: 1433, 579: 1433, 581: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 606: 1433, 1433, 1433, 1433, 612: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 633: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 653: 1433, 656: 1433, 1433, 1433, 661: 1433, 681: 1433, 730: 1433}, + {52: 4492}, + {1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 556: 1434, 1434, 1434, 560: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 573: 1434, 1434, 1434, 577: 1434, 579: 1434, 581: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 606: 1434, 1434, 1434, 1434, 612: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 633: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 653: 1434, 656: 1434, 1434, 1434, 661: 1434, 681: 1434, 730: 1434}, + {1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 556: 1448, 1448, 1448, 560: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 573: 1448, 1448, 1448, 577: 1448, 579: 1448, 581: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 606: 1448, 1448, 1448, 1448, 612: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 633: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 653: 1448, 656: 1448, 1448, 1448, 661: 1448, 681: 1448, 730: 1448, 737: 1448, 744: 1448, 749: 1448}, // 1540 - {60: 4479, 128: 4475, 177: 4481, 186: 4476, 4474, 192: 4478, 194: 4485, 572: 4487, 605: 4472, 728: 4486, 751: 4482, 4483, 755: 4477, 758: 4484, 838: 4480, 977: 4473, 1145: 4471}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 4469}, - {52: 4470}, - {1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 551: 1476, 1476, 1476, 555: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 568: 1476, 1476, 1476, 573: 1476, 1476, 1476, 577: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 599: 1476, 1476, 1476, 1476, 1476, 1476, 607: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 628: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 639: 1476, 1476, 1476, 1476, 1476, 1476, 647: 1476, 651: 1476, 1476, 1476, 1476, 676: 1476, 726: 1476}, - {52: 4530}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 4494}, + {52: 4495}, + {1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 556: 1435, 1435, 1435, 560: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 573: 1435, 1435, 1435, 577: 1435, 579: 1435, 581: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 606: 1435, 1435, 1435, 1435, 612: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 633: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 653: 1435, 656: 1435, 1435, 1435, 661: 1435, 681: 1435, 730: 1435}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 4497}, + {52: 4498}, // 1545 - {52: 482, 550: 4495, 736: 482, 861: 4496, 905: 4529}, - {16: 482, 52: 482, 550: 4495, 572: 482, 605: 482, 728: 482, 736: 482, 861: 4496, 905: 4514}, - {52: 1293, 736: 1293}, - {52: 1292, 736: 1292}, - {52: 482, 550: 4495, 736: 482, 861: 4496, 905: 4513}, + {1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 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, 577: 1436, 579: 1436, 581: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 606: 1436, 1436, 1436, 1436, 612: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 633: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 653: 1436, 656: 1436, 1436, 1436, 661: 1436, 681: 1436, 730: 1436}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4500}, + {9: 4501, 566: 4502, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {61: 4513, 128: 4509, 181: 4515, 190: 4510, 4508, 196: 4512, 198: 4519, 578: 4521, 610: 4506, 733: 4520, 756: 4516, 4517, 760: 4511, 763: 4518, 843: 4514, 983: 4507, 1151: 4505}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 4503}, // 1550 - {52: 475, 550: 4500, 736: 475, 861: 4501, 1025: 4512, 1033: 4502}, - {52: 482, 550: 4495, 736: 482, 861: 4496, 905: 4511}, - {52: 549, 736: 549, 756: 4508, 4509, 1246: 4510}, - {52: 549, 736: 549, 756: 4508, 4509, 1246: 4507}, - {52: 1286, 736: 1286}, + {52: 4504}, + {1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 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, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 573: 1497, 1497, 1497, 577: 1497, 579: 1497, 581: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 606: 1497, 1497, 1497, 1497, 612: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 633: 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 653: 1497, 656: 1497, 1497, 1497, 661: 1497, 681: 1497, 730: 1497}, + {52: 4564}, + {52: 497, 555: 4529, 741: 497, 866: 4530, 910: 4563}, + {16: 497, 52: 497, 555: 4529, 578: 497, 610: 497, 733: 497, 741: 497, 866: 4530, 910: 4548}, // 1555 - {52: 1285, 736: 1285}, - {52: 475, 550: 4500, 736: 475, 861: 4501, 1025: 4499, 1033: 4502}, - {52: 1283, 736: 1283}, - {52: 469, 550: 469, 629: 4489, 736: 469, 1251: 4488}, - {16: 520, 52: 520, 550: 520, 572: 520, 605: 520, 728: 520, 736: 520}, + {52: 1313, 741: 1313}, + {52: 1312, 741: 1312}, + {52: 497, 555: 4529, 741: 497, 866: 4530, 910: 4547}, + {52: 490, 555: 4534, 741: 490, 866: 4535, 1030: 4546, 1038: 4536}, + {52: 497, 555: 4529, 741: 497, 866: 4530, 910: 4545}, // 1560 - {16: 519, 52: 519, 550: 519, 572: 519, 605: 519, 728: 519, 736: 519}, - {52: 482, 550: 4495, 736: 482, 861: 4496, 905: 4494}, - {751: 4491, 4490}, - {630: 4493}, - {630: 4492}, + {52: 564, 741: 564, 761: 4542, 4543, 1252: 4544}, + {52: 564, 741: 564, 761: 4542, 4543, 1252: 4541}, + {52: 1306, 741: 1306}, + {52: 1305, 741: 1305}, + {52: 490, 555: 4534, 741: 490, 866: 4535, 1030: 4533, 1038: 4536}, // 1565 - {467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 52: 467, 549: 467, 467, 553: 467, 467, 467, 467, 467, 565: 467, 467, 663: 467, 678: 467, 705: 467, 723: 467, 467, 467, 727: 467, 736: 467}, - {468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 52: 468, 549: 468, 468, 553: 468, 468, 468, 468, 468, 565: 468, 468, 663: 468, 678: 468, 705: 468, 723: 468, 468, 468, 727: 468, 736: 468}, - {52: 1282, 736: 1282}, - {576: 3107, 819: 3956, 834: 4497}, - {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, 549: 481, 553: 481, 481, 481, 481, 481, 565: 481, 481, 572: 481, 597: 481, 605: 481, 624: 481, 663: 481, 678: 481, 705: 481, 723: 481, 481, 481, 727: 481, 481, 736: 481, 838: 481, 481}, + {52: 1303, 741: 1303}, + {52: 484, 555: 484, 634: 4523, 741: 484, 1257: 4522}, + {16: 535, 52: 535, 555: 535, 578: 535, 610: 535, 733: 535, 741: 535}, + {16: 534, 52: 534, 555: 534, 578: 534, 610: 534, 733: 534, 741: 534}, + {52: 497, 555: 4529, 741: 497, 866: 4530, 910: 4528}, // 1570 - {52: 4498}, - {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, 549: 483, 553: 483, 483, 483, 483, 483, 565: 483, 483, 572: 483, 597: 483, 605: 483, 624: 483, 663: 483, 678: 483, 705: 483, 723: 483, 483, 483, 727: 483, 483, 736: 483, 838: 483, 483}, - {52: 1284, 736: 1284}, - {576: 3107, 819: 3956, 834: 4503}, - {474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 52: 474, 60: 474, 549: 474, 553: 474, 474, 474, 474, 474, 565: 474, 474, 663: 474, 678: 474, 705: 474, 723: 474, 474, 474, 727: 474, 736: 474, 838: 474, 474}, + {756: 4525, 4524}, + {635: 4527}, + {635: 4526}, + {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 554: 482, 482, 558: 482, 482, 482, 482, 482, 570: 482, 482, 668: 482, 720: 482, 727: 482, 482, 482, 731: 482, 482, 741: 482}, + {483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 52: 483, 554: 483, 483, 558: 483, 483, 483, 483, 483, 570: 483, 483, 668: 483, 720: 483, 727: 483, 483, 483, 731: 483, 483, 741: 483}, // 1575 - {473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 52: 473, 60: 473, 549: 473, 553: 473, 473, 473, 473, 473, 565: 473, 473, 663: 473, 678: 473, 705: 473, 723: 473, 473, 473, 727: 473, 736: 473, 838: 473, 473}, - {9: 4504, 52: 4498}, - {576: 3107, 819: 3956, 834: 4505}, - {52: 4506}, - {472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 52: 472, 60: 472, 549: 472, 553: 472, 472, 472, 472, 472, 565: 472, 472, 663: 472, 678: 472, 705: 472, 723: 472, 472, 472, 727: 472, 736: 472, 838: 472, 472}, + {52: 1302, 741: 1302}, + {580: 3135, 824: 3990, 839: 4531}, + {496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 16: 496, 52: 496, 61: 496, 167: 496, 496, 171: 496, 554: 496, 558: 496, 496, 496, 496, 496, 570: 496, 496, 578: 496, 602: 496, 610: 496, 629: 496, 668: 496, 720: 496, 727: 496, 496, 496, 731: 496, 496, 496, 741: 496, 843: 496, 496}, + {52: 4532}, + {498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 16: 498, 52: 498, 61: 498, 167: 498, 498, 171: 498, 554: 498, 558: 498, 498, 498, 498, 498, 570: 498, 498, 578: 498, 602: 498, 610: 498, 629: 498, 668: 498, 720: 498, 727: 498, 498, 498, 731: 498, 498, 498, 741: 498, 843: 498, 498}, // 1580 - {52: 1287, 736: 1287}, - {52: 548, 736: 548}, - {52: 547, 736: 547}, - {52: 1288, 736: 1288}, - {52: 1289, 736: 1289}, + {52: 1304, 741: 1304}, + {580: 3135, 824: 3990, 839: 4537}, + {489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 52: 489, 61: 489, 554: 489, 558: 489, 489, 489, 489, 489, 570: 489, 489, 668: 489, 720: 489, 727: 489, 489, 489, 731: 489, 489, 741: 489, 843: 489, 489}, + {488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 52: 488, 61: 488, 554: 488, 558: 488, 488, 488, 488, 488, 570: 488, 488, 668: 488, 720: 488, 727: 488, 488, 488, 731: 488, 488, 741: 488, 843: 488, 488}, + {9: 4538, 52: 4532}, // 1585 - {52: 1290, 736: 1290}, - {52: 1291, 736: 1291}, - {16: 4519, 52: 466, 572: 4520, 605: 4516, 728: 4518, 736: 466, 873: 4517, 916: 4515}, - {52: 1294, 736: 1294}, - {463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 16: 4519, 52: 463, 549: 463, 553: 463, 463, 463, 463, 463, 565: 463, 463, 572: 4520, 663: 463, 678: 463, 705: 463, 723: 463, 463, 463, 727: 463, 4518, 736: 463, 873: 4527, 1429: 4526}, + {580: 3135, 824: 3990, 839: 4539}, + {52: 4540}, + {487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 52: 487, 61: 487, 554: 487, 558: 487, 487, 487, 487, 487, 570: 487, 487, 668: 487, 720: 487, 727: 487, 487, 487, 731: 487, 487, 741: 487, 843: 487, 487}, + {52: 1307, 741: 1307}, + {52: 563, 741: 563}, // 1590 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 4523}, - {575: 4522}, - {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, 552: 460, 554: 460, 573: 460, 583: 460, 603: 460, 605: 460}, - {575: 4521}, - {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, 552: 459, 554: 459, 573: 459, 583: 459, 603: 459, 605: 459}, + {52: 562, 741: 562}, + {52: 1308, 741: 1308}, + {52: 1309, 741: 1309}, + {52: 1310, 741: 1310}, + {52: 1311, 741: 1311}, // 1595 - {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, 552: 461, 554: 461, 573: 461, 583: 461, 603: 461, 605: 461}, - {471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 52: 471, 549: 471, 553: 471, 471, 471, 471, 471, 565: 471, 471, 605: 4524, 663: 471, 678: 471, 705: 471, 723: 471, 471, 471, 727: 471, 736: 471, 1428: 4525}, - {470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 52: 470, 549: 470, 553: 470, 470, 470, 470, 470, 565: 470, 470, 663: 470, 678: 470, 705: 470, 723: 470, 470, 470, 727: 470, 736: 470}, - {464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 52: 464, 549: 464, 553: 464, 464, 464, 464, 464, 565: 464, 464, 663: 464, 678: 464, 705: 464, 723: 464, 464, 464, 727: 464, 736: 464}, - {465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 52: 465, 549: 465, 553: 465, 465, 465, 465, 465, 565: 465, 465, 663: 465, 678: 465, 705: 465, 723: 465, 465, 465, 727: 465, 736: 465}, + {16: 4553, 52: 481, 578: 4554, 610: 4550, 733: 4552, 741: 481, 878: 4551, 921: 4549}, + {52: 1314, 741: 1314}, + {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 16: 4553, 52: 478, 554: 478, 558: 478, 478, 478, 478, 478, 570: 478, 478, 578: 4554, 668: 478, 720: 478, 727: 478, 478, 478, 731: 478, 478, 4552, 741: 478, 878: 4561, 1439: 4560}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 4557}, + {581: 4556}, // 1600 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 4528}, - {462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 52: 462, 549: 462, 553: 462, 462, 462, 462, 462, 565: 462, 462, 663: 462, 678: 462, 705: 462, 723: 462, 462, 462, 727: 462, 736: 462}, - {52: 1295, 736: 1295}, - {1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 551: 1477, 1477, 1477, 555: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 568: 1477, 1477, 1477, 573: 1477, 1477, 1477, 577: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 599: 1477, 1477, 1477, 1477, 1477, 1477, 607: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 628: 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 1477, 639: 1477, 1477, 1477, 1477, 1477, 1477, 647: 1477, 651: 1477, 1477, 1477, 1477, 676: 1477, 726: 1477}, - {586: 3835, 3833, 3834, 3832, 3830, 608: 1301, 820: 3831, 3829}, + {475, 475, 475, 475, 475, 475, 475, 475, 475, 10: 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 53: 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 557: 475, 559: 475, 577: 475, 588: 475, 608: 475, 610: 475}, + {581: 4555}, + {474, 474, 474, 474, 474, 474, 474, 474, 474, 10: 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 53: 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 557: 474, 559: 474, 577: 474, 588: 474, 608: 474, 610: 474}, + {476, 476, 476, 476, 476, 476, 476, 476, 476, 10: 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 53: 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 557: 476, 559: 476, 577: 476, 588: 476, 608: 476, 610: 476}, + {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, 610: 4558, 668: 486, 720: 486, 727: 486, 486, 486, 731: 486, 486, 741: 486, 1438: 4559}, // 1605 - {608: 4535, 1329: 4534, 1531: 4533}, - {114: 1297, 608: 4535, 4541, 1329: 4540, 1380: 4539}, - {114: 1300, 608: 1300, 1300}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4536}, - {586: 3835, 3833, 3834, 3832, 3830, 626: 4537, 820: 3831, 3829}, + {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, 720: 485, 727: 485, 485, 485, 731: 485, 485, 741: 485}, + {479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 52: 479, 554: 479, 558: 479, 479, 479, 479, 479, 570: 479, 479, 668: 479, 720: 479, 727: 479, 479, 479, 731: 479, 479, 741: 479}, + {480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 52: 480, 554: 480, 558: 480, 480, 480, 480, 480, 570: 480, 480, 668: 480, 720: 480, 727: 480, 480, 480, 731: 480, 480, 741: 480}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 4562}, + {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 554: 477, 558: 477, 477, 477, 477, 477, 570: 477, 477, 668: 477, 720: 477, 727: 477, 477, 477, 731: 477, 477, 741: 477}, // 1610 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4538}, - {114: 1298, 586: 3835, 3833, 3834, 3832, 3830, 608: 1298, 1298, 820: 3831, 3829}, - {114: 4543}, - {114: 1299, 608: 1299, 1299}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4542}, + {52: 1315, 741: 1315}, + {1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 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, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 573: 1498, 1498, 1498, 577: 1498, 579: 1498, 581: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 606: 1498, 1498, 1498, 1498, 612: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 633: 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 653: 1498, 656: 1498, 1498, 1498, 661: 1498, 681: 1498, 730: 1498}, + {591: 3869, 3867, 3868, 3866, 3864, 613: 1321, 826: 3865, 3863}, + {613: 4569, 1338: 4568, 1543: 4567}, + {114: 1317, 613: 4569, 4575, 1338: 4574, 1390: 4573}, // 1615 - {114: 1296, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 551: 1478, 1478, 1478, 555: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 568: 1478, 1478, 1478, 573: 1478, 1478, 1478, 577: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 599: 1478, 1478, 1478, 1478, 1478, 1478, 607: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 628: 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 639: 1478, 1478, 1478, 1478, 1478, 1478, 647: 1478, 651: 1478, 1478, 1478, 1478, 676: 1478, 726: 1478}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4545}, - {556: 4546, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {60: 4479, 128: 4475, 177: 4481, 186: 4476, 4474, 192: 4478, 194: 4485, 572: 4487, 605: 4472, 728: 4486, 751: 4482, 4483, 755: 4477, 758: 4484, 838: 4480, 977: 4473, 1145: 4547}, + {114: 1320, 613: 1320, 1320}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4570}, + {591: 3869, 3867, 3868, 3866, 3864, 631: 4571, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4572}, + {114: 1318, 591: 3869, 3867, 3868, 3866, 3864, 613: 1318, 1318, 826: 3865, 3863}, // 1620 - {52: 1471, 736: 4549, 1346: 4548}, - {52: 4550}, - {52: 1470}, - {1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 551: 1479, 1479, 1479, 555: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 568: 1479, 1479, 1479, 573: 1479, 1479, 1479, 577: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 599: 1479, 1479, 1479, 1479, 1479, 1479, 607: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 628: 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 639: 1479, 1479, 1479, 1479, 1479, 1479, 647: 1479, 651: 1479, 1479, 1479, 1479, 676: 1479, 726: 1479}, - {1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 551: 1480, 1480, 1480, 555: 1480, 1480, 3782, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 568: 1480, 1480, 1480, 573: 1480, 1480, 1480, 577: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 599: 1480, 1480, 1480, 1480, 1480, 1480, 607: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 628: 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 639: 1480, 1480, 1480, 1480, 1480, 1480, 647: 1480, 651: 1480, 1480, 1480, 1480, 676: 1480, 726: 1480}, + {114: 4577}, + {114: 1319, 613: 1319, 1319}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4576}, + {114: 1316, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 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, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 573: 1499, 1499, 1499, 577: 1499, 579: 1499, 581: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 606: 1499, 1499, 1499, 1499, 612: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 633: 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 653: 1499, 656: 1499, 1499, 1499, 661: 1499, 681: 1499, 730: 1499}, // 1625 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4553}, - {586: 3835, 3833, 3834, 3832, 3830, 604: 4554, 820: 3831, 3829}, - {1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 551: 1481, 1481, 1481, 555: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 568: 1481, 1481, 1481, 573: 1481, 1481, 1481, 577: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 599: 1481, 1481, 1481, 1481, 1481, 1481, 607: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 628: 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 639: 1481, 1481, 1481, 1481, 1481, 1481, 647: 1481, 651: 1481, 1481, 1481, 1481, 676: 1481, 726: 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, 551: 1482, 1482, 1482, 555: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 568: 1482, 1482, 1482, 573: 1482, 1482, 1482, 577: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 599: 1482, 1482, 1482, 1482, 1482, 1482, 607: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 628: 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 639: 1482, 1482, 1482, 1482, 1482, 1482, 647: 1482, 651: 1482, 1482, 1482, 1482, 676: 1482, 726: 1482}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4557}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4579}, + {561: 4580, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {61: 4513, 128: 4509, 181: 4515, 190: 4510, 4508, 196: 4512, 198: 4519, 578: 4521, 610: 4506, 733: 4520, 756: 4516, 4517, 760: 4511, 763: 4518, 843: 4514, 983: 4507, 1151: 4581}, + {52: 1492, 741: 4583, 1356: 4582}, + {52: 4584}, // 1630 - {9: 4558}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4559}, - {9: 2235, 52: 4560, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 551: 1483, 1483, 1483, 555: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 568: 1483, 1483, 1483, 573: 1483, 1483, 1483, 577: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 599: 1483, 1483, 1483, 1483, 1483, 1483, 607: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 628: 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 639: 1483, 1483, 1483, 1483, 1483, 1483, 647: 1483, 651: 1483, 1483, 1483, 1483, 676: 1483, 726: 1483}, - {9: 2236, 52: 4566, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {52: 1491}, + {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 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, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 573: 1500, 1500, 1500, 577: 1500, 579: 1500, 581: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 606: 1500, 1500, 1500, 1500, 612: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 633: 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 653: 1500, 656: 1500, 1500, 1500, 661: 1500, 681: 1500, 730: 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, 3815, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 573: 1501, 1501, 1501, 577: 1501, 579: 1501, 581: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 606: 1501, 1501, 1501, 1501, 612: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 633: 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 653: 1501, 656: 1501, 1501, 1501, 661: 1501, 681: 1501, 730: 1501}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4587}, + {591: 3869, 3867, 3868, 3866, 3864, 609: 4588, 826: 3865, 3863}, // 1635 - {9: 4563}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4564}, - {9: 2235, 52: 4565, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 551: 1484, 1484, 1484, 555: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 568: 1484, 1484, 1484, 573: 1484, 1484, 1484, 577: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 599: 1484, 1484, 1484, 1484, 1484, 1484, 607: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 628: 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 639: 1484, 1484, 1484, 1484, 1484, 1484, 647: 1484, 651: 1484, 1484, 1484, 1484, 676: 1484, 726: 1484}, - {1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 551: 1485, 1485, 1485, 555: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 568: 1485, 1485, 1485, 573: 1485, 1485, 1485, 577: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 599: 1485, 1485, 1485, 1485, 1485, 1485, 607: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 628: 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 639: 1485, 1485, 1485, 1485, 1485, 1485, 647: 1485, 651: 1485, 1485, 1485, 1485, 676: 1485, 726: 1485}, + {1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 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, 577: 1502, 579: 1502, 581: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 606: 1502, 1502, 1502, 1502, 612: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 633: 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 653: 1502, 656: 1502, 1502, 1502, 661: 1502, 681: 1502, 730: 1502}, + {1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 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, 577: 1503, 579: 1503, 581: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 606: 1503, 1503, 1503, 1503, 612: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 633: 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 653: 1503, 656: 1503, 1503, 1503, 661: 1503, 681: 1503, 730: 1503}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4591}, + {9: 4592}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4593}, // 1640 - {1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 551: 1487, 1487, 1487, 555: 1487, 1487, 3782, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 568: 1487, 1487, 1487, 573: 1487, 1487, 1487, 577: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 599: 1487, 1487, 1487, 1487, 1487, 1487, 607: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 628: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 639: 1487, 1487, 1487, 1487, 1487, 1487, 647: 1487, 651: 1487, 1487, 1487, 1487, 676: 1487, 726: 1487}, - {1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 551: 1489, 1489, 1489, 555: 1489, 1489, 3782, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 568: 1489, 1489, 1489, 573: 1489, 1489, 1489, 577: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 599: 1489, 1489, 1489, 1489, 1489, 1489, 607: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 628: 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 639: 1489, 1489, 1489, 1489, 1489, 1489, 647: 1489, 651: 1489, 1489, 1489, 1489, 676: 1489, 726: 1489}, - {1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 551: 1490, 1490, 1490, 555: 1490, 1490, 3782, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 568: 1490, 1490, 1490, 573: 1490, 1490, 1490, 577: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 599: 1490, 1490, 1490, 1490, 1490, 1490, 607: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 628: 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 639: 1490, 1490, 1490, 1490, 1490, 1490, 647: 1490, 651: 1490, 1490, 1490, 1490, 676: 1490, 726: 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, 551: 1491, 1491, 1491, 555: 1491, 1491, 3782, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 568: 1491, 1491, 1491, 573: 1491, 1491, 1491, 577: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 599: 1491, 1491, 1491, 1491, 1491, 1491, 607: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 628: 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 639: 1491, 1491, 1491, 1491, 1491, 1491, 647: 1491, 651: 1491, 1491, 1491, 1491, 676: 1491, 726: 1491}, - {1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 551: 1492, 1492, 1492, 555: 1492, 1492, 3782, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 568: 1492, 1492, 1492, 573: 1492, 1492, 1492, 577: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 599: 1492, 1492, 1492, 1492, 1492, 1492, 607: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 628: 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 639: 1492, 1492, 1492, 1492, 1492, 1492, 647: 1492, 651: 1492, 1492, 1492, 1492, 676: 1492, 726: 1492}, + {9: 2261, 52: 4594, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 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, 577: 1504, 579: 1504, 581: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 606: 1504, 1504, 1504, 1504, 612: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 633: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 653: 1504, 656: 1504, 1504, 1504, 661: 1504, 681: 1504, 730: 1504}, + {9: 2262, 52: 4600, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {9: 4597}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4598}, // 1645 - {552: 4575}, - {552: 4574}, - {1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 551: 1472, 1472, 1472, 555: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 568: 1472, 1472, 1472, 573: 1472, 1472, 1472, 577: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 599: 1472, 1472, 1472, 1472, 1472, 1472, 607: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 628: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 639: 1472, 1472, 1472, 1472, 1472, 1472, 647: 1472, 651: 1472, 1472, 1472, 1472, 676: 1472, 726: 1472}, - {1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 551: 1473, 1473, 1473, 555: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 568: 1473, 1473, 1473, 573: 1473, 1473, 1473, 577: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 599: 1473, 1473, 1473, 1473, 1473, 1473, 607: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 628: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 639: 1473, 1473, 1473, 1473, 1473, 1473, 647: 1473, 651: 1473, 1473, 1473, 1473, 676: 1473, 726: 1473}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4577, 3121, 3122, 3120}, + {9: 2261, 52: 4599, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 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, 577: 1505, 579: 1505, 581: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 606: 1505, 1505, 1505, 1505, 612: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 633: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 653: 1505, 656: 1505, 1505, 1505, 661: 1505, 681: 1505, 730: 1505}, + {1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 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, 577: 1506, 579: 1506, 581: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 606: 1506, 1506, 1506, 1506, 612: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 633: 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 653: 1506, 656: 1506, 1506, 1506, 661: 1506, 681: 1506, 730: 1506}, + {1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 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, 3815, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 573: 1508, 1508, 1508, 577: 1508, 579: 1508, 581: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 606: 1508, 1508, 1508, 1508, 612: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 633: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 653: 1508, 656: 1508, 1508, 1508, 661: 1508, 681: 1508, 730: 1508}, + {1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 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, 3815, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 573: 1510, 1510, 1510, 577: 1510, 579: 1510, 581: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 606: 1510, 1510, 1510, 1510, 612: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 633: 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 653: 1510, 656: 1510, 1510, 1510, 661: 1510, 681: 1510, 730: 1510}, // 1650 - {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 4578, 1504, 1504, 1504, 555: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 568: 1504, 1504, 1504, 573: 1504, 1504, 1504, 577: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 599: 1504, 1504, 1504, 1504, 1504, 1504, 607: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 628: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 639: 1504, 1504, 1504, 1504, 1504, 1504, 647: 1504, 651: 1504, 1504, 1504, 1504, 676: 1504, 726: 1504, 734: 3996, 738: 1504, 1504}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 4579}, - {52: 4580}, - {1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 551: 1335, 1335, 1335, 555: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 568: 1335, 1335, 1335, 573: 1335, 1335, 1335, 577: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 599: 1335, 1335, 1335, 1335, 1335, 1335, 607: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 628: 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 639: 1335, 1335, 1335, 1335, 1335, 1335, 647: 1335, 651: 1335, 1335, 1335, 1335, 676: 1335, 726: 1335}, - {1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 551: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 568: 1543, 1543, 1543, 573: 1543, 1543, 1543, 577: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 599: 1543, 1543, 1543, 1543, 1543, 1543, 607: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 628: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 639: 1543, 1543, 1543, 1543, 1543, 1543, 647: 1543, 651: 1543, 1543, 1543, 1543, 663: 1543, 676: 1543, 678: 1543, 705: 1543, 723: 1543, 1543, 1543, 1543, 1543}, + {1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 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, 3815, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 573: 1511, 1511, 1511, 577: 1511, 579: 1511, 581: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 606: 1511, 1511, 1511, 1511, 612: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 633: 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 653: 1511, 656: 1511, 1511, 1511, 661: 1511, 681: 1511, 730: 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, 556: 1512, 1512, 1512, 560: 1512, 1512, 3815, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 573: 1512, 1512, 1512, 577: 1512, 579: 1512, 581: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 606: 1512, 1512, 1512, 1512, 612: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 633: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 653: 1512, 656: 1512, 1512, 1512, 661: 1512, 681: 1512, 730: 1512}, + {1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 556: 1513, 1513, 1513, 560: 1513, 1513, 3815, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 573: 1513, 1513, 1513, 577: 1513, 579: 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 606: 1513, 1513, 1513, 1513, 612: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 633: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 653: 1513, 656: 1513, 1513, 1513, 661: 1513, 681: 1513, 730: 1513}, + {557: 4609}, + {557: 4608}, // 1655 - {1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 551: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 568: 1540, 1540, 1540, 573: 1540, 1540, 1540, 577: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 599: 1540, 1540, 1540, 1540, 1540, 1540, 607: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 628: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 639: 1540, 1540, 1540, 1540, 1540, 1540, 647: 1540, 651: 1540, 1540, 1540, 1540, 663: 1540, 676: 1540, 678: 1540, 705: 1540, 723: 1540, 1540, 1540, 1540, 1540}, - {1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 551: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 568: 1539, 1539, 1539, 573: 1539, 1539, 1539, 577: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 599: 1539, 1539, 1539, 1539, 1539, 1539, 607: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 628: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 639: 1539, 1539, 1539, 1539, 1539, 1539, 647: 1539, 651: 1539, 1539, 1539, 1539, 663: 1539, 676: 1539, 678: 1539, 705: 1539, 723: 1539, 1539, 1539, 1539, 1539}, - {1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 551: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 568: 1537, 1537, 1537, 573: 1537, 1537, 1537, 577: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 599: 1537, 1537, 1537, 1537, 1537, 1537, 607: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 628: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 639: 1537, 1537, 1537, 1537, 1537, 1537, 647: 1537, 651: 1537, 1537, 1537, 1537, 663: 1537, 676: 1537, 678: 1537, 705: 1537, 723: 1537, 1537, 1537, 1537, 1537}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4587, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4586}, - {52: 4591, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 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, 577: 1493, 579: 1493, 581: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 606: 1493, 1493, 1493, 1493, 612: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 633: 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 653: 1493, 656: 1493, 1493, 1493, 661: 1493, 681: 1493, 730: 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, 577: 1494, 579: 1494, 581: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 606: 1494, 1494, 1494, 1494, 612: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 633: 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 653: 1494, 656: 1494, 1494, 1494, 661: 1494, 681: 1494, 730: 1494}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4611, 3149, 3150, 3148}, + {1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 4612, 1525, 1525, 1525, 560: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 573: 1525, 1525, 1525, 577: 1525, 579: 1525, 581: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 606: 1525, 1525, 1525, 1525, 612: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 633: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 653: 1525, 656: 1525, 1525, 1525, 661: 1525, 681: 1525, 730: 1525, 739: 4030, 742: 1525, 1525}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 4613}, // 1660 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4588}, - {52: 4589, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4590}, - {1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 551: 1343, 1343, 1343, 555: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 568: 1343, 1343, 1343, 573: 1343, 1343, 1343, 577: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 599: 1343, 1343, 1343, 1343, 1343, 1343, 607: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 628: 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 639: 1343, 1343, 1343, 1343, 1343, 1343, 647: 1343, 651: 1343, 1343, 1343, 1343, 676: 1343, 726: 1343}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4592}, + {52: 4614}, + {1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 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, 577: 1355, 579: 1355, 581: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 606: 1355, 1355, 1355, 1355, 612: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 633: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 653: 1355, 656: 1355, 1355, 1355, 661: 1355, 681: 1355, 730: 1355}, + {1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 556: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 573: 1564, 1564, 1564, 577: 1564, 579: 1564, 581: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 606: 1564, 1564, 1564, 1564, 612: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 633: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 653: 1564, 656: 1564, 1564, 1564, 661: 1564, 668: 1564, 681: 1564, 720: 1564, 727: 1564, 1564, 1564, 1564, 1564, 1564}, + {1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 556: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 573: 1561, 1561, 1561, 577: 1561, 579: 1561, 581: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 606: 1561, 1561, 1561, 1561, 612: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 633: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 653: 1561, 656: 1561, 1561, 1561, 661: 1561, 668: 1561, 681: 1561, 720: 1561, 727: 1561, 1561, 1561, 1561, 1561, 1561}, + {1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 556: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 573: 1560, 1560, 1560, 577: 1560, 579: 1560, 581: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 606: 1560, 1560, 1560, 1560, 612: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 633: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 653: 1560, 656: 1560, 1560, 1560, 661: 1560, 668: 1560, 681: 1560, 720: 1560, 727: 1560, 1560, 1560, 1560, 1560, 1560}, // 1665 - {1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 551: 1344, 1344, 1344, 555: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 568: 1344, 1344, 1344, 573: 1344, 1344, 1344, 577: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 599: 1344, 1344, 1344, 1344, 1344, 1344, 607: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 628: 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 639: 1344, 1344, 1344, 1344, 1344, 1344, 647: 1344, 651: 1344, 1344, 1344, 1344, 676: 1344, 726: 1344}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4595, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4594}, - {9: 4605, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4596}, - {9: 4597, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 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, 577: 1558, 579: 1558, 581: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 606: 1558, 1558, 1558, 1558, 612: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 633: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 653: 1558, 656: 1558, 1558, 1558, 661: 1558, 668: 1558, 681: 1558, 720: 1558, 727: 1558, 1558, 1558, 1558, 1558, 1558}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4621, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4620}, + {52: 4625, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4622}, + {52: 4623, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1670 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4599, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4598}, - {52: 4603, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4600}, - {52: 4601, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4602}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4624}, + {1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 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, 577: 1363, 579: 1363, 581: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 606: 1363, 1363, 1363, 1363, 612: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 633: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 653: 1363, 656: 1363, 1363, 1363, 661: 1363, 681: 1363, 730: 1363}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4626}, + {1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 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, 577: 1364, 579: 1364, 581: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 606: 1364, 1364, 1364, 1364, 612: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 633: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 653: 1364, 656: 1364, 1364, 1364, 661: 1364, 681: 1364, 730: 1364}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4629, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4628}, // 1675 - {1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 551: 1339, 1339, 1339, 555: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 568: 1339, 1339, 1339, 573: 1339, 1339, 1339, 577: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 599: 1339, 1339, 1339, 1339, 1339, 1339, 607: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 628: 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 639: 1339, 1339, 1339, 1339, 1339, 1339, 647: 1339, 651: 1339, 1339, 1339, 1339, 676: 1339, 726: 1339}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4604}, - {1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 551: 1341, 1341, 1341, 555: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 568: 1341, 1341, 1341, 573: 1341, 1341, 1341, 577: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 599: 1341, 1341, 1341, 1341, 1341, 1341, 607: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 628: 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 639: 1341, 1341, 1341, 1341, 1341, 1341, 647: 1341, 651: 1341, 1341, 1341, 1341, 676: 1341, 726: 1341}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 735: 4607, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4606}, - {52: 4611, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {9: 4639, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4630}, + {9: 4631, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4633, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4632}, + {52: 4637, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1680 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4608}, - {52: 4609, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4610}, - {1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 551: 1340, 1340, 1340, 555: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 568: 1340, 1340, 1340, 573: 1340, 1340, 1340, 577: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 599: 1340, 1340, 1340, 1340, 1340, 1340, 607: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 628: 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 639: 1340, 1340, 1340, 1340, 1340, 1340, 647: 1340, 651: 1340, 1340, 1340, 1340, 676: 1340, 726: 1340}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4612}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4634}, + {52: 4635, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4636}, + {1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 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, 577: 1359, 579: 1359, 581: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 606: 1359, 1359, 1359, 1359, 612: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 633: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 653: 1359, 656: 1359, 1359, 1359, 661: 1359, 681: 1359, 730: 1359}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4638}, // 1685 - {1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 551: 1342, 1342, 1342, 555: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 568: 1342, 1342, 1342, 573: 1342, 1342, 1342, 577: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 599: 1342, 1342, 1342, 1342, 1342, 1342, 607: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 628: 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 639: 1342, 1342, 1342, 1342, 1342, 1342, 647: 1342, 651: 1342, 1342, 1342, 1342, 676: 1342, 726: 1342}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 907: 4614}, - {9: 4615}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4616}, - {9: 4617, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 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, 577: 1361, 579: 1361, 581: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 606: 1361, 1361, 1361, 1361, 612: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 633: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 653: 1361, 656: 1361, 1361, 1361, 661: 1361, 681: 1361, 730: 1361}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 740: 4641, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4640}, + {52: 4645, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4642}, + {52: 4643, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1690 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4618}, - {52: 4619, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 551: 1389, 1389, 1389, 555: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 568: 1389, 1389, 1389, 573: 1389, 1389, 1389, 577: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 599: 1389, 1389, 1389, 1389, 1389, 1389, 607: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 628: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 639: 1389, 1389, 1389, 1389, 1389, 1389, 647: 1389, 651: 1389, 1389, 1389, 1389, 676: 1389, 726: 1389}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 907: 4621}, - {9: 4622}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4644}, + {1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 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, 577: 1360, 579: 1360, 581: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 606: 1360, 1360, 1360, 1360, 612: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 633: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 653: 1360, 656: 1360, 1360, 1360, 661: 1360, 681: 1360, 730: 1360}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4646}, + {1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 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, 577: 1362, 579: 1362, 581: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 606: 1362, 1362, 1362, 1362, 612: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 633: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 653: 1362, 656: 1362, 1362, 1362, 661: 1362, 681: 1362, 730: 1362}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 912: 4648}, // 1695 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4623}, - {9: 4624, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4625}, - {52: 4626, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 551: 1390, 1390, 1390, 555: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 568: 1390, 1390, 1390, 573: 1390, 1390, 1390, 577: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 599: 1390, 1390, 1390, 1390, 1390, 1390, 607: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 628: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 639: 1390, 1390, 1390, 1390, 1390, 1390, 647: 1390, 651: 1390, 1390, 1390, 1390, 676: 1390, 726: 1390}, + {9: 4649}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4650}, + {9: 4651, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4652}, + {52: 4653, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1700 - {186: 4630, 4629, 192: 4631, 195: 4632, 1395: 4628}, - {9: 4633}, - {9: 1379}, - {9: 1378}, - {9: 1377}, + {1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 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, 577: 1410, 579: 1410, 581: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 606: 1410, 1410, 1410, 1410, 612: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 633: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 653: 1410, 656: 1410, 1410, 1410, 661: 1410, 681: 1410, 730: 1410}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 912: 4655}, + {9: 4656}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4657}, + {9: 4658, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 1705 - {9: 1376}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4634}, - {52: 4635, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 551: 1396, 1396, 1396, 555: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 568: 1396, 1396, 1396, 573: 1396, 1396, 1396, 577: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 599: 1396, 1396, 1396, 1396, 1396, 1396, 607: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 628: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 639: 1396, 1396, 1396, 1396, 1396, 1396, 647: 1396, 651: 1396, 1396, 1396, 1396, 676: 1396, 726: 1396}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4637}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4659}, + {52: 4660, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 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, 577: 1411, 579: 1411, 581: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 606: 1411, 1411, 1411, 1411, 612: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 633: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 653: 1411, 656: 1411, 1411, 1411, 661: 1411, 681: 1411, 730: 1411}, + {190: 4664, 4663, 196: 4665, 199: 4666, 1405: 4662}, + {9: 4667}, // 1710 - {9: 4638}, - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 4640}, - {2268, 2268, 6: 2268, 2268, 2268, 2268, 15: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 97: 2268, 99: 2268, 102: 2268, 106: 2268, 112: 2268, 2268, 115: 2268, 2268, 2268, 2268, 2268, 149: 2268, 178: 2268, 2268, 2268, 2268, 554: 2268, 557: 2268, 2268, 572: 2268, 574: 2268, 577: 2268, 583: 2268, 585: 2268, 728: 2268, 2268, 740: 2268}, - {52: 4646}, - {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, 554: 159, 557: 159, 159, 572: 159, 585: 159, 728: 159, 159, 740: 159}, + {9: 1399}, + {9: 1398}, + {9: 1397}, + {9: 1396}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4668}, // 1715 - {576: 3107, 819: 4639, 851: 4645}, - {576: 3107, 819: 4644}, - {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, 554: 157, 557: 157, 157, 572: 157, 585: 157, 728: 157, 157, 740: 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, 554: 158, 557: 158, 158, 572: 158, 585: 158, 728: 158, 158, 740: 158}, - {1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 551: 1367, 1367, 1367, 555: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 568: 1367, 1367, 1367, 573: 1367, 1367, 1367, 577: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 599: 1367, 1367, 1367, 1367, 1367, 1367, 607: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 628: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 639: 1367, 1367, 1367, 1367, 1367, 1367, 647: 1367, 651: 1367, 1367, 1367, 1367, 676: 1367, 726: 1367}, + {52: 4669, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 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, 577: 1417, 579: 1417, 581: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 606: 1417, 1417, 1417, 1417, 612: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 633: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 653: 1417, 656: 1417, 1417, 1417, 661: 1417, 681: 1417, 730: 1417}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 4671}, + {52: 4672}, + {1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 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, 577: 1400, 579: 1400, 581: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 606: 1400, 1400, 1400, 1400, 612: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 633: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 653: 1400, 656: 1400, 1400, 1400, 661: 1400, 681: 1400, 730: 1400}, // 1720 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4648}, - {52: 4649}, - {1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 551: 1368, 1368, 1368, 555: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 568: 1368, 1368, 1368, 573: 1368, 1368, 1368, 577: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 599: 1368, 1368, 1368, 1368, 1368, 1368, 607: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 628: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 639: 1368, 1368, 1368, 1368, 1368, 1368, 647: 1368, 651: 1368, 1368, 1368, 1368, 676: 1368, 726: 1368}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4651}, - {52: 4652, 556: 4653, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4674}, + {9: 4675}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 4677}, + {2294, 2294, 6: 2294, 2294, 2294, 2294, 15: 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, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 97: 2294, 99: 2294, 102: 2294, 106: 2294, 112: 2294, 2294, 115: 2294, 2294, 2294, 2294, 2294, 151: 2294, 182: 2294, 2294, 2294, 2294, 559: 2294, 562: 2294, 2294, 578: 2294, 2294, 582: 2294, 588: 2294, 590: 2294, 733: 2294, 2294, 745: 2294}, + {52: 4683}, // 1725 - {1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 551: 1384, 1384, 1384, 555: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 568: 1384, 1384, 1384, 573: 1384, 1384, 1384, 577: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 599: 1384, 1384, 1384, 1384, 1384, 1384, 607: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 628: 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 639: 1384, 1384, 1384, 1384, 1384, 1384, 647: 1384, 651: 1384, 1384, 1384, 1384, 676: 1384, 726: 1384}, - {572: 4487, 605: 4655, 728: 4486, 977: 4654}, - {550: 4495, 861: 4658}, - {550: 4495, 861: 4656}, - {52: 4657}, + {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, 52: 174, 97: 174, 99: 174, 102: 174, 106: 174, 112: 174, 174, 115: 174, 174, 174, 174, 174, 559: 174, 562: 174, 174, 578: 174, 590: 174, 733: 174, 174, 745: 174}, + {580: 3135, 824: 4676, 855: 4682}, + {580: 3135, 824: 4681}, + {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, 52: 172, 97: 172, 99: 172, 102: 172, 106: 172, 112: 172, 172, 115: 172, 172, 172, 172, 172, 559: 172, 562: 172, 172, 578: 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, 52: 173, 97: 173, 99: 173, 102: 173, 106: 173, 112: 173, 173, 115: 173, 173, 173, 173, 173, 559: 173, 562: 173, 173, 578: 173, 590: 173, 733: 173, 173, 745: 173}, // 1730 - {1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 551: 1382, 1382, 1382, 555: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 568: 1382, 1382, 1382, 573: 1382, 1382, 1382, 577: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 599: 1382, 1382, 1382, 1382, 1382, 1382, 607: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 628: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 639: 1382, 1382, 1382, 1382, 1382, 1382, 647: 1382, 651: 1382, 1382, 1382, 1382, 676: 1382, 726: 1382}, - {52: 4659}, - {1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 551: 1383, 1383, 1383, 555: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 568: 1383, 1383, 1383, 573: 1383, 1383, 1383, 577: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 599: 1383, 1383, 1383, 1383, 1383, 1383, 607: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 628: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 639: 1383, 1383, 1383, 1383, 1383, 1383, 647: 1383, 651: 1383, 1383, 1383, 1383, 676: 1383, 726: 1383}, - {1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 551: 1406, 1406, 1406, 555: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 568: 1406, 1406, 1406, 573: 1406, 1406, 1406, 577: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 599: 1406, 1406, 1406, 1406, 1406, 1406, 607: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 628: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 639: 1406, 1406, 1406, 1406, 1406, 1406, 647: 1406, 651: 1406, 1406, 1406, 1406, 676: 1406, 726: 1406}, - {1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 551: 1407, 1407, 1407, 555: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 568: 1407, 1407, 1407, 573: 1407, 1407, 1407, 577: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 599: 1407, 1407, 1407, 1407, 1407, 1407, 607: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 628: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 639: 1407, 1407, 1407, 1407, 1407, 1407, 647: 1407, 651: 1407, 1407, 1407, 1407, 676: 1407, 726: 1407}, + {1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 556: 1387, 1387, 1387, 560: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 573: 1387, 1387, 1387, 577: 1387, 579: 1387, 581: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 606: 1387, 1387, 1387, 1387, 612: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 633: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 653: 1387, 656: 1387, 1387, 1387, 661: 1387, 681: 1387, 730: 1387}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4685}, + {52: 4686}, + {1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 556: 1388, 1388, 1388, 560: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 573: 1388, 1388, 1388, 577: 1388, 579: 1388, 581: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 606: 1388, 1388, 1388, 1388, 612: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 633: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 653: 1388, 656: 1388, 1388, 1388, 661: 1388, 681: 1388, 730: 1388}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4688}, // 1735 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 4663}, - {52: 4664}, - {1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 551: 1403, 1403, 1403, 555: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 568: 1403, 1403, 1403, 573: 1403, 1403, 1403, 577: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 599: 1403, 1403, 1403, 1403, 1403, 1403, 607: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 628: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 639: 1403, 1403, 1403, 1403, 1403, 1403, 647: 1403, 651: 1403, 1403, 1403, 1403, 676: 1403, 726: 1403}, - {1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 551: 1408, 1408, 1408, 555: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 568: 1408, 1408, 1408, 573: 1408, 1408, 1408, 577: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 599: 1408, 1408, 1408, 1408, 1408, 1408, 607: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 628: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 639: 1408, 1408, 1408, 1408, 1408, 1408, 647: 1408, 651: 1408, 1408, 1408, 1408, 676: 1408, 726: 1408}, - {2: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 10: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 53: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 550: 1465, 552: 1465, 1465, 1465, 1465, 559: 1465, 1465, 562: 1465, 1465, 1465, 566: 1465, 1465, 571: 1465, 1465, 576: 1465, 598: 1465, 605: 1465, 1465, 638: 1465, 645: 1465, 1465, 648: 1465, 1465, 1465, 655: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 664: 1465, 1465, 1465, 1465, 669: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 677: 1465, 679: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 706: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 730: 1465, 735: 4267, 848: 4265, 4266, 906: 4268, 908: 4269, 934: 4667, 4270}, + {52: 4689, 561: 4690, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 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, 577: 1405, 579: 1405, 581: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 606: 1405, 1405, 1405, 1405, 612: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 633: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 653: 1405, 656: 1405, 1405, 1405, 661: 1405, 681: 1405, 730: 1405}, + {578: 4521, 610: 4692, 733: 4520, 983: 4691}, + {555: 4529, 866: 4695}, + {555: 4529, 866: 4693}, // 1740 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4668}, - {52: 4669, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 551: 1179, 1179, 1179, 555: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 568: 1179, 1179, 1179, 573: 1179, 1179, 1179, 577: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 599: 1179, 1179, 1179, 1179, 1179, 1179, 607: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 628: 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 639: 1179, 1179, 1179, 1179, 1179, 1179, 647: 1179, 651: 1179, 1179, 1179, 1179, 676: 1179, 726: 1179, 840: 4157, 853: 4275, 864: 4670}, - {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 551: 1365, 1365, 1365, 555: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 568: 1365, 1365, 1365, 573: 1365, 1365, 1365, 577: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 599: 1365, 1365, 1365, 1365, 1365, 1365, 607: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 628: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 639: 1365, 1365, 1365, 1365, 1365, 1365, 647: 1365, 651: 1365, 1365, 1365, 1365, 676: 1365, 726: 1365}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 4672}, + {52: 4694}, + {1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 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, 577: 1403, 579: 1403, 581: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 606: 1403, 1403, 1403, 1403, 612: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 633: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 653: 1403, 656: 1403, 1403, 1403, 661: 1403, 681: 1403, 730: 1403}, + {52: 4696}, + {1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 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, 577: 1404, 579: 1404, 581: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 606: 1404, 1404, 1404, 1404, 612: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 633: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 653: 1404, 656: 1404, 1404, 1404, 661: 1404, 681: 1404, 730: 1404}, + {1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 556: 1427, 1427, 1427, 560: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 573: 1427, 1427, 1427, 577: 1427, 579: 1427, 581: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 606: 1427, 1427, 1427, 1427, 612: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 633: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 653: 1427, 656: 1427, 1427, 1427, 661: 1427, 681: 1427, 730: 1427}, // 1745 - {52: 4673}, - {1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 551: 1336, 1336, 1336, 555: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 568: 1336, 1336, 1336, 573: 1336, 1336, 1336, 577: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 599: 1336, 1336, 1336, 1336, 1336, 1336, 607: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 628: 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 639: 1336, 1336, 1336, 1336, 1336, 1336, 647: 1336, 651: 1336, 1336, 1336, 1336, 676: 1336, 726: 1336}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4675}, - {52: 4676}, - {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 551: 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 568: 2567, 2567, 2567, 573: 2567, 2567, 2567, 577: 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 599: 2567, 2567, 2567, 2567, 2567, 2567, 607: 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 628: 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 639: 2567, 2567, 2567, 2567, 2567, 2567, 647: 2567, 651: 2567, 2567, 2567, 2567, 663: 2567, 676: 2567, 678: 2567, 705: 2567, 723: 2567, 2567, 2567, 2567, 2567}, + {1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 556: 1428, 1428, 1428, 560: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 573: 1428, 1428, 1428, 577: 1428, 579: 1428, 581: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 606: 1428, 1428, 1428, 1428, 612: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 633: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 653: 1428, 656: 1428, 1428, 1428, 661: 1428, 681: 1428, 730: 1428}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 4700}, + {52: 4701}, + {1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 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, 577: 1424, 579: 1424, 581: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 606: 1424, 1424, 1424, 1424, 612: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 633: 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 653: 1424, 656: 1424, 1424, 1424, 661: 1424, 681: 1424, 730: 1424}, + {1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 556: 1429, 1429, 1429, 560: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 573: 1429, 1429, 1429, 577: 1429, 579: 1429, 581: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 606: 1429, 1429, 1429, 1429, 612: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 633: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 653: 1429, 656: 1429, 1429, 1429, 661: 1429, 681: 1429, 730: 1429}, // 1750 - {578: 4678}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4679}, - {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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 551: 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 568: 2568, 2568, 2568, 573: 2568, 2568, 2568, 577: 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 599: 2568, 2568, 2568, 2568, 2568, 2568, 607: 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 628: 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 639: 2568, 2568, 2568, 2568, 2568, 2568, 647: 2568, 651: 2568, 2568, 2568, 2568, 663: 2568, 676: 2568, 678: 2568, 705: 2568, 723: 2568, 2568, 2568, 2568, 2568}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4688, 3686, 3768, 3685, 3682}, - {126: 4684, 273: 4682, 286: 4683, 1283: 4685}, + {2: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 10: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 53: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 555: 1486, 557: 1486, 1486, 1486, 1486, 564: 1486, 1486, 567: 1486, 1486, 1486, 571: 1486, 1486, 576: 1486, 578: 1486, 580: 1486, 605: 1486, 610: 1486, 1486, 649: 1486, 1486, 1486, 1486, 654: 1486, 1486, 659: 1486, 1486, 662: 1486, 1486, 1486, 1486, 1486, 1486, 669: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 682: 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 721: 1486, 1486, 1486, 1486, 1486, 1486, 735: 1486, 740: 4301, 853: 4299, 4300, 911: 4302, 913: 4303, 940: 4704, 4304}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4705}, + {52: 4706, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 556: 1199, 1199, 1199, 560: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 573: 1199, 1199, 1199, 577: 1199, 579: 1199, 581: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 606: 1199, 1199, 1199, 1199, 612: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 633: 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 653: 1199, 656: 1199, 1199, 1199, 661: 1199, 681: 1199, 730: 1199, 845: 4191, 858: 4309, 869: 4707}, + {1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 556: 1385, 1385, 1385, 560: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 573: 1385, 1385, 1385, 577: 1385, 579: 1385, 581: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 606: 1385, 1385, 1385, 1385, 612: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 633: 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 653: 1385, 656: 1385, 1385, 1385, 661: 1385, 681: 1385, 730: 1385}, // 1755 - {9: 2909, 52: 2909, 101: 2909, 142: 2909, 144: 2909, 146: 2909, 2909, 172: 2909, 732: 2909}, - {9: 2908, 52: 2908, 101: 2908, 142: 2908, 144: 2908, 146: 2908, 2908, 172: 2908, 732: 2908}, - {9: 2907, 52: 2907, 101: 2907, 142: 2907, 144: 2907, 146: 2907, 2907, 172: 2907, 732: 2907}, - {732: 4686}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4687, 3686, 3768, 3685, 3682}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 4709}, + {52: 4710}, + {1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 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, 577: 1356, 579: 1356, 581: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 606: 1356, 1356, 1356, 1356, 612: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 633: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 653: 1356, 656: 1356, 1356, 1356, 661: 1356, 681: 1356, 730: 1356}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4712}, + {52: 4713}, // 1760 - {2, 2, 9: 2, 51: 2, 101: 2, 126: 2, 557: 3782, 676: 2, 726: 3783}, - {4, 4, 9: 4, 51: 4, 101: 4, 126: 4, 557: 3782, 676: 4, 726: 3783}, - {2: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 10: 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, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2367, 550: 2367, 552: 2367, 2367, 2367, 2367, 559: 2367, 2367, 562: 2367, 2367, 2367, 566: 2367, 2367, 2367, 571: 2367, 2367, 576: 2367, 580: 2367, 598: 2367, 605: 2367, 2367, 638: 2367, 645: 2367, 2367, 648: 2367, 2367, 2367, 655: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 664: 2367, 2367, 2367, 2367, 669: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 677: 2367, 679: 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, 706: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 730: 2367, 958: 2367}, - {242: 4692, 244: 4691, 260: 4694, 958: 4693, 1282: 4695}, - {2906, 2906, 9: 2906, 51: 2906, 2906, 101: 2906, 126: 2906, 142: 2906, 144: 2906, 146: 2906, 2906, 676: 2906}, + {2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 556: 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 573: 2593, 2593, 2593, 577: 2593, 579: 2593, 581: 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 606: 2593, 2593, 2593, 2593, 612: 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 633: 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 653: 2593, 656: 2593, 2593, 2593, 661: 2593, 668: 2593, 681: 2593, 720: 2593, 727: 2593, 2593, 2593, 2593, 2593, 2593}, + {583: 4715}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4716}, + {2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 556: 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 573: 2594, 2594, 2594, 577: 2594, 579: 2594, 581: 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 606: 2594, 2594, 2594, 2594, 612: 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 633: 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 653: 2594, 656: 2594, 2594, 2594, 661: 2594, 668: 2594, 681: 2594, 720: 2594, 727: 2594, 2594, 2594, 2594, 2594, 2594}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4725, 3719, 3801, 3718, 3715}, // 1765 - {2905, 2905, 9: 2905, 51: 2905, 2905, 101: 2905, 126: 2905, 142: 2905, 144: 2905, 146: 2905, 2905, 676: 2905}, - {2904, 2904, 9: 2904, 51: 2904, 2904, 101: 2904, 126: 2904, 142: 2904, 144: 2904, 146: 2904, 2904, 676: 2904}, - {550: 4696}, - {6, 6, 9: 6, 51: 6, 101: 6, 126: 6, 676: 6}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 791: 4698, 3121, 3122, 3120, 947: 4697}, + {126: 4721, 278: 4719, 291: 4720, 1289: 4722}, + {9: 2935, 52: 2935, 101: 2935, 130: 2935, 143: 2935, 145: 2935, 147: 2935, 2935, 737: 2935}, + {9: 2934, 52: 2934, 101: 2934, 130: 2934, 143: 2934, 145: 2934, 147: 2934, 2934, 737: 2934}, + {9: 2933, 52: 2933, 101: 2933, 130: 2933, 143: 2933, 145: 2933, 147: 2933, 2933, 737: 2933}, + {737: 4723}, // 1770 - {52: 4700}, - {2522, 2522, 9: 2522, 51: 2522, 2522, 101: 2522, 121: 2522, 2522, 2522, 2522, 2522, 2522, 676: 2522}, - {2521, 2521, 9: 2521, 51: 2521, 2521, 101: 2521, 121: 2521, 2521, 2521, 2521, 2521, 2521, 676: 2521}, - {2903, 2903, 9: 2903, 51: 2903, 2903, 101: 2903, 126: 2903, 142: 2903, 144: 2903, 146: 2903, 2903, 676: 2903}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 646: 3771, 791: 4698, 3121, 3122, 3120, 796: 4703, 947: 4702}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4724, 3719, 3801, 3718, 3715}, + {2, 2, 9: 2, 51: 2, 101: 2, 126: 2, 562: 3815, 681: 2, 730: 3816}, + {4, 4, 9: 4, 51: 4, 101: 4, 126: 4, 562: 3815, 681: 4, 730: 3816}, + {2: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 10: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 53: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 555: 2393, 557: 2393, 2393, 2393, 2393, 564: 2393, 2393, 567: 2393, 2393, 2393, 571: 2393, 2393, 2393, 576: 2393, 578: 2393, 580: 2393, 585: 2393, 605: 2393, 610: 2393, 2393, 649: 2393, 2393, 2393, 2393, 654: 2393, 2393, 659: 2393, 2393, 662: 2393, 2393, 2393, 2393, 2393, 2393, 669: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 682: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 721: 2393, 2393, 2393, 2393, 2393, 2393, 735: 2393, 963: 2393}, + {245: 4729, 248: 4728, 264: 4731, 963: 4730, 1288: 4732}, // 1775 - {8, 8, 9: 8, 51: 8, 101: 8, 126: 8, 676: 8}, - {7, 7, 9: 7, 51: 7, 101: 7, 126: 7, 676: 7}, - {10, 10, 9: 10, 51: 10, 101: 10, 126: 10, 676: 10}, - {51: 3111, 101: 3112, 126: 3115, 676: 3114, 1095: 4706, 3113}, - {9, 9, 9: 9, 51: 9, 101: 9, 126: 9, 676: 9}, + {2932, 2932, 9: 2932, 51: 2932, 2932, 101: 2932, 126: 2932, 143: 2932, 145: 2932, 147: 2932, 2932, 681: 2932}, + {2931, 2931, 9: 2931, 51: 2931, 2931, 101: 2931, 126: 2931, 143: 2931, 145: 2931, 147: 2931, 2931, 681: 2931}, + {2930, 2930, 9: 2930, 51: 2930, 2930, 101: 2930, 126: 2930, 143: 2930, 145: 2930, 147: 2930, 2930, 681: 2930}, + {555: 4733}, + {6, 6, 9: 6, 51: 6, 101: 6, 126: 6, 681: 6}, // 1780 - {27, 27, 172: 4714, 188: 4713, 190: 4712, 469: 4715, 1064: 4711, 1356: 4708, 4710, 1379: 4709}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 796: 4735, 3149, 3150, 3148, 952: 4734}, + {52: 4737}, + {2548, 2548, 9: 2548, 51: 2548, 2548, 101: 2548, 121: 2548, 2548, 2548, 2548, 2548, 2548, 681: 2548}, + {2547, 2547, 9: 2547, 51: 2547, 2547, 101: 2547, 121: 2547, 2547, 2547, 2547, 2547, 2547, 681: 2547}, + {2929, 2929, 9: 2929, 51: 2929, 2929, 101: 2929, 126: 2929, 143: 2929, 145: 2929, 147: 2929, 2929, 681: 2929}, + // 1785 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 654: 3804, 796: 4735, 3149, 3150, 3148, 801: 4740, 952: 4739}, + {8, 8, 9: 8, 51: 8, 101: 8, 126: 8, 681: 8}, + {7, 7, 9: 7, 51: 7, 101: 7, 126: 7, 681: 7}, + {10, 10, 9: 10, 51: 10, 101: 10, 126: 10, 681: 10}, + {51: 3139, 101: 3140, 126: 3143, 681: 3142, 1101: 4743, 3141}, + // 1790 + {9, 9, 9: 9, 51: 9, 101: 9, 126: 9, 681: 9}, + {27, 27, 130: 4751, 192: 4750, 194: 4749, 474: 4752, 1070: 4748, 1366: 4745, 4747, 1389: 4746}, {28, 28}, - {26, 26, 9: 4731, 172: 4714, 188: 4713, 190: 4712, 1064: 4730}, + {26, 26, 9: 4768, 130: 4751, 192: 4750, 194: 4749, 1070: 4767}, {25, 25}, - {24, 24, 9: 24, 172: 24, 188: 24, 190: 24}, - // 1785 - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 550: 2368, 552: 2368, 2368, 2368, 2368, 559: 2368, 2368, 562: 2368, 2368, 2368, 566: 2368, 2368, 571: 2368, 2368, 4689, 576: 2368, 598: 2368, 605: 2368, 2368, 638: 2368, 645: 2368, 2368, 648: 2368, 2368, 2368, 655: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 664: 2368, 2368, 2368, 2368, 669: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 677: 2368, 679: 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, 706: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 730: 2368, 822: 4728}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 550: 2368, 552: 2368, 2368, 2368, 2368, 559: 2368, 2368, 562: 2368, 2368, 2368, 566: 2368, 2368, 571: 2368, 2368, 4689, 576: 2368, 598: 2368, 605: 2368, 2368, 638: 2368, 645: 2368, 2368, 648: 2368, 2368, 2368, 655: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 664: 2368, 2368, 2368, 2368, 669: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 677: 2368, 679: 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, 706: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 730: 2368, 822: 4726}, - {552: 2368, 573: 4689, 660: 2368, 822: 4721}, - {424: 4718, 4717, 4719, 461: 4716, 4720}, + // 1795 + {24, 24, 9: 24, 130: 24, 192: 24, 194: 24}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 555: 2394, 557: 2394, 2394, 2394, 2394, 564: 2394, 2394, 567: 2394, 2394, 2394, 571: 2394, 2394, 576: 2394, 4726, 2394, 580: 2394, 605: 2394, 610: 2394, 2394, 649: 2394, 2394, 2394, 2394, 654: 2394, 2394, 659: 2394, 2394, 662: 2394, 2394, 2394, 2394, 2394, 2394, 669: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 682: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 721: 2394, 2394, 2394, 2394, 2394, 2394, 735: 2394, 825: 4765}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 555: 2394, 557: 2394, 2394, 2394, 2394, 564: 2394, 2394, 567: 2394, 2394, 2394, 571: 2394, 2394, 576: 2394, 4726, 2394, 580: 2394, 605: 2394, 610: 2394, 2394, 649: 2394, 2394, 2394, 2394, 654: 2394, 2394, 659: 2394, 2394, 662: 2394, 2394, 2394, 2394, 2394, 2394, 669: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 682: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 721: 2394, 2394, 2394, 2394, 2394, 2394, 735: 2394, 825: 4763}, + {557: 2394, 577: 4726, 665: 2394, 825: 4758}, + {428: 4755, 4754, 4756, 466: 4753, 4757}, + // 1800 {17, 17}, - // 1790 {16, 16}, {15, 15}, {14, 14}, {13, 13}, - {552: 4722, 660: 4723}, - // 1795 - {19, 19, 9: 19, 172: 19, 188: 19, 190: 19}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4724}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 4725}, - {18, 18, 9: 18, 172: 18, 188: 18, 190: 18}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4727}, - // 1800 - {20, 20, 9: 20, 172: 20, 188: 20, 190: 20, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4729}, - {21, 21, 9: 21, 172: 21, 188: 21, 190: 21, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {23, 23, 9: 23, 172: 23, 188: 23, 190: 23}, - {172: 4714, 188: 4713, 190: 4712, 1064: 4732}, // 1805 - {22, 22, 9: 22, 172: 22, 188: 22, 190: 22}, - {300: 4736, 401: 4734, 929: 4735}, - {551: 4744, 602: 135, 1447: 4743}, - {552: 4742}, - {2: 4738, 552: 4737}, + {557: 4759, 665: 4760}, + {19, 19, 9: 19, 130: 19, 192: 19, 194: 19}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4761}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 4762}, + {18, 18, 9: 18, 130: 18, 192: 18, 194: 18}, // 1810 - {552: 4741}, - {552: 4739}, - {552: 4740}, - {136, 136}, - {137, 137}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4764}, + {20, 20, 9: 20, 130: 20, 192: 20, 194: 20, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4766}, + {21, 21, 9: 21, 130: 21, 192: 21, 194: 21, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {23, 23, 9: 23, 130: 23, 192: 23, 194: 23}, // 1815 - {138, 138}, - {602: 4750}, - {238: 4745}, - {750: 4746, 1017: 4747}, - {195: 4748}, + {130: 4751, 192: 4750, 194: 4749, 1070: 4769}, + {22, 22, 9: 22, 130: 22, 192: 22, 194: 22}, + {737: 4792}, + {586: 4772}, + {557: 4773}, // 1820 - {602: 134}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4749}, - {2166, 2166, 9: 2166, 52: 2166, 549: 2166, 551: 2166, 558: 2166, 2166, 2166, 2166, 568: 2166, 2166, 2166, 574: 2166, 2166, 577: 2166, 2166, 2166, 582: 2166, 2166, 2166, 2166, 3835, 3833, 3834, 3832, 3830, 2166, 2166, 2166, 2166, 2166, 2166, 599: 2166, 2166, 2166, 2166, 604: 2166, 611: 2166, 820: 3831, 3829}, - {145: 3094, 259: 4764, 550: 2980, 2979, 4765, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 4763, 743: 4751, 795: 4752, 823: 2943, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 4762}, - {568: 4781, 627: 2161, 984: 4780}, + {15: 4777, 149: 4776, 173: 4779, 4778, 1331: 4775, 1524: 4774}, + {147, 147, 15: 4777, 149: 4776, 173: 4779, 4778, 1331: 4791}, + {139, 139, 15: 139, 149: 139, 173: 139, 139}, + {557: 2394, 577: 4726, 825: 4789}, + {557: 2394, 577: 4726, 825: 4787}, // 1825 - {652, 652, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {654, 654, 558: 1034, 569: 1034, 1034}, - {659, 659}, - {658, 658}, - {657, 657}, + {577: 4726, 580: 2394, 659: 2394, 2394, 825: 4785}, + {577: 4726, 580: 2394, 651: 2394, 2394, 825: 4780}, + {580: 3135, 651: 4782, 4783, 824: 4781, 976: 4784}, + {2292, 2292, 9: 2292, 15: 2292, 17: 2292, 58: 2292, 60: 2292, 62: 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, 121: 2292, 2292, 2292, 2292, 2292, 130: 2292, 149: 2292, 173: 2292, 2292, 179: 2292, 554: 2292, 738: 2292}, + {2291, 2291, 9: 2291, 15: 2291, 17: 2291, 58: 2291, 60: 2291, 62: 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, 121: 2291, 2291, 2291, 2291, 2291, 130: 2291, 149: 2291, 173: 2291, 2291, 179: 2291, 554: 2291, 738: 2291}, // 1830 - {656, 656}, - {655, 655}, - {653, 653}, - {651, 651}, - {650, 650}, + {2290, 2290, 9: 2290, 15: 2290, 17: 2290, 58: 2290, 60: 2290, 62: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 121: 2290, 2290, 2290, 2290, 2290, 130: 2290, 149: 2290, 173: 2290, 2290, 179: 2290, 554: 2290, 738: 2290}, + {134, 134, 15: 134, 149: 134, 173: 134, 134}, + {580: 4214, 659: 4216, 4215, 936: 4786}, + {135, 135, 15: 135, 149: 135, 173: 135, 135}, + {557: 4788}, // 1835 - {144, 144}, - {145: 3094, 259: 4774, 550: 2980, 2979, 4775, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 743: 4751, 795: 4752, 823: 2943, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 4773}, - {173: 4766}, - {140, 140}, - {438, 438, 574: 438, 577: 438, 583: 4767, 438, 909: 4768, 4769}, + {136, 136, 15: 136, 149: 136, 173: 136, 136}, + {557: 4790}, + {137, 137, 15: 137, 149: 137, 173: 137, 137}, + {138, 138, 15: 138, 149: 138, 173: 138, 138}, + {557: 4793}, // 1840 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 4772}, - {437, 437, 52: 437, 549: 437, 551: 437, 558: 437, 561: 437, 569: 437, 437, 574: 437, 577: 437, 437, 437, 582: 437, 584: 437, 591: 437, 437, 594: 437}, - {1523, 1523, 574: 1523, 577: 1523, 584: 3947, 862: 4001, 931: 4770}, - {1088, 1088, 574: 3949, 577: 3948, 863: 4006, 948: 4771}, - {142, 142}, + {58: 4797, 130: 4796, 179: 4798, 1330: 4795, 1523: 4794}, + {148, 148, 58: 4797, 130: 4796, 179: 4798, 1330: 4805}, + {144, 144, 58: 144, 130: 144, 179: 144}, + {557: 2394, 577: 4726, 825: 4803}, + {557: 2394, 577: 4726, 825: 4801}, // 1845 - {439, 439, 52: 439, 549: 439, 551: 439, 558: 439, 561: 439, 569: 439, 439, 574: 439, 577: 439, 439, 439, 582: 439, 584: 439, 586: 3835, 3833, 3834, 3832, 3830, 439, 439, 594: 439, 820: 3831, 3829}, - {143, 143}, - {173: 4776}, - {139, 139}, - {438, 438, 574: 438, 577: 438, 583: 4767, 438, 909: 4768, 4777}, + {577: 4726, 580: 2394, 651: 2394, 2394, 825: 4799}, + {580: 3135, 651: 4782, 4783, 824: 4781, 976: 4800}, + {140, 140, 58: 140, 130: 140, 179: 140}, + {557: 4802}, + {141, 141, 58: 141, 130: 141, 179: 141}, // 1850 - {1523, 1523, 574: 1523, 577: 1523, 584: 3947, 862: 4001, 931: 4778}, - {1088, 1088, 574: 3949, 577: 3948, 863: 4006, 948: 4779}, - {141, 141}, - {627: 4782}, - {2: 2160, 2160, 2160, 2160, 2160, 2160, 2160, 10: 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 53: 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 550: 2160, 579: 2160, 2160, 2160, 627: 2160, 662: 2160}, + {557: 4804}, + {142, 142, 58: 142, 130: 142, 179: 142}, + {143, 143, 58: 143, 130: 143, 179: 143}, + {271: 4809, 405: 4807, 934: 4808}, + {556: 4817, 607: 150, 1457: 4816}, // 1855 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4783}, - {2755, 2755, 2755, 2755, 2755, 2755, 4831, 4833, 598, 10: 4800, 15: 4850, 2505, 4848, 4787, 4852, 4839, 4868, 4832, 4835, 4834, 4837, 4838, 4840, 4847, 598, 4858, 4859, 4869, 4845, 4846, 4851, 4853, 4865, 4864, 4873, 4866, 4863, 4856, 4861, 4862, 4855, 4857, 4860, 4849, 4870, 4871, 100: 4802, 102: 4823, 106: 4824, 110: 4825, 145: 4805, 248: 4794, 264: 4788, 266: 4786, 268: 4809, 271: 4810, 284: 4804, 290: 4820, 305: 4798, 314: 4806, 319: 4801, 340: 4811, 345: 4807, 354: 4821, 4822, 361: 4789, 551: 4819, 554: 4830, 557: 2505, 4867, 565: 2755, 572: 2505, 575: 4791, 582: 4826, 584: 4808, 4818, 666: 4792, 705: 4797, 728: 2505, 4836, 733: 4785, 743: 4813, 746: 4799, 748: 4827, 786: 4803, 4814, 789: 4793, 4812, 885: 4841, 911: 4843, 932: 4842, 955: 4844, 961: 4854, 967: 4872, 996: 4817, 1007: 4815, 1041: 4790, 1049: 4795, 1135: 4829, 1310: 4796, 1335: 4816, 1341: 4828, 4784}, - {2503, 2503, 5689, 5691, 5692, 5690, 565: 5693, 1257: 5688, 1343: 5687}, - {565: 5661}, - {2922, 2922, 221: 5655, 565: 5656}, + {557: 4815}, + {2: 4811, 557: 4810}, + {557: 4814}, + {557: 4812}, + {557: 4813}, // 1860 - {228: 5647}, - {552: 2368, 554: 2368, 573: 4689, 822: 5644}, - {552: 2368, 554: 2368, 573: 4689, 822: 5641}, - {2845, 2845, 2845, 2845, 2845, 2845, 4831, 4833, 598, 2845, 15: 4850, 2505, 4848, 4787, 4852, 4839, 4868, 4832, 4835, 4834, 4837, 4838, 4840, 4847, 598, 4858, 4859, 4869, 4845, 4846, 4851, 4853, 4865, 4864, 4873, 4866, 4863, 4856, 4861, 4862, 4855, 4857, 4860, 4849, 4870, 4871, 554: 4830, 557: 2505, 4867, 565: 2845, 572: 2505, 585: 5637, 728: 2505, 4836, 885: 4841, 911: 4843, 932: 4842, 955: 4844, 961: 4854, 967: 5638}, - {221: 5622, 224: 5623}, + {151, 151}, + {152, 152}, + {153, 153}, + {607: 4823}, + {241: 4818}, // 1865 - {732: 5614}, - {2: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 10: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 53: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 5455, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 5453, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 550: 2760, 565: 5452, 598: 2760, 663: 2749, 678: 2749, 705: 2749, 723: 2749, 5194, 729: 2749, 765: 2749, 2749, 952: 5454, 978: 5026, 999: 5449, 1024: 5451, 1367: 5450}, - {565: 5442}, - {2832, 2832, 2832, 2832, 2832, 2832, 9: 2832, 565: 2832}, - {2831, 2831, 2831, 2831, 2831, 2831, 9: 2831, 565: 2831}, + {755: 4819, 1023: 4820}, + {199: 4821}, + {607: 149}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4822}, + {2192, 2192, 9: 2192, 52: 2192, 554: 2192, 556: 2192, 563: 2192, 2192, 2192, 2192, 573: 2192, 2192, 2192, 579: 2192, 581: 2192, 2192, 2192, 2192, 587: 2192, 2192, 2192, 2192, 3869, 3867, 3868, 3866, 3864, 2192, 2192, 2192, 2192, 2192, 2192, 603: 2192, 2192, 606: 2192, 2192, 609: 2192, 616: 2192, 826: 3865, 3863}, // 1870 - {565: 5440}, - {565: 5437}, - {2: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 10: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 53: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 5418, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 565: 5417, 598: 2760, 663: 5012, 678: 5416, 705: 5027, 724: 5028, 729: 5013, 765: 5420, 938: 5419, 978: 5026, 999: 5415, 1146: 5421}, - {565: 5408}, - {565: 5397}, + {146: 3121, 263: 4837, 555: 3006, 3005, 4838, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 4836, 747: 4824, 800: 4825, 828: 2969, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 4835}, + {573: 4854, 632: 2187, 990: 4853}, + {667, 667, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {669, 669, 563: 1054, 574: 1054, 1054}, + {674, 674}, // 1875 - {565: 5395}, - {565: 5392}, - {565: 5389}, - {20: 5386, 565: 5385}, - {20: 5382, 565: 5381}, + {673, 673}, + {672, 672}, + {671, 671}, + {670, 670}, + {668, 668}, // 1880 - {565: 5371}, - {741: 5364}, - {1077: 5363}, - {1077: 5362}, - {2: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 10: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 53: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 598: 2760, 978: 5026, 999: 5358}, + {666, 666}, + {665, 665}, + {159, 159}, + {146: 3121, 263: 4847, 555: 3006, 3005, 4848, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 747: 4824, 800: 4825, 828: 2969, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 4846}, + {176: 4839}, // 1885 - {2: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 10: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 53: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 598: 2760, 978: 5026, 999: 5052}, - {2: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 10: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 53: 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 2760, 705: 5027, 724: 5028, 729: 5025, 978: 5026, 999: 5023, 1146: 5024}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 556: 5010, 573: 4689, 580: 2368, 663: 5012, 729: 5013, 732: 5008, 822: 5009, 938: 5011, 978: 5007}, - {2799, 2799, 2799, 2799, 2799, 2799, 9: 2799, 565: 2799}, - {2798, 2798, 2798, 2798, 2798, 2798, 9: 2798, 565: 2798}, + {155, 155}, + {453, 453, 579: 453, 582: 453, 588: 4840, 453, 914: 4841, 4842}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4845}, + {452, 452, 52: 452, 554: 452, 556: 452, 563: 452, 566: 452, 574: 452, 452, 579: 452, 582: 452, 452, 452, 587: 452, 589: 452, 596: 452, 452, 599: 452}, + {1544, 1544, 579: 1544, 582: 1544, 589: 3981, 867: 4035, 937: 4843}, // 1890 - {2797, 2797, 2797, 2797, 2797, 2797, 9: 2797, 565: 2797}, - {2796, 2796, 2796, 2796, 2796, 2796, 8: 597, 2796, 29: 597, 565: 2796}, - {262: 5006}, - {262: 5005}, - {2793, 2793, 2793, 2793, 2793, 2793, 9: 2793, 565: 2793}, + {1108, 1108, 579: 3983, 582: 3982, 868: 4040, 953: 4844}, + {157, 157}, + {454, 454, 52: 454, 554: 454, 556: 454, 563: 454, 566: 454, 574: 454, 454, 579: 454, 582: 454, 454, 454, 587: 454, 589: 454, 591: 3869, 3867, 3868, 3866, 3864, 454, 454, 599: 454, 826: 3865, 3863}, + {158, 158}, + {176: 4849}, // 1895 - {2792, 2792, 2792, 2792, 2792, 2792, 9: 2792, 565: 2792}, - {2788, 2788, 2788, 2788, 2788, 2788, 9: 2788, 565: 2788}, - {2787, 2787, 2787, 2787, 2787, 2787, 9: 2787, 565: 2787}, - {57: 2368, 308: 2368, 331: 2368, 333: 2368, 554: 2368, 573: 4689, 822: 4999}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 554: 2368, 573: 4689, 822: 4996}, + {154, 154}, + {453, 453, 579: 453, 582: 453, 588: 4840, 453, 914: 4841, 4850}, + {1544, 1544, 579: 1544, 582: 1544, 589: 3981, 867: 4035, 937: 4851}, + {1108, 1108, 579: 3983, 582: 3982, 868: 4040, 953: 4852}, + {156, 156}, // 1900 - {217: 4995, 788: 4994}, - {2754, 2754, 2754, 2754, 2754, 2754, 9: 4992, 565: 2754}, - {2753, 2753, 2753, 2753, 2753, 2753, 9: 2753, 565: 2753}, - {16: 2504, 18: 2504, 21: 2504, 557: 2504, 572: 2504, 728: 2504}, - {552: 2368, 573: 4689, 822: 4990}, + {632: 4855}, + {2: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 10: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 53: 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 555: 2186, 584: 2186, 2186, 2186, 632: 2186, 667: 2186}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4856}, + {2781, 2781, 2781, 2781, 2781, 2781, 4904, 4906, 613, 10: 4873, 15: 4923, 2531, 4921, 4860, 4925, 4912, 4941, 4905, 4908, 4907, 4910, 4911, 4913, 4920, 613, 4931, 4932, 4942, 4918, 4919, 4924, 4926, 4938, 4937, 4946, 4939, 4936, 4929, 4934, 4935, 4928, 4930, 4933, 4922, 4943, 4944, 100: 4875, 102: 4896, 106: 4897, 110: 4898, 146: 4878, 252: 4867, 269: 4861, 272: 4859, 4882, 276: 4883, 289: 4877, 295: 4893, 309: 4871, 318: 4879, 323: 4874, 344: 4884, 349: 4880, 358: 4894, 4895, 365: 4862, 556: 4892, 559: 4903, 562: 2531, 4940, 570: 2781, 578: 2531, 581: 4864, 587: 4899, 589: 4881, 4891, 672: 4865, 727: 4870, 733: 2531, 4909, 738: 4858, 747: 4886, 751: 4872, 753: 4900, 791: 4876, 4887, 794: 4866, 4885, 890: 4914, 916: 4916, 938: 4915, 960: 4917, 966: 4927, 972: 4945, 1002: 4890, 1013: 4888, 1047: 4863, 1055: 4868, 1141: 4902, 1316: 4869, 1344: 4889, 1351: 4901, 4857}, + {2529, 2529, 5762, 5764, 5765, 5763, 570: 5766, 1263: 5761, 1353: 5760}, // 1905 - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 573: 4689, 822: 4988}, - {22: 4983, 249: 4984, 315: 4985}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 573: 4689, 822: 4981}, - {313: 4978}, - {313: 4975}, + {570: 5734}, + {2948, 2948, 226: 5728, 570: 5729}, + {233: 5720}, + {557: 2394, 559: 2394, 577: 4726, 825: 5717}, + {557: 2394, 559: 2394, 577: 4726, 825: 5714}, // 1910 - {573: 4689, 576: 2368, 822: 4973}, - {573: 4689, 576: 2368, 822: 4971}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 573: 4689, 822: 4969}, - {573: 4689, 576: 2368, 822: 4967}, - {2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 15: 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2442, 52: 2442, 549: 2442, 2442, 2442, 554: 2442, 556: 2442, 2442, 2442, 565: 2442, 567: 2442, 2442, 571: 2442, 2442, 585: 2442, 627: 2442, 668: 2442, 728: 2442, 2442}, + {2871, 2871, 2871, 2871, 2871, 2871, 4904, 4906, 613, 2871, 15: 4923, 2531, 4921, 4860, 4925, 4912, 4941, 4905, 4908, 4907, 4910, 4911, 4913, 4920, 613, 4931, 4932, 4942, 4918, 4919, 4924, 4926, 4938, 4937, 4946, 4939, 4936, 4929, 4934, 4935, 4928, 4930, 4933, 4922, 4943, 4944, 559: 4903, 562: 2531, 4940, 570: 2871, 578: 2531, 590: 5710, 733: 2531, 4909, 890: 4914, 916: 4916, 938: 4915, 960: 4917, 966: 4927, 972: 5711}, + {226: 5695, 229: 5696}, + {737: 5687}, + {2: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 10: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 53: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 5528, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 5526, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 555: 2786, 570: 5525, 605: 2786, 668: 2775, 720: 2775, 727: 2775, 2775, 5267, 734: 2775, 770: 2775, 2775, 957: 5527, 984: 5099, 1005: 5522, 1029: 5524, 1377: 5523}, + {570: 5515}, // 1915 - {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, 549: 635, 635, 635, 554: 635, 556: 635, 635, 635, 565: 635, 567: 635, 635, 571: 635, 635, 585: 635, 627: 635, 668: 635, 728: 635, 635}, - {16: 4519, 557: 4962, 572: 4520, 728: 4518, 873: 4961}, - {8: 4955, 29: 4956}, - {573: 4689, 576: 2368, 822: 4953}, - {573: 4689, 576: 2368, 822: 4951}, + {2858, 2858, 2858, 2858, 2858, 2858, 9: 2858, 570: 2858}, + {2857, 2857, 2857, 2857, 2857, 2857, 9: 2857, 570: 2857}, + {570: 5513}, + {570: 5510}, + {2: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 10: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 53: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 5491, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 570: 5490, 605: 2786, 668: 5085, 720: 5489, 727: 5100, 729: 5101, 734: 5086, 770: 5493, 945: 5492, 984: 5099, 1005: 5488, 1152: 5494}, // 1920 - {552: 2368, 573: 4689, 822: 4949}, - {573: 4689, 576: 2368, 822: 4947}, - {573: 4689, 576: 2368, 822: 4945}, - {552: 2368, 573: 4689, 822: 4943}, - {552: 2368, 573: 4689, 822: 4941}, + {570: 5481}, + {570: 5470}, + {570: 5468}, + {570: 5465}, + {570: 5462}, // 1925 - {573: 4689, 576: 2368, 822: 4939}, - {573: 4689, 576: 2368, 822: 4937}, - {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, 549: 621, 621, 621, 554: 621, 556: 621, 621, 621, 565: 621, 567: 621, 621, 571: 621, 621, 585: 621, 627: 621, 668: 621, 728: 621, 621}, - {554: 2368, 573: 4689, 576: 2368, 822: 4935}, - {554: 2368, 573: 4689, 576: 2368, 822: 4932}, + {20: 5459, 570: 5458}, + {20: 5455, 570: 5454}, + {570: 5444}, + {746: 5437}, + {1083: 5436}, // 1930 - {554: 2368, 573: 4689, 576: 2368, 822: 4929}, - {573: 4689, 576: 2368, 822: 4927}, - {573: 4689, 576: 2368, 822: 4925}, - {573: 4689, 576: 2368, 655: 2368, 2368, 822: 4923}, - {552: 2368, 573: 4689, 822: 4921}, + {1083: 5435}, + {2: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 10: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 53: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 605: 2786, 984: 5099, 1005: 5431}, + {2: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 10: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 53: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 605: 2786, 984: 5099, 1005: 5125}, + {2: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 10: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 53: 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2786, 727: 5100, 729: 5101, 734: 5098, 984: 5099, 1005: 5096, 1152: 5097}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 561: 5083, 577: 4726, 585: 2394, 668: 5085, 734: 5086, 737: 5081, 825: 5082, 945: 5084, 984: 5080}, // 1935 - {552: 2368, 573: 4689, 822: 4919}, - {573: 4689, 576: 2368, 822: 4917}, - {573: 4689, 576: 2368, 822: 4915}, - {554: 2368, 573: 4689, 576: 2368, 822: 4911}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 566: 2368, 573: 4689, 822: 4908}, + {2825, 2825, 2825, 2825, 2825, 2825, 9: 2825, 570: 2825}, + {2824, 2824, 2824, 2824, 2824, 2824, 9: 2824, 570: 2824}, + {2823, 2823, 2823, 2823, 2823, 2823, 9: 2823, 570: 2823}, + {2822, 2822, 2822, 2822, 2822, 2822, 8: 612, 2822, 29: 612, 570: 2822}, + {267: 5079}, // 1940 - {550: 2368, 573: 4689, 822: 4903}, - {552: 2368, 573: 4689, 822: 4900}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 573: 4689, 822: 4894}, - {552: 2368, 573: 4689, 822: 4892}, - {552: 2368, 573: 4689, 822: 4890}, + {267: 5078}, + {2819, 2819, 2819, 2819, 2819, 2819, 9: 2819, 570: 2819}, + {2818, 2818, 2818, 2818, 2818, 2818, 9: 2818, 570: 2818}, + {2814, 2814, 2814, 2814, 2814, 2814, 9: 2814, 570: 2814}, + {2813, 2813, 2813, 2813, 2813, 2813, 9: 2813, 570: 2813}, // 1945 - {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, 549: 592, 592, 592, 554: 592, 556: 592, 592, 592, 565: 592, 567: 592, 592, 571: 592, 592, 585: 592, 627: 592, 668: 592, 728: 592, 592}, - {189: 2368, 266: 2368, 270: 2368, 306: 2368, 347: 2368, 365: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 554: 2368, 573: 4689, 822: 4874}, - {189: 4877, 266: 4880, 270: 4876, 306: 4878, 347: 4879, 365: 4881, 4882, 4887, 4886, 4883, 4888, 4889, 4884, 4885, 554: 4875}, - {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, 549: 586, 586, 586, 554: 586, 556: 586, 586, 586, 565: 586, 567: 586, 586, 571: 586, 586, 585: 586, 627: 586, 668: 586, 728: 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, 549: 585, 585, 585, 554: 585, 556: 585, 585, 585, 565: 585, 567: 585, 585, 571: 585, 585, 585: 585, 627: 585, 668: 585, 728: 585, 585}, + {54: 2394, 312: 2394, 335: 2394, 337: 2394, 559: 2394, 577: 4726, 825: 5072}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 559: 2394, 577: 4726, 825: 5069}, + {222: 5068, 793: 5067}, + {2780, 2780, 2780, 2780, 2780, 2780, 9: 5065, 570: 2780}, + {2779, 2779, 2779, 2779, 2779, 2779, 9: 2779, 570: 2779}, // 1950 - {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, 549: 584, 584, 584, 554: 584, 556: 584, 584, 584, 565: 584, 567: 584, 584, 571: 584, 584, 585: 584, 627: 584, 668: 584, 728: 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, 549: 583, 583, 583, 554: 583, 556: 583, 583, 583, 565: 583, 567: 583, 583, 571: 583, 583, 585: 583, 627: 583, 668: 583, 728: 583, 583}, - {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, 549: 582, 582, 582, 554: 582, 556: 582, 582, 582, 565: 582, 567: 582, 582, 571: 582, 582, 585: 582, 627: 582, 668: 582, 728: 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, 549: 581, 581, 581, 554: 581, 556: 581, 581, 581, 565: 581, 567: 581, 581, 571: 581, 581, 585: 581, 627: 581, 668: 581, 728: 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, 549: 580, 580, 580, 554: 580, 556: 580, 580, 580, 565: 580, 567: 580, 580, 571: 580, 580, 585: 580, 627: 580, 668: 580, 728: 580, 580}, + {16: 2530, 18: 2530, 21: 2530, 562: 2530, 578: 2530, 733: 2530}, + {557: 2394, 577: 4726, 825: 5063}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 577: 4726, 825: 5061}, + {22: 5056, 253: 5057, 319: 5058}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 577: 4726, 825: 5054}, // 1955 - {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, 549: 579, 579, 579, 554: 579, 556: 579, 579, 579, 565: 579, 567: 579, 579, 571: 579, 579, 585: 579, 627: 579, 668: 579, 728: 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, 549: 578, 578, 578, 554: 578, 556: 578, 578, 578, 565: 578, 567: 578, 578, 571: 578, 578, 585: 578, 627: 578, 668: 578, 728: 578, 578}, - {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, 549: 577, 577, 577, 554: 577, 556: 577, 577, 577, 565: 577, 567: 577, 577, 571: 577, 577, 585: 577, 627: 577, 668: 577, 728: 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, 549: 576, 576, 576, 554: 576, 556: 576, 576, 576, 565: 576, 567: 576, 576, 571: 576, 576, 585: 576, 627: 576, 668: 576, 728: 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, 549: 575, 575, 575, 554: 575, 556: 575, 575, 575, 565: 575, 567: 575, 575, 571: 575, 575, 585: 575, 627: 575, 668: 575, 728: 575, 575}, + {317: 5051}, + {317: 5048}, + {577: 4726, 580: 2394, 825: 5046}, + {577: 4726, 580: 2394, 825: 5044}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 577: 4726, 825: 5042}, // 1960 - {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, 549: 574, 574, 574, 554: 574, 556: 574, 574, 574, 565: 574, 567: 574, 574, 571: 574, 574, 585: 574, 627: 574, 668: 574, 728: 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, 549: 573, 573, 573, 554: 573, 556: 573, 573, 573, 565: 573, 567: 573, 573, 571: 573, 573, 585: 573, 627: 573, 668: 573, 728: 573, 573}, - {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, 549: 572, 572, 572, 554: 572, 556: 572, 572, 572, 565: 572, 567: 572, 572, 571: 572, 572, 585: 572, 627: 572, 668: 572, 728: 572, 572}, - {552: 4891}, - {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, 549: 599, 599, 599, 554: 599, 556: 599, 599, 599, 565: 599, 567: 599, 599, 571: 599, 599, 585: 599, 627: 599, 668: 599, 728: 599, 599}, + {577: 4726, 580: 2394, 825: 5040}, + {2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 15: 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468, 52: 2468, 554: 2468, 2468, 2468, 559: 2468, 561: 2468, 2468, 2468, 570: 2468, 572: 2468, 2468, 576: 2468, 578: 2468, 590: 2468, 632: 2468, 680: 2468, 733: 2468, 2468}, + {650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 15: 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 554: 650, 650, 650, 559: 650, 561: 650, 650, 650, 570: 650, 572: 650, 650, 576: 650, 578: 650, 590: 650, 632: 650, 680: 650, 733: 650, 650}, + {16: 4553, 562: 5035, 578: 4554, 733: 4552, 878: 5034}, + {8: 5028, 29: 5029}, // 1965 - {552: 4893}, - {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, 549: 600, 600, 600, 554: 600, 556: 600, 600, 600, 565: 600, 567: 600, 600, 571: 600, 600, 585: 600, 627: 600, 668: 600, 728: 600, 600}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4895, 3121, 3122, 3120}, - {562: 4896}, - {660: 4897}, + {577: 4726, 580: 2394, 825: 5026}, + {577: 4726, 580: 2394, 825: 5024}, + {557: 2394, 577: 4726, 825: 5022}, + {577: 4726, 580: 2394, 825: 5020}, + {577: 4726, 580: 2394, 825: 5018}, // 1970 - {552: 3675, 566: 3666, 576: 3670, 648: 3665, 3667, 655: 3669, 3668, 3673, 3674, 667: 3672, 797: 4898, 3671}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 907: 3837, 921: 4899}, - {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, 549: 601, 601, 601, 554: 601, 556: 601, 601, 601, 565: 601, 567: 601, 601, 571: 601, 601, 585: 601, 627: 601, 668: 601, 728: 601, 601}, - {552: 4902, 1191: 4901}, - {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, 549: 602, 602, 602, 554: 602, 556: 602, 602, 602, 565: 602, 567: 602, 602, 571: 602, 602, 585: 602, 627: 602, 668: 602, 728: 602, 602}, + {557: 2394, 577: 4726, 825: 5016}, + {557: 2394, 577: 4726, 825: 5014}, + {577: 4726, 580: 2394, 825: 5012}, + {577: 4726, 580: 2394, 825: 5010}, + {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, 554: 636, 636, 636, 559: 636, 561: 636, 636, 636, 570: 636, 572: 636, 636, 576: 636, 578: 636, 590: 636, 632: 636, 680: 636, 733: 636, 636}, // 1975 - {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, 549: 148, 148, 148, 554: 148, 556: 148, 148, 148, 565: 148, 567: 148, 148, 571: 148, 148, 575: 148, 585: 148, 627: 148, 668: 148, 728: 148, 148}, - {550: 4904}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 776, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 4905, 1319: 4906}, - {775, 775, 9: 4021, 52: 775, 551: 775}, - {52: 4907}, + {559: 2394, 577: 4726, 580: 2394, 825: 5008}, + {559: 2394, 577: 4726, 580: 2394, 825: 5005}, + {559: 2394, 577: 4726, 580: 2394, 825: 5002}, + {577: 4726, 580: 2394, 825: 5000}, + {577: 4726, 580: 2394, 825: 4998}, // 1980 - {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, 549: 603, 603, 603, 554: 603, 556: 603, 603, 603, 565: 603, 567: 603, 603, 571: 603, 603, 585: 603, 627: 603, 668: 603, 728: 603, 603}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 566: 4909, 791: 3827, 3121, 3122, 3120, 825: 4910}, - {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, 549: 605, 605, 605, 554: 605, 556: 605, 605, 605, 565: 605, 567: 605, 605, 571: 605, 605, 585: 605, 627: 605, 668: 605, 728: 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, 549: 604, 604, 604, 554: 604, 556: 604, 604, 604, 565: 604, 567: 604, 604, 571: 604, 604, 585: 604, 627: 604, 668: 604, 728: 604, 604}, - {554: 4913, 576: 3107, 819: 3956, 834: 4914, 1311: 4912}, + {577: 4726, 580: 2394, 659: 2394, 2394, 825: 4996}, + {557: 2394, 577: 4726, 825: 4994}, + {557: 2394, 577: 4726, 825: 4992}, + {577: 4726, 580: 2394, 825: 4990}, + {577: 4726, 580: 2394, 825: 4988}, // 1985 - {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, 549: 608, 608, 608, 554: 608, 556: 608, 608, 608, 565: 608, 567: 608, 608, 571: 608, 608, 585: 608, 627: 608, 668: 608, 728: 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, 549: 596, 596, 596, 554: 596, 556: 596, 596, 596, 565: 596, 567: 596, 596, 571: 596, 596, 585: 596, 627: 596, 668: 596, 728: 596, 596}, - {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, 549: 595, 595, 595, 554: 595, 556: 595, 595, 595, 565: 595, 567: 595, 595, 571: 595, 595, 585: 595, 627: 595, 668: 595, 728: 595, 595}, - {576: 3107, 819: 3956, 834: 4916}, - {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, 549: 609, 609, 609, 554: 609, 556: 609, 609, 609, 565: 609, 567: 609, 609, 571: 609, 609, 585: 609, 627: 609, 668: 609, 728: 609, 609}, + {559: 2394, 577: 4726, 580: 2394, 825: 4984}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 571: 2394, 577: 4726, 825: 4981}, + {555: 2394, 577: 4726, 825: 4976}, + {557: 2394, 577: 4726, 825: 4973}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 577: 4726, 825: 4967}, // 1990 - {576: 3107, 819: 3956, 834: 4918}, - {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, 549: 610, 610, 610, 554: 610, 556: 610, 610, 610, 565: 610, 567: 610, 610, 571: 610, 610, 585: 610, 627: 610, 668: 610, 728: 610, 610}, - {552: 4920}, - {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, 549: 611, 611, 611, 554: 611, 556: 611, 611, 611, 565: 611, 567: 611, 611, 571: 611, 611, 585: 611, 627: 611, 668: 611, 728: 611, 611}, - {552: 4922}, + {557: 2394, 577: 4726, 825: 4965}, + {557: 2394, 577: 4726, 825: 4963}, + {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, 578: 607, 590: 607, 632: 607, 680: 607, 733: 607, 607}, + {193: 2394, 272: 2394, 275: 2394, 310: 2394, 351: 2394, 369: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 559: 2394, 577: 4726, 825: 4947}, + {193: 4950, 272: 4953, 275: 4949, 310: 4951, 351: 4952, 369: 4954, 4955, 4960, 4959, 4956, 4961, 4962, 4957, 4958, 559: 4948}, // 1995 - {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, 549: 612, 612, 612, 554: 612, 556: 612, 612, 612, 565: 612, 567: 612, 612, 571: 612, 612, 585: 612, 627: 612, 668: 612, 728: 612, 612}, - {576: 4180, 655: 4182, 4181, 940: 4924}, - {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, 549: 613, 613, 613, 554: 613, 556: 613, 613, 613, 565: 613, 567: 613, 613, 571: 613, 613, 585: 613, 627: 613, 668: 613, 728: 613, 613}, - {576: 3107, 819: 3956, 834: 4926}, - {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, 549: 614, 614, 614, 554: 614, 556: 614, 614, 614, 565: 614, 567: 614, 614, 571: 614, 614, 585: 614, 627: 614, 668: 614, 728: 614, 614}, + {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, 578: 601, 590: 601, 632: 601, 680: 601, 733: 601, 601}, + {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, 578: 600, 590: 600, 632: 600, 680: 600, 733: 600, 600}, + {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, 578: 599, 590: 599, 632: 599, 680: 599, 733: 599, 599}, + {598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 15: 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 554: 598, 598, 598, 559: 598, 561: 598, 598, 598, 570: 598, 572: 598, 598, 576: 598, 578: 598, 590: 598, 632: 598, 680: 598, 733: 598, 598}, + {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, 554: 597, 597, 597, 559: 597, 561: 597, 597, 597, 570: 597, 572: 597, 597, 576: 597, 578: 597, 590: 597, 632: 597, 680: 597, 733: 597, 597}, // 2000 - {576: 3107, 819: 3956, 834: 4928}, - {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, 549: 615, 615, 615, 554: 615, 556: 615, 615, 615, 565: 615, 567: 615, 615, 571: 615, 615, 585: 615, 627: 615, 668: 615, 728: 615, 615}, - {554: 4931, 576: 3107, 819: 3956, 834: 4930}, - {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, 549: 617, 617, 617, 554: 617, 556: 617, 617, 617, 565: 617, 567: 617, 617, 571: 617, 617, 585: 617, 627: 617, 668: 617, 728: 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, 549: 616, 616, 616, 554: 616, 556: 616, 616, 616, 565: 616, 567: 616, 616, 571: 616, 616, 585: 616, 627: 616, 668: 616, 728: 616, 616}, + {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, 578: 596, 590: 596, 632: 596, 680: 596, 733: 596, 596}, + {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, 578: 595, 590: 595, 632: 595, 680: 595, 733: 595, 595}, + {594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 15: 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 554: 594, 594, 594, 559: 594, 561: 594, 594, 594, 570: 594, 572: 594, 594, 576: 594, 578: 594, 590: 594, 632: 594, 680: 594, 733: 594, 594}, + {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, 554: 593, 593, 593, 559: 593, 561: 593, 593, 593, 570: 593, 572: 593, 593, 576: 593, 578: 593, 590: 593, 632: 593, 680: 593, 733: 593, 593}, + {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, 578: 592, 590: 592, 632: 592, 680: 592, 733: 592, 592}, // 2005 - {554: 4934, 576: 3107, 819: 3956, 834: 4933}, - {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, 549: 619, 619, 619, 554: 619, 556: 619, 619, 619, 565: 619, 567: 619, 619, 571: 619, 619, 585: 619, 627: 619, 668: 619, 728: 619, 619}, - {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, 549: 618, 618, 618, 554: 618, 556: 618, 618, 618, 565: 618, 567: 618, 618, 571: 618, 618, 585: 618, 627: 618, 668: 618, 728: 618, 618}, - {554: 4913, 576: 3107, 819: 3956, 834: 4914, 1311: 4936}, - {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, 549: 620, 620, 620, 554: 620, 556: 620, 620, 620, 565: 620, 567: 620, 620, 571: 620, 620, 585: 620, 627: 620, 668: 620, 728: 620, 620}, + {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, 578: 591, 590: 591, 632: 591, 680: 591, 733: 591, 591}, + {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, 578: 590, 590: 590, 632: 590, 680: 590, 733: 590, 590}, + {589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 15: 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 554: 589, 589, 589, 559: 589, 561: 589, 589, 589, 570: 589, 572: 589, 589, 576: 589, 578: 589, 590: 589, 632: 589, 680: 589, 733: 589, 589}, + {588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 15: 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 554: 588, 588, 588, 559: 588, 561: 588, 588, 588, 570: 588, 572: 588, 588, 576: 588, 578: 588, 590: 588, 632: 588, 680: 588, 733: 588, 588}, + {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, 554: 587, 587, 587, 559: 587, 561: 587, 587, 587, 570: 587, 572: 587, 587, 576: 587, 578: 587, 590: 587, 632: 587, 680: 587, 733: 587, 587}, // 2010 - {576: 3107, 819: 3956, 834: 4938}, - {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, 549: 622, 622, 622, 554: 622, 556: 622, 622, 622, 565: 622, 567: 622, 622, 571: 622, 622, 585: 622, 627: 622, 668: 622, 728: 622, 622}, - {576: 3107, 819: 3956, 834: 4940}, - {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, 549: 623, 623, 623, 554: 623, 556: 623, 623, 623, 565: 623, 567: 623, 623, 571: 623, 623, 585: 623, 627: 623, 668: 623, 728: 623, 623}, - {552: 4942}, + {557: 4964}, + {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, 578: 614, 590: 614, 632: 614, 680: 614, 733: 614, 614}, + {557: 4966}, + {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, 578: 615, 590: 615, 632: 615, 680: 615, 733: 615, 615}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4968, 3149, 3150, 3148}, // 2015 - {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, 549: 624, 624, 624, 554: 624, 556: 624, 624, 624, 565: 624, 567: 624, 624, 571: 624, 624, 585: 624, 627: 624, 668: 624, 728: 624, 624}, - {552: 4944}, - {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, 549: 625, 625, 625, 554: 625, 556: 625, 625, 625, 565: 625, 567: 625, 625, 571: 625, 625, 585: 625, 627: 625, 668: 625, 728: 625, 625}, - {576: 3107, 819: 3956, 834: 4946}, - {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, 549: 626, 626, 626, 554: 626, 556: 626, 626, 626, 565: 626, 567: 626, 626, 571: 626, 626, 585: 626, 627: 626, 668: 626, 728: 626, 626}, + {567: 4969}, + {665: 4970}, + {557: 3708, 571: 3699, 580: 3703, 651: 3698, 3700, 659: 3702, 3701, 662: 3706, 3707, 671: 3705, 802: 4971, 3704}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 912: 3871, 926: 4972}, + {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, 578: 616, 590: 616, 632: 616, 680: 616, 733: 616, 616}, // 2020 - {576: 3107, 819: 3956, 834: 4948}, - {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, 549: 627, 627, 627, 554: 627, 556: 627, 627, 627, 565: 627, 567: 627, 627, 571: 627, 627, 585: 627, 627: 627, 668: 627, 728: 627, 627}, - {552: 4950}, - {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, 549: 628, 628, 628, 554: 628, 556: 628, 628, 628, 565: 628, 567: 628, 628, 571: 628, 628, 585: 628, 627: 628, 668: 628, 728: 628, 628}, - {576: 3107, 819: 3956, 834: 4952}, + {557: 4975, 1197: 4974}, + {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, 578: 617, 590: 617, 632: 617, 680: 617, 733: 617, 617}, + {163, 163, 163, 163, 163, 163, 163, 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, 554: 163, 163, 163, 559: 163, 561: 163, 163, 163, 570: 163, 572: 163, 163, 576: 163, 578: 163, 581: 163, 590: 163, 632: 163, 680: 163, 733: 163, 163}, + {555: 4977}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 792, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 4978, 1325: 4979}, // 2025 - {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, 549: 629, 629, 629, 554: 629, 556: 629, 629, 629, 565: 629, 567: 629, 629, 571: 629, 629, 585: 629, 627: 629, 668: 629, 728: 629, 629}, - {576: 3107, 819: 3956, 834: 4954}, - {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, 549: 631, 631, 631, 554: 631, 556: 631, 631, 631, 565: 631, 567: 631, 631, 571: 631, 631, 585: 631, 627: 631, 668: 631, 728: 631, 631}, - {573: 4689, 576: 2368, 822: 4959}, - {573: 4689, 576: 2368, 822: 4957}, + {791, 791, 9: 4055, 52: 791, 556: 791}, + {52: 4980}, + {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, 578: 618, 590: 618, 632: 618, 680: 618, 733: 618, 618}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 571: 4982, 796: 3861, 3149, 3150, 3148, 830: 4983}, + {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, 578: 620, 590: 620, 632: 620, 680: 620, 733: 620, 620}, // 2030 - {576: 3107, 819: 3956, 834: 4958}, - {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, 549: 630, 630, 630, 554: 630, 556: 630, 630, 630, 565: 630, 567: 630, 630, 571: 630, 630, 585: 630, 627: 630, 668: 630, 728: 630, 630}, - {576: 3107, 819: 3956, 834: 4960}, - {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, 549: 632, 632, 632, 554: 632, 556: 632, 632, 632, 565: 632, 567: 632, 632, 571: 632, 632, 585: 632, 627: 632, 668: 632, 728: 632, 632}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 573: 4689, 605: 2368, 822: 4965}, + {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, 578: 619, 590: 619, 632: 619, 680: 619, 733: 619, 619}, + {559: 4986, 580: 3135, 824: 3990, 839: 4987, 1317: 4985}, + {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, 578: 623, 590: 623, 632: 623, 680: 623, 733: 623, 623}, + {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, 578: 611, 590: 611, 632: 611, 680: 611, 733: 611, 611}, + {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, 578: 610, 590: 610, 632: 610, 680: 610, 733: 610, 610}, // 2035 - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 573: 4689, 605: 2368, 822: 4963}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 3825, 791: 3827, 3121, 3122, 3120, 825: 3824, 998: 4964}, - {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, 549: 633, 633, 633, 554: 633, 556: 633, 633, 633, 565: 633, 567: 633, 633, 571: 633, 633, 585: 633, 627: 633, 668: 633, 728: 633, 633}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 4966}, - {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, 549: 634, 634, 634, 554: 634, 556: 634, 634, 634, 565: 634, 567: 634, 634, 571: 634, 634, 585: 634, 627: 634, 668: 634, 728: 634, 634}, + {580: 3135, 824: 3990, 839: 4989}, + {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, 578: 624, 590: 624, 632: 624, 680: 624, 733: 624, 624}, + {580: 3135, 824: 3990, 839: 4991}, + {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, 578: 625, 590: 625, 632: 625, 680: 625, 733: 625, 625}, + {557: 4993}, // 2040 - {576: 3107, 819: 3956, 834: 4968}, - {2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 15: 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 52: 2443, 549: 2443, 2443, 2443, 554: 2443, 556: 2443, 2443, 2443, 565: 2443, 567: 2443, 2443, 571: 2443, 2443, 585: 2443, 627: 2443, 668: 2443, 728: 2443, 2443}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4970, 3121, 3122, 3120}, - {2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 15: 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 52: 2444, 549: 2444, 2444, 2444, 554: 2444, 556: 2444, 2444, 2444, 565: 2444, 567: 2444, 2444, 571: 2444, 2444, 585: 2444, 627: 2444, 668: 2444, 728: 2444, 2444}, - {576: 3107, 819: 3956, 834: 4972}, + {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, 578: 626, 590: 626, 632: 626, 680: 626, 733: 626, 626}, + {557: 4995}, + {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, 578: 627, 590: 627, 632: 627, 680: 627, 733: 627, 627}, + {580: 4214, 659: 4216, 4215, 936: 4997}, + {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, 578: 628, 590: 628, 632: 628, 680: 628, 733: 628, 628}, // 2045 - {2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 15: 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 52: 2445, 549: 2445, 2445, 2445, 554: 2445, 556: 2445, 2445, 2445, 565: 2445, 567: 2445, 2445, 571: 2445, 2445, 585: 2445, 627: 2445, 668: 2445, 728: 2445, 2445}, - {576: 3107, 819: 3956, 834: 4974}, - {2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 15: 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 52: 2446, 549: 2446, 2446, 2446, 554: 2446, 556: 2446, 2446, 2446, 565: 2446, 567: 2446, 2446, 571: 2446, 2446, 585: 2446, 627: 2446, 668: 2446, 728: 2446, 2446}, - {552: 2368, 573: 4689, 822: 4976}, - {552: 4977}, + {580: 3135, 824: 3990, 839: 4999}, + {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, 578: 629, 590: 629, 632: 629, 680: 629, 733: 629, 629}, + {580: 3135, 824: 3990, 839: 5001}, + {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, 578: 630, 590: 630, 632: 630, 680: 630, 733: 630, 630}, + {559: 5004, 580: 3135, 824: 3990, 839: 5003}, // 2050 - {2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 15: 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 52: 2447, 549: 2447, 2447, 2447, 554: 2447, 556: 2447, 2447, 2447, 565: 2447, 567: 2447, 2447, 571: 2447, 2447, 585: 2447, 627: 2447, 668: 2447, 728: 2447, 2447}, - {552: 2368, 573: 4689, 822: 4979}, - {552: 4980}, - {2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 15: 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 52: 2448, 549: 2448, 2448, 2448, 554: 2448, 556: 2448, 2448, 2448, 565: 2448, 567: 2448, 2448, 571: 2448, 2448, 585: 2448, 627: 2448, 668: 2448, 728: 2448, 2448}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 791: 3827, 3121, 3122, 3120, 825: 4982}, + {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, 578: 632, 590: 632, 632: 632, 680: 632, 733: 632, 632}, + {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, 578: 631, 590: 631, 632: 631, 680: 631, 733: 631, 631}, + {559: 5007, 580: 3135, 824: 3990, 839: 5006}, + {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, 578: 634, 590: 634, 632: 634, 680: 634, 733: 634, 634}, + {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, 578: 633, 590: 633, 632: 633, 680: 633, 733: 633, 633}, // 2055 - {2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 15: 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 52: 2449, 549: 2449, 2449, 2449, 554: 2449, 556: 2449, 2449, 2449, 565: 2449, 567: 2449, 2449, 571: 2449, 2449, 585: 2449, 627: 2449, 668: 2449, 728: 2449, 2449}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 573: 4689, 822: 4986}, - {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, 549: 607, 607, 607, 554: 607, 556: 607, 607, 607, 565: 607, 567: 607, 607, 571: 607, 607, 585: 607, 627: 607, 668: 607, 728: 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, 549: 606, 606, 606, 554: 606, 556: 606, 606, 606, 565: 606, 567: 606, 606, 571: 606, 606, 585: 606, 627: 606, 668: 606, 728: 606, 606}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 791: 3827, 3121, 3122, 3120, 825: 4987}, + {559: 4986, 580: 3135, 824: 3990, 839: 4987, 1317: 5009}, + {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, 578: 635, 590: 635, 632: 635, 680: 635, 733: 635, 635}, + {580: 3135, 824: 3990, 839: 5011}, + {637, 637, 637, 637, 637, 637, 637, 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, 637, 637, 559: 637, 561: 637, 637, 637, 570: 637, 572: 637, 637, 576: 637, 578: 637, 590: 637, 632: 637, 680: 637, 733: 637, 637}, + {580: 3135, 824: 3990, 839: 5013}, // 2060 - {2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 15: 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 52: 2450, 549: 2450, 2450, 2450, 554: 2450, 556: 2450, 2450, 2450, 565: 2450, 567: 2450, 2450, 571: 2450, 2450, 585: 2450, 627: 2450, 668: 2450, 728: 2450, 2450}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 791: 3827, 3121, 3122, 3120, 825: 4989}, - {2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 15: 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 52: 2451, 549: 2451, 2451, 2451, 554: 2451, 556: 2451, 2451, 2451, 565: 2451, 567: 2451, 2451, 571: 2451, 2451, 585: 2451, 627: 2451, 668: 2451, 728: 2451, 2451}, - {552: 4991}, - {2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 15: 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 52: 2452, 549: 2452, 2452, 2452, 554: 2452, 556: 2452, 2452, 2452, 565: 2452, 567: 2452, 2452, 571: 2452, 2452, 585: 2452, 627: 2452, 668: 2452, 728: 2452, 2452}, + {638, 638, 638, 638, 638, 638, 638, 638, 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, 554: 638, 638, 638, 559: 638, 561: 638, 638, 638, 570: 638, 572: 638, 638, 576: 638, 578: 638, 590: 638, 632: 638, 680: 638, 733: 638, 638}, + {557: 5015}, + {639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 15: 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 554: 639, 639, 639, 559: 639, 561: 639, 639, 639, 570: 639, 572: 639, 639, 576: 639, 578: 639, 590: 639, 632: 639, 680: 639, 733: 639, 639}, + {557: 5017}, + {640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 15: 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 554: 640, 640, 640, 559: 640, 561: 640, 640, 640, 570: 640, 572: 640, 640, 576: 640, 578: 640, 590: 640, 632: 640, 680: 640, 733: 640, 640}, // 2065 - {6: 4831, 4833, 598, 10: 4800, 15: 4850, 2505, 4848, 4787, 4852, 4839, 4868, 4832, 4835, 4834, 4837, 4838, 4840, 4847, 598, 4858, 4859, 4869, 4845, 4846, 4851, 4853, 4865, 4864, 4873, 4866, 4863, 4856, 4861, 4862, 4855, 4857, 4860, 4849, 4870, 4871, 100: 4802, 102: 4823, 106: 4824, 110: 4825, 145: 4805, 248: 4794, 264: 4788, 268: 4809, 271: 4810, 284: 4804, 290: 4820, 305: 4798, 314: 4806, 319: 4801, 340: 4811, 345: 4807, 354: 4821, 4822, 361: 4789, 551: 4819, 554: 4830, 557: 2505, 4867, 572: 2505, 575: 4791, 582: 4826, 584: 4808, 4818, 666: 4792, 705: 4797, 728: 2505, 4836, 743: 4813, 746: 4799, 748: 4827, 786: 4803, 4814, 789: 4793, 4812, 885: 4841, 911: 4843, 932: 4842, 955: 4844, 961: 4854, 967: 4872, 996: 4817, 1007: 4815, 1041: 4790, 1049: 4795, 1135: 4993, 1310: 4796, 1335: 4816}, - {2752, 2752, 2752, 2752, 2752, 2752, 9: 2752, 565: 2752}, - {2766, 2766, 2766, 2766, 2766, 2766, 9: 2766, 565: 2766}, - {2765, 2765, 2765, 2765, 2765, 2765, 9: 2765, 565: 2765}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4997, 791: 4998, 3121, 3122, 3120}, + {580: 3135, 824: 3990, 839: 5019}, + {641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 15: 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 554: 641, 641, 641, 559: 641, 561: 641, 641, 641, 570: 641, 572: 641, 641, 576: 641, 578: 641, 590: 641, 632: 641, 680: 641, 733: 641, 641}, + {580: 3135, 824: 3990, 839: 5021}, + {642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 15: 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 554: 642, 642, 642, 559: 642, 561: 642, 642, 642, 570: 642, 572: 642, 642, 576: 642, 578: 642, 590: 642, 632: 642, 680: 642, 733: 642, 642}, + {557: 5023}, // 2070 - {2768, 2768, 2768, 2768, 2768, 2768, 9: 2768, 110: 2768, 565: 2768}, - {2767, 2767, 2767, 2767, 2767, 2767, 9: 2767, 110: 2767, 565: 2767}, - {57: 5004, 308: 5001, 331: 5002, 333: 5003, 554: 5000}, - {2773, 2773, 2773, 2773, 2773, 2773, 9: 2773, 565: 2773, 582: 2773}, - {2772, 2772, 2772, 2772, 2772, 2772, 9: 2772, 565: 2772, 582: 2772}, + {643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 15: 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 554: 643, 643, 643, 559: 643, 561: 643, 643, 643, 570: 643, 572: 643, 643, 576: 643, 578: 643, 590: 643, 632: 643, 680: 643, 733: 643, 643}, + {580: 3135, 824: 3990, 839: 5025}, + {644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 15: 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 554: 644, 644, 644, 559: 644, 561: 644, 644, 644, 570: 644, 572: 644, 644, 576: 644, 578: 644, 590: 644, 632: 644, 680: 644, 733: 644, 644}, + {580: 3135, 824: 3990, 839: 5027}, + {646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 15: 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 554: 646, 646, 646, 559: 646, 561: 646, 646, 646, 570: 646, 572: 646, 646, 576: 646, 578: 646, 590: 646, 632: 646, 680: 646, 733: 646, 646}, // 2075 - {2771, 2771, 2771, 2771, 2771, 2771, 9: 2771, 565: 2771, 582: 2771}, - {2770, 2770, 2770, 2770, 2770, 2770, 9: 2770, 565: 2770, 582: 2770}, - {2769, 2769, 2769, 2769, 2769, 2769, 9: 2769, 565: 2769, 582: 2769}, - {2794, 2794, 2794, 2794, 2794, 2794, 9: 2794, 565: 2794}, - {2795, 2795, 2795, 2795, 2795, 2795, 9: 2795, 565: 2795}, + {577: 4726, 580: 2394, 825: 5032}, + {577: 4726, 580: 2394, 825: 5030}, + {580: 3135, 824: 3990, 839: 5031}, + {645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 15: 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 554: 645, 645, 645, 559: 645, 561: 645, 645, 645, 570: 645, 572: 645, 645, 576: 645, 578: 645, 590: 645, 632: 645, 680: 645, 733: 645, 645}, + {580: 3135, 824: 3990, 839: 5033}, // 2080 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5020, 3121, 3122, 3120}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5019}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5018}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5017}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5014, 3121, 3122, 3120}, + {647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 15: 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 554: 647, 647, 647, 559: 647, 561: 647, 647, 647, 570: 647, 572: 647, 647, 576: 647, 578: 647, 590: 647, 632: 647, 680: 647, 733: 647, 647}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 577: 4726, 610: 2394, 825: 5038}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 577: 4726, 610: 2394, 825: 5036}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 3859, 796: 3861, 3149, 3150, 3148, 830: 3858, 1004: 5037}, + {648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 15: 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 554: 648, 648, 648, 559: 648, 561: 648, 648, 648, 570: 648, 572: 648, 648, 576: 648, 578: 648, 590: 648, 632: 648, 680: 648, 733: 648, 648}, // 2085 - {2: 2764, 2764, 2764, 2764, 2764, 2764, 2764, 10: 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 53: 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 550: 2764, 561: 2764, 578: 2764, 598: 2764}, - {2: 2763, 2763, 2763, 2763, 2763, 2763, 2763, 10: 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 53: 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 550: 2763, 561: 2763, 578: 2763, 598: 2763}, - {732: 5015}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5016, 3121, 3122, 3120}, - {2800, 2800, 2800, 2800, 2800, 2800, 9: 2800, 565: 2800}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 5039}, + {649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 15: 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 554: 649, 649, 649, 559: 649, 561: 649, 649, 649, 570: 649, 572: 649, 649, 576: 649, 578: 649, 590: 649, 632: 649, 680: 649, 733: 649, 649}, + {580: 3135, 824: 3990, 839: 5041}, + {2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 15: 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 52: 2469, 554: 2469, 2469, 2469, 559: 2469, 561: 2469, 2469, 2469, 570: 2469, 572: 2469, 2469, 576: 2469, 578: 2469, 590: 2469, 632: 2469, 680: 2469, 733: 2469, 2469}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5043, 3149, 3150, 3148}, // 2090 - {2801, 2801, 2801, 2801, 2801, 2801, 9: 2801, 565: 2801}, - {2802, 2802, 2802, 2802, 2802, 2802, 9: 2802, 565: 2802}, - {2803, 2803, 2803, 2803, 2803, 2803, 9: 2803, 565: 2803}, - {732: 5021}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5022, 3121, 3122, 3120}, + {2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 15: 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 52: 2470, 554: 2470, 2470, 2470, 559: 2470, 561: 2470, 2470, 2470, 570: 2470, 572: 2470, 2470, 576: 2470, 578: 2470, 590: 2470, 632: 2470, 680: 2470, 733: 2470, 2470}, + {580: 3135, 824: 3990, 839: 5045}, + {2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 15: 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 2471, 52: 2471, 554: 2471, 2471, 2471, 559: 2471, 561: 2471, 2471, 2471, 570: 2471, 572: 2471, 2471, 576: 2471, 578: 2471, 590: 2471, 632: 2471, 680: 2471, 733: 2471, 2471}, + {580: 3135, 824: 3990, 839: 5047}, + {2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 15: 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, 52: 2472, 554: 2472, 2472, 2472, 559: 2472, 561: 2472, 2472, 2472, 570: 2472, 572: 2472, 2472, 576: 2472, 578: 2472, 590: 2472, 632: 2472, 680: 2472, 733: 2472, 2472}, // 2095 - {2804, 2804, 2804, 2804, 2804, 2804, 9: 2804, 565: 2804}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5038}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5033, 3121, 3122, 3120}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5029, 3121, 3122, 3120}, - {2: 2759, 2759, 2759, 2759, 2759, 2759, 2759, 10: 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 53: 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 550: 2759, 598: 2759}, + {557: 2394, 577: 4726, 825: 5049}, + {557: 5050}, + {2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 15: 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 2473, 52: 2473, 554: 2473, 2473, 2473, 559: 2473, 561: 2473, 2473, 2473, 570: 2473, 572: 2473, 2473, 576: 2473, 578: 2473, 590: 2473, 632: 2473, 680: 2473, 733: 2473, 2473}, + {557: 2394, 577: 4726, 825: 5052}, + {557: 5053}, // 2100 - {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}, - {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}, - {105: 5032, 109: 5031, 956: 5030}, - {2789, 2789, 2789, 2789, 2789, 2789, 9: 2789, 565: 2789}, - {2135, 2135, 2135, 2135, 2135, 2135, 2135, 9: 2135, 19: 2135, 52: 2135, 58: 2135, 94: 2135, 103: 2135, 2135, 2135, 107: 2135, 109: 2135, 2135, 551: 2135, 561: 2135, 565: 2135, 582: 2135}, + {2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 15: 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 52: 2474, 554: 2474, 2474, 2474, 559: 2474, 561: 2474, 2474, 2474, 570: 2474, 572: 2474, 2474, 576: 2474, 578: 2474, 590: 2474, 632: 2474, 680: 2474, 733: 2474, 2474}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 796: 3861, 3149, 3150, 3148, 830: 5055}, + {2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 15: 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 52: 2475, 554: 2475, 2475, 2475, 559: 2475, 561: 2475, 2475, 2475, 570: 2475, 572: 2475, 2475, 576: 2475, 578: 2475, 590: 2475, 632: 2475, 680: 2475, 733: 2475, 2475}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 577: 4726, 825: 5059}, + {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, 578: 622, 590: 622, 632: 622, 680: 622, 733: 622, 622}, // 2105 - {2134, 2134, 2134, 2134, 2134, 2134, 2134, 9: 2134, 19: 2134, 52: 2134, 58: 2134, 94: 2134, 103: 2134, 2134, 2134, 107: 2134, 109: 2134, 2134, 551: 2134, 561: 2134, 565: 2134, 582: 2134}, - {209: 5035, 553: 3902, 555: 3901, 939: 5036, 1066: 5034}, - {2791, 2791, 2791, 2791, 2791, 2791, 9: 2791, 565: 2791}, - {2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 52: 2653, 549: 2653, 553: 2653, 2653, 2653, 2653, 2653, 565: 2653, 2653, 663: 2653, 678: 2653, 705: 2653, 723: 2653, 2653, 2653, 727: 2653}, - {209: 5037}, + {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, 578: 621, 590: 621, 632: 621, 680: 621, 733: 621, 621}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 796: 3861, 3149, 3150, 3148, 830: 5060}, + {2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 15: 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 52: 2476, 554: 2476, 2476, 2476, 559: 2476, 561: 2476, 2476, 2476, 570: 2476, 572: 2476, 2476, 576: 2476, 578: 2476, 590: 2476, 632: 2476, 680: 2476, 733: 2476, 2476}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 796: 3861, 3149, 3150, 3148, 830: 5062}, + {2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 15: 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 2477, 52: 2477, 554: 2477, 2477, 2477, 559: 2477, 561: 2477, 2477, 2477, 570: 2477, 572: 2477, 2477, 576: 2477, 578: 2477, 590: 2477, 632: 2477, 680: 2477, 733: 2477, 2477}, // 2110 - {2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 52: 2652, 549: 2652, 553: 2652, 2652, 2652, 2652, 2652, 565: 2652, 2652, 663: 2652, 678: 2652, 705: 2652, 723: 2652, 2652, 2652, 727: 2652}, - {575: 5039, 746: 5040}, - {554: 5042}, - {554: 5041}, - {2805, 2805, 2805, 2805, 2805, 2805, 9: 2805, 565: 2805}, + {557: 5064}, + {2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 15: 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 52: 2478, 554: 2478, 2478, 2478, 559: 2478, 561: 2478, 2478, 2478, 570: 2478, 572: 2478, 2478, 576: 2478, 578: 2478, 590: 2478, 632: 2478, 680: 2478, 733: 2478, 2478}, + {6: 4904, 4906, 613, 10: 4873, 15: 4923, 2531, 4921, 4860, 4925, 4912, 4941, 4905, 4908, 4907, 4910, 4911, 4913, 4920, 613, 4931, 4932, 4942, 4918, 4919, 4924, 4926, 4938, 4937, 4946, 4939, 4936, 4929, 4934, 4935, 4928, 4930, 4933, 4922, 4943, 4944, 100: 4875, 102: 4896, 106: 4897, 110: 4898, 146: 4878, 252: 4867, 269: 4861, 273: 4882, 276: 4883, 289: 4877, 295: 4893, 309: 4871, 318: 4879, 323: 4874, 344: 4884, 349: 4880, 358: 4894, 4895, 365: 4862, 556: 4892, 559: 4903, 562: 2531, 4940, 578: 2531, 581: 4864, 587: 4899, 589: 4881, 4891, 672: 4865, 727: 4870, 733: 2531, 4909, 747: 4886, 751: 4872, 753: 4900, 791: 4876, 4887, 794: 4866, 4885, 890: 4914, 916: 4916, 938: 4915, 960: 4917, 966: 4927, 972: 4945, 1002: 4890, 1013: 4888, 1047: 4863, 1055: 4868, 1141: 5066, 1316: 4869, 1344: 4889}, + {2778, 2778, 2778, 2778, 2778, 2778, 9: 2778, 570: 2778}, + {2792, 2792, 2792, 2792, 2792, 2792, 9: 2792, 570: 2792}, // 2115 - {550: 5044, 552: 3675, 562: 5046, 5047, 566: 3666, 576: 3670, 648: 3665, 3667, 655: 3669, 3668, 3673, 3674, 667: 3672, 797: 5045, 3671, 1105: 5043}, - {2807, 2807, 2807, 2807, 2807, 2807, 9: 2807, 565: 2807}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 5050}, - {2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 52: 2557, 549: 2557, 553: 2557, 2557, 2557, 2557, 2557, 565: 2557, 2557, 663: 2557, 678: 2557, 705: 2557, 723: 2557, 2557, 2557, 727: 2557}, - {576: 4180, 655: 4182, 4181, 940: 5049}, + {2791, 2791, 2791, 2791, 2791, 2791, 9: 2791, 570: 2791}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 5070, 796: 5071, 3149, 3150, 3148}, + {2794, 2794, 2794, 2794, 2794, 2794, 9: 2794, 110: 2794, 570: 2794}, + {2793, 2793, 2793, 2793, 2793, 2793, 9: 2793, 110: 2793, 570: 2793}, + {54: 5077, 312: 5074, 335: 5075, 337: 5076, 559: 5073}, // 2120 - {576: 4180, 655: 4182, 4181, 940: 5048}, - {2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 52: 2555, 549: 2555, 553: 2555, 2555, 2555, 2555, 2555, 565: 2555, 2555, 663: 2555, 678: 2555, 705: 2555, 723: 2555, 2555, 2555, 727: 2555}, - {2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 52: 2556, 549: 2556, 553: 2556, 2556, 2556, 2556, 2556, 565: 2556, 2556, 663: 2556, 678: 2556, 705: 2556, 723: 2556, 2556, 2556, 727: 2556}, - {52: 5051, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2806, 2806, 2806, 2806, 2806, 2806, 9: 2806, 565: 2806}, + {2799, 2799, 2799, 2799, 2799, 2799, 9: 2799, 570: 2799, 587: 2799}, + {2798, 2798, 2798, 2798, 2798, 2798, 9: 2798, 570: 2798, 587: 2798}, + {2797, 2797, 2797, 2797, 2797, 2797, 9: 2797, 570: 2797, 587: 2797}, + {2796, 2796, 2796, 2796, 2796, 2796, 9: 2796, 570: 2796, 587: 2796}, + {2795, 2795, 2795, 2795, 2795, 2795, 9: 2795, 570: 2795, 587: 2795}, // 2125 - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 5053}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5056}, - {665: 5055}, - {2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 53: 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 552: 2164, 554: 2164, 565: 2164, 580: 2164, 650: 2164}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5058, 979: 5057}, + {2820, 2820, 2820, 2820, 2820, 2820, 9: 2820, 570: 2820}, + {2821, 2821, 2821, 2821, 2821, 2821, 9: 2821, 570: 2821}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5093, 3149, 3150, 3148}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5092}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5091}, // 2130 - {2758, 2758, 2758, 2758, 2758, 2758, 9: 2758, 5355, 5356, 565: 2758, 1054: 5354}, - {12: 5060, 128: 5112, 130: 5113, 177: 5102, 186: 5123, 5122, 189: 5085, 192: 5125, 194: 5104, 5124, 197: 5082, 204: 5119, 207: 5091, 5081, 210: 5100, 213: 5108, 5107, 216: 5111, 572: 5106, 575: 5101, 605: 5096, 728: 5105, 751: 5088, 5086, 5110, 5109, 5083, 5079, 5073, 5087, 5097, 5080, 5115, 763: 5089, 5090, 767: 5074, 5075, 5076, 5077, 5078, 5103, 5117, 5121, 5116, 5071, 5120, 5072, 5084, 5070, 5114, 5069, 5118, 977: 5092, 1046: 5094, 1050: 5068, 5098, 5065, 1060: 5063, 1068: 5066, 5067, 1076: 5064, 1080: 5093, 1084: 5061, 5095, 1107: 5062, 1111: 5099, 1114: 5059, 1123: 5126}, - {2611, 2611, 2611, 2611, 2611, 2611, 5205, 5211, 5199, 2611, 2611, 2611, 5203, 5212, 5210, 52: 2611, 549: 5204, 553: 3902, 5202, 3901, 2618, 5209, 565: 2611, 5198, 663: 2657, 678: 5196, 705: 2749, 723: 5201, 5194, 5216, 727: 5213, 939: 5197, 952: 5206, 1034: 5208, 1053: 5214, 1070: 5207, 1092: 5200, 1150: 5215, 5353}, - {2611, 2611, 2611, 2611, 2611, 2611, 5205, 5211, 5199, 2611, 2611, 2611, 5203, 5212, 5210, 52: 2611, 549: 5204, 553: 3902, 5202, 3901, 2618, 5209, 565: 2611, 5198, 663: 2657, 678: 5196, 705: 2749, 723: 5201, 5194, 5216, 727: 5213, 939: 5197, 952: 5206, 1034: 5208, 1053: 5214, 1070: 5207, 1092: 5200, 1150: 5215, 5195}, - {571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 52: 571, 549: 571, 553: 571, 571, 571, 571, 571, 565: 571, 571, 663: 571, 678: 571, 705: 571, 723: 571, 571, 571, 727: 571}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5090}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5087, 3149, 3150, 3148}, + {2: 2790, 2790, 2790, 2790, 2790, 2790, 2790, 10: 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 53: 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 2790, 555: 2790, 566: 2790, 583: 2790, 605: 2790}, + {2: 2789, 2789, 2789, 2789, 2789, 2789, 2789, 10: 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 53: 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 555: 2789, 566: 2789, 583: 2789, 605: 2789}, + {737: 5088}, // 2135 - {570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 52: 570, 549: 570, 553: 570, 570, 570, 570, 570, 565: 570, 570, 663: 570, 678: 570, 705: 570, 723: 570, 570, 570, 727: 570}, - {569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 52: 569, 549: 569, 553: 569, 569, 569, 569, 569, 565: 569, 569, 663: 569, 678: 569, 705: 569, 723: 569, 569, 569, 727: 569}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 60: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 838: 482, 482, 861: 4496, 905: 5192}, - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 549: 477, 553: 477, 477, 477, 477, 477, 565: 477, 477, 663: 477, 678: 477, 705: 477, 723: 477, 477, 477, 727: 477, 838: 477, 477, 1003: 5191}, - {475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 52: 475, 60: 475, 549: 475, 4500, 553: 475, 475, 475, 475, 475, 565: 475, 475, 663: 475, 678: 475, 705: 475, 723: 475, 475, 475, 727: 475, 838: 475, 475, 861: 4501, 1025: 5189, 1033: 4502}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5089, 3149, 3150, 3148}, + {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}, + {2829, 2829, 2829, 2829, 2829, 2829, 9: 2829, 570: 2829}, // 2140 - {475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 52: 475, 60: 475, 549: 475, 4500, 553: 475, 475, 475, 475, 475, 565: 475, 475, 663: 475, 678: 475, 705: 475, 723: 475, 475, 475, 727: 475, 838: 475, 475, 861: 4501, 1025: 5187, 1033: 4502}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 861: 4496, 905: 5186}, - {563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 52: 563, 60: 563, 549: 563, 563, 553: 563, 563, 563, 563, 563, 565: 563, 563, 663: 563, 678: 563, 705: 563, 723: 563, 563, 563, 727: 563, 838: 563, 563}, - {562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 52: 562, 60: 562, 549: 562, 562, 553: 562, 562, 562, 562, 562, 565: 562, 562, 663: 562, 678: 562, 705: 562, 723: 562, 562, 562, 727: 562, 838: 562, 562}, - {561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 52: 561, 60: 561, 549: 561, 561, 553: 561, 561, 561, 561, 561, 565: 561, 561, 663: 561, 678: 561, 705: 561, 723: 561, 561, 561, 727: 561, 838: 561, 561}, + {737: 5094}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5095, 3149, 3150, 3148}, + {2830, 2830, 2830, 2830, 2830, 2830, 9: 2830, 570: 2830}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5111}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5106, 3149, 3150, 3148}, // 2145 - {560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 52: 560, 60: 560, 549: 560, 560, 553: 560, 560, 560, 560, 560, 565: 560, 560, 663: 560, 678: 560, 705: 560, 723: 560, 560, 560, 727: 560, 838: 560, 560}, - {559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 52: 559, 60: 559, 549: 559, 559, 553: 559, 559, 559, 559, 559, 565: 559, 559, 663: 559, 678: 559, 705: 559, 723: 559, 559, 559, 727: 559, 838: 559, 559}, - {558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 52: 558, 60: 558, 549: 558, 558, 553: 558, 558, 558, 558, 558, 565: 558, 558, 663: 558, 678: 558, 705: 558, 723: 558, 558, 558, 727: 558, 838: 558, 558}, - {557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 52: 557, 60: 557, 549: 557, 557, 553: 557, 557, 557, 557, 557, 565: 557, 557, 663: 557, 678: 557, 705: 557, 723: 557, 557, 557, 727: 557, 838: 557, 557}, - {556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 52: 556, 60: 556, 549: 556, 556, 553: 556, 556, 556, 556, 556, 565: 556, 556, 663: 556, 678: 556, 705: 556, 723: 556, 556, 556, 727: 556, 838: 556, 556}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5102, 3149, 3150, 3148}, + {2: 2785, 2785, 2785, 2785, 2785, 2785, 2785, 10: 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 53: 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785, 555: 2785, 605: 2785}, + {2: 658, 658, 658, 658, 658, 658, 658, 10: 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 53: 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658}, + {2: 657, 657, 657, 657, 657, 657, 657, 10: 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 53: 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657}, + {105: 5105, 109: 5104, 961: 5103}, // 2150 - {555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 52: 555, 60: 555, 549: 555, 555, 553: 555, 555, 555, 555, 555, 565: 555, 555, 663: 555, 678: 555, 705: 555, 723: 555, 555, 555, 727: 555, 838: 555, 555}, - {554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 52: 554, 60: 554, 549: 554, 554, 553: 554, 554, 554, 554, 554, 565: 554, 554, 663: 554, 678: 554, 705: 554, 723: 554, 554, 554, 727: 554, 838: 554, 554}, - {553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 52: 553, 60: 553, 549: 553, 553, 553: 553, 553, 553, 553, 553, 565: 553, 553, 663: 553, 678: 553, 705: 553, 723: 553, 553, 553, 727: 553, 838: 553, 553}, - {552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 52: 552, 60: 552, 549: 552, 552, 553: 552, 552, 552, 552, 552, 565: 552, 552, 663: 552, 678: 552, 705: 552, 723: 552, 552, 552, 727: 552, 838: 552, 552}, - {551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 52: 551, 60: 551, 549: 551, 553: 551, 551, 551, 551, 551, 565: 551, 551, 663: 551, 678: 551, 705: 551, 723: 551, 551, 551, 727: 551, 838: 551, 551}, + {2815, 2815, 2815, 2815, 2815, 2815, 9: 2815, 570: 2815}, + {2161, 2161, 2161, 2161, 2161, 2161, 2161, 9: 2161, 19: 2161, 52: 2161, 59: 2161, 94: 2161, 103: 2161, 2161, 2161, 107: 2161, 109: 2161, 2161, 556: 2161, 566: 2161, 570: 2161, 587: 2161}, + {2160, 2160, 2160, 2160, 2160, 2160, 2160, 9: 2160, 19: 2160, 52: 2160, 59: 2160, 94: 2160, 103: 2160, 2160, 2160, 107: 2160, 109: 2160, 2160, 556: 2160, 566: 2160, 570: 2160, 587: 2160}, + {214: 5108, 558: 3936, 560: 3935, 946: 5109, 1072: 5107}, + {2817, 2817, 2817, 2817, 2817, 2817, 9: 2817, 570: 2817}, // 2155 - {550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 52: 550, 60: 550, 549: 550, 553: 550, 550, 550, 550, 550, 565: 550, 550, 663: 550, 678: 550, 705: 550, 723: 550, 550, 550, 727: 550, 838: 550, 550}, - {546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 52: 546, 60: 546, 549: 546, 546, 553: 546, 546, 546, 546, 546, 565: 546, 546, 663: 546, 678: 546, 705: 546, 723: 546, 546, 546, 727: 546, 838: 546, 546}, - {545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 52: 545, 60: 545, 549: 545, 545, 553: 545, 545, 545, 545, 545, 565: 545, 545, 663: 545, 678: 545, 705: 545, 723: 545, 545, 545, 727: 545, 838: 545, 545}, - {544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 52: 544, 60: 544, 549: 544, 544, 553: 544, 544, 544, 544, 544, 565: 544, 544, 663: 544, 678: 544, 705: 544, 723: 544, 544, 544, 727: 544, 838: 544, 544}, - {543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 52: 543, 60: 543, 549: 543, 543, 553: 543, 543, 543, 543, 543, 565: 543, 543, 663: 543, 678: 543, 705: 543, 723: 543, 543, 543, 727: 543, 838: 543, 543}, + {2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 52: 2679, 554: 2679, 558: 2679, 2679, 2679, 2679, 2679, 570: 2679, 2679, 668: 2679, 720: 2679, 727: 2679, 2679, 2679, 731: 2679, 2679}, + {214: 5110}, + {2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 52: 2678, 554: 2678, 558: 2678, 2678, 2678, 2678, 2678, 570: 2678, 2678, 668: 2678, 720: 2678, 727: 2678, 2678, 2678, 731: 2678, 2678}, + {581: 5112, 751: 5113}, + {559: 5115}, // 2160 - {542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 52: 542, 60: 542, 549: 542, 542, 553: 542, 542, 542, 542, 542, 565: 542, 542, 663: 542, 678: 542, 705: 542, 723: 542, 542, 542, 727: 542, 838: 542, 542}, - {541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 52: 541, 60: 541, 549: 541, 541, 553: 541, 541, 541, 541, 541, 565: 541, 541, 663: 541, 678: 541, 705: 541, 723: 541, 541, 541, 727: 541, 838: 541, 541, 1448: 5185}, - {539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 52: 539, 60: 539, 549: 539, 539, 553: 539, 539, 539, 539, 539, 565: 539, 539, 663: 539, 678: 539, 705: 539, 723: 539, 539, 539, 727: 539, 838: 539, 539}, - {538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 52: 538, 60: 538, 549: 538, 538, 553: 538, 538, 538, 538, 538, 565: 538, 538, 663: 538, 678: 538, 705: 538, 723: 538, 538, 538, 727: 538, 838: 538, 538}, - {537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 52: 537, 549: 537, 537, 553: 537, 537, 537, 537, 537, 565: 537, 537, 663: 537, 678: 537, 705: 537, 723: 537, 537, 537, 727: 537}, + {559: 5114}, + {2831, 2831, 2831, 2831, 2831, 2831, 9: 2831, 570: 2831}, + {555: 5117, 557: 3708, 567: 5119, 5120, 571: 3699, 580: 3703, 651: 3698, 3700, 659: 3702, 3701, 662: 3706, 3707, 671: 3705, 802: 5118, 3704, 1043: 5116}, + {2833, 2833, 2833, 2833, 2833, 2833, 9: 2833, 570: 2833}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 5123}, // 2165 - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 549: 466, 4495, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 861: 5182, 873: 4517, 916: 5183}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 549: 466, 4495, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 861: 5179, 873: 4517, 916: 5180}, - {550: 4495, 861: 5177}, - {550: 4495, 861: 5175}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 861: 4496, 905: 5174}, + {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, 720: 2583, 727: 2583, 2583, 2583, 731: 2583, 2583}, + {580: 4214, 659: 4216, 4215, 936: 5122}, + {580: 4214, 659: 4216, 4215, 936: 5121}, + {2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 52: 2581, 554: 2581, 558: 2581, 2581, 2581, 2581, 2581, 570: 2581, 2581, 668: 2581, 720: 2581, 727: 2581, 2581, 2581, 731: 2581, 2581}, + {2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 52: 2582, 554: 2582, 558: 2582, 2582, 2582, 2582, 2582, 570: 2582, 2582, 668: 2582, 720: 2582, 727: 2582, 2582, 2582, 731: 2582, 2582}, // 2170 - {550: 4495, 861: 5173}, - {528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 52: 528, 549: 528, 553: 528, 528, 528, 528, 528, 565: 528, 528, 663: 528, 678: 528, 705: 528, 723: 528, 528, 528, 727: 528}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 165: 5157, 5159, 169: 5158, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5156, 1008: 5172}, - {550: 5168}, - {550: 5161}, + {52: 5124, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2832, 2832, 2832, 2832, 2832, 2832, 9: 2832, 570: 2832}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 5126}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5129}, + {670: 5128}, // 2175 - {524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 52: 524, 549: 524, 553: 524, 524, 524, 524, 524, 565: 524, 524, 663: 524, 678: 524, 705: 524, 723: 524, 524, 524, 727: 524}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 165: 5157, 5159, 169: 5158, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 5154, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 5153, 753: 5110, 5109, 759: 5155, 873: 4517, 916: 5156, 1008: 5152, 1046: 5151}, - {469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 52: 469, 549: 469, 469, 553: 469, 469, 469, 469, 469, 565: 469, 469, 629: 4489, 663: 469, 678: 469, 705: 469, 723: 469, 469, 469, 727: 469, 1251: 5149}, - {520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 16: 520, 52: 520, 549: 520, 520, 553: 520, 520, 520, 520, 520, 565: 520, 520, 572: 520, 605: 520, 663: 520, 678: 520, 705: 520, 723: 520, 520, 520, 727: 520, 520, 968: 5148}, - {519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 16: 519, 52: 519, 549: 519, 519, 553: 519, 519, 519, 519, 519, 565: 519, 519, 572: 519, 605: 519, 663: 519, 678: 519, 705: 519, 723: 519, 519, 519, 727: 519, 519, 968: 5147}, + {2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 53: 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 557: 2190, 559: 2190, 570: 2190, 585: 2190, 655: 2190}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5131, 985: 5130}, + {2784, 2784, 2784, 2784, 2784, 2784, 9: 2784, 5428, 5429, 570: 2784, 1060: 5427}, + {12: 5133, 128: 5185, 131: 5186, 181: 5175, 190: 5196, 5195, 193: 5158, 196: 5198, 198: 5177, 5197, 201: 5155, 209: 5192, 212: 5164, 5154, 215: 5173, 218: 5181, 5180, 221: 5184, 578: 5179, 581: 5174, 610: 5169, 733: 5178, 756: 5161, 5159, 5183, 5182, 5156, 5152, 5146, 5160, 5170, 5153, 5188, 768: 5162, 5163, 772: 5147, 5148, 5149, 5150, 5151, 5176, 5190, 5194, 5189, 5144, 5193, 5145, 5157, 5143, 5187, 5142, 5191, 983: 5165, 1052: 5167, 1056: 5141, 5171, 5138, 1066: 5136, 1074: 5139, 5140, 1082: 5137, 1086: 5166, 1090: 5134, 5168, 1112: 5135, 1116: 5172, 1119: 5132, 1128: 5199}, + {2637, 2637, 2637, 2637, 2637, 2637, 5278, 5284, 5272, 2637, 2637, 2637, 5276, 5285, 5283, 52: 2637, 554: 5277, 558: 3936, 5275, 3935, 2644, 5282, 570: 2637, 5271, 668: 2683, 720: 5269, 727: 2775, 5274, 5267, 731: 5289, 5286, 946: 5270, 957: 5279, 1039: 5281, 1059: 5287, 1076: 5280, 1098: 5273, 1156: 5288, 5426}, // 2180 - {518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 16: 518, 52: 518, 549: 518, 518, 553: 518, 518, 518, 518, 518, 565: 518, 518, 572: 518, 605: 518, 663: 518, 678: 518, 705: 518, 723: 518, 518, 518, 727: 518, 518, 753: 5145, 5144, 968: 5146}, - {572: 5139, 728: 5138, 753: 5141, 5140}, - {513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 16: 513, 52: 513, 165: 513, 513, 169: 513, 549: 513, 513, 553: 513, 513, 513, 513, 513, 565: 513, 513, 572: 513, 605: 513, 663: 513, 678: 513, 705: 513, 723: 513, 513, 513, 727: 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, 549: 512, 512, 553: 512, 512, 512, 512, 512, 565: 512, 512, 572: 512, 605: 512, 663: 512, 678: 512, 705: 512, 723: 512, 512, 512, 727: 512, 512}, - {550: 509}, + {2637, 2637, 2637, 2637, 2637, 2637, 5278, 5284, 5272, 2637, 2637, 2637, 5276, 5285, 5283, 52: 2637, 554: 5277, 558: 3936, 5275, 3935, 2644, 5282, 570: 2637, 5271, 668: 2683, 720: 5269, 727: 2775, 5274, 5267, 731: 5289, 5286, 946: 5270, 957: 5279, 1039: 5281, 1059: 5287, 1076: 5280, 1098: 5273, 1156: 5288, 5268}, + {586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 52: 586, 554: 586, 558: 586, 586, 586, 586, 586, 570: 586, 586, 668: 586, 720: 586, 727: 586, 586, 586, 731: 586, 586}, + {585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 52: 585, 554: 585, 558: 585, 585, 585, 585, 585, 570: 585, 585, 668: 585, 720: 585, 727: 585, 585, 585, 731: 585, 585}, + {584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 52: 584, 554: 584, 558: 584, 584, 584, 584, 584, 570: 584, 584, 668: 584, 720: 584, 727: 584, 584, 584, 731: 584, 584}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 61: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 843: 497, 497, 866: 4530, 910: 5265}, // 2185 - {503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 52: 503, 60: 503, 549: 503, 503, 553: 503, 503, 503, 503, 503, 565: 503, 503, 663: 503, 678: 503, 705: 503, 723: 503, 503, 503, 727: 503, 838: 503, 503}, - {502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 52: 502, 60: 502, 549: 502, 502, 553: 502, 502, 502, 502, 502, 565: 502, 502, 663: 502, 678: 502, 705: 502, 723: 502, 502, 502, 727: 502, 838: 502, 502}, - {501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 52: 501, 549: 501, 553: 501, 501, 501, 501, 501, 565: 501, 501, 663: 501, 678: 501, 705: 501, 723: 501, 501, 501, 727: 501}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 861: 4496, 905: 5137}, - {499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 52: 499, 549: 499, 553: 499, 499, 499, 499, 499, 565: 499, 499, 663: 499, 678: 499, 705: 499, 723: 499, 499, 499, 727: 499}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 52: 492, 61: 492, 554: 492, 558: 492, 492, 492, 492, 492, 570: 492, 492, 668: 492, 720: 492, 727: 492, 492, 492, 731: 492, 492, 843: 492, 492, 1009: 5264}, + {490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 52: 490, 61: 490, 554: 490, 4534, 558: 490, 490, 490, 490, 490, 570: 490, 490, 668: 490, 720: 490, 727: 490, 490, 490, 731: 490, 490, 843: 490, 490, 866: 4535, 1030: 5262, 1038: 4536}, + {490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 52: 490, 61: 490, 554: 490, 4534, 558: 490, 490, 490, 490, 490, 570: 490, 490, 668: 490, 720: 490, 727: 490, 490, 490, 731: 490, 490, 843: 490, 490, 866: 4535, 1030: 5260, 1038: 4536}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 866: 4530, 910: 5259}, + {578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 52: 578, 61: 578, 554: 578, 578, 558: 578, 578, 578, 578, 578, 570: 578, 578, 668: 578, 720: 578, 727: 578, 578, 578, 731: 578, 578, 843: 578, 578}, // 2190 - {498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 52: 498, 549: 498, 553: 498, 498, 498, 498, 498, 565: 498, 498, 663: 498, 678: 498, 705: 498, 723: 498, 498, 498, 727: 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, 549: 496, 553: 496, 496, 496, 496, 496, 565: 496, 496, 572: 496, 605: 496, 663: 496, 678: 496, 705: 496, 723: 496, 496, 496, 727: 496, 496}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 16: 482, 52: 482, 165: 482, 482, 169: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 572: 482, 605: 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 482, 861: 4496, 905: 5136}, - {494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 16: 494, 52: 494, 165: 494, 494, 169: 494, 549: 494, 553: 494, 494, 494, 494, 494, 565: 494, 494, 572: 494, 605: 494, 663: 494, 678: 494, 705: 494, 723: 494, 494, 494, 727: 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, 549: 493, 553: 493, 493, 493, 493, 493, 565: 493, 493, 572: 493, 605: 493, 663: 493, 678: 493, 705: 493, 723: 493, 493, 493, 727: 493, 493}, + {577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 52: 577, 61: 577, 554: 577, 577, 558: 577, 577, 577, 577, 577, 570: 577, 577, 668: 577, 720: 577, 727: 577, 577, 577, 731: 577, 577, 843: 577, 577}, + {576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 52: 576, 61: 576, 554: 576, 576, 558: 576, 576, 576, 576, 576, 570: 576, 576, 668: 576, 720: 576, 727: 576, 576, 576, 731: 576, 576, 843: 576, 576}, + {575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 52: 575, 61: 575, 554: 575, 575, 558: 575, 575, 575, 575, 575, 570: 575, 575, 668: 575, 720: 575, 727: 575, 575, 575, 731: 575, 575, 843: 575, 575}, + {574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 52: 574, 61: 574, 554: 574, 574, 558: 574, 574, 574, 574, 574, 570: 574, 574, 668: 574, 720: 574, 727: 574, 574, 574, 731: 574, 574, 843: 574, 574}, + {573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 52: 573, 61: 573, 554: 573, 573, 558: 573, 573, 573, 573, 573, 570: 573, 573, 668: 573, 720: 573, 727: 573, 573, 573, 731: 573, 573, 843: 573, 573}, // 2195 - {488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 52: 488, 549: 488, 553: 488, 488, 488, 488, 488, 565: 488, 488, 663: 488, 678: 488, 705: 488, 723: 488, 488, 488, 727: 488}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 861: 4496, 905: 5135}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 861: 4496, 905: 5134}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 861: 4496, 905: 5133}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 60: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 838: 482, 482, 861: 4496, 905: 5127}, + {572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 52: 572, 61: 572, 554: 572, 572, 558: 572, 572, 572, 572, 572, 570: 572, 572, 668: 572, 720: 572, 727: 572, 572, 572, 731: 572, 572, 843: 572, 572}, + {571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 52: 571, 61: 571, 554: 571, 571, 558: 571, 571, 571, 571, 571, 570: 571, 571, 668: 571, 720: 571, 727: 571, 571, 571, 731: 571, 571, 843: 571, 571}, + {570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 52: 570, 61: 570, 554: 570, 570, 558: 570, 570, 570, 570, 570, 570: 570, 570, 668: 570, 720: 570, 727: 570, 570, 570, 731: 570, 570, 843: 570, 570}, + {569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 52: 569, 61: 569, 554: 569, 569, 558: 569, 569, 569, 569, 569, 570: 569, 569, 668: 569, 720: 569, 727: 569, 569, 569, 731: 569, 569, 843: 569, 569}, + {568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 52: 568, 61: 568, 554: 568, 568, 558: 568, 568, 568, 568, 568, 570: 568, 568, 668: 568, 720: 568, 727: 568, 568, 568, 731: 568, 568, 843: 568, 568}, // 2200 - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 549: 477, 553: 477, 477, 477, 477, 477, 565: 477, 477, 663: 477, 678: 477, 705: 477, 723: 477, 477, 477, 727: 477, 838: 477, 477, 1003: 5128}, - {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 52: 484, 60: 5130, 549: 484, 553: 484, 484, 484, 484, 484, 565: 484, 484, 663: 484, 678: 484, 705: 484, 723: 484, 484, 484, 727: 484, 838: 5129, 5131, 1002: 5132}, - {480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 52: 480, 60: 480, 549: 480, 553: 480, 480, 480, 480, 480, 565: 480, 480, 663: 480, 678: 480, 705: 480, 723: 480, 480, 480, 727: 480, 838: 480, 480}, - {479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 52: 479, 60: 479, 549: 479, 553: 479, 479, 479, 479, 479, 565: 479, 479, 663: 479, 678: 479, 705: 479, 723: 479, 479, 479, 727: 479, 838: 479, 479}, - {478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 52: 478, 60: 478, 549: 478, 553: 478, 478, 478, 478, 478, 565: 478, 478, 663: 478, 678: 478, 705: 478, 723: 478, 478, 478, 727: 478, 838: 478, 478}, + {567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 52: 567, 61: 567, 554: 567, 567, 558: 567, 567, 567, 567, 567, 570: 567, 567, 668: 567, 720: 567, 727: 567, 567, 567, 731: 567, 567, 843: 567, 567}, + {566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 52: 566, 61: 566, 554: 566, 558: 566, 566, 566, 566, 566, 570: 566, 566, 668: 566, 720: 566, 727: 566, 566, 566, 731: 566, 566, 843: 566, 566}, + {565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 52: 565, 61: 565, 554: 565, 558: 565, 565, 565, 565, 565, 570: 565, 565, 668: 565, 720: 565, 727: 565, 565, 565, 731: 565, 565, 843: 565, 565}, + {561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 52: 561, 61: 561, 554: 561, 561, 558: 561, 561, 561, 561, 561, 570: 561, 561, 668: 561, 720: 561, 727: 561, 561, 561, 731: 561, 561, 843: 561, 561}, + {560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 52: 560, 61: 560, 554: 560, 560, 558: 560, 560, 560, 560, 560, 570: 560, 560, 668: 560, 720: 560, 727: 560, 560, 560, 731: 560, 560, 843: 560, 560}, // 2205 - {476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 52: 476, 60: 476, 549: 476, 553: 476, 476, 476, 476, 476, 565: 476, 476, 663: 476, 678: 476, 705: 476, 723: 476, 476, 476, 727: 476, 838: 476, 476}, - {485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 52: 485, 549: 485, 553: 485, 485, 485, 485, 485, 565: 485, 485, 663: 485, 678: 485, 705: 485, 723: 485, 485, 485, 727: 485}, - {486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 52: 486, 549: 486, 553: 486, 486, 486, 486, 486, 565: 486, 486, 663: 486, 678: 486, 705: 486, 723: 486, 486, 486, 727: 486}, - {487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 52: 487, 549: 487, 553: 487, 487, 487, 487, 487, 565: 487, 487, 663: 487, 678: 487, 705: 487, 723: 487, 487, 487, 727: 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, 549: 495, 553: 495, 495, 495, 495, 495, 565: 495, 495, 572: 495, 605: 495, 663: 495, 678: 495, 705: 495, 723: 495, 495, 495, 727: 495, 495}, + {559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 52: 559, 61: 559, 554: 559, 559, 558: 559, 559, 559, 559, 559, 570: 559, 559, 668: 559, 720: 559, 727: 559, 559, 559, 731: 559, 559, 843: 559, 559}, + {558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 52: 558, 61: 558, 554: 558, 558, 558: 558, 558, 558, 558, 558, 570: 558, 558, 668: 558, 720: 558, 727: 558, 558, 558, 731: 558, 558, 843: 558, 558}, + {557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 52: 557, 61: 557, 554: 557, 557, 558: 557, 557, 557, 557, 557, 570: 557, 557, 668: 557, 720: 557, 727: 557, 557, 557, 731: 557, 557, 843: 557, 557}, + {556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 52: 556, 61: 556, 554: 556, 556, 558: 556, 556, 556, 556, 556, 570: 556, 556, 668: 556, 720: 556, 727: 556, 556, 556, 731: 556, 556, 843: 556, 556, 1458: 5258}, + {554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 52: 554, 61: 554, 554: 554, 554, 558: 554, 554, 554, 554, 554, 570: 554, 554, 668: 554, 720: 554, 727: 554, 554, 554, 731: 554, 554, 843: 554, 554}, // 2210 - {500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 52: 500, 549: 500, 553: 500, 500, 500, 500, 500, 565: 500, 500, 663: 500, 678: 500, 705: 500, 723: 500, 500, 500, 727: 500}, - {517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 16: 517, 52: 517, 549: 517, 517, 553: 517, 517, 517, 517, 517, 565: 517, 517, 572: 517, 605: 517, 663: 517, 678: 517, 705: 517, 723: 517, 517, 517, 727: 517, 517, 968: 5143}, - {516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 16: 516, 52: 516, 549: 516, 516, 553: 516, 516, 516, 516, 516, 565: 516, 516, 572: 516, 605: 516, 663: 516, 678: 516, 705: 516, 723: 516, 516, 516, 727: 516, 516, 968: 5142}, - {550: 511}, - {550: 510}, + {553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 52: 553, 61: 553, 554: 553, 553, 558: 553, 553, 553, 553, 553, 570: 553, 553, 668: 553, 720: 553, 727: 553, 553, 553, 731: 553, 553, 843: 553, 553}, + {552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 52: 552, 554: 552, 552, 558: 552, 552, 552, 552, 552, 570: 552, 552, 668: 552, 720: 552, 727: 552, 552, 552, 731: 552, 552}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 554: 481, 4529, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 866: 5255, 878: 4551, 921: 5256}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 554: 481, 4529, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 866: 5252, 878: 4551, 921: 5253}, + {555: 4529, 866: 5250}, // 2215 - {550: 505}, - {550: 506}, - {550: 508}, - {550: 507}, - {550: 504}, + {555: 4529, 866: 5248}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 866: 4530, 910: 5247}, + {555: 4529, 866: 5246}, + {543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 52: 543, 554: 543, 558: 543, 543, 543, 543, 543, 570: 543, 543, 668: 543, 720: 543, 727: 543, 543, 543, 731: 543, 543}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 167: 5230, 5232, 171: 5231, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5229, 1014: 5245}, // 2220 - {514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 16: 514, 52: 514, 165: 514, 514, 169: 514, 549: 514, 514, 553: 514, 514, 514, 514, 514, 565: 514, 514, 572: 514, 605: 514, 663: 514, 678: 514, 705: 514, 723: 514, 514, 514, 727: 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, 549: 515, 515, 553: 515, 515, 515, 515, 515, 565: 515, 515, 572: 515, 605: 515, 663: 515, 678: 515, 705: 515, 723: 515, 515, 515, 727: 515, 515}, - {482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 52: 482, 549: 482, 4495, 553: 482, 482, 482, 482, 482, 565: 482, 482, 663: 482, 678: 482, 705: 482, 723: 482, 482, 482, 727: 482, 861: 4496, 905: 5150}, - {521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 52: 521, 549: 521, 553: 521, 521, 521, 521, 521, 565: 521, 521, 663: 521, 678: 521, 705: 521, 723: 521, 521, 521, 727: 521}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 165: 5157, 5159, 169: 5158, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5156, 1008: 5160}, + {555: 5241}, + {555: 5234}, + {539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 52: 539, 554: 539, 558: 539, 539, 539, 539, 539, 570: 539, 539, 668: 539, 720: 539, 727: 539, 539, 539, 731: 539, 539}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 167: 5230, 5232, 171: 5231, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 5227, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 5226, 758: 5183, 5182, 764: 5228, 878: 4551, 921: 5229, 1014: 5225, 1052: 5224}, + {484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 52: 484, 554: 484, 484, 558: 484, 484, 484, 484, 484, 570: 484, 484, 634: 4523, 668: 484, 720: 484, 727: 484, 484, 484, 731: 484, 484, 1257: 5222}, // 2225 - {522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 52: 522, 549: 522, 553: 522, 522, 522, 522, 522, 565: 522, 522, 663: 522, 678: 522, 705: 522, 723: 522, 522, 522, 727: 522}, - {575: 4522, 968: 5148}, - {575: 4521, 968: 5147}, - {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 549: 497, 553: 497, 497, 497, 497, 497, 565: 497, 497, 663: 497, 678: 497, 705: 497, 723: 497, 497, 497, 727: 497}, - {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 52: 492, 549: 492, 553: 492, 492, 492, 492, 492, 565: 492, 492, 663: 492, 678: 492, 705: 492, 723: 492, 492, 492, 727: 492}, + {535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 16: 535, 52: 535, 554: 535, 535, 558: 535, 535, 535, 535, 535, 570: 535, 535, 578: 535, 610: 535, 668: 535, 720: 535, 727: 535, 535, 535, 731: 535, 535, 535, 973: 5221}, + {534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 16: 534, 52: 534, 554: 534, 534, 558: 534, 534, 534, 534, 534, 570: 534, 534, 578: 534, 610: 534, 668: 534, 720: 534, 727: 534, 534, 534, 731: 534, 534, 534, 973: 5220}, + {533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 16: 533, 52: 533, 554: 533, 533, 558: 533, 533, 533, 533, 533, 570: 533, 533, 578: 533, 610: 533, 668: 533, 720: 533, 727: 533, 533, 533, 731: 533, 533, 533, 758: 5218, 5217, 973: 5219}, + {578: 5212, 733: 5211, 758: 5214, 5213}, + {528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 16: 528, 52: 528, 167: 528, 528, 171: 528, 554: 528, 528, 558: 528, 528, 528, 528, 528, 570: 528, 528, 578: 528, 610: 528, 668: 528, 720: 528, 727: 528, 528, 528, 731: 528, 528, 528}, // 2230 - {491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 52: 491, 549: 491, 553: 491, 491, 491, 491, 491, 565: 491, 491, 663: 491, 678: 491, 705: 491, 723: 491, 491, 491, 727: 491}, - {490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 52: 490, 549: 490, 553: 490, 490, 490, 490, 490, 565: 490, 490, 663: 490, 678: 490, 705: 490, 723: 490, 490, 490, 727: 490}, - {489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 52: 489, 549: 489, 553: 489, 489, 489, 489, 489, 565: 489, 489, 663: 489, 678: 489, 705: 489, 723: 489, 489, 489, 727: 489}, - {523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 52: 523, 549: 523, 553: 523, 523, 523, 523, 523, 565: 523, 523, 663: 523, 678: 523, 705: 523, 723: 523, 523, 523, 727: 523}, - {552: 4053, 657: 4054, 4055, 1042: 5163, 1322: 5162}, + {527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 16: 527, 52: 527, 167: 527, 527, 171: 527, 554: 527, 527, 558: 527, 527, 527, 527, 527, 570: 527, 527, 578: 527, 610: 527, 668: 527, 720: 527, 727: 527, 527, 527, 731: 527, 527, 527}, + {555: 524}, + {518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 52: 518, 61: 518, 554: 518, 518, 558: 518, 518, 518, 518, 518, 570: 518, 518, 668: 518, 720: 518, 727: 518, 518, 518, 731: 518, 518, 843: 518, 518}, + {517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 52: 517, 61: 517, 554: 517, 517, 558: 517, 517, 517, 517, 517, 570: 517, 517, 668: 517, 720: 517, 727: 517, 517, 517, 731: 517, 517, 843: 517, 517}, + {516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 52: 516, 554: 516, 558: 516, 516, 516, 516, 516, 570: 516, 516, 668: 516, 720: 516, 727: 516, 516, 516, 731: 516, 516}, // 2235 - {9: 5165, 52: 5164}, - {9: 451, 52: 451}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 165: 5157, 5159, 169: 5158, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5156, 1008: 5167}, - {552: 4053, 657: 4054, 4055, 1042: 5166}, - {9: 450, 52: 450}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 866: 4530, 910: 5210}, + {514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 52: 514, 554: 514, 558: 514, 514, 514, 514, 514, 570: 514, 514, 668: 514, 720: 514, 727: 514, 514, 514, 731: 514, 514}, + {513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 52: 513, 554: 513, 558: 513, 513, 513, 513, 513, 570: 513, 513, 668: 513, 720: 513, 727: 513, 513, 513, 731: 513, 513}, + {511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 16: 511, 52: 511, 167: 511, 511, 171: 511, 554: 511, 558: 511, 511, 511, 511, 511, 570: 511, 511, 578: 511, 610: 511, 668: 511, 720: 511, 727: 511, 511, 511, 731: 511, 511, 511}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 16: 497, 52: 497, 167: 497, 497, 171: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 578: 497, 610: 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 497, 866: 4530, 910: 5209}, // 2240 - {525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 52: 525, 549: 525, 553: 525, 525, 525, 525, 525, 565: 525, 525, 663: 525, 678: 525, 705: 525, 723: 525, 525, 525, 727: 525}, - {552: 4053, 657: 4054, 4055, 1042: 5163, 1322: 5169}, - {9: 5165, 52: 5170}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 165: 5157, 5159, 169: 5158, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5156, 1008: 5171}, - {526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 52: 526, 549: 526, 553: 526, 526, 526, 526, 526, 565: 526, 526, 663: 526, 678: 526, 705: 526, 723: 526, 526, 526, 727: 526}, + {509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 16: 509, 52: 509, 167: 509, 509, 171: 509, 554: 509, 558: 509, 509, 509, 509, 509, 570: 509, 509, 578: 509, 610: 509, 668: 509, 720: 509, 727: 509, 509, 509, 731: 509, 509, 509}, + {508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 16: 508, 52: 508, 167: 508, 508, 171: 508, 554: 508, 558: 508, 508, 508, 508, 508, 570: 508, 508, 578: 508, 610: 508, 668: 508, 720: 508, 727: 508, 508, 508, 731: 508, 508, 508}, + {503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 52: 503, 554: 503, 558: 503, 503, 503, 503, 503, 570: 503, 503, 668: 503, 720: 503, 727: 503, 503, 503, 731: 503, 503}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 866: 4530, 910: 5208}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 866: 4530, 910: 5207}, // 2245 - {527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 52: 527, 549: 527, 553: 527, 527, 527, 527, 527, 565: 527, 527, 663: 527, 678: 527, 705: 527, 723: 527, 527, 527, 727: 527}, - {529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 52: 529, 549: 529, 553: 529, 529, 529, 529, 529, 565: 529, 529, 663: 529, 678: 529, 705: 529, 723: 529, 529, 529, 727: 529}, - {530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 52: 530, 549: 530, 553: 530, 530, 530, 530, 530, 565: 530, 530, 663: 530, 678: 530, 705: 530, 723: 530, 530, 530, 727: 530}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5176}, - {531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 52: 531, 549: 531, 553: 531, 531, 531, 531, 531, 565: 531, 531, 663: 531, 678: 531, 705: 531, 723: 531, 531, 531, 727: 531}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 866: 4530, 910: 5206}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 61: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 843: 497, 497, 866: 4530, 910: 5200}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 52: 492, 61: 492, 554: 492, 558: 492, 492, 492, 492, 492, 570: 492, 492, 668: 492, 720: 492, 727: 492, 492, 492, 731: 492, 492, 843: 492, 492, 1009: 5201}, + {499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 52: 499, 61: 5203, 554: 499, 558: 499, 499, 499, 499, 499, 570: 499, 499, 668: 499, 720: 499, 727: 499, 499, 499, 731: 499, 499, 843: 5202, 5204, 1008: 5205}, + {495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 52: 495, 61: 495, 554: 495, 558: 495, 495, 495, 495, 495, 570: 495, 495, 668: 495, 720: 495, 727: 495, 495, 495, 731: 495, 495, 843: 495, 495}, // 2250 - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5178}, - {532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 52: 532, 549: 532, 553: 532, 532, 532, 532, 532, 565: 532, 532, 663: 532, 678: 532, 705: 532, 723: 532, 532, 532, 727: 532}, - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5181}, - {533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 52: 533, 549: 533, 553: 533, 533, 533, 533, 533, 565: 533, 533, 663: 533, 678: 533, 705: 533, 723: 533, 533, 533, 727: 533}, - {534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 52: 534, 549: 534, 553: 534, 534, 534, 534, 534, 565: 534, 534, 663: 534, 678: 534, 705: 534, 723: 534, 534, 534, 727: 534}, + {494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 52: 494, 61: 494, 554: 494, 558: 494, 494, 494, 494, 494, 570: 494, 494, 668: 494, 720: 494, 727: 494, 494, 494, 731: 494, 494, 843: 494, 494}, + {493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 52: 493, 61: 493, 554: 493, 558: 493, 493, 493, 493, 493, 570: 493, 493, 668: 493, 720: 493, 727: 493, 493, 493, 731: 493, 493, 843: 493, 493}, + {491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 52: 491, 61: 491, 554: 491, 558: 491, 491, 491, 491, 491, 570: 491, 491, 668: 491, 720: 491, 727: 491, 491, 491, 731: 491, 491, 843: 491, 491}, + {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, 720: 500, 727: 500, 500, 500, 731: 500, 500}, + {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, 720: 501, 727: 501, 501, 501, 731: 501, 501}, // 2255 - {466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 16: 4519, 52: 466, 549: 466, 553: 466, 466, 466, 466, 466, 565: 466, 466, 572: 4520, 605: 4516, 663: 466, 678: 466, 705: 466, 723: 466, 466, 466, 727: 466, 4518, 873: 4517, 916: 5184}, - {535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 52: 535, 549: 535, 553: 535, 535, 535, 535, 535, 565: 535, 535, 663: 535, 678: 535, 705: 535, 723: 535, 535, 535, 727: 535}, - {536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 52: 536, 549: 536, 553: 536, 536, 536, 536, 536, 565: 536, 536, 663: 536, 678: 536, 705: 536, 723: 536, 536, 536, 727: 536}, - {540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 52: 540, 60: 540, 549: 540, 540, 553: 540, 540, 540, 540, 540, 565: 540, 540, 663: 540, 678: 540, 705: 540, 723: 540, 540, 540, 727: 540, 838: 540, 540}, - {564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 52: 564, 549: 564, 553: 564, 564, 564, 564, 564, 565: 564, 564, 663: 564, 678: 564, 705: 564, 723: 564, 564, 564, 727: 564}, + {502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 52: 502, 554: 502, 558: 502, 502, 502, 502, 502, 570: 502, 502, 668: 502, 720: 502, 727: 502, 502, 502, 731: 502, 502}, + {510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 16: 510, 52: 510, 167: 510, 510, 171: 510, 554: 510, 558: 510, 510, 510, 510, 510, 570: 510, 510, 578: 510, 610: 510, 668: 510, 720: 510, 727: 510, 510, 510, 731: 510, 510, 510}, + {515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 52: 515, 554: 515, 558: 515, 515, 515, 515, 515, 570: 515, 515, 668: 515, 720: 515, 727: 515, 515, 515, 731: 515, 515}, + {532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 16: 532, 52: 532, 554: 532, 532, 558: 532, 532, 532, 532, 532, 570: 532, 532, 578: 532, 610: 532, 668: 532, 720: 532, 727: 532, 532, 532, 731: 532, 532, 532, 973: 5216}, + {531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 16: 531, 52: 531, 554: 531, 531, 558: 531, 531, 531, 531, 531, 570: 531, 531, 578: 531, 610: 531, 668: 531, 720: 531, 727: 531, 531, 531, 731: 531, 531, 531, 973: 5215}, // 2260 - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 549: 477, 553: 477, 477, 477, 477, 477, 565: 477, 477, 663: 477, 678: 477, 705: 477, 723: 477, 477, 477, 727: 477, 838: 477, 477, 1003: 5188}, - {565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 52: 565, 60: 5130, 549: 565, 553: 565, 565, 565, 565, 565, 565: 565, 565, 663: 565, 678: 565, 705: 565, 723: 565, 565, 565, 727: 565, 838: 5129, 5131, 1002: 5132}, - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 549: 477, 553: 477, 477, 477, 477, 477, 565: 477, 477, 663: 477, 678: 477, 705: 477, 723: 477, 477, 477, 727: 477, 838: 477, 477, 1003: 5190}, - {566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 52: 566, 60: 5130, 549: 566, 553: 566, 566, 566, 566, 566, 565: 566, 566, 663: 566, 678: 566, 705: 566, 723: 566, 566, 566, 727: 566, 838: 5129, 5131, 1002: 5132}, - {567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 52: 567, 60: 5130, 549: 567, 553: 567, 567, 567, 567, 567, 565: 567, 567, 663: 567, 678: 567, 705: 567, 723: 567, 567, 567, 727: 567, 838: 5129, 5131, 1002: 5132}, + {555: 526}, + {555: 525}, + {555: 520}, + {555: 521}, + {555: 523}, // 2265 - {477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 52: 477, 60: 477, 549: 477, 553: 477, 477, 477, 477, 477, 565: 477, 477, 663: 477, 678: 477, 705: 477, 723: 477, 477, 477, 727: 477, 838: 477, 477, 1003: 5193}, - {568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 52: 568, 60: 5130, 549: 568, 553: 568, 568, 568, 568, 568, 565: 568, 568, 663: 568, 678: 568, 705: 568, 723: 568, 568, 568, 727: 568, 838: 5129, 5131, 1002: 5132}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 663: 2748, 678: 2748, 705: 2748, 723: 2748, 729: 2748, 765: 2748, 2748, 791: 5352, 3121, 3122, 3120, 1316: 5351}, - {2679, 2679, 2679, 2679, 2679, 2679, 9: 2679, 2679, 2679, 52: 2679, 565: 2679}, - {663: 2656}, + {555: 522}, + {555: 519}, + {529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 16: 529, 52: 529, 167: 529, 529, 171: 529, 554: 529, 529, 558: 529, 529, 529, 529, 529, 570: 529, 529, 578: 529, 610: 529, 668: 529, 720: 529, 727: 529, 529, 529, 731: 529, 529, 529}, + {530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 16: 530, 52: 530, 167: 530, 530, 171: 530, 554: 530, 530, 558: 530, 530, 530, 530, 530, 570: 530, 530, 578: 530, 610: 530, 668: 530, 720: 530, 727: 530, 530, 530, 731: 530, 530, 530}, + {497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 52: 497, 554: 497, 4529, 558: 497, 497, 497, 497, 497, 570: 497, 497, 668: 497, 720: 497, 727: 497, 497, 497, 731: 497, 497, 866: 4530, 910: 5223}, // 2270 - {566: 5350}, - {2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 52: 2646, 549: 2646, 553: 2646, 2646, 2646, 2646, 2646, 565: 2646, 2646, 663: 2646, 678: 2646, 705: 2646, 723: 2646, 2646, 2646, 727: 2646}, - {2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 52: 2645, 549: 2645, 553: 2645, 2645, 2645, 2645, 2645, 565: 2645, 2645, 663: 2645, 678: 2645, 705: 2645, 723: 2645, 2645, 2645, 727: 2645}, - {663: 5344}, - {2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 52: 2640, 58: 5339, 94: 5338, 549: 2640, 553: 2640, 2640, 2640, 2640, 2640, 565: 2640, 2640, 663: 5340, 678: 2640, 705: 2640, 723: 2640, 2640, 2640, 727: 2640}, + {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, 720: 536, 727: 536, 536, 536, 731: 536, 536}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 167: 5230, 5232, 171: 5231, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5229, 1014: 5233}, + {537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 52: 537, 554: 537, 558: 537, 537, 537, 537, 537, 570: 537, 537, 668: 537, 720: 537, 727: 537, 537, 537, 731: 537, 537}, + {581: 4556, 973: 5221}, + {581: 4555, 973: 5220}, // 2275 - {57: 5319, 250: 5323, 341: 5324, 550: 5318, 552: 3675, 562: 5046, 5047, 566: 3666, 571: 5320, 576: 3670, 648: 3665, 3667, 655: 3669, 3668, 3673, 3674, 667: 3672, 669: 5304, 5303, 5299, 5300, 674: 5301, 5302, 797: 5045, 3671, 800: 5322, 1021: 5317, 1058: 5298, 1081: 5296, 5297, 5321, 1105: 5315, 1234: 5316, 1236: 5314, 1376: 5313}, - {554: 5311}, - {731: 5294}, - {552: 5293}, - {705: 5284}, + {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 52: 512, 554: 512, 558: 512, 512, 512, 512, 512, 570: 512, 512, 668: 512, 720: 512, 727: 512, 512, 512, 731: 512, 512}, + {507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 52: 507, 554: 507, 558: 507, 507, 507, 507, 507, 570: 507, 507, 668: 507, 720: 507, 727: 507, 507, 507, 731: 507, 507}, + {506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 52: 506, 554: 506, 558: 506, 506, 506, 506, 506, 570: 506, 506, 668: 506, 720: 506, 727: 506, 506, 506, 731: 506, 506}, + {505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 52: 505, 554: 505, 558: 505, 505, 505, 505, 505, 570: 505, 505, 668: 505, 720: 505, 727: 505, 505, 505, 731: 505, 505}, + {504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 52: 504, 554: 504, 558: 504, 504, 504, 504, 504, 570: 504, 504, 668: 504, 720: 504, 727: 504, 504, 504, 731: 504, 504}, // 2280 - {556: 5277}, - {2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632, 52: 2632, 549: 2632, 553: 2632, 2632, 2632, 2632, 2632, 565: 2632, 2632, 663: 2632, 678: 2632, 705: 2632, 723: 2632, 2632, 2632, 727: 2632}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 3825, 791: 3827, 3121, 3122, 3120, 825: 3824, 998: 5276}, - {189: 5274, 270: 5275, 554: 5273, 1360: 5272}, - {249: 5271, 315: 5270, 554: 5269, 1498: 5268}, + {538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 52: 538, 554: 538, 558: 538, 538, 538, 538, 538, 570: 538, 538, 668: 538, 720: 538, 727: 538, 538, 538, 731: 538, 538}, + {557: 4087, 662: 4088, 4089, 1048: 5236, 1328: 5235}, + {9: 5238, 52: 5237}, + {9: 466, 52: 466}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 167: 5230, 5232, 171: 5231, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5229, 1014: 5240}, // 2285 - {2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 52: 2627, 549: 2627, 5262, 553: 2627, 2627, 2627, 2627, 2627, 565: 2627, 2627, 663: 2627, 678: 2627, 705: 2627, 723: 2627, 2627, 2627, 727: 2627, 1351: 5261}, - {382: 5260}, - {2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 52: 2613, 549: 2613, 553: 2613, 2613, 2613, 2613, 2613, 565: 2613, 2613, 663: 2613, 678: 2613, 705: 2613, 723: 2613, 2613, 2613, 727: 2613}, - {2610, 2610, 2610, 2610, 2610, 2610, 5205, 5211, 5199, 2610, 2610, 2610, 5203, 5212, 5210, 52: 2610, 549: 5204, 553: 3902, 5202, 3901, 2618, 5209, 565: 2610, 5198, 663: 2657, 678: 5196, 705: 2749, 723: 5201, 5194, 5216, 727: 5213, 939: 5197, 952: 5206, 1034: 5208, 1053: 5259, 1070: 5207, 1092: 5200}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5217}, + {557: 4087, 662: 4088, 4089, 1048: 5239}, + {9: 465, 52: 465}, + {540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 52: 540, 554: 540, 558: 540, 540, 540, 540, 540, 570: 540, 540, 668: 540, 720: 540, 727: 540, 540, 540, 731: 540, 540}, + {557: 4087, 662: 4088, 4089, 1048: 5236, 1328: 5242}, + {9: 5238, 52: 5243}, // 2290 - {2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 52: 2543, 549: 2543, 5219, 553: 2543, 2543, 2543, 2543, 2543, 565: 2543, 2543, 663: 2543, 678: 2543, 705: 2543, 723: 2543, 2543, 2543, 727: 2543, 730: 2543, 1404: 5218}, - {2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600, 52: 2600, 549: 2600, 553: 2600, 2600, 2600, 2600, 2600, 565: 2600, 2600, 663: 2600, 678: 2600, 705: 2600, 723: 2600, 2600, 2600, 727: 2600, 730: 5234, 1421: 5235, 5236}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 5220}, - {9: 5232, 52: 5231}, - {9: 2541, 52: 2541}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 167: 5230, 5232, 171: 5231, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5229, 1014: 5244}, + {541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 52: 541, 554: 541, 558: 541, 541, 541, 541, 541, 570: 541, 541, 668: 541, 720: 541, 727: 541, 541, 541, 731: 541, 541}, + {542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 52: 542, 554: 542, 558: 542, 542, 542, 542, 542, 570: 542, 542, 668: 542, 720: 542, 727: 542, 542, 542, 731: 542, 542}, + {544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 52: 544, 554: 544, 558: 544, 544, 544, 544, 544, 570: 544, 544, 668: 544, 720: 544, 727: 544, 544, 544, 731: 544, 544}, + {545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 52: 545, 554: 545, 558: 545, 545, 545, 545, 545, 570: 545, 545, 668: 545, 720: 545, 727: 545, 545, 545, 731: 545, 545}, // 2295 - {9: 482, 52: 482, 550: 4495, 597: 482, 624: 482, 861: 4496, 905: 5229}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 5224}, - {52: 5225, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {9: 1526, 52: 1526, 597: 5228, 624: 5227, 1086: 5226}, - {9: 2538, 52: 2538}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5249}, + {546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 52: 546, 554: 546, 558: 546, 546, 546, 546, 546, 570: 546, 546, 668: 546, 720: 546, 727: 546, 546, 546, 731: 546, 546}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5251}, + {547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 52: 547, 554: 547, 558: 547, 547, 547, 547, 547, 570: 547, 547, 668: 547, 720: 547, 727: 547, 547, 547, 731: 547, 547}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5254}, // 2300 - {1525, 1525, 1525, 1525, 1525, 1525, 9: 1525, 52: 1525, 565: 1525}, - {1524, 1524, 1524, 1524, 1524, 1524, 9: 1524, 52: 1524, 565: 1524}, - {9: 1526, 52: 1526, 597: 5228, 624: 5227, 1086: 5230}, - {9: 2539, 52: 2539}, - {2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 52: 2542, 549: 2542, 553: 2542, 2542, 2542, 2542, 2542, 565: 2542, 2542, 663: 2542, 678: 2542, 705: 2542, 723: 2542, 2542, 2542, 727: 2542, 730: 2542}, + {548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 52: 548, 554: 548, 558: 548, 548, 548, 548, 548, 570: 548, 548, 668: 548, 720: 548, 727: 548, 548, 548, 731: 548, 548}, + {549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 52: 549, 554: 549, 558: 549, 549, 549, 549, 549, 570: 549, 549, 668: 549, 720: 549, 727: 549, 549, 549, 731: 549, 549}, + {481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 16: 4553, 52: 481, 554: 481, 558: 481, 481, 481, 481, 481, 570: 481, 481, 578: 4554, 610: 4550, 668: 481, 720: 481, 727: 481, 481, 481, 731: 481, 481, 4552, 878: 4551, 921: 5257}, + {550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 52: 550, 554: 550, 558: 550, 550, 550, 550, 550, 570: 550, 550, 668: 550, 720: 550, 727: 550, 550, 550, 731: 550, 550}, + {551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 52: 551, 554: 551, 558: 551, 551, 551, 551, 551, 570: 551, 551, 668: 551, 720: 551, 727: 551, 551, 551, 731: 551, 551}, // 2305 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5233}, - {9: 2540, 52: 2540}, - {275: 5256, 430: 5257, 449: 5258}, - {2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 52: 2599, 549: 2599, 553: 2599, 2599, 2599, 2599, 2599, 565: 2599, 2599, 663: 2599, 678: 2599, 705: 2599, 723: 2599, 2599, 2599, 727: 2599}, - {2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 52: 2595, 549: 5238, 553: 2595, 2595, 2595, 2595, 2595, 565: 2595, 2595, 663: 2595, 678: 2595, 705: 2595, 723: 2595, 2595, 2595, 727: 2595, 1241: 5239, 5240, 1426: 5237}, + {555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 52: 555, 61: 555, 554: 555, 555, 558: 555, 555, 555, 555, 555, 570: 555, 555, 668: 555, 720: 555, 727: 555, 555, 555, 731: 555, 555, 843: 555, 555}, + {579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 52: 579, 554: 579, 558: 579, 579, 579, 579, 579, 570: 579, 579, 668: 579, 720: 579, 727: 579, 579, 579, 731: 579, 579}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 52: 492, 61: 492, 554: 492, 558: 492, 492, 492, 492, 492, 570: 492, 492, 668: 492, 720: 492, 727: 492, 492, 492, 731: 492, 492, 843: 492, 492, 1009: 5261}, + {580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 52: 580, 61: 5203, 554: 580, 558: 580, 580, 580, 580, 580, 570: 580, 580, 668: 580, 720: 580, 727: 580, 580, 580, 731: 580, 580, 843: 5202, 5204, 1008: 5205}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 52: 492, 61: 492, 554: 492, 558: 492, 492, 492, 492, 492, 570: 492, 492, 668: 492, 720: 492, 727: 492, 492, 492, 731: 492, 492, 843: 492, 492, 1009: 5263}, // 2310 - {2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 52: 2598, 549: 2598, 553: 2598, 2598, 2598, 2598, 2598, 565: 2598, 2598, 663: 2598, 678: 2598, 705: 2598, 723: 2598, 2598, 2598, 727: 2598}, - {731: 5254, 823: 5243}, - {2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 52: 2594, 549: 5252, 553: 2594, 2594, 2594, 2594, 2594, 565: 2594, 2594, 663: 2594, 678: 2594, 705: 2594, 723: 2594, 2594, 2594, 727: 2594, 1242: 5253}, - {2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 52: 2593, 549: 5241, 553: 2593, 2593, 2593, 2593, 2593, 565: 2593, 2593, 663: 2593, 678: 2593, 705: 2593, 723: 2593, 2593, 2593, 727: 2593, 1241: 5242}, - {823: 5243}, + {581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 52: 581, 61: 5203, 554: 581, 558: 581, 581, 581, 581, 581, 570: 581, 581, 668: 581, 720: 581, 727: 581, 581, 581, 731: 581, 581, 843: 5202, 5204, 1008: 5205}, + {582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 52: 582, 61: 5203, 554: 582, 558: 582, 582, 582, 582, 582, 570: 582, 582, 668: 582, 720: 582, 727: 582, 582, 582, 731: 582, 582, 843: 5202, 5204, 1008: 5205}, + {492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 52: 492, 61: 492, 554: 492, 558: 492, 492, 492, 492, 492, 570: 492, 492, 668: 492, 720: 492, 727: 492, 492, 492, 731: 492, 492, 843: 492, 492, 1009: 5266}, + {583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 52: 583, 61: 5203, 554: 583, 558: 583, 583, 583, 583, 583, 570: 583, 583, 668: 583, 720: 583, 727: 583, 583, 583, 731: 583, 583, 843: 5202, 5204, 1008: 5205}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 668: 2774, 720: 2774, 727: 2774, 2774, 734: 2774, 770: 2774, 2774, 796: 5425, 3149, 3150, 3148, 1322: 5424}, // 2315 - {2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 52: 2591, 549: 2591, 553: 2591, 2591, 2591, 2591, 2591, 565: 2591, 2591, 663: 2591, 678: 2591, 705: 2591, 723: 2591, 2591, 2591, 727: 2591}, - {97: 5248, 575: 5247, 747: 5246, 749: 5245, 1275: 5244}, - {2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 52: 2597, 549: 2597, 553: 2597, 2597, 2597, 2597, 2597, 565: 2597, 2597, 663: 2597, 678: 2597, 705: 2597, 723: 2597, 2597, 2597, 727: 2597}, - {2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590, 52: 2590, 549: 2590, 553: 2590, 2590, 2590, 2590, 2590, 565: 2590, 2590, 663: 2590, 678: 2590, 705: 2590, 723: 2590, 2590, 2590, 727: 2590}, - {2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589, 52: 2589, 549: 2589, 553: 2589, 2589, 2589, 2589, 2589, 565: 2589, 2589, 663: 2589, 678: 2589, 705: 2589, 723: 2589, 2589, 2589, 727: 2589}, + {2705, 2705, 2705, 2705, 2705, 2705, 9: 2705, 2705, 2705, 52: 2705, 570: 2705}, + {668: 2682}, + {571: 5423}, + {2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 52: 2672, 554: 2672, 558: 2672, 2672, 2672, 2672, 2672, 570: 2672, 2672, 668: 2672, 720: 2672, 727: 2672, 2672, 2672, 731: 2672, 2672}, + {2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 52: 2671, 554: 2671, 558: 2671, 2671, 2671, 2671, 2671, 570: 2671, 2671, 668: 2671, 720: 2671, 727: 2671, 2671, 2671, 731: 2671, 2671}, // 2320 - {554: 5251, 566: 5250}, - {101: 5249}, - {2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 52: 2587, 549: 2587, 553: 2587, 2587, 2587, 2587, 2587, 565: 2587, 2587, 663: 2587, 678: 2587, 705: 2587, 723: 2587, 2587, 2587, 727: 2587}, - {2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 52: 2588, 549: 2588, 553: 2588, 2588, 2588, 2588, 2588, 565: 2588, 2588, 663: 2588, 678: 2588, 705: 2588, 723: 2588, 2588, 2588, 727: 2588}, - {2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 52: 2586, 549: 2586, 553: 2586, 2586, 2586, 2586, 2586, 565: 2586, 2586, 663: 2586, 678: 2586, 705: 2586, 723: 2586, 2586, 2586, 727: 2586}, + {668: 5417}, + {2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 52: 2666, 59: 5412, 94: 5411, 554: 2666, 558: 2666, 2666, 2666, 2666, 2666, 570: 2666, 2666, 668: 5413, 720: 2666, 727: 2666, 2666, 2666, 731: 2666, 2666}, + {54: 5392, 254: 5396, 345: 5397, 555: 5391, 557: 3708, 567: 5119, 5120, 571: 3699, 576: 5393, 580: 3703, 651: 3698, 3700, 659: 3702, 3701, 662: 3706, 3707, 671: 3705, 673: 5377, 5376, 5372, 5373, 678: 5374, 5375, 802: 5118, 3704, 805: 5395, 1026: 5390, 1043: 5388, 1064: 5371, 1087: 5369, 5370, 5394, 1240: 5389, 1242: 5387, 1386: 5386}, + {559: 5384}, + {736: 5367}, // 2325 - {731: 5254}, - {2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592, 52: 2592, 549: 2592, 553: 2592, 2592, 2592, 2592, 2592, 565: 2592, 2592, 663: 2592, 678: 2592, 705: 2592, 723: 2592, 2592, 2592, 727: 2592}, - {97: 5248, 575: 5247, 747: 5246, 749: 5245, 1275: 5255}, - {2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 52: 2596, 549: 2596, 553: 2596, 2596, 2596, 2596, 2596, 565: 2596, 2596, 663: 2596, 678: 2596, 705: 2596, 723: 2596, 2596, 2596, 727: 2596}, - {2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 52: 2603, 549: 2603, 553: 2603, 2603, 2603, 2603, 2603, 565: 2603, 2603, 663: 2603, 678: 2603, 705: 2603, 723: 2603, 2603, 2603, 727: 2603}, + {557: 5366}, + {727: 5357}, + {561: 5350}, + {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, 720: 2658, 727: 2658, 2658, 2658, 731: 2658, 2658}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 3859, 796: 3861, 3149, 3150, 3148, 830: 3858, 1004: 5349}, // 2330 - {2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 52: 2602, 549: 2602, 553: 2602, 2602, 2602, 2602, 2602, 565: 2602, 2602, 663: 2602, 678: 2602, 705: 2602, 723: 2602, 2602, 2602, 727: 2602}, - {2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601, 52: 2601, 549: 2601, 553: 2601, 2601, 2601, 2601, 2601, 565: 2601, 2601, 663: 2601, 678: 2601, 705: 2601, 723: 2601, 2601, 2601, 727: 2601}, - {2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 52: 2612, 549: 2612, 553: 2612, 2612, 2612, 2612, 2612, 565: 2612, 2612, 663: 2612, 678: 2612, 705: 2612, 723: 2612, 2612, 2612, 727: 2612}, - {556: 2617}, - {2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 52: 2628, 549: 2628, 553: 2628, 2628, 2628, 2628, 2628, 565: 2628, 2628, 663: 2628, 678: 2628, 705: 2628, 723: 2628, 2628, 2628, 727: 2628}, + {193: 5347, 275: 5348, 559: 5346, 1370: 5345}, + {253: 5344, 319: 5343, 559: 5342, 1508: 5341}, + {2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 52: 2653, 554: 2653, 5335, 558: 2653, 2653, 2653, 2653, 2653, 570: 2653, 2653, 668: 2653, 720: 2653, 727: 2653, 2653, 2653, 731: 2653, 2653, 1361: 5334}, + {386: 5333}, + {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, 720: 2639, 727: 2639, 2639, 2639, 731: 2639, 2639}, // 2335 - {576: 3107, 819: 3956, 834: 5263}, - {9: 5265, 52: 5264}, - {2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 52: 2626, 549: 2626, 553: 2626, 2626, 2626, 2626, 2626, 565: 2626, 2626, 663: 2626, 678: 2626, 705: 2626, 723: 2626, 2626, 2626, 727: 2626}, - {576: 3107, 819: 3956, 834: 5266}, - {52: 5267}, + {2636, 2636, 2636, 2636, 2636, 2636, 5278, 5284, 5272, 2636, 2636, 2636, 5276, 5285, 5283, 52: 2636, 554: 5277, 558: 3936, 5275, 3935, 2644, 5282, 570: 2636, 5271, 668: 2683, 720: 5269, 727: 2775, 5274, 5267, 731: 5289, 5286, 946: 5270, 957: 5279, 1039: 5281, 1059: 5332, 1076: 5280, 1098: 5273}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5290}, + {2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 52: 2569, 554: 2569, 5292, 558: 2569, 2569, 2569, 2569, 2569, 570: 2569, 2569, 668: 2569, 720: 2569, 727: 2569, 2569, 2569, 731: 2569, 2569, 735: 2569, 1414: 5291}, + {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, 720: 2626, 727: 2626, 2626, 2626, 731: 2626, 2626, 735: 5307, 1431: 5308, 5309}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 5293}, // 2340 - {2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 52: 2625, 549: 2625, 553: 2625, 2625, 2625, 2625, 2625, 565: 2625, 2625, 663: 2625, 678: 2625, 705: 2625, 723: 2625, 2625, 2625, 727: 2625}, - {2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 52: 2629, 549: 2629, 553: 2629, 2629, 2629, 2629, 2629, 565: 2629, 2629, 663: 2629, 678: 2629, 705: 2629, 723: 2629, 2629, 2629, 727: 2629}, - {2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 52: 2624, 549: 2624, 553: 2624, 2624, 2624, 2624, 2624, 565: 2624, 2624, 663: 2624, 678: 2624, 705: 2624, 723: 2624, 2624, 2624, 727: 2624}, - {2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 52: 2623, 549: 2623, 553: 2623, 2623, 2623, 2623, 2623, 565: 2623, 2623, 663: 2623, 678: 2623, 705: 2623, 723: 2623, 2623, 2623, 727: 2623}, - {2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 52: 2622, 549: 2622, 553: 2622, 2622, 2622, 2622, 2622, 565: 2622, 2622, 663: 2622, 678: 2622, 705: 2622, 723: 2622, 2622, 2622, 727: 2622}, + {9: 5305, 52: 5304}, + {9: 2567, 52: 2567}, + {9: 497, 52: 497, 555: 4529, 602: 497, 629: 497, 866: 4530, 910: 5302}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 5297}, + {52: 5298, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 2345 - {2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 52: 2630, 549: 2630, 553: 2630, 2630, 2630, 2630, 2630, 565: 2630, 2630, 663: 2630, 678: 2630, 705: 2630, 723: 2630, 2630, 2630, 727: 2630}, - {2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 52: 2621, 549: 2621, 553: 2621, 2621, 2621, 2621, 2621, 565: 2621, 2621, 663: 2621, 678: 2621, 705: 2621, 723: 2621, 2621, 2621, 727: 2621}, - {2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 52: 2620, 549: 2620, 553: 2620, 2620, 2620, 2620, 2620, 565: 2620, 2620, 663: 2620, 678: 2620, 705: 2620, 723: 2620, 2620, 2620, 727: 2620}, - {2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 52: 2619, 549: 2619, 553: 2619, 2619, 2619, 2619, 2619, 565: 2619, 2619, 663: 2619, 678: 2619, 705: 2619, 723: 2619, 2619, 2619, 727: 2619}, - {2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 52: 2631, 549: 2631, 553: 2631, 2631, 2631, 2631, 2631, 565: 2631, 2631, 663: 2631, 678: 2631, 705: 2631, 723: 2631, 2631, 2631, 727: 2631}, + {9: 1547, 52: 1547, 602: 5301, 629: 5300, 1092: 5299}, + {9: 2564, 52: 2564}, + {1546, 1546, 1546, 1546, 1546, 1546, 9: 1546, 52: 1546, 570: 1546}, + {1545, 1545, 1545, 1545, 1545, 1545, 9: 1545, 52: 1545, 570: 1545}, + {9: 1547, 52: 1547, 602: 5301, 629: 5300, 1092: 5303}, // 2350 - {550: 5278}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 5279}, - {52: 5280, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 52: 2616, 549: 2616, 553: 2616, 2616, 2616, 2616, 2616, 565: 2616, 2616, 663: 2616, 678: 2616, 705: 2616, 723: 2616, 2616, 2616, 727: 2616, 1499: 5283, 1528: 5282, 5281}, - {2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 52: 2633, 549: 2633, 553: 2633, 2633, 2633, 2633, 2633, 565: 2633, 2633, 663: 2633, 678: 2633, 705: 2633, 723: 2633, 2633, 2633, 727: 2633}, + {9: 2565, 52: 2565}, + {2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 52: 2568, 554: 2568, 558: 2568, 2568, 2568, 2568, 2568, 570: 2568, 2568, 668: 2568, 720: 2568, 727: 2568, 2568, 2568, 731: 2568, 2568, 735: 2568}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5306}, + {9: 2566, 52: 2566}, + {280: 5329, 434: 5330, 454: 5331}, // 2355 - {2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2615, 52: 2615, 549: 2615, 553: 2615, 2615, 2615, 2615, 2615, 565: 2615, 2615, 663: 2615, 678: 2615, 705: 2615, 723: 2615, 2615, 2615, 727: 2615}, - {2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 52: 2614, 549: 2614, 553: 2614, 2614, 2614, 2614, 2614, 565: 2614, 2614, 663: 2614, 678: 2614, 705: 2614, 723: 2614, 2614, 2614, 727: 2614}, - {550: 5285}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 5286}, - {52: 5287, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 52: 2625, 554: 2625, 558: 2625, 2625, 2625, 2625, 2625, 570: 2625, 2625, 668: 2625, 720: 2625, 727: 2625, 2625, 2625, 731: 2625, 2625}, + {2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 52: 2621, 554: 5311, 558: 2621, 2621, 2621, 2621, 2621, 570: 2621, 2621, 668: 2621, 720: 2621, 727: 2621, 2621, 2621, 731: 2621, 2621, 1247: 5312, 5313, 1436: 5310}, + {2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 52: 2624, 554: 2624, 558: 2624, 2624, 2624, 2624, 2624, 570: 2624, 2624, 668: 2624, 720: 2624, 727: 2624, 2624, 2624, 731: 2624, 2624}, + {736: 5327, 828: 5316}, + {2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 52: 2620, 554: 5325, 558: 2620, 2620, 2620, 2620, 2620, 570: 2620, 2620, 668: 2620, 720: 2620, 727: 2620, 2620, 2620, 731: 2620, 2620, 1248: 5326}, // 2360 - {2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 52: 2651, 209: 5035, 549: 2651, 553: 3902, 2651, 3901, 2651, 2651, 565: 2651, 2651, 663: 2651, 678: 2651, 705: 2651, 723: 2651, 2651, 2651, 727: 2651, 939: 5288, 1066: 5289, 1192: 5290, 1381: 5291}, - {209: 5037, 566: 5292}, - {2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 52: 2650, 549: 2650, 553: 2650, 2650, 2650, 2650, 2650, 565: 2650, 2650, 663: 2650, 678: 2650, 705: 2650, 723: 2650, 2650, 2650, 727: 2650}, - {2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 52: 2648, 549: 2648, 553: 2648, 2648, 2648, 2648, 2648, 565: 2648, 2648, 663: 2648, 678: 2648, 705: 2648, 723: 2648, 2648, 2648, 727: 2648}, - {2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 52: 2634, 549: 2634, 553: 2634, 2634, 2634, 2634, 2634, 565: 2634, 2634, 663: 2634, 678: 2634, 705: 2634, 723: 2634, 2634, 2634, 727: 2634}, + {2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 52: 2619, 554: 5314, 558: 2619, 2619, 2619, 2619, 2619, 570: 2619, 2619, 668: 2619, 720: 2619, 727: 2619, 2619, 2619, 731: 2619, 2619, 1247: 5315}, + {828: 5316}, + {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, 720: 2617, 727: 2617, 2617, 2617, 731: 2617, 2617}, + {97: 5321, 581: 5320, 752: 5319, 754: 5318, 1281: 5317}, + {2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 52: 2623, 554: 2623, 558: 2623, 2623, 2623, 2623, 2623, 570: 2623, 2623, 668: 2623, 720: 2623, 727: 2623, 2623, 2623, 731: 2623, 2623}, // 2365 - {2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 52: 2649, 549: 2649, 553: 2649, 2649, 2649, 2649, 2649, 565: 2649, 2649, 663: 2649, 678: 2649, 705: 2649, 723: 2649, 2649, 2649, 727: 2649}, - {2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 52: 2635, 549: 2635, 553: 2635, 2635, 2635, 2635, 2635, 565: 2635, 2635, 663: 2635, 678: 2635, 705: 2635, 723: 2635, 2635, 2635, 727: 2635}, - {669: 5304, 5303, 5299, 5300, 674: 5301, 5302, 1058: 5298, 1081: 5296, 5297, 5295}, - {2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 52: 2636, 549: 2636, 553: 2636, 2636, 2636, 2636, 2636, 565: 2636, 2636, 663: 2636, 678: 2636, 705: 2636, 723: 2636, 2636, 2636, 727: 2636}, - {2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 52: 2575, 549: 2575, 553: 2575, 2575, 2575, 2575, 2575, 565: 2575, 2575, 663: 2575, 678: 2575, 705: 2575, 723: 2575, 2575, 2575, 727: 2575}, + {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, 720: 2616, 727: 2616, 2616, 2616, 731: 2616, 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, 720: 2615, 727: 2615, 2615, 2615, 731: 2615, 2615}, + {559: 5324, 571: 5323}, + {101: 5322}, + {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, 720: 2613, 727: 2613, 2613, 2613, 731: 2613, 2613}, // 2370 - {550: 5307}, - {550: 5305}, - {2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 52: 2571, 549: 2571, 2558, 553: 2571, 2571, 2571, 2571, 2571, 565: 2571, 2571, 663: 2571, 678: 2571, 705: 2571, 723: 2571, 2571, 2571, 727: 2571}, - {2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562, 52: 2562, 549: 2562, 2566, 553: 2562, 2562, 2562, 2562, 2562, 565: 2562, 2562, 663: 2562, 678: 2562, 705: 2562, 723: 2562, 2562, 2562, 727: 2562}, - {2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 52: 2561, 549: 2561, 2565, 553: 2561, 2561, 2561, 2561, 2561, 565: 2561, 2561, 663: 2561, 678: 2561, 705: 2561, 723: 2561, 2561, 2561, 727: 2561}, + {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, 720: 2614, 727: 2614, 2614, 2614, 731: 2614, 2614}, + {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, 720: 2612, 727: 2612, 2612, 2612, 731: 2612, 2612}, + {736: 5327}, + {2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618, 52: 2618, 554: 2618, 558: 2618, 2618, 2618, 2618, 2618, 570: 2618, 2618, 668: 2618, 720: 2618, 727: 2618, 2618, 2618, 731: 2618, 2618}, + {97: 5321, 581: 5320, 752: 5319, 754: 5318, 1281: 5328}, // 2375 - {2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 52: 2560, 549: 2560, 2564, 553: 2560, 2560, 2560, 2560, 2560, 565: 2560, 2560, 663: 2560, 678: 2560, 705: 2560, 723: 2560, 2560, 2560, 727: 2560}, - {550: 2563}, - {550: 2559}, - {52: 5306}, - {2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 52: 2572, 549: 2572, 553: 2572, 2572, 2572, 2572, 2572, 565: 2572, 2572, 663: 2572, 678: 2572, 705: 2572, 723: 2572, 2572, 2572, 727: 2572}, + {2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 52: 2622, 554: 2622, 558: 2622, 2622, 2622, 2622, 2622, 570: 2622, 2622, 668: 2622, 720: 2622, 727: 2622, 2622, 2622, 731: 2622, 2622}, + {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, 720: 2629, 727: 2629, 2629, 2629, 731: 2629, 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, 720: 2628, 727: 2628, 2628, 2628, 731: 2628, 2628}, + {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, 720: 2627, 727: 2627, 2627, 2627, 731: 2627, 2627}, + {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, 720: 2638, 727: 2638, 2638, 2638, 731: 2638, 2638}, // 2380 - {52: 5308, 576: 3107, 819: 5309}, - {2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 52: 2574, 549: 2574, 553: 2574, 2574, 2574, 2574, 2574, 565: 2574, 2574, 663: 2574, 678: 2574, 705: 2574, 723: 2574, 2574, 2574, 727: 2574}, - {52: 5310}, - {2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 2573, 52: 2573, 549: 2573, 553: 2573, 2573, 2573, 2573, 2573, 565: 2573, 2573, 663: 2573, 678: 2573, 705: 2573, 723: 2573, 2573, 2573, 727: 2573}, - {205: 5312}, + {561: 2643}, + {2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 52: 2654, 554: 2654, 558: 2654, 2654, 2654, 2654, 2654, 570: 2654, 2654, 668: 2654, 720: 2654, 727: 2654, 2654, 2654, 731: 2654, 2654}, + {580: 3135, 824: 3990, 839: 5336}, + {9: 5338, 52: 5337}, + {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, 720: 2652, 727: 2652, 2652, 2652, 731: 2652, 2652}, // 2385 - {2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 52: 2637, 549: 2637, 553: 2637, 2637, 2637, 2637, 2637, 565: 2637, 2637, 663: 2637, 678: 2637, 705: 2637, 723: 2637, 2637, 2637, 727: 2637}, - {2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 52: 2638, 549: 2638, 553: 2638, 2638, 2638, 2638, 2638, 565: 2638, 2638, 663: 2638, 678: 2638, 705: 2638, 723: 2638, 2638, 2638, 727: 2638}, - {2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 52: 2585, 549: 2585, 553: 2585, 2585, 2585, 2585, 2585, 565: 2585, 2585, 663: 2585, 678: 2585, 705: 2585, 723: 2585, 2585, 2585, 727: 2585}, - {2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 52: 2584, 549: 2584, 553: 2584, 2584, 2584, 2584, 2584, 565: 2584, 2584, 663: 2584, 678: 2584, 705: 2584, 723: 2584, 2584, 2584, 727: 2584}, - {2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 52: 2583, 549: 2583, 553: 2583, 2583, 2583, 2583, 2583, 565: 2583, 2583, 663: 2583, 678: 2583, 705: 2583, 723: 2583, 2583, 2583, 727: 2583}, + {580: 3135, 824: 3990, 839: 5339}, + {52: 5340}, + {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, 720: 2651, 727: 2651, 2651, 2651, 731: 2651, 2651}, + {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, 720: 2655, 727: 2655, 2655, 2655, 731: 2655, 2655}, + {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, 720: 2650, 727: 2650, 2650, 2650, 731: 2650, 2650}, // 2390 - {2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 2582, 52: 2582, 549: 2582, 553: 2582, 2582, 2582, 2582, 2582, 565: 2582, 2582, 663: 2582, 678: 2582, 705: 2582, 723: 2582, 2582, 2582, 727: 2582}, - {57: 5319, 250: 5323, 341: 5324, 550: 5318, 571: 5320, 669: 5304, 5303, 5299, 5300, 674: 5301, 5302, 800: 5322, 1021: 5332, 1058: 5298, 1081: 5296, 5297, 5321, 1234: 5334, 1236: 5333}, - {550: 5328}, - {550: 5325}, - {2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 52: 2576, 549: 2576, 553: 2576, 2576, 2576, 2576, 2576, 565: 2576, 2576, 663: 2576, 678: 2576, 705: 2576, 723: 2576, 2576, 2576, 727: 2576}, + {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, 720: 2649, 727: 2649, 2649, 2649, 731: 2649, 2649}, + {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, 720: 2648, 727: 2648, 2648, 2648, 731: 2648, 2648}, + {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, 720: 2656, 727: 2656, 2656, 2656, 731: 2656, 2656}, + {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, 720: 2647, 727: 2647, 2647, 2647, 731: 2647, 2647}, + {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, 720: 2646, 727: 2646, 2646, 2646, 731: 2646, 2646}, // 2395 - {2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 52: 2569, 549: 2569, 553: 2569, 2569, 2569, 2569, 2569, 565: 2569, 2569, 663: 2569, 678: 2569, 705: 2569, 723: 2569, 2569, 2569, 727: 2569}, - {205: 4677}, - {550: 4674}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 5326}, - {9: 4083, 52: 5327}, + {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, 720: 2645, 727: 2645, 2645, 2645, 731: 2645, 2645}, + {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, 720: 2657, 727: 2657, 2657, 2657, 731: 2657, 2657}, + {555: 5351}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 5352}, + {52: 5353, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 2400 - {2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 52: 2578, 549: 2578, 553: 2578, 2578, 2578, 2578, 2578, 565: 2578, 2578, 663: 2578, 678: 2578, 705: 2578, 723: 2578, 2578, 2578, 727: 2578}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 5329, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 5330}, - {2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 52: 2580, 549: 2580, 553: 2580, 2580, 2580, 2580, 2580, 565: 2580, 2580, 663: 2580, 678: 2580, 705: 2580, 723: 2580, 2580, 2580, 727: 2580}, - {9: 4083, 52: 5331}, - {2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 52: 2579, 549: 2579, 553: 2579, 2579, 2579, 2579, 2579, 565: 2579, 2579, 663: 2579, 678: 2579, 705: 2579, 723: 2579, 2579, 2579, 727: 2579}, + {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, 720: 2642, 727: 2642, 2642, 2642, 731: 2642, 2642, 1509: 5356, 1540: 5355, 5354}, + {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, 720: 2659, 727: 2659, 2659, 2659, 731: 2659, 2659}, + {2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 52: 2641, 554: 2641, 558: 2641, 2641, 2641, 2641, 2641, 570: 2641, 2641, 668: 2641, 720: 2641, 727: 2641, 2641, 2641, 731: 2641, 2641}, + {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, 720: 2640, 727: 2640, 2640, 2640, 731: 2640, 2640}, + {555: 5358}, // 2405 - {52: 5337}, - {52: 5336}, - {52: 5335}, - {2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 52: 2570, 549: 2570, 553: 2570, 2570, 2570, 2570, 2570, 565: 2570, 2570, 663: 2570, 678: 2570, 705: 2570, 723: 2570, 2570, 2570, 727: 2570}, - {2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 52: 2577, 549: 2577, 553: 2577, 2577, 2577, 2577, 2577, 565: 2577, 2577, 663: 2577, 678: 2577, 705: 2577, 723: 2577, 2577, 2577, 727: 2577}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 5359}, + {52: 5360, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 52: 2677, 214: 5108, 554: 2677, 558: 3936, 2677, 3935, 2677, 2677, 570: 2677, 2677, 668: 2677, 720: 2677, 727: 2677, 2677, 2677, 731: 2677, 2677, 946: 5361, 1072: 5362, 1198: 5363, 1391: 5364}, + {214: 5110, 571: 5365}, + {2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 52: 2676, 554: 2676, 558: 2676, 2676, 2676, 2676, 2676, 570: 2676, 2676, 668: 2676, 720: 2676, 727: 2676, 2676, 2676, 731: 2676, 2676}, // 2410 - {2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581, 52: 2581, 549: 2581, 553: 2581, 2581, 2581, 2581, 2581, 565: 2581, 2581, 663: 2581, 678: 2581, 705: 2581, 723: 2581, 2581, 2581, 727: 2581}, - {2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 52: 2642, 549: 2642, 553: 2642, 2642, 2642, 2642, 2642, 565: 2642, 2642, 663: 2642, 678: 2642, 705: 2642, 723: 2642, 2642, 2642, 727: 2642}, - {2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 52: 2641, 549: 2641, 553: 2641, 2641, 2641, 2641, 2641, 565: 2641, 2641, 663: 2641, 678: 2641, 705: 2641, 723: 2641, 2641, 2641, 727: 2641}, - {2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 52: 2776, 58: 5341, 94: 5342, 549: 2776, 553: 2776, 2776, 2776, 2776, 2776, 565: 2776, 2776, 663: 2776, 678: 2776, 705: 2776, 723: 2776, 2776, 2776, 727: 2776, 1071: 5343}, - {2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 52: 2775, 549: 2775, 553: 2775, 2775, 2775, 2775, 2775, 565: 2775, 2775, 663: 2775, 678: 2775, 705: 2775, 723: 2775, 2775, 2775, 727: 2775}, + {2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 52: 2674, 554: 2674, 558: 2674, 2674, 2674, 2674, 2674, 570: 2674, 2674, 668: 2674, 720: 2674, 727: 2674, 2674, 2674, 731: 2674, 2674}, + {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, 720: 2660, 727: 2660, 2660, 2660, 731: 2660, 2660}, + {2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 52: 2675, 554: 2675, 558: 2675, 2675, 2675, 2675, 2675, 570: 2675, 2675, 668: 2675, 720: 2675, 727: 2675, 2675, 2675, 731: 2675, 2675}, + {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, 720: 2661, 727: 2661, 2661, 2661, 731: 2661, 2661}, + {673: 5377, 5376, 5372, 5373, 678: 5374, 5375, 1064: 5371, 1087: 5369, 5370, 5368}, // 2415 - {2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 52: 2774, 549: 2774, 553: 2774, 2774, 2774, 2774, 2774, 565: 2774, 2774, 663: 2774, 678: 2774, 705: 2774, 723: 2774, 2774, 2774, 727: 2774}, - {2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 52: 2639, 549: 2639, 553: 2639, 2639, 2639, 2639, 2639, 565: 2639, 2639, 663: 2639, 678: 2639, 705: 2639, 723: 2639, 2639, 2639, 727: 2639}, - {2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 52: 2776, 58: 5341, 94: 5342, 104: 5345, 107: 5346, 549: 2776, 553: 2776, 2776, 2776, 2776, 2776, 565: 2776, 2776, 663: 2776, 678: 2776, 705: 2776, 723: 2776, 2776, 2776, 727: 2776, 969: 5348, 1071: 5347}, - {2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, 19: 2778, 52: 2778, 58: 2778, 94: 2778, 103: 2778, 2778, 2778, 107: 2778, 109: 2778, 2778, 549: 2778, 551: 2778, 553: 2778, 2778, 2778, 2778, 2778, 561: 2778, 565: 2778, 2778, 582: 2778, 663: 2778, 678: 2778, 705: 2778, 723: 2778, 2778, 2778, 727: 2778}, - {2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 19: 2777, 52: 2777, 58: 2777, 94: 2777, 103: 2777, 2777, 2777, 107: 2777, 109: 2777, 2777, 549: 2777, 551: 2777, 553: 2777, 2777, 2777, 2777, 2777, 561: 2777, 565: 2777, 2777, 582: 2777, 663: 2777, 678: 2777, 705: 2777, 723: 2777, 2777, 2777, 727: 2777}, + {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, 720: 2662, 727: 2662, 2662, 2662, 731: 2662, 2662}, + {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, 720: 2601, 727: 2601, 2601, 2601, 731: 2601, 2601}, + {555: 5380}, + {555: 5378}, + {2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, 52: 2597, 554: 2597, 2584, 558: 2597, 2597, 2597, 2597, 2597, 570: 2597, 2597, 668: 2597, 720: 2597, 727: 2597, 2597, 2597, 731: 2597, 2597}, // 2420 - {2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 52: 2644, 549: 2644, 553: 2644, 2644, 2644, 2644, 2644, 565: 2644, 2644, 663: 2644, 678: 2644, 705: 2644, 723: 2644, 2644, 2644, 727: 2644}, - {2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 52: 2776, 58: 5341, 94: 5342, 549: 2776, 553: 2776, 2776, 2776, 2776, 2776, 565: 2776, 2776, 663: 2776, 678: 2776, 705: 2776, 723: 2776, 2776, 2776, 727: 2776, 1071: 5349}, - {2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 52: 2643, 549: 2643, 553: 2643, 2643, 2643, 2643, 2643, 565: 2643, 2643, 663: 2643, 678: 2643, 705: 2643, 723: 2643, 2643, 2643, 727: 2643}, - {2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 52: 2647, 549: 2647, 553: 2647, 2647, 2647, 2647, 2647, 565: 2647, 2647, 663: 2647, 678: 2647, 705: 2647, 723: 2647, 2647, 2647, 727: 2647}, - {663: 2747, 678: 2747, 705: 2747, 723: 2747, 729: 2747, 765: 2747, 2747}, + {2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 2588, 52: 2588, 554: 2588, 2592, 558: 2588, 2588, 2588, 2588, 2588, 570: 2588, 2588, 668: 2588, 720: 2588, 727: 2588, 2588, 2588, 731: 2588, 2588}, + {2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 52: 2587, 554: 2587, 2591, 558: 2587, 2587, 2587, 2587, 2587, 570: 2587, 2587, 668: 2587, 720: 2587, 727: 2587, 2587, 2587, 731: 2587, 2587}, + {2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 52: 2586, 554: 2586, 2590, 558: 2586, 2586, 2586, 2586, 2586, 570: 2586, 2586, 668: 2586, 720: 2586, 727: 2586, 2586, 2586, 731: 2586, 2586}, + {555: 2589}, + {555: 2585}, // 2425 - {2746, 2746, 2746, 2746, 2746, 2746, 9: 2746, 565: 2746, 663: 2746, 678: 2746, 705: 2746, 723: 2746, 729: 2746, 765: 2746, 2746}, - {2680, 2680, 2680, 2680, 2680, 2680, 9: 2680, 2680, 2680, 52: 2680, 565: 2680}, - {2808, 2808, 2808, 2808, 2808, 2808, 9: 2808, 565: 2808}, - {2757, 2757, 2757, 2757, 2757, 2757, 9: 2757, 565: 2757}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5357}, + {52: 5379}, + {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, 720: 2598, 727: 2598, 2598, 2598, 731: 2598, 2598}, + {52: 5381, 580: 3135, 824: 5382}, + {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, 720: 2600, 727: 2600, 2600, 2600, 731: 2600, 2600}, + {52: 5383}, // 2430 - {2756, 2756, 2756, 2756, 2756, 2756, 9: 2756, 565: 2756}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 5359}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5058, 979: 5360}, - {2758, 2758, 2758, 2758, 2758, 2758, 9: 2758, 5355, 5356, 565: 2758, 1054: 5361}, - {2809, 2809, 2809, 2809, 2809, 2809, 9: 2809, 565: 2809}, + {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, 720: 2599, 727: 2599, 2599, 2599, 731: 2599, 2599}, + {210: 5385}, + {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, 720: 2663, 727: 2663, 2663, 2663, 731: 2663, 2663}, + {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, 720: 2664, 727: 2664, 2664, 2664, 731: 2664, 2664}, + {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, 720: 2611, 727: 2611, 2611, 2611, 731: 2611, 2611}, // 2435 - {2810, 2810, 2810, 2810, 2810, 2810, 9: 2810, 565: 2810}, - {2811, 2811, 2811, 2811, 2811, 2811, 9: 2811, 565: 2811}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5367, 1129: 5366, 1339: 5365}, - {2812, 2812, 2812, 2812, 2812, 2812, 9: 5369, 565: 2812}, - {1536, 1536, 1536, 1536, 1536, 1536, 9: 1536, 565: 1536}, + {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, 720: 2610, 727: 2610, 2610, 2610, 731: 2610, 2610}, + {2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 52: 2609, 554: 2609, 558: 2609, 2609, 2609, 2609, 2609, 570: 2609, 2609, 668: 2609, 720: 2609, 727: 2609, 2609, 2609, 731: 2609, 2609}, + {2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 52: 2608, 554: 2608, 558: 2608, 2608, 2608, 2608, 2608, 570: 2608, 2608, 668: 2608, 720: 2608, 727: 2608, 2608, 2608, 731: 2608, 2608}, + {54: 5392, 254: 5396, 345: 5397, 555: 5391, 576: 5393, 673: 5377, 5376, 5372, 5373, 678: 5374, 5375, 805: 5395, 1026: 5405, 1064: 5371, 1087: 5369, 5370, 5394, 1240: 5407, 1242: 5406}, + {555: 5401}, // 2440 - {1526, 1526, 1526, 1526, 1526, 1526, 9: 1526, 565: 1526, 597: 5228, 624: 5227, 1086: 5368}, - {1534, 1534, 1534, 1534, 1534, 1534, 9: 1534, 565: 1534}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5367, 1129: 5370}, - {1535, 1535, 1535, 1535, 1535, 1535, 9: 1535, 565: 1535}, - {2: 779, 779, 779, 779, 779, 779, 779, 10: 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 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, 5374, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 735: 779, 915: 5373, 930: 5372}, + {555: 5398}, + {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, 720: 2602, 727: 2602, 2602, 2602, 731: 2602, 2602}, + {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, 720: 2595, 727: 2595, 2595, 2595, 731: 2595, 2595}, + {210: 4714}, + {555: 4711}, // 2445 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 735: 5376, 791: 5378, 3121, 3122, 3120, 880: 5377, 950: 5375}, - {778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 53: 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 550: 778, 565: 778, 576: 778, 605: 778, 627: 778, 735: 778}, - {777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 53: 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 550: 777, 565: 777, 576: 777, 605: 777, 627: 777, 735: 777}, - {2815, 2815, 2815, 2815, 2815, 2815, 9: 2815, 565: 2815}, - {2784, 2784, 2784, 2784, 2784, 2784, 9: 2784, 20: 2784, 565: 2784}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 5399}, + {9: 4117, 52: 5400}, + {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, 720: 2604, 727: 2604, 2604, 2604, 731: 2604, 2604}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 5402, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 5403}, + {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, 720: 2606, 727: 2606, 2606, 2606, 731: 2606, 2606}, // 2450 - {2783, 2783, 2783, 2783, 2783, 2783, 9: 5379, 20: 2783, 565: 2783}, - {2751, 2751, 2751, 2751, 2751, 2751, 9: 2751, 20: 2751, 52: 2751, 143: 2751, 221: 2751, 229: 2751, 551: 2751, 565: 2751, 579: 2751, 729: 2751, 735: 2751}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5380, 3121, 3122, 3120}, - {2750, 2750, 2750, 2750, 2750, 2750, 9: 2750, 20: 2750, 52: 2750, 143: 2750, 221: 2750, 229: 2750, 551: 2750, 565: 2750, 579: 2750, 729: 2750, 735: 2750}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 735: 5376, 791: 5378, 3121, 3122, 3120, 880: 5377, 950: 5383}, + {9: 4117, 52: 5404}, + {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, 720: 2605, 727: 2605, 2605, 2605, 731: 2605, 2605}, + {52: 5410}, + {52: 5409}, + {52: 5408}, // 2455 - {2816, 2816, 2816, 2816, 2816, 2816, 9: 2816, 565: 2816}, - {20: 5384}, - {2818, 2818, 2818, 2818, 2818, 2818, 9: 2818, 565: 2818}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 735: 5376, 791: 5378, 3121, 3122, 3120, 880: 5377, 950: 5387}, - {2817, 2817, 2817, 2817, 2817, 2817, 9: 2817, 565: 2817}, + {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, 720: 2596, 727: 2596, 2596, 2596, 731: 2596, 2596}, + {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, 720: 2603, 727: 2603, 2603, 2603, 731: 2603, 2603}, + {2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 52: 2607, 554: 2607, 558: 2607, 2607, 2607, 2607, 2607, 570: 2607, 2607, 668: 2607, 720: 2607, 727: 2607, 2607, 2607, 731: 2607, 2607}, + {2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 52: 2668, 554: 2668, 558: 2668, 2668, 2668, 2668, 2668, 570: 2668, 2668, 668: 2668, 720: 2668, 727: 2668, 2668, 2668, 731: 2668, 2668}, + {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, 720: 2667, 727: 2667, 2667, 2667, 731: 2667, 2667}, // 2460 - {20: 5388}, - {2819, 2819, 2819, 2819, 2819, 2819, 9: 2819, 565: 2819}, - {2: 779, 779, 779, 779, 779, 779, 779, 10: 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 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, 5374, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 735: 779, 915: 5373, 930: 5390}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 735: 5376, 791: 5378, 3121, 3122, 3120, 880: 5377, 950: 5391}, - {2820, 2820, 2820, 2820, 2820, 2820, 9: 2820, 565: 2820}, + {2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 52: 2802, 59: 5414, 94: 5415, 554: 2802, 558: 2802, 2802, 2802, 2802, 2802, 570: 2802, 2802, 668: 2802, 720: 2802, 727: 2802, 2802, 2802, 731: 2802, 2802, 1077: 5416}, + {2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 52: 2801, 554: 2801, 558: 2801, 2801, 2801, 2801, 2801, 570: 2801, 2801, 668: 2801, 720: 2801, 727: 2801, 2801, 2801, 731: 2801, 2801}, + {2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 52: 2800, 554: 2800, 558: 2800, 2800, 2800, 2800, 2800, 570: 2800, 2800, 668: 2800, 720: 2800, 727: 2800, 2800, 2800, 731: 2800, 2800}, + {2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 52: 2665, 554: 2665, 558: 2665, 2665, 2665, 2665, 2665, 570: 2665, 2665, 668: 2665, 720: 2665, 727: 2665, 2665, 2665, 731: 2665, 2665}, + {2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 52: 2802, 59: 5414, 94: 5415, 104: 5418, 107: 5419, 554: 2802, 558: 2802, 2802, 2802, 2802, 2802, 570: 2802, 2802, 668: 2802, 720: 2802, 727: 2802, 2802, 2802, 731: 2802, 2802, 974: 5421, 1077: 5420}, // 2465 - {2: 779, 779, 779, 779, 779, 779, 779, 10: 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 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, 5374, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 735: 779, 915: 5373, 930: 5393}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 735: 5376, 791: 5378, 3121, 3122, 3120, 880: 5377, 950: 5394}, - {2821, 2821, 2821, 2821, 2821, 2821, 9: 2821, 565: 2821}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 735: 5376, 791: 5378, 3121, 3122, 3120, 880: 5377, 950: 5396}, - {2822, 2822, 2822, 2822, 2822, 2822, 9: 2822, 565: 2822}, + {2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 19: 2804, 52: 2804, 59: 2804, 94: 2804, 103: 2804, 2804, 2804, 107: 2804, 109: 2804, 2804, 554: 2804, 556: 2804, 558: 2804, 2804, 2804, 2804, 2804, 566: 2804, 570: 2804, 2804, 587: 2804, 668: 2804, 720: 2804, 727: 2804, 2804, 2804, 731: 2804, 2804}, + {2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 19: 2803, 52: 2803, 59: 2803, 94: 2803, 103: 2803, 2803, 2803, 107: 2803, 109: 2803, 2803, 554: 2803, 556: 2803, 558: 2803, 2803, 2803, 2803, 2803, 566: 2803, 570: 2803, 2803, 587: 2803, 668: 2803, 720: 2803, 727: 2803, 2803, 2803, 731: 2803, 2803}, + {2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 52: 2670, 554: 2670, 558: 2670, 2670, 2670, 2670, 2670, 570: 2670, 2670, 668: 2670, 720: 2670, 727: 2670, 2670, 2670, 731: 2670, 2670}, + {2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 52: 2802, 59: 5414, 94: 5415, 554: 2802, 558: 2802, 2802, 2802, 2802, 2802, 570: 2802, 2802, 668: 2802, 720: 2802, 727: 2802, 2802, 2802, 731: 2802, 2802, 1077: 5422}, + {2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 52: 2669, 554: 2669, 558: 2669, 2669, 2669, 2669, 2669, 570: 2669, 2669, 668: 2669, 720: 2669, 727: 2669, 2669, 2669, 731: 2669, 2669}, // 2470 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5398, 3121, 3122, 3120}, - {551: 5399}, - {627: 5400}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5401}, - {2782, 2782, 2782, 2782, 2782, 2782, 9: 2782, 290: 5405, 551: 5404, 565: 2782, 1541: 5403, 5402}, + {2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 52: 2673, 554: 2673, 558: 2673, 2673, 2673, 2673, 2673, 570: 2673, 2673, 668: 2673, 720: 2673, 727: 2673, 2673, 2673, 731: 2673, 2673}, + {668: 2773, 720: 2773, 727: 2773, 2773, 734: 2773, 770: 2773, 2773}, + {2772, 2772, 2772, 2772, 2772, 2772, 9: 2772, 570: 2772, 668: 2772, 720: 2772, 727: 2772, 2772, 734: 2772, 770: 2772, 2772}, + {2706, 2706, 2706, 2706, 2706, 2706, 9: 2706, 2706, 2706, 52: 2706, 570: 2706}, + {2834, 2834, 2834, 2834, 2834, 2834, 9: 2834, 570: 2834}, // 2475 - {2823, 2823, 2823, 2823, 2823, 2823, 9: 2823, 565: 2823}, - {2781, 2781, 2781, 2781, 2781, 2781, 9: 2781, 565: 2781}, - {262: 5407}, - {262: 5406}, - {2779, 2779, 2779, 2779, 2779, 2779, 9: 2779, 565: 2779}, + {2783, 2783, 2783, 2783, 2783, 2783, 9: 2783, 570: 2783}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5430}, + {2782, 2782, 2782, 2782, 2782, 2782, 9: 2782, 570: 2782}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 5432}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5131, 985: 5433}, // 2480 - {2780, 2780, 2780, 2780, 2780, 2780, 9: 2780, 565: 2780}, - {212: 5409}, - {220: 5410}, - {550: 5411}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5412}, + {2784, 2784, 2784, 2784, 2784, 2784, 9: 2784, 5428, 5429, 570: 2784, 1060: 5434}, + {2835, 2835, 2835, 2835, 2835, 2835, 9: 2835, 570: 2835}, + {2836, 2836, 2836, 2836, 2836, 2836, 9: 2836, 570: 2836}, + {2837, 2837, 2837, 2837, 2837, 2837, 9: 2837, 570: 2837}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5440, 1135: 5439, 1349: 5438}, // 2485 - {52: 5413, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2165, 2165, 2165, 2165, 2165, 2165, 9: 2165, 565: 2165, 598: 5054, 879: 5414}, - {2825, 2825, 2825, 2825, 2825, 2825, 9: 2825, 565: 2825}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 5432}, - {663: 5431}, + {2838, 2838, 2838, 2838, 2838, 2838, 9: 5442, 570: 2838}, + {1557, 1557, 1557, 1557, 1557, 1557, 9: 1557, 570: 1557}, + {1547, 1547, 1547, 1547, 1547, 1547, 9: 1547, 570: 1547, 602: 5301, 629: 5300, 1092: 5441}, + {1555, 1555, 1555, 1555, 1555, 1555, 9: 1555, 570: 1555}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5440, 1135: 5443}, // 2490 - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 5429}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 5427}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 5425}, - {663: 5423}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5422, 3121, 3122, 3120}, + {1556, 1556, 1556, 1556, 1556, 1556, 9: 1556, 570: 1556}, + {2: 795, 795, 795, 795, 795, 795, 795, 10: 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 53: 795, 795, 795, 795, 795, 795, 5447, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 740: 795, 920: 5446, 935: 5445}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 740: 5449, 796: 5451, 3149, 3150, 3148, 885: 5450, 955: 5448}, + {794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 53: 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 555: 794, 570: 794, 580: 794, 610: 794, 632: 794, 740: 794}, + {793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 53: 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 555: 793, 570: 793, 580: 793, 610: 793, 632: 793, 740: 793}, // 2495 - {2790, 2790, 2790, 2790, 2790, 2790, 9: 2790, 565: 2790}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5352, 3121, 3122, 3120, 1316: 5424}, - {2813, 2813, 2813, 2813, 2813, 2813, 9: 2813, 565: 2813}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5426, 3121, 3122, 3120}, - {2814, 2814, 2814, 2814, 2814, 2814, 9: 2814, 565: 2814}, + {2841, 2841, 2841, 2841, 2841, 2841, 9: 2841, 570: 2841}, + {2810, 2810, 2810, 2810, 2810, 2810, 9: 2810, 20: 2810, 570: 2810}, + {2809, 2809, 2809, 2809, 2809, 2809, 9: 5452, 20: 2809, 570: 2809}, + {2777, 2777, 2777, 2777, 2777, 2777, 9: 2777, 20: 2777, 52: 2777, 144: 2777, 226: 2777, 234: 2777, 556: 2777, 570: 2777, 584: 2777, 734: 2777, 740: 2777}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5453, 3149, 3150, 3148}, // 2500 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5428, 3121, 3122, 3120}, - {2824, 2824, 2824, 2824, 2824, 2824, 9: 2824, 565: 2824}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 5430}, - {2826, 2826, 2826, 2826, 2826, 2826, 9: 5379, 565: 2826}, - {2827, 2827, 2827, 2827, 2827, 2827, 9: 2827, 565: 2827}, + {2776, 2776, 2776, 2776, 2776, 2776, 9: 2776, 20: 2776, 52: 2776, 144: 2776, 226: 2776, 234: 2776, 556: 2776, 570: 2776, 584: 2776, 734: 2776, 740: 2776}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 740: 5449, 796: 5451, 3149, 3150, 3148, 885: 5450, 955: 5456}, + {2842, 2842, 2842, 2842, 2842, 2842, 9: 2842, 570: 2842}, + {20: 5457}, + {2844, 2844, 2844, 2844, 2844, 2844, 9: 2844, 570: 2844}, // 2505 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5433}, - {2373, 2373, 2373, 2373, 2373, 2373, 9: 2373, 565: 2373, 747: 5436, 749: 5435, 1035: 5434}, - {2828, 2828, 2828, 2828, 2828, 2828, 9: 2828, 565: 2828}, - {2372, 2372, 2372, 2372, 2372, 2372, 9: 2372, 565: 2372}, - {2371, 2371, 2371, 2371, 2371, 2371, 9: 2371, 565: 2371}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 740: 5449, 796: 5451, 3149, 3150, 3148, 885: 5450, 955: 5460}, + {2843, 2843, 2843, 2843, 2843, 2843, 9: 2843, 570: 2843}, + {20: 5461}, + {2845, 2845, 2845, 2845, 2845, 2845, 9: 2845, 570: 2845}, + {2: 795, 795, 795, 795, 795, 795, 795, 10: 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 53: 795, 795, 795, 795, 795, 795, 5447, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 740: 795, 920: 5446, 935: 5463}, // 2510 - {58: 5374, 576: 779, 915: 5373, 930: 5438}, - {576: 3107, 819: 5439}, - {2829, 2829, 2829, 2829, 2829, 2829, 9: 2829, 565: 2829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 735: 5376, 791: 5378, 3121, 3122, 3120, 880: 5377, 950: 5441}, - {2830, 2830, 2830, 2830, 2830, 2830, 9: 2830, 565: 2830}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 740: 5449, 796: 5451, 3149, 3150, 3148, 885: 5450, 955: 5464}, + {2846, 2846, 2846, 2846, 2846, 2846, 9: 2846, 570: 2846}, + {2: 795, 795, 795, 795, 795, 795, 795, 10: 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 53: 795, 795, 795, 795, 795, 795, 5447, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 740: 795, 920: 5446, 935: 5466}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 740: 5449, 796: 5451, 3149, 3150, 3148, 885: 5450, 955: 5467}, + {2847, 2847, 2847, 2847, 2847, 2847, 9: 2847, 570: 2847}, // 2515 - {212: 5443}, - {220: 5444}, - {550: 5445}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5446}, - {52: 5447, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 740: 5449, 796: 5451, 3149, 3150, 3148, 885: 5450, 955: 5469}, + {2848, 2848, 2848, 2848, 2848, 2848, 9: 2848, 570: 2848}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5471, 3149, 3150, 3148}, + {556: 5472}, + {632: 5473}, // 2520 - {779, 779, 779, 779, 779, 779, 9: 779, 58: 5374, 565: 779, 915: 5373, 930: 5448}, - {2834, 2834, 2834, 2834, 2834, 2834, 9: 2834, 565: 2834}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 550: 2163, 598: 5457, 888: 5599}, - {2838, 2838, 2838, 2838, 2838, 2838, 9: 2838, 565: 2838}, - {2837, 2837, 2837, 2837, 2837, 2837, 9: 2837, 565: 2837}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5474}, + {2808, 2808, 2808, 2808, 2808, 2808, 9: 2808, 295: 5478, 556: 5477, 570: 2808, 1553: 5476, 5475}, + {2849, 2849, 2849, 2849, 2849, 2849, 9: 2849, 570: 2849}, + {2807, 2807, 2807, 2807, 2807, 2807, 9: 2807, 570: 2807}, + {267: 5480}, // 2525 - {2163, 2163, 2163, 2163, 2163, 2163, 9: 2163, 58: 2163, 129: 2163, 550: 2163, 565: 2163, 598: 5457, 888: 5548, 915: 2163}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 598: 5457, 888: 5539}, - {663: 5012, 678: 5495, 705: 5500, 723: 5498, 729: 5013, 765: 5499, 5496, 938: 5497, 1156: 5501}, - {729: 5456}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 550: 2163, 561: 2163, 598: 5457, 888: 5458}, + {267: 5479}, + {2805, 2805, 2805, 2805, 2805, 2805, 9: 2805, 570: 2805}, + {2806, 2806, 2806, 2806, 2806, 2806, 9: 2806, 570: 2806}, + {217: 5482}, + {225: 5483}, // 2530 - {553: 3902, 555: 3901, 939: 5493}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2159, 561: 2159, 791: 5459, 3121, 3122, 3120, 985: 5460, 1026: 5461}, - {103: 5491, 550: 2158, 561: 2158}, - {550: 2147, 561: 5489}, - {550: 5462}, + {555: 5484}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5485}, + {52: 5486, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2191, 2191, 2191, 2191, 2191, 2191, 9: 2191, 570: 2191, 605: 5127, 884: 5487}, + {2851, 2851, 2851, 2851, 2851, 2851, 9: 2851, 570: 2851}, // 2535 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 5463}, - {9: 5232, 52: 5464}, - {2157, 2157, 2157, 2157, 2157, 2157, 2157, 9: 2157, 19: 2157, 52: 2157, 58: 2157, 94: 2157, 103: 2157, 2157, 2157, 107: 2157, 109: 2157, 551: 2157, 561: 2157, 565: 2157, 988: 5465}, - {646, 646, 646, 646, 646, 646, 5470, 9: 646, 19: 5467, 52: 646, 58: 5474, 94: 5473, 103: 5476, 5345, 5032, 107: 5346, 109: 5031, 551: 5469, 561: 5475, 565: 646, 956: 5471, 5468, 969: 5472, 987: 5466}, - {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, 551: 2156, 561: 2156, 565: 2156, 582: 2156}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 5505}, + {668: 5504}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 5502}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 5500}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 5498}, // 2540 - {573: 4689, 576: 2368, 822: 5487}, - {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, 551: 2154, 561: 2154, 565: 2154, 582: 2154}, - {429: 5485}, - {552: 5484}, - {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, 551: 2151, 561: 2151, 565: 2151, 582: 2151}, + {668: 5496}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5495, 3149, 3150, 3148}, + {2816, 2816, 2816, 2816, 2816, 2816, 9: 2816, 570: 2816}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5425, 3149, 3150, 3148, 1322: 5497}, + {2839, 2839, 2839, 2839, 2839, 2839, 9: 2839, 570: 2839}, // 2545 - {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, 551: 2150, 561: 2150, 565: 2150, 582: 2150}, - {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, 551: 2149, 561: 2149, 565: 2149, 582: 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, 551: 2148, 561: 2148, 565: 2148, 582: 2148}, - {200: 5479, 224: 5481, 241: 5478, 246: 5482, 255: 5480, 1027: 5483}, - {200: 5479, 224: 5481, 241: 5478, 246: 5482, 255: 5480, 1027: 5477}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5499, 3149, 3150, 3148}, + {2840, 2840, 2840, 2840, 2840, 2840, 9: 2840, 570: 2840}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5501, 3149, 3150, 3148}, + {2850, 2850, 2850, 2850, 2850, 2850, 9: 2850, 570: 2850}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 5503}, // 2550 - {2141, 2141, 2141, 2141, 2141, 2141, 2141, 9: 2141, 19: 2141, 52: 2141, 58: 2141, 94: 2141, 103: 2141, 2141, 2141, 107: 2141, 109: 2141, 2141, 549: 2141, 551: 2141, 561: 2141, 565: 2141, 582: 2141}, - {2140, 2140, 2140, 2140, 2140, 2140, 2140, 9: 2140, 19: 2140, 52: 2140, 58: 2140, 94: 2140, 103: 2140, 2140, 2140, 107: 2140, 109: 2140, 2140, 549: 2140, 2140, 2140, 561: 2140, 565: 2140, 582: 2140}, - {2139, 2139, 2139, 2139, 2139, 2139, 2139, 9: 2139, 19: 2139, 52: 2139, 58: 2139, 94: 2139, 103: 2139, 2139, 2139, 107: 2139, 109: 2139, 2139, 549: 2139, 2139, 2139, 561: 2139, 565: 2139, 582: 2139}, - {2138, 2138, 2138, 2138, 2138, 2138, 2138, 9: 2138, 19: 2138, 52: 2138, 58: 2138, 94: 2138, 103: 2138, 2138, 2138, 107: 2138, 109: 2138, 2138, 549: 2138, 2138, 2138, 561: 2138, 565: 2138, 582: 2138}, - {2137, 2137, 2137, 2137, 2137, 2137, 2137, 9: 2137, 19: 2137, 52: 2137, 58: 2137, 94: 2137, 103: 2137, 2137, 2137, 107: 2137, 109: 2137, 2137, 549: 2137, 2137, 2137, 561: 2137, 565: 2137, 582: 2137}, + {2852, 2852, 2852, 2852, 2852, 2852, 9: 5452, 570: 2852}, + {2853, 2853, 2853, 2853, 2853, 2853, 9: 2853, 570: 2853}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5506}, + {2399, 2399, 2399, 2399, 2399, 2399, 9: 2399, 570: 2399, 752: 5509, 754: 5508, 1040: 5507}, + {2854, 2854, 2854, 2854, 2854, 2854, 9: 2854, 570: 2854}, // 2555 - {2136, 2136, 2136, 2136, 2136, 2136, 2136, 9: 2136, 19: 2136, 52: 2136, 58: 2136, 94: 2136, 103: 2136, 2136, 2136, 107: 2136, 109: 2136, 2136, 549: 2136, 2136, 2136, 561: 2136, 565: 2136, 582: 2136}, - {2142, 2142, 2142, 2142, 2142, 2142, 2142, 9: 2142, 19: 2142, 52: 2142, 58: 2142, 94: 2142, 103: 2142, 2142, 2142, 107: 2142, 109: 2142, 2142, 549: 2142, 551: 2142, 561: 2142, 565: 2142, 582: 2142}, - {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, 551: 2152, 561: 2152, 565: 2152, 582: 2152}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5486, 3121, 3122, 3120}, - {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, 551: 2153, 561: 2153, 565: 2153, 582: 2153}, + {2398, 2398, 2398, 2398, 2398, 2398, 9: 2398, 570: 2398}, + {2397, 2397, 2397, 2397, 2397, 2397, 9: 2397, 570: 2397}, + {59: 5447, 580: 795, 920: 5446, 935: 5511}, + {580: 3135, 824: 5512}, + {2855, 2855, 2855, 2855, 2855, 2855, 9: 2855, 570: 2855}, // 2560 - {576: 3107, 819: 3956, 834: 5488}, - {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, 551: 2155, 561: 2155, 565: 2155, 582: 2155}, - {200: 5479, 224: 5481, 241: 5478, 246: 5482, 255: 5480, 1027: 5490}, - {550: 2146}, - {200: 5479, 224: 5481, 241: 5478, 246: 5482, 255: 5480, 1027: 5492}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 740: 5449, 796: 5451, 3149, 3150, 3148, 885: 5450, 955: 5514}, + {2856, 2856, 2856, 2856, 2856, 2856, 9: 2856, 570: 2856}, + {217: 5516}, + {225: 5517}, + {555: 5518}, // 2565 - {550: 2145}, - {665: 5494}, - {2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 53: 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 550: 2162, 552: 2162, 554: 2162, 561: 2162, 565: 2162, 580: 2162, 650: 2162, 915: 2162}, - {663: 5533}, - {2: 2762, 2762, 2762, 2762, 2762, 2762, 2762, 10: 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 53: 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 550: 2762, 663: 5012, 729: 5013, 938: 5514, 1219: 5527}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5519}, + {52: 5520, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {795, 795, 795, 795, 795, 795, 9: 795, 59: 5447, 570: 795, 920: 5446, 935: 5521}, + {2860, 2860, 2860, 2860, 2860, 2860, 9: 2860, 570: 2860}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 555: 2189, 605: 5530, 893: 5672}, // 2570 - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 550: 2163, 561: 2163, 598: 5457, 888: 5521}, - {2: 2762, 2762, 2762, 2762, 2762, 2762, 2762, 10: 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 53: 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 550: 2762, 561: 2762, 663: 5012, 729: 5013, 938: 5514, 1219: 5515}, - {663: 5506}, - {550: 5502}, - {647, 647, 647, 647, 647, 647, 9: 647, 565: 647}, + {2864, 2864, 2864, 2864, 2864, 2864, 9: 2864, 570: 2864}, + {2863, 2863, 2863, 2863, 2863, 2863, 9: 2863, 570: 2863}, + {2189, 2189, 2189, 2189, 2189, 2189, 9: 2189, 59: 2189, 129: 2189, 555: 2189, 570: 2189, 605: 5530, 893: 5621, 920: 2189}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 605: 5530, 893: 5612}, + {668: 5085, 720: 5568, 727: 5573, 5571, 734: 5086, 770: 5572, 5569, 945: 5570, 1162: 5574}, // 2575 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 5503}, - {52: 5504, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2651, 2651, 2651, 2651, 2651, 2651, 9: 2651, 52: 2651, 209: 5035, 553: 3902, 555: 3901, 565: 2651, 939: 5036, 1066: 5289, 1192: 5505}, - {2604, 2604, 2604, 2604, 2604, 2604, 9: 2604, 52: 2604, 565: 2604}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 550: 2163, 598: 5457, 888: 5507}, + {734: 5529}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 555: 2189, 566: 2189, 605: 5530, 893: 5531}, + {558: 3936, 560: 3935, 946: 5566}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 2185, 566: 2185, 796: 5532, 3149, 3150, 3148, 991: 5533, 1031: 5534}, + {103: 5564, 555: 2184, 566: 2184}, // 2580 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2159, 791: 5509, 3121, 3122, 3120, 985: 5508}, - {550: 5510}, - {550: 2158}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 5511}, - {9: 5232, 52: 5512}, + {555: 2173, 566: 5562}, + {555: 5535}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 5536}, + {9: 5305, 52: 5537}, + {2183, 2183, 2183, 2183, 2183, 2183, 2183, 9: 2183, 19: 2183, 52: 2183, 59: 2183, 94: 2183, 103: 2183, 2183, 2183, 107: 2183, 109: 2183, 556: 2183, 566: 2183, 570: 2183, 994: 5538}, // 2585 - {725: 5216, 1034: 5513}, - {2605, 2605, 2605, 2605, 2605, 2605, 9: 2605, 52: 2605, 565: 2605}, - {2: 2761, 2761, 2761, 2761, 2761, 2761, 2761, 10: 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 53: 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 550: 2761, 561: 2761}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2159, 561: 2159, 791: 5459, 3121, 3122, 3120, 985: 5460, 1026: 5516}, - {550: 5517}, + {661, 661, 661, 661, 661, 661, 5543, 9: 661, 19: 5540, 52: 661, 59: 5547, 94: 5546, 103: 5549, 5418, 5105, 107: 5419, 109: 5104, 556: 5542, 566: 5548, 570: 661, 961: 5544, 5541, 974: 5545, 993: 5539}, + {2182, 2182, 2182, 2182, 2182, 2182, 2182, 9: 2182, 19: 2182, 52: 2182, 59: 2182, 94: 2182, 103: 2182, 2182, 2182, 107: 2182, 109: 2182, 2182, 556: 2182, 566: 2182, 570: 2182, 587: 2182}, + {577: 4726, 580: 2394, 825: 5560}, + {2180, 2180, 2180, 2180, 2180, 2180, 2180, 9: 2180, 19: 2180, 52: 2180, 59: 2180, 94: 2180, 103: 2180, 2180, 2180, 107: 2180, 109: 2180, 2180, 556: 2180, 566: 2180, 570: 2180, 587: 2180}, + {433: 5558}, // 2590 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 5518}, - {9: 5232, 52: 5519}, - {2157, 2157, 2157, 2157, 2157, 2157, 2157, 9: 2157, 19: 2157, 52: 2157, 58: 2157, 94: 2157, 103: 2157, 2157, 2157, 107: 2157, 109: 2157, 551: 2157, 561: 2157, 565: 2157, 988: 5520}, - {2606, 2606, 2606, 2606, 2606, 2606, 5470, 9: 2606, 19: 5467, 52: 2606, 58: 5474, 94: 5473, 103: 5476, 5345, 5032, 107: 5346, 109: 5031, 551: 5469, 561: 5475, 565: 2606, 956: 5471, 5468, 969: 5472, 987: 5466}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2159, 561: 2159, 791: 5459, 3121, 3122, 3120, 985: 5460, 1026: 5522}, + {557: 5557}, + {2177, 2177, 2177, 2177, 2177, 2177, 2177, 9: 2177, 19: 2177, 52: 2177, 59: 2177, 94: 2177, 103: 2177, 2177, 2177, 107: 2177, 109: 2177, 2177, 556: 2177, 566: 2177, 570: 2177, 587: 2177}, + {2176, 2176, 2176, 2176, 2176, 2176, 2176, 9: 2176, 19: 2176, 52: 2176, 59: 2176, 94: 2176, 103: 2176, 2176, 2176, 107: 2176, 109: 2176, 2176, 556: 2176, 566: 2176, 570: 2176, 587: 2176}, + {2175, 2175, 2175, 2175, 2175, 2175, 2175, 9: 2175, 19: 2175, 52: 2175, 59: 2175, 94: 2175, 103: 2175, 2175, 2175, 107: 2175, 109: 2175, 2175, 556: 2175, 566: 2175, 570: 2175, 587: 2175}, + {2174, 2174, 2174, 2174, 2174, 2174, 2174, 9: 2174, 19: 2174, 52: 2174, 59: 2174, 94: 2174, 103: 2174, 2174, 2174, 107: 2174, 109: 2174, 2174, 556: 2174, 566: 2174, 570: 2174, 587: 2174}, // 2595 - {550: 5523}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 5524}, - {9: 5232, 52: 5525}, - {2157, 2157, 2157, 2157, 2157, 2157, 2157, 9: 2157, 19: 2157, 52: 2157, 58: 2157, 94: 2157, 103: 2157, 2157, 2157, 107: 2157, 109: 2157, 551: 2157, 561: 2157, 565: 2157, 988: 5526}, - {2607, 2607, 2607, 2607, 2607, 2607, 5470, 9: 2607, 19: 5467, 52: 2607, 58: 5474, 94: 5473, 103: 5476, 5345, 5032, 107: 5346, 109: 5031, 551: 5469, 561: 5475, 565: 2607, 956: 5471, 5468, 969: 5472, 987: 5466}, + {204: 5552, 229: 5554, 244: 5551, 250: 5555, 259: 5553, 1032: 5556}, + {204: 5552, 229: 5554, 244: 5551, 250: 5555, 259: 5553, 1032: 5550}, + {2167, 2167, 2167, 2167, 2167, 2167, 2167, 9: 2167, 19: 2167, 52: 2167, 59: 2167, 94: 2167, 103: 2167, 2167, 2167, 107: 2167, 109: 2167, 2167, 554: 2167, 556: 2167, 566: 2167, 570: 2167, 587: 2167}, + {2166, 2166, 2166, 2166, 2166, 2166, 2166, 9: 2166, 19: 2166, 52: 2166, 59: 2166, 94: 2166, 103: 2166, 2166, 2166, 107: 2166, 109: 2166, 2166, 554: 2166, 2166, 2166, 566: 2166, 570: 2166, 587: 2166}, + {2165, 2165, 2165, 2165, 2165, 2165, 2165, 9: 2165, 19: 2165, 52: 2165, 59: 2165, 94: 2165, 103: 2165, 2165, 2165, 107: 2165, 109: 2165, 2165, 554: 2165, 2165, 2165, 566: 2165, 570: 2165, 587: 2165}, // 2600 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2159, 791: 5509, 3121, 3122, 3120, 985: 5528}, - {550: 5529}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 5530}, - {9: 5232, 52: 5531}, - {2157, 2157, 2157, 2157, 2157, 2157, 2157, 9: 2157, 19: 2157, 52: 2157, 58: 2157, 94: 2157, 103: 2157, 2157, 2157, 107: 2157, 109: 2157, 551: 2157, 561: 2157, 565: 2157, 988: 5532}, + {2164, 2164, 2164, 2164, 2164, 2164, 2164, 9: 2164, 19: 2164, 52: 2164, 59: 2164, 94: 2164, 103: 2164, 2164, 2164, 107: 2164, 109: 2164, 2164, 554: 2164, 2164, 2164, 566: 2164, 570: 2164, 587: 2164}, + {2163, 2163, 2163, 2163, 2163, 2163, 2163, 9: 2163, 19: 2163, 52: 2163, 59: 2163, 94: 2163, 103: 2163, 2163, 2163, 107: 2163, 109: 2163, 2163, 554: 2163, 2163, 2163, 566: 2163, 570: 2163, 587: 2163}, + {2162, 2162, 2162, 2162, 2162, 2162, 2162, 9: 2162, 19: 2162, 52: 2162, 59: 2162, 94: 2162, 103: 2162, 2162, 2162, 107: 2162, 109: 2162, 2162, 554: 2162, 2162, 2162, 566: 2162, 570: 2162, 587: 2162}, + {2168, 2168, 2168, 2168, 2168, 2168, 2168, 9: 2168, 19: 2168, 52: 2168, 59: 2168, 94: 2168, 103: 2168, 2168, 2168, 107: 2168, 109: 2168, 2168, 554: 2168, 556: 2168, 566: 2168, 570: 2168, 587: 2168}, + {2178, 2178, 2178, 2178, 2178, 2178, 2178, 9: 2178, 19: 2178, 52: 2178, 59: 2178, 94: 2178, 103: 2178, 2178, 2178, 107: 2178, 109: 2178, 2178, 556: 2178, 566: 2178, 570: 2178, 587: 2178}, // 2605 - {2608, 2608, 2608, 2608, 2608, 2608, 5470, 9: 2608, 19: 5467, 52: 2608, 58: 5474, 94: 5473, 103: 5476, 5345, 5032, 107: 5346, 109: 5031, 551: 5469, 561: 5475, 565: 2608, 956: 5471, 5468, 969: 5472, 987: 5466}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2159, 561: 2159, 791: 5459, 3121, 3122, 3120, 985: 5460, 1026: 5534}, - {550: 5535}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 5536}, - {9: 5232, 52: 5537}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5559, 3149, 3150, 3148}, + {2179, 2179, 2179, 2179, 2179, 2179, 2179, 9: 2179, 19: 2179, 52: 2179, 59: 2179, 94: 2179, 103: 2179, 2179, 2179, 107: 2179, 109: 2179, 2179, 556: 2179, 566: 2179, 570: 2179, 587: 2179}, + {580: 3135, 824: 3990, 839: 5561}, + {2181, 2181, 2181, 2181, 2181, 2181, 2181, 9: 2181, 19: 2181, 52: 2181, 59: 2181, 94: 2181, 103: 2181, 2181, 2181, 107: 2181, 109: 2181, 2181, 556: 2181, 566: 2181, 570: 2181, 587: 2181}, + {204: 5552, 229: 5554, 244: 5551, 250: 5555, 259: 5553, 1032: 5563}, // 2610 - {2157, 2157, 2157, 2157, 2157, 2157, 2157, 9: 2157, 19: 2157, 52: 2157, 58: 2157, 94: 2157, 103: 2157, 2157, 2157, 107: 2157, 109: 2157, 551: 2157, 561: 2157, 565: 2157, 988: 5538}, - {2609, 2609, 2609, 2609, 2609, 2609, 5470, 9: 2609, 19: 5467, 52: 2609, 58: 5474, 94: 5473, 103: 5476, 5345, 5032, 107: 5346, 109: 5031, 551: 5469, 561: 5475, 565: 2609, 956: 5471, 5468, 969: 5472, 987: 5466}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5540, 3121, 3122, 3120}, - {301: 5542, 309: 5544, 312: 5543, 1312: 5541}, - {550: 5545}, + {555: 2172}, + {204: 5552, 229: 5554, 244: 5551, 250: 5555, 259: 5553, 1032: 5565}, + {555: 2171}, + {670: 5567}, + {2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 53: 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 555: 2188, 557: 2188, 559: 2188, 566: 2188, 570: 2188, 585: 2188, 655: 2188, 920: 2188}, // 2615 - {52: 2551, 550: 2551}, - {52: 2550, 550: 2550}, - {52: 2549, 550: 2549}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 5546}, - {9: 4120, 52: 5547}, + {668: 5606}, + {2: 2788, 2788, 2788, 2788, 2788, 2788, 2788, 10: 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 53: 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 555: 2788, 668: 5085, 734: 5086, 945: 5587, 1225: 5600}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 555: 2189, 566: 2189, 605: 5530, 893: 5594}, + {2: 2788, 2788, 2788, 2788, 2788, 2788, 2788, 10: 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 53: 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 555: 2788, 566: 2788, 668: 5085, 734: 5086, 945: 5587, 1225: 5588}, + {668: 5579}, // 2620 - {2833, 2833, 2833, 2833, 2833, 2833, 9: 2833, 565: 2833}, - {779, 779, 779, 779, 779, 779, 9: 779, 58: 5374, 129: 779, 550: 779, 565: 779, 915: 5373, 930: 5549}, - {2464, 2464, 2464, 2464, 2464, 2464, 9: 2464, 129: 5551, 550: 5552, 565: 2464, 1255: 5550}, - {2836, 2836, 2836, 2836, 2836, 2836, 9: 2836, 565: 2836}, - {576: 3107, 819: 5598}, + {555: 5575}, + {662, 662, 662, 662, 662, 662, 9: 662, 570: 662}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 5576}, + {52: 5577, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {2677, 2677, 2677, 2677, 2677, 2677, 9: 2677, 52: 2677, 214: 5108, 558: 3936, 560: 3935, 570: 2677, 946: 5109, 1072: 5362, 1198: 5578}, // 2625 - {565: 5555, 1089: 5554, 1254: 5553}, - {9: 5596, 52: 5595}, - {9: 2462, 52: 2462}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5556, 3121, 3122, 3120}, - {6: 2441, 2441, 9: 2441, 18: 2441, 20: 2441, 22: 2441, 2441, 2441, 2441, 2441, 2441, 52: 2441, 198: 5561, 277: 5560, 550: 2441, 554: 5559, 567: 5558, 729: 2441, 1443: 5557}, + {2630, 2630, 2630, 2630, 2630, 2630, 9: 2630, 52: 2630, 570: 2630}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 555: 2189, 605: 5530, 893: 5580}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 2185, 796: 5582, 3149, 3150, 3148, 991: 5581}, + {555: 5583}, + {555: 2184}, // 2630 - {6: 2454, 2454, 9: 2454, 18: 2454, 20: 2454, 22: 2454, 2454, 2454, 2454, 2454, 2454, 52: 2454, 550: 2454, 729: 2454, 1088: 5582}, - {212: 5562, 625: 5563}, - {6: 2438, 2438, 9: 2438, 18: 2438, 20: 2438, 22: 2438, 2438, 2438, 2438, 2438, 2438, 52: 2438, 550: 2438, 729: 2438}, - {6: 2436, 2436, 9: 2436, 18: 2436, 20: 2436, 22: 2436, 2436, 2436, 2436, 2436, 2436, 52: 2436, 550: 2436, 729: 2436}, - {6: 2435, 2435, 9: 2435, 18: 2435, 20: 2435, 22: 2435, 2435, 2435, 2435, 2435, 2435, 52: 2435, 550: 2435, 729: 2435}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 5584}, + {9: 5305, 52: 5585}, + {731: 5289, 1039: 5586}, + {2631, 2631, 2631, 2631, 2631, 2631, 9: 2631, 52: 2631, 570: 2631}, + {2: 2787, 2787, 2787, 2787, 2787, 2787, 2787, 10: 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 53: 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787, 555: 2787, 566: 2787}, // 2635 - {220: 5572}, - {550: 5564}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 5566, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5567, 1172: 5568, 1375: 5565}, - {9: 5570, 52: 5569}, - {9: 2249, 52: 2249, 550: 3990}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 2185, 566: 2185, 796: 5532, 3149, 3150, 3148, 991: 5533, 1031: 5589}, + {555: 5590}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 5591}, + {9: 5305, 52: 5592}, + {2183, 2183, 2183, 2183, 2183, 2183, 2183, 9: 2183, 19: 2183, 52: 2183, 59: 2183, 94: 2183, 103: 2183, 2183, 2183, 107: 2183, 109: 2183, 556: 2183, 566: 2183, 570: 2183, 994: 5593}, // 2640 - {9: 2248, 52: 2248, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {9: 2232, 52: 2232}, - {6: 2437, 2437, 9: 2437, 18: 2437, 20: 2437, 22: 2437, 2437, 2437, 2437, 2437, 2437, 52: 2437, 550: 2437, 729: 2437}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 5566, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5567, 1172: 5571}, - {9: 2231, 52: 2231}, + {2632, 2632, 2632, 2632, 2632, 2632, 5543, 9: 2632, 19: 5540, 52: 2632, 59: 5547, 94: 5546, 103: 5549, 5418, 5105, 107: 5419, 109: 5104, 556: 5542, 566: 5548, 570: 2632, 961: 5544, 5541, 974: 5545, 993: 5539}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 2185, 566: 2185, 796: 5532, 3149, 3150, 3148, 991: 5533, 1031: 5595}, + {555: 5596}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 5597}, + {9: 5305, 52: 5598}, // 2645 - {550: 5574, 740: 5573}, - {6: 2440, 2440, 9: 2440, 18: 2440, 20: 2440, 22: 2440, 2440, 2440, 2440, 2440, 2440, 52: 2440, 550: 2440, 729: 2440}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 740: 5576, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5577, 1233: 5578, 1424: 5575}, - {9: 5580, 52: 5579}, - {9: 2247, 52: 2247}, + {2183, 2183, 2183, 2183, 2183, 2183, 2183, 9: 2183, 19: 2183, 52: 2183, 59: 2183, 94: 2183, 103: 2183, 2183, 2183, 107: 2183, 109: 2183, 556: 2183, 566: 2183, 570: 2183, 994: 5599}, + {2633, 2633, 2633, 2633, 2633, 2633, 5543, 9: 2633, 19: 5540, 52: 2633, 59: 5547, 94: 5546, 103: 5549, 5418, 5105, 107: 5419, 109: 5104, 556: 5542, 566: 5548, 570: 2633, 961: 5544, 5541, 974: 5545, 993: 5539}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 2185, 796: 5582, 3149, 3150, 3148, 991: 5601}, + {555: 5602}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 5603}, // 2650 - {9: 2246, 52: 2246, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {9: 2234, 52: 2234}, - {6: 2439, 2439, 9: 2439, 18: 2439, 20: 2439, 22: 2439, 2439, 2439, 2439, 2439, 2439, 52: 2439, 550: 2439, 729: 2439}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 740: 5576, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5577, 1233: 5581}, - {9: 2233, 52: 2233}, + {9: 5305, 52: 5604}, + {2183, 2183, 2183, 2183, 2183, 2183, 2183, 9: 2183, 19: 2183, 52: 2183, 59: 2183, 94: 2183, 103: 2183, 2183, 2183, 107: 2183, 109: 2183, 556: 2183, 566: 2183, 570: 2183, 994: 5605}, + {2634, 2634, 2634, 2634, 2634, 2634, 5543, 9: 2634, 19: 5540, 52: 2634, 59: 5547, 94: 5546, 103: 5549, 5418, 5105, 107: 5419, 109: 5104, 556: 5542, 566: 5548, 570: 2634, 961: 5544, 5541, 974: 5545, 993: 5539}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 2185, 566: 2185, 796: 5532, 3149, 3150, 3148, 991: 5533, 1031: 5607}, + {555: 5608}, // 2655 - {6: 4831, 5586, 9: 2459, 18: 4787, 20: 4839, 22: 4832, 4835, 4834, 4837, 4838, 4840, 52: 2459, 550: 5584, 729: 4836, 885: 4841, 932: 5585, 1503: 5583}, - {9: 2460, 52: 2460}, - {127: 5589, 1314: 5588, 1502: 5587}, - {2453, 2453, 6: 2453, 2453, 9: 2453, 18: 2453, 20: 2453, 22: 2453, 2453, 2453, 2453, 2453, 2453, 52: 2453, 550: 2453, 729: 2453}, - {22: 4983}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 5609}, + {9: 5305, 52: 5610}, + {2183, 2183, 2183, 2183, 2183, 2183, 2183, 9: 2183, 19: 2183, 52: 2183, 59: 2183, 94: 2183, 103: 2183, 2183, 2183, 107: 2183, 109: 2183, 556: 2183, 566: 2183, 570: 2183, 994: 5611}, + {2635, 2635, 2635, 2635, 2635, 2635, 5543, 9: 2635, 19: 5540, 52: 2635, 59: 5547, 94: 5546, 103: 5549, 5418, 5105, 107: 5419, 109: 5104, 556: 5542, 566: 5548, 570: 2635, 961: 5544, 5541, 974: 5545, 993: 5539}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5613, 3149, 3150, 3148}, // 2660 - {9: 5593, 52: 5592}, - {9: 2457, 52: 2457}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5590, 3121, 3122, 3120}, - {6: 2454, 2454, 9: 2454, 18: 2454, 20: 2454, 22: 2454, 2454, 2454, 2454, 2454, 2454, 52: 2454, 729: 2454, 1088: 5591}, - {6: 4831, 5586, 9: 2455, 18: 4787, 20: 4839, 22: 4832, 4835, 4834, 4837, 4838, 4840, 52: 2455, 729: 4836, 885: 4841, 932: 5585}, + {305: 5615, 313: 5617, 316: 5616, 1318: 5614}, + {555: 5618}, + {52: 2577, 555: 2577}, + {52: 2576, 555: 2576}, + {52: 2575, 555: 2575}, // 2665 - {9: 2458, 52: 2458}, - {127: 5589, 1314: 5594}, - {9: 2456, 52: 2456}, - {2463, 2463, 2463, 2463, 2463, 2463, 9: 2463, 549: 2463, 2463, 2463, 556: 2463, 565: 2463, 567: 2463, 2463, 571: 2463, 627: 2463, 668: 2463, 731: 2463}, - {565: 5555, 1089: 5597}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 5619}, + {9: 4154, 52: 5620}, + {2859, 2859, 2859, 2859, 2859, 2859, 9: 2859, 570: 2859}, + {795, 795, 795, 795, 795, 795, 9: 795, 59: 5447, 129: 795, 555: 795, 570: 795, 920: 5446, 935: 5622}, + {2490, 2490, 2490, 2490, 2490, 2490, 9: 2490, 129: 5624, 555: 5625, 570: 2490, 1261: 5623}, // 2670 - {9: 2461, 52: 2461}, - {2835, 2835, 2835, 2835, 2835, 2835, 9: 2835, 565: 2835}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5601, 791: 4117, 3121, 3122, 3120, 841: 5058, 979: 5600}, - {2758, 2758, 2758, 2758, 2758, 2758, 9: 2758, 5355, 5356, 565: 2758, 1054: 5613}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 5603, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 663: 2749, 678: 2749, 705: 2749, 723: 2749, 5194, 729: 2749, 765: 2749, 2749, 791: 4117, 3121, 3122, 3120, 841: 5058, 952: 5604, 979: 5606, 1024: 5605, 1056: 5607, 1109: 5608, 1317: 5602}, + {2862, 2862, 2862, 2862, 2862, 2862, 9: 2862, 570: 2862}, + {580: 3135, 824: 5671}, + {570: 5628, 1095: 5627, 1260: 5626}, + {9: 5669, 52: 5668}, + {9: 2488, 52: 2488}, // 2675 - {9: 5611, 52: 5610}, - {12: 1759, 128: 1759, 130: 1759, 177: 1759, 186: 1759, 1759, 189: 1759, 192: 1759, 194: 1759, 1759, 197: 1759, 204: 1759, 207: 1759, 1759, 210: 1759, 213: 1759, 1759, 216: 1759, 572: 1759, 575: 1759, 605: 1759, 728: 1759, 5456, 734: 1759, 751: 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 763: 1759, 1759, 767: 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759}, - {663: 5012, 678: 5495, 705: 5500, 723: 5498, 729: 5013, 765: 5499, 5496, 938: 5497, 1156: 5609}, - {9: 644, 52: 644}, - {9: 641, 52: 641}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5629, 3149, 3150, 3148}, + {6: 2467, 2467, 9: 2467, 18: 2467, 20: 2467, 22: 2467, 2467, 2467, 2467, 2467, 2467, 52: 2467, 202: 5634, 282: 5633, 555: 2467, 559: 5632, 572: 5631, 734: 2467, 1453: 5630}, + {6: 2480, 2480, 9: 2480, 18: 2480, 20: 2480, 22: 2480, 2480, 2480, 2480, 2480, 2480, 52: 2480, 555: 2480, 734: 2480, 1094: 5655}, + {217: 5635, 630: 5636}, + {6: 2464, 2464, 9: 2464, 18: 2464, 20: 2464, 22: 2464, 2464, 2464, 2464, 2464, 2464, 52: 2464, 555: 2464, 734: 2464}, // 2680 - {9: 640, 52: 640}, - {9: 639, 52: 639}, - {9: 645, 52: 645}, - {2839, 2839, 2839, 2839, 2839, 2839, 9: 2839, 565: 2839}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 5603, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 663: 2749, 678: 2749, 705: 2749, 723: 2749, 5194, 729: 2749, 765: 2749, 2749, 791: 4117, 3121, 3122, 3120, 841: 5058, 952: 5604, 979: 5606, 1024: 5605, 1056: 5607, 1109: 5612}, + {6: 2462, 2462, 9: 2462, 18: 2462, 20: 2462, 22: 2462, 2462, 2462, 2462, 2462, 2462, 52: 2462, 555: 2462, 734: 2462}, + {6: 2461, 2461, 9: 2461, 18: 2461, 20: 2461, 22: 2461, 2461, 2461, 2461, 2461, 2461, 52: 2461, 555: 2461, 734: 2461}, + {225: 5645}, + {555: 5637}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 5639, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5640, 1178: 5641, 1385: 5638}, // 2685 - {9: 638, 52: 638}, - {2840, 2840, 2840, 2840, 2840, 2840, 9: 2840, 565: 2840}, - {16: 4519, 572: 4520, 728: 4518, 873: 5615}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 554: 5617, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 5616}, - {458, 458, 458, 458, 458, 458, 9: 458, 557: 5619, 565: 458, 1243: 5621}, + {9: 5643, 52: 5642}, + {9: 2275, 52: 2275, 555: 4024}, + {9: 2274, 52: 2274, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {9: 2258, 52: 2258}, + {6: 2463, 2463, 9: 2463, 18: 2463, 20: 2463, 22: 2463, 2463, 2463, 2463, 2463, 2463, 52: 2463, 555: 2463, 734: 2463}, // 2690 - {458, 458, 458, 458, 458, 458, 9: 458, 557: 5619, 565: 458, 1243: 5618}, - {2841, 2841, 2841, 2841, 2841, 2841, 9: 2841, 565: 2841}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 3825, 791: 3827, 3121, 3122, 3120, 825: 3824, 998: 5620}, - {457, 457, 457, 457, 457, 457, 9: 457, 565: 457}, - {2842, 2842, 2842, 2842, 2842, 2842, 9: 2842, 565: 2842}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 5639, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5640, 1178: 5644}, + {9: 2257, 52: 2257}, + {555: 5647, 745: 5646}, + {6: 2466, 2466, 9: 2466, 18: 2466, 20: 2466, 22: 2466, 2466, 2466, 2466, 2466, 2466, 52: 2466, 555: 2466, 734: 2466}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 745: 5649, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5650, 1239: 5651, 1434: 5648}, // 2695 - {230: 5634}, - {221: 5624}, - {230: 5625}, - {576: 3107, 819: 3956, 834: 5626}, - {2847, 2847, 2847, 2847, 2847, 2847, 9: 2847, 235: 5627, 565: 2847, 1079: 5628}, + {9: 5653, 52: 5652}, + {9: 2273, 52: 2273}, + {9: 2272, 52: 2272, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {9: 2260, 52: 2260}, + {6: 2465, 2465, 9: 2465, 18: 2465, 20: 2465, 22: 2465, 2465, 2465, 2465, 2465, 2465, 52: 2465, 555: 2465, 734: 2465}, // 2700 - {335: 5629}, - {2843, 2843, 2843, 2843, 2843, 2843, 9: 2843, 565: 2843}, - {552: 5631, 1500: 5630}, - {2846, 2846, 2846, 2846, 2846, 2846, 9: 5632, 16: 2846, 18: 2846, 21: 2846, 554: 2846, 557: 2846, 565: 2846, 572: 2846, 575: 2846, 728: 2846}, - {456, 456, 456, 456, 456, 456, 9: 456, 16: 456, 18: 456, 21: 456, 554: 456, 557: 456, 565: 456, 572: 456, 575: 456, 728: 456}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 745: 5649, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5650, 1239: 5654}, + {9: 2259, 52: 2259}, + {6: 4904, 5659, 9: 2485, 18: 4860, 20: 4912, 22: 4905, 4908, 4907, 4910, 4911, 4913, 52: 2485, 555: 5657, 734: 4909, 890: 4914, 938: 5658, 1513: 5656}, + {9: 2486, 52: 2486}, + {127: 5662, 1320: 5661, 1512: 5660}, // 2705 - {552: 5633}, - {455, 455, 455, 455, 455, 455, 9: 455, 16: 455, 18: 455, 21: 455, 554: 455, 557: 455, 565: 455, 572: 455, 575: 455, 728: 455}, - {576: 3107, 819: 3956, 834: 5635}, - {2847, 2847, 2847, 2847, 2847, 2847, 9: 2847, 235: 5627, 565: 2847, 1079: 5636}, - {2844, 2844, 2844, 2844, 2844, 2844, 9: 2844, 565: 2844}, + {2479, 2479, 6: 2479, 2479, 9: 2479, 18: 2479, 20: 2479, 22: 2479, 2479, 2479, 2479, 2479, 2479, 52: 2479, 555: 2479, 734: 2479}, + {22: 5056}, + {9: 5666, 52: 5665}, + {9: 2483, 52: 2483}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5663, 3149, 3150, 3148}, // 2710 - {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, 549: 591, 591, 591, 554: 591, 556: 591, 591, 591, 565: 591, 567: 591, 591, 571: 591, 591, 585: 591, 627: 591, 668: 591, 728: 591, 591}, - {6: 4831, 4833, 598, 15: 4850, 2505, 4848, 4787, 4852, 4839, 4868, 4832, 4835, 4834, 4837, 4838, 4840, 4847, 598, 4858, 4859, 4869, 4845, 4846, 4851, 4853, 4865, 4864, 4873, 4866, 4863, 4856, 4861, 4862, 4855, 4857, 4860, 4849, 4870, 4871, 554: 4830, 557: 2505, 4867, 572: 2505, 585: 5637, 728: 2505, 4836, 885: 4841, 911: 4843, 932: 4842, 955: 4844, 961: 4854, 967: 5640}, - {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, 549: 590, 590, 590, 554: 590, 556: 590, 590, 590, 565: 590, 567: 590, 590, 571: 590, 590, 585: 590, 627: 590, 668: 590, 728: 590, 590}, - {552: 5643, 554: 5642}, + {6: 2480, 2480, 9: 2480, 18: 2480, 20: 2480, 22: 2480, 2480, 2480, 2480, 2480, 2480, 52: 2480, 734: 2480, 1094: 5664}, + {6: 4904, 5659, 9: 2481, 18: 4860, 20: 4912, 22: 4905, 4908, 4907, 4910, 4911, 4913, 52: 2481, 734: 4909, 890: 4914, 938: 5658}, + {9: 2484, 52: 2484}, + {127: 5662, 1320: 5667}, + {9: 2482, 52: 2482}, // 2715 - {2857, 2857, 2857, 2857, 2857, 2857, 9: 2857, 565: 2857}, - {2856, 2856, 2856, 2856, 2856, 2856, 9: 2856, 565: 2856}, - {552: 5646, 554: 5645}, - {2859, 2859, 2859, 2859, 2859, 2859, 9: 2859, 565: 2859}, - {2858, 2858, 2858, 2858, 2858, 2858, 9: 2858, 565: 2858}, + {2489, 2489, 2489, 2489, 2489, 2489, 9: 2489, 554: 2489, 2489, 2489, 561: 2489, 570: 2489, 572: 2489, 2489, 576: 2489, 632: 2489, 680: 2489, 736: 2489}, + {570: 5628, 1095: 5670}, + {9: 2487, 52: 2487}, + {2861, 2861, 2861, 2861, 2861, 2861, 9: 2861, 570: 2861}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5674, 796: 4151, 3149, 3150, 3148, 846: 5131, 985: 5673}, // 2720 - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 554: 2368, 573: 4689, 575: 5649, 822: 5648}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 5651, 554: 5653, 791: 5654, 3121, 3122, 3120, 1010: 5652}, - {554: 5650}, - {2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 15: 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 52: 2860, 549: 2860, 2860, 2860, 554: 2860, 556: 2860, 2860, 2860, 565: 2860, 567: 2860, 2860, 571: 2860, 2860, 575: 2860, 585: 2860, 627: 2860, 668: 2860, 728: 2860, 2860}, - {2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 15: 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 52: 2863, 549: 2863, 2863, 2863, 554: 2863, 556: 2863, 2863, 2863, 565: 2863, 567: 2863, 2863, 571: 2863, 2863, 575: 2863, 585: 2863, 627: 2863, 668: 2863, 728: 2863, 2863}, + {2784, 2784, 2784, 2784, 2784, 2784, 9: 2784, 5428, 5429, 570: 2784, 1060: 5686}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 5676, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 668: 2775, 720: 2775, 727: 2775, 2775, 5267, 734: 2775, 770: 2775, 2775, 796: 4151, 3149, 3150, 3148, 846: 5131, 957: 5677, 985: 5679, 1029: 5678, 1062: 5680, 1114: 5681, 1323: 5675}, + {9: 5684, 52: 5683}, + {12: 1785, 128: 1785, 131: 1785, 181: 1785, 190: 1785, 1785, 193: 1785, 196: 1785, 198: 1785, 1785, 201: 1785, 209: 1785, 212: 1785, 1785, 215: 1785, 218: 1785, 1785, 221: 1785, 578: 1785, 581: 1785, 610: 1785, 733: 1785, 5529, 739: 1785, 756: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 768: 1785, 1785, 772: 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785}, + {668: 5085, 720: 5568, 727: 5573, 5571, 734: 5086, 770: 5572, 5569, 945: 5570, 1162: 5682}, // 2725 - {2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 15: 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 52: 2862, 549: 2862, 2862, 2862, 554: 2862, 556: 2862, 2862, 2862, 565: 2862, 567: 2862, 2862, 571: 2862, 2862, 575: 2862, 585: 2862, 627: 2862, 668: 2862, 728: 2862, 2862}, - {2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 15: 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861, 52: 2861, 549: 2861, 2861, 2861, 554: 2861, 556: 2861, 2861, 2861, 565: 2861, 567: 2861, 2861, 571: 2861, 2861, 575: 2861, 585: 2861, 627: 2861, 668: 2861, 728: 2861, 2861}, - {2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 15: 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 52: 2523, 120: 2523, 131: 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 549: 2523, 2523, 2523, 554: 2523, 556: 2523, 2523, 2523, 565: 2523, 567: 2523, 2523, 571: 2523, 2523, 575: 2523, 585: 2523, 627: 2523, 668: 2523, 728: 2523, 2523}, - {230: 5660}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 5657}, + {9: 659, 52: 659}, + {9: 656, 52: 656}, + {9: 655, 52: 655}, + {9: 654, 52: 654}, + {9: 660, 52: 660}, // 2730 - {2920, 2920, 9: 5379, 221: 5658}, - {230: 5659}, - {2919, 2919}, - {2921, 2921}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 5662}, + {2865, 2865, 2865, 2865, 2865, 2865, 9: 2865, 570: 2865}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 5676, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 668: 2775, 720: 2775, 727: 2775, 2775, 5267, 734: 2775, 770: 2775, 2775, 796: 4151, 3149, 3150, 3148, 846: 5131, 957: 5677, 985: 5679, 1029: 5678, 1062: 5680, 1114: 5685}, + {9: 653, 52: 653}, + {2866, 2866, 2866, 2866, 2866, 2866, 9: 2866, 570: 2866}, + {16: 4553, 578: 4554, 733: 4552, 878: 5688}, // 2735 - {2703, 2703, 9: 5379, 551: 5665, 729: 5664, 922: 5663}, - {2924, 2924}, - {1128, 1128, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1128, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 551: 1128, 678: 5682, 791: 5681, 3121, 3122, 3120, 986: 5680}, - {576: 5670, 655: 4182, 4181, 819: 5668, 940: 5669, 1137: 5667, 1344: 5666}, - {2702, 2702, 9: 5678}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 559: 5690, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 5689}, + {473, 473, 473, 473, 473, 473, 9: 473, 562: 5692, 570: 473, 1249: 5694}, + {473, 473, 473, 473, 473, 473, 9: 473, 562: 5692, 570: 473, 1249: 5691}, + {2867, 2867, 2867, 2867, 2867, 2867, 9: 2867, 570: 2867}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 3859, 796: 3861, 3149, 3150, 3148, 830: 3858, 1004: 5693}, // 2740 - {2701, 2701, 9: 2701}, - {298: 5672, 304: 5674, 353: 5675, 374: 5673}, - {256: 5671}, - {256: 2554, 298: 2267, 304: 2267, 353: 2267, 374: 2267}, - {2694, 2694, 9: 2694}, + {472, 472, 472, 472, 472, 472, 9: 472, 570: 472}, + {2868, 2868, 2868, 2868, 2868, 2868, 9: 2868, 570: 2868}, + {235: 5707}, + {226: 5697}, + {235: 5698}, // 2745 - {2699, 2699, 9: 2699}, - {2698, 2698, 9: 2698}, - {399: 5676, 468: 5677}, - {2695, 2695, 9: 2695}, - {2697, 2697, 9: 2697}, + {580: 3135, 824: 3990, 839: 5699}, + {2873, 2873, 2873, 2873, 2873, 2873, 9: 2873, 238: 5700, 570: 2873, 1085: 5701}, + {339: 5702}, + {2869, 2869, 2869, 2869, 2869, 2869, 9: 2869, 570: 2869}, + {557: 5704, 1510: 5703}, // 2750 - {2696, 2696, 9: 2696}, - {576: 5670, 655: 4182, 4181, 819: 5668, 940: 5669, 1137: 5679}, - {2700, 2700, 9: 2700}, - {2703, 2703, 9: 5684, 551: 5665, 922: 5683}, - {1127, 1127, 9: 1127, 52: 1127, 551: 1127}, + {2872, 2872, 2872, 2872, 2872, 2872, 9: 5705, 16: 2872, 18: 2872, 21: 2872, 559: 2872, 562: 2872, 570: 2872, 578: 2872, 581: 2872, 733: 2872}, + {471, 471, 471, 471, 471, 471, 9: 471, 16: 471, 18: 471, 21: 471, 559: 471, 562: 471, 570: 471, 578: 471, 581: 471, 733: 471}, + {557: 5706}, + {470, 470, 470, 470, 470, 470, 9: 470, 16: 470, 18: 470, 21: 470, 559: 470, 562: 470, 570: 470, 578: 470, 581: 470, 733: 470}, + {580: 3135, 824: 3990, 839: 5708}, // 2755 - {1125, 1125, 9: 1125, 52: 1125, 551: 1125}, - {2923, 2923}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 678: 5686, 791: 5685, 3121, 3122, 3120}, - {1126, 1126, 9: 1126, 52: 1126, 551: 1126}, - {1124, 1124, 9: 1124, 52: 1124, 551: 1124}, + {2873, 2873, 2873, 2873, 2873, 2873, 9: 2873, 238: 5700, 570: 2873, 1085: 5709}, + {2870, 2870, 2870, 2870, 2870, 2870, 9: 2870, 570: 2870}, + {8: 612, 29: 612}, + {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, 578: 606, 590: 606, 632: 606, 680: 606, 733: 606, 606}, + {6: 4904, 4906, 613, 15: 4923, 2531, 4921, 4860, 4925, 4912, 4941, 4905, 4908, 4907, 4910, 4911, 4913, 4920, 613, 4931, 4932, 4942, 4918, 4919, 4924, 4926, 4938, 4937, 4946, 4939, 4936, 4929, 4934, 4935, 4928, 4930, 4933, 4922, 4943, 4944, 559: 4903, 562: 2531, 4940, 578: 2531, 590: 5710, 733: 2531, 4909, 890: 4914, 916: 4916, 938: 4915, 960: 4917, 966: 4927, 972: 5713}, // 2760 - {2925, 2925}, - {2855, 2855}, - {32: 5813, 431: 5812}, - {565: 5804}, - {740: 5797}, + {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, 578: 605, 590: 605, 632: 605, 680: 605, 733: 605, 605}, + {557: 5716, 559: 5715}, + {2883, 2883, 2883, 2883, 2883, 2883, 9: 2883, 570: 2883}, + {2882, 2882, 2882, 2882, 2882, 2882, 9: 2882, 570: 2882}, + {557: 5719, 559: 5718}, // 2765 - {10: 5790}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 741: 5695, 791: 5694, 3121, 3122, 3120}, - {2454, 2454, 6: 2454, 2454, 18: 2454, 20: 2454, 22: 2454, 2454, 2454, 2454, 2454, 2454, 264: 4788, 729: 2454, 1049: 5788, 1088: 5789}, - {200: 2472, 419: 5700, 456: 5701, 610: 5699, 663: 2472, 1224: 5702, 5697, 1315: 5698, 1445: 5696}, - {2466, 2466, 127: 2466, 129: 5765, 549: 2466, 2466, 2466, 556: 2466, 567: 2466, 2466, 571: 2466, 627: 2466, 668: 2466, 731: 2466, 1446: 5764}, + {2885, 2885, 2885, 2885, 2885, 2885, 9: 2885, 570: 2885}, + {2884, 2884, 2884, 2884, 2884, 2884, 9: 2884, 570: 2884}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 559: 2394, 577: 4726, 581: 5722, 825: 5721}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 5724, 559: 5726, 796: 5727, 3149, 3150, 3148, 1016: 5725}, + {559: 5723}, // 2770 - {200: 5752, 663: 5751}, - {2490, 2490, 127: 2490, 129: 2490, 549: 2490, 2490, 2490, 556: 2490, 567: 2490, 2490, 571: 2490, 627: 2490, 668: 2490, 731: 2490}, - {143: 4043, 170: 4042, 550: 5715, 954: 5716}, - {143: 4043, 170: 4042, 550: 5708, 954: 5709}, - {2483, 2483, 127: 2483, 129: 2483, 549: 2483, 2483, 2483, 556: 2483, 567: 2483, 2483, 571: 2483, 577: 5704, 627: 2483, 660: 5703, 668: 2483, 731: 2483}, + {2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 15: 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 52: 2886, 554: 2886, 2886, 2886, 559: 2886, 561: 2886, 2886, 2886, 570: 2886, 572: 2886, 2886, 576: 2886, 578: 2886, 581: 2886, 590: 2886, 632: 2886, 680: 2886, 733: 2886, 2886}, + {2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 15: 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 52: 2889, 554: 2889, 2889, 2889, 559: 2889, 561: 2889, 2889, 2889, 570: 2889, 572: 2889, 2889, 576: 2889, 578: 2889, 581: 2889, 590: 2889, 632: 2889, 680: 2889, 733: 2889, 2889}, + {2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 15: 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 52: 2888, 554: 2888, 2888, 2888, 559: 2888, 561: 2888, 2888, 2888, 570: 2888, 572: 2888, 2888, 576: 2888, 578: 2888, 581: 2888, 590: 2888, 632: 2888, 680: 2888, 733: 2888, 2888}, + {2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 15: 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 52: 2887, 554: 2887, 2887, 2887, 559: 2887, 561: 2887, 2887, 2887, 570: 2887, 572: 2887, 2887, 576: 2887, 578: 2887, 581: 2887, 590: 2887, 632: 2887, 680: 2887, 733: 2887, 2887}, + {2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 15: 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 52: 2549, 120: 2549, 132: 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 554: 2549, 2549, 2549, 559: 2549, 561: 2549, 2549, 2549, 570: 2549, 572: 2549, 2549, 576: 2549, 578: 2549, 581: 2549, 590: 2549, 632: 2549, 680: 2549, 733: 2549, 2549}, // 2775 - {200: 2471, 663: 2471}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 5706}, - {576: 3107, 819: 3956, 834: 5705}, - {2484, 2484, 127: 2484, 129: 2484, 549: 2484, 2484, 2484, 556: 2484, 567: 2484, 2484, 571: 2484, 627: 2484, 668: 2484, 731: 2484}, - {128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 586: 3835, 3833, 3834, 3832, 3830, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 820: 3831, 3829, 907: 3837, 921: 5707}, + {235: 5733}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 5730}, + {2946, 2946, 9: 5452, 226: 5731}, + {235: 5732}, + {2945, 2945}, // 2780 - {2485, 2485, 127: 2485, 129: 2485, 549: 2485, 2485, 2485, 556: 2485, 567: 2485, 2485, 571: 2485, 627: 2485, 668: 2485, 731: 2485}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5713}, - {550: 5710}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 5711}, - {9: 4120, 52: 5712}, + {2947, 2947}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 5735}, + {2729, 2729, 9: 5452, 556: 5738, 734: 5737, 927: 5736}, + {2950, 2950}, + {1148, 1148, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1148, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 556: 1148, 720: 5755, 796: 5754, 3149, 3150, 3148, 992: 5753}, // 2785 - {2486, 2486, 127: 2486, 129: 2486, 549: 2486, 2486, 2486, 556: 2486, 567: 2486, 2486, 571: 2486, 627: 2486, 668: 2486, 731: 2486}, - {52: 5714, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2487, 2487, 127: 2487, 129: 2487, 549: 2487, 2487, 2487, 556: 2487, 567: 2487, 2487, 571: 2487, 627: 2487, 668: 2487, 731: 2487}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5748}, - {550: 5717}, + {580: 5743, 659: 4216, 4215, 824: 5741, 936: 5742, 1143: 5740, 1354: 5739}, + {2728, 2728, 9: 5751}, + {2727, 2727, 9: 2727}, + {303: 5745, 308: 5747, 357: 5748, 378: 5746}, + {260: 5744}, // 2790 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 5718}, - {9: 4120, 52: 5719}, - {2482, 2482, 127: 2482, 129: 2482, 549: 2482, 2482, 2482, 556: 2482, 567: 2482, 2482, 571: 2482, 627: 2482, 660: 5721, 668: 2482, 731: 2482, 1256: 5720}, - {2488, 2488, 127: 2488, 129: 2488, 549: 2488, 2488, 2488, 556: 2488, 567: 2488, 2488, 571: 2488, 627: 2488, 668: 2488, 731: 2488}, - {550: 5722}, + {260: 2580, 303: 2293, 308: 2293, 357: 2293, 378: 2293}, + {2720, 2720, 9: 2720}, + {2725, 2725, 9: 2725}, + {2724, 2724, 9: 2724}, + {403: 5749, 473: 5750}, // 2795 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5724, 1408: 5723}, - {52: 5726}, - {52: 2480, 128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 562: 3872, 3873, 3878, 580: 3874, 613: 3847, 3844, 3846, 3845, 3841, 3843, 3842, 3839, 3840, 3838, 3848, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871, 907: 3837, 921: 5725}, - {52: 2479}, - {2474, 2474, 10: 5728, 127: 2474, 129: 2474, 549: 2474, 2474, 2474, 556: 2474, 566: 2474, 2474, 2474, 571: 2474, 627: 2474, 668: 2474, 731: 2474, 740: 2474, 1389: 5727}, + {2721, 2721, 9: 2721}, + {2723, 2723, 9: 2723}, + {2722, 2722, 9: 2722}, + {580: 5743, 659: 4216, 4215, 824: 5741, 936: 5742, 1143: 5752}, + {2726, 2726, 9: 2726}, // 2800 - {2478, 2478, 127: 2478, 129: 2478, 549: 2478, 2478, 2478, 556: 2478, 566: 5743, 2478, 2478, 571: 2478, 627: 2478, 668: 2478, 731: 2478, 740: 2478, 1425: 5742}, - {565: 5729}, - {212: 5730}, - {220: 5731}, - {550: 5732}, + {2729, 2729, 9: 5757, 556: 5738, 927: 5756}, + {1147, 1147, 9: 1147, 52: 1147, 556: 1147}, + {1145, 1145, 9: 1145, 52: 1145, 556: 1145}, + {2949, 2949}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 720: 5759, 796: 5758, 3149, 3150, 3148}, // 2805 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5733}, - {52: 5734, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {248: 5735}, - {565: 5736}, - {212: 5737}, + {1146, 1146, 9: 1146, 52: 1146, 556: 1146}, + {1144, 1144, 9: 1144, 52: 1144, 556: 1144}, + {2951, 2951}, + {2881, 2881}, + {32: 5886, 435: 5885}, // 2810 - {220: 5738}, - {550: 5739}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5740}, - {52: 5741, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2473, 2473, 127: 2473, 129: 2473, 549: 2473, 2473, 2473, 556: 2473, 566: 2473, 2473, 2473, 571: 2473, 627: 2473, 668: 2473, 731: 2473, 740: 2473}, + {570: 5877}, + {745: 5870}, + {10: 5863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 746: 5768, 796: 5767, 3149, 3150, 3148}, + {2480, 2480, 6: 2480, 2480, 18: 2480, 20: 2480, 22: 2480, 2480, 2480, 2480, 2480, 2480, 269: 4861, 734: 2480, 1055: 5861, 1094: 5862}, // 2815 - {2476, 2476, 127: 2476, 129: 2476, 549: 2476, 2476, 2476, 556: 2476, 567: 2476, 2476, 571: 2476, 627: 2476, 668: 2476, 731: 2476, 740: 5746, 1423: 5745}, - {565: 5744}, - {2477, 2477, 127: 2477, 129: 2477, 549: 2477, 2477, 2477, 556: 2477, 567: 2477, 2477, 571: 2477, 627: 2477, 668: 2477, 731: 2477, 740: 2477}, - {2481, 2481, 127: 2481, 129: 2481, 549: 2481, 2481, 2481, 556: 2481, 567: 2481, 2481, 571: 2481, 627: 2481, 668: 2481, 731: 2481}, - {565: 5747}, + {204: 2498, 423: 5773, 461: 5774, 615: 5772, 668: 2498, 1230: 5775, 5770, 1321: 5771, 1455: 5769}, + {2492, 2492, 127: 2492, 129: 5838, 554: 2492, 2492, 2492, 561: 2492, 572: 2492, 2492, 576: 2492, 632: 2492, 680: 2492, 736: 2492, 1456: 5837}, + {204: 5825, 668: 5824}, + {2516, 2516, 127: 2516, 129: 2516, 554: 2516, 2516, 2516, 561: 2516, 572: 2516, 2516, 576: 2516, 632: 2516, 680: 2516, 736: 2516}, + {144: 4077, 172: 4076, 555: 5788, 959: 5789}, // 2820 - {2475, 2475, 127: 2475, 129: 2475, 549: 2475, 2475, 2475, 556: 2475, 567: 2475, 2475, 571: 2475, 627: 2475, 668: 2475, 731: 2475}, - {52: 5749, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2482, 2482, 127: 2482, 129: 2482, 549: 2482, 2482, 2482, 556: 2482, 567: 2482, 2482, 571: 2482, 627: 2482, 660: 5721, 668: 2482, 731: 2482, 1256: 5750}, - {2489, 2489, 127: 2489, 129: 2489, 549: 2489, 2489, 2489, 556: 2489, 567: 2489, 2489, 571: 2489, 627: 2489, 668: 2489, 731: 2489}, - {110: 5757, 550: 2492, 1444: 5756}, + {144: 4077, 172: 4076, 555: 5781, 959: 5782}, + {2509, 2509, 127: 2509, 129: 2509, 554: 2509, 2509, 2509, 561: 2509, 572: 2509, 2509, 576: 2509, 582: 5777, 632: 2509, 665: 5776, 680: 2509, 736: 2509}, + {204: 2497, 668: 2497}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 5779}, + {580: 3135, 824: 3990, 839: 5778}, // 2825 - {550: 5753}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5754}, - {52: 5755, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2493, 2493, 127: 2493, 129: 2493, 288: 2493, 549: 2493, 2493, 2493, 556: 2493, 567: 2493, 2493, 571: 2493, 627: 2493, 668: 2493, 731: 2493}, - {550: 5760}, + {2510, 2510, 127: 2510, 129: 2510, 554: 2510, 2510, 2510, 561: 2510, 572: 2510, 2510, 576: 2510, 632: 2510, 680: 2510, 736: 2510}, + {128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 591: 3869, 3867, 3868, 3866, 3864, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 826: 3865, 3863, 912: 3871, 926: 5780}, + {2511, 2511, 127: 2511, 129: 2511, 554: 2511, 2511, 2511, 561: 2511, 572: 2511, 2511, 576: 2511, 632: 2511, 680: 2511, 736: 2511}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5786}, + {555: 5783}, // 2830 - {573: 5758}, - {576: 3107, 819: 5759}, - {550: 2491}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2673, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 5761, 1147: 5762}, - {9: 4120, 52: 2672}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 5784}, + {9: 4154, 52: 5785}, + {2512, 2512, 127: 2512, 129: 2512, 554: 2512, 2512, 2512, 561: 2512, 572: 2512, 2512, 576: 2512, 632: 2512, 680: 2512, 736: 2512}, + {52: 5787, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2513, 2513, 127: 2513, 129: 2513, 554: 2513, 2513, 2513, 561: 2513, 572: 2513, 2513, 576: 2513, 632: 2513, 680: 2513, 736: 2513}, // 2835 - {52: 5763}, - {2494, 2494, 127: 2494, 129: 2494, 288: 2494, 549: 2494, 2494, 2494, 556: 2494, 567: 2494, 2494, 571: 2494, 627: 2494, 668: 2494, 731: 2494}, - {2470, 2470, 127: 5768, 549: 2470, 2470, 2470, 556: 2470, 567: 2470, 2470, 571: 2470, 627: 2470, 668: 2470, 731: 2470, 1505: 5767}, - {576: 3107, 819: 3956, 834: 5766}, - {2465, 2465, 127: 2465, 549: 2465, 2465, 2465, 556: 2465, 567: 2465, 2465, 571: 2465, 627: 2465, 668: 2465, 731: 2465}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5821}, + {555: 5790}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 5791}, + {9: 4154, 52: 5792}, + {2508, 2508, 127: 2508, 129: 2508, 554: 2508, 2508, 2508, 561: 2508, 572: 2508, 2508, 576: 2508, 632: 2508, 665: 5794, 680: 2508, 736: 2508, 1262: 5793}, // 2840 - {2464, 2464, 549: 2464, 5552, 2464, 556: 2464, 567: 2464, 2464, 571: 2464, 627: 2464, 668: 2464, 731: 2464, 1255: 5774}, - {741: 5769}, - {200: 2472, 663: 2472, 1224: 5702, 5697, 1315: 5770}, - {2468, 2468, 288: 5772, 549: 2468, 2468, 2468, 556: 2468, 567: 2468, 2468, 571: 2468, 627: 2468, 668: 2468, 731: 2468, 1504: 5771}, - {2469, 2469, 549: 2469, 2469, 2469, 556: 2469, 567: 2469, 2469, 571: 2469, 627: 2469, 668: 2469, 731: 2469}, + {2514, 2514, 127: 2514, 129: 2514, 554: 2514, 2514, 2514, 561: 2514, 572: 2514, 2514, 576: 2514, 632: 2514, 680: 2514, 736: 2514}, + {555: 5795}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5797, 1418: 5796}, + {52: 5799}, + {52: 2506, 128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 567: 3906, 3907, 3912, 585: 3908, 618: 3881, 3878, 3880, 3879, 3875, 3877, 3876, 3873, 3874, 3872, 3882, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905, 912: 3871, 926: 5798}, // 2845 - {576: 3107, 819: 3956, 834: 5773}, - {2467, 2467, 549: 2467, 2467, 2467, 556: 2467, 567: 2467, 2467, 571: 2467, 627: 2467, 668: 2467, 731: 2467}, - {2496, 2496, 549: 2496, 2496, 2496, 556: 2496, 567: 2496, 2496, 571: 2496, 627: 2496, 668: 2496, 731: 5776, 1516: 5775}, - {2502, 2502, 549: 2502, 2502, 2502, 556: 2502, 567: 2502, 2502, 571: 2502, 627: 2502, 668: 2502}, - {330: 5777}, + {52: 2505}, + {2500, 2500, 10: 5801, 127: 2500, 129: 2500, 554: 2500, 2500, 2500, 561: 2500, 571: 2500, 2500, 2500, 576: 2500, 632: 2500, 680: 2500, 736: 2500, 745: 2500, 1399: 5800}, + {2504, 2504, 127: 2504, 129: 2504, 554: 2504, 2504, 2504, 561: 2504, 571: 5816, 2504, 2504, 576: 2504, 632: 2504, 680: 2504, 736: 2504, 745: 2504, 1435: 5815}, + {570: 5802}, + {217: 5803}, // 2850 - {550: 5778}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5779, 3121, 3122, 3120, 1326: 5780, 1515: 5781}, - {58: 5785, 94: 5786, 1396: 5787}, - {9: 2498, 52: 2498}, - {9: 5782, 52: 5783}, + {225: 5804}, + {555: 5805}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5806}, + {52: 5807, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {252: 5808}, // 2855 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5779, 3121, 3122, 3120, 1326: 5784}, - {2495, 2495, 549: 2495, 2495, 2495, 556: 2495, 567: 2495, 2495, 571: 2495, 627: 2495, 668: 2495}, - {9: 2497, 52: 2497}, - {9: 2501, 52: 2501}, - {9: 2500, 52: 2500}, + {570: 5809}, + {217: 5810}, + {225: 5811}, + {555: 5812}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5813}, // 2860 - {9: 2499, 52: 2499}, - {2850, 2850}, - {2849, 2849, 6: 4831, 5586, 18: 4787, 20: 4839, 22: 4832, 4835, 4834, 4837, 4838, 4840, 729: 4836, 885: 4841, 932: 5585}, - {565: 5791}, - {212: 5792}, + {52: 5814, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2499, 2499, 127: 2499, 129: 2499, 554: 2499, 2499, 2499, 561: 2499, 571: 2499, 2499, 2499, 576: 2499, 632: 2499, 680: 2499, 736: 2499, 745: 2499}, + {2502, 2502, 127: 2502, 129: 2502, 554: 2502, 2502, 2502, 561: 2502, 572: 2502, 2502, 576: 2502, 632: 2502, 680: 2502, 736: 2502, 745: 5819, 1433: 5818}, + {570: 5817}, + {2503, 2503, 127: 2503, 129: 2503, 554: 2503, 2503, 2503, 561: 2503, 572: 2503, 2503, 576: 2503, 632: 2503, 680: 2503, 736: 2503, 745: 2503}, // 2865 - {220: 5793}, - {550: 5794}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5795}, - {52: 5796, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2851, 2851}, + {2507, 2507, 127: 2507, 129: 2507, 554: 2507, 2507, 2507, 561: 2507, 572: 2507, 2507, 576: 2507, 632: 2507, 680: 2507, 736: 2507}, + {570: 5820}, + {2501, 2501, 127: 2501, 129: 2501, 554: 2501, 2501, 2501, 561: 2501, 572: 2501, 2501, 576: 2501, 632: 2501, 680: 2501, 736: 2501}, + {52: 5822, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2508, 2508, 127: 2508, 129: 2508, 554: 2508, 2508, 2508, 561: 2508, 572: 2508, 2508, 576: 2508, 632: 2508, 665: 5794, 680: 2508, 736: 2508, 1262: 5823}, // 2870 - {565: 5798}, - {212: 5799}, - {220: 5800}, - {550: 5801}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 5802}, + {2515, 2515, 127: 2515, 129: 2515, 554: 2515, 2515, 2515, 561: 2515, 572: 2515, 2515, 576: 2515, 632: 2515, 680: 2515, 736: 2515}, + {110: 5830, 555: 2518, 1454: 5829}, + {555: 5826}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5827}, + {52: 5828, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, // 2875 - {52: 5803, 562: 3872, 3873, 3878, 580: 3874, 628: 3875, 631: 3876, 3869, 3879, 3868, 3877, 3870, 3871}, - {2852, 2852}, - {779, 779, 779, 779, 779, 779, 779, 779, 779, 10: 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 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, 5374, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 915: 5373, 930: 5805}, - {2786, 2786, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 5807, 1465: 5806}, - {2853, 2853}, + {2519, 2519, 127: 2519, 129: 2519, 293: 2519, 554: 2519, 2519, 2519, 561: 2519, 572: 2519, 2519, 576: 2519, 632: 2519, 680: 2519, 736: 2519}, + {555: 5833}, + {577: 5831}, + {580: 3135, 824: 5832}, + {555: 2517}, // 2880 - {9: 5379, 579: 5808}, - {550: 5809}, - {565: 5555, 1089: 5554, 1254: 5810}, - {9: 5596, 52: 5811}, - {2785, 2785}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2699, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 5834, 1153: 5835}, + {9: 4154, 52: 2698}, + {52: 5836}, + {2520, 2520, 127: 2520, 129: 2520, 293: 2520, 554: 2520, 2520, 2520, 561: 2520, 572: 2520, 2520, 576: 2520, 632: 2520, 680: 2520, 736: 2520}, + {2496, 2496, 127: 5841, 554: 2496, 2496, 2496, 561: 2496, 572: 2496, 2496, 576: 2496, 632: 2496, 680: 2496, 736: 2496, 1515: 5840}, // 2885 - {2854, 2854}, - {2848, 2848}, - {28: 194, 57: 194, 173: 194, 550: 194, 571: 194, 576: 194}, - {57: 5319, 550: 5815, 571: 5320, 1021: 5332}, - {199, 199}, + {580: 3135, 824: 3990, 839: 5839}, + {2491, 2491, 127: 2491, 554: 2491, 2491, 2491, 561: 2491, 572: 2491, 2491, 576: 2491, 632: 2491, 680: 2491, 736: 2491}, + {2490, 2490, 554: 2490, 5625, 2490, 561: 2490, 572: 2490, 2490, 576: 2490, 632: 2490, 680: 2490, 736: 2490, 1261: 5847}, + {746: 5842}, + {204: 2498, 668: 2498, 1230: 5775, 5770, 1321: 5843}, // 2890 - {576: 3107, 819: 5821}, - {576: 3107, 819: 5820}, - {196, 196}, - {197, 197}, - {198, 198}, + {2494, 2494, 293: 5845, 554: 2494, 2494, 2494, 561: 2494, 572: 2494, 2494, 576: 2494, 632: 2494, 680: 2494, 736: 2494, 1514: 5844}, + {2495, 2495, 554: 2495, 2495, 2495, 561: 2495, 572: 2495, 2495, 576: 2495, 632: 2495, 680: 2495, 736: 2495}, + {580: 3135, 824: 3990, 839: 5846}, + {2493, 2493, 554: 2493, 2493, 2493, 561: 2493, 572: 2493, 2493, 576: 2493, 632: 2493, 680: 2493, 736: 2493}, + {2522, 2522, 554: 2522, 2522, 2522, 561: 2522, 572: 2522, 2522, 576: 2522, 632: 2522, 680: 2522, 736: 5849, 1528: 5848}, // 2895 - {168: 5824, 627: 5823, 1110: 5825}, - {2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 10: 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 53: 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 551: 2370, 580: 2370, 598: 2370}, - {2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 10: 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 53: 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 551: 2369, 580: 2369, 598: 2369}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 5826}, - {200, 200, 9: 4021}, + {2528, 2528, 554: 2528, 2528, 2528, 561: 2528, 572: 2528, 2528, 576: 2528, 632: 2528, 680: 2528}, + {334: 5850}, + {555: 5851}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5852, 3149, 3150, 3148, 1335: 5853, 1527: 5854}, + {59: 5858, 94: 5859, 1406: 5860}, // 2900 - {577: 5830}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 5829}, - {577: 201}, - {576: 3107, 819: 5831}, - {317: 5833, 551: 205, 571: 205, 606: 205, 731: 205, 823: 205, 1377: 5832}, + {9: 2524, 52: 2524}, + {9: 5855, 52: 5856}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5852, 3149, 3150, 3148, 1335: 5857}, + {2521, 2521, 554: 2521, 2521, 2521, 561: 2521, 572: 2521, 2521, 576: 2521, 632: 2521, 680: 2521}, + {9: 2523, 52: 2523}, // 2905 - {551: 2979, 571: 2964, 606: 2963, 731: 3088, 823: 2943, 835: 5836, 842: 3087, 2944, 5840, 5841, 5839, 855: 2945, 859: 5838, 1480: 5837}, - {351: 5834}, - {173: 5835, 551: 204, 571: 204, 606: 204, 731: 204, 823: 204}, - {551: 203, 571: 203, 606: 203, 731: 203, 823: 203}, - {731: 3088, 823: 2943, 842: 5844, 5842, 855: 5843}, + {9: 2527, 52: 2527}, + {9: 2526, 52: 2526}, + {9: 2525, 52: 2525}, + {2876, 2876}, + {2875, 2875, 6: 4904, 5659, 18: 4860, 20: 4912, 22: 4905, 4908, 4907, 4910, 4911, 4913, 734: 4909, 890: 4914, 938: 5658}, // 2910 - {210, 210}, - {209, 209}, - {208, 208}, - {207, 207}, - {206, 206}, + {570: 5864}, + {217: 5865}, + {225: 5866}, + {555: 5867}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5868}, // 2915 - {2392, 2392}, - {2391, 2391}, - {443, 443, 561: 443}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5857, 1318: 5858, 1507: 5856}, - {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, 580: 219}, + {52: 5869, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2877, 2877}, + {570: 5871}, + {217: 5872}, + {225: 5873}, // 2920 - {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, 580: 218}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5849, 904: 5850}, - {1273, 1273, 9: 1273, 565: 5851}, - {192, 192, 9: 4021}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5853, 791: 5378, 3121, 3122, 3120, 880: 5852}, + {555: 5874}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 5875}, + {52: 5876, 567: 3906, 3907, 3912, 585: 3908, 633: 3909, 636: 3910, 3903, 3913, 3902, 3911, 3904, 3905}, + {2878, 2878}, + {795, 795, 795, 795, 795, 795, 795, 795, 795, 10: 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 53: 795, 795, 795, 795, 795, 795, 5447, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, 920: 5446, 935: 5878}, // 2925 - {191, 191, 9: 5379}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 5854}, - {9: 5379, 52: 5855}, - {190, 190}, - {220, 220, 9: 5864}, + {2812, 2812, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 5880, 1475: 5879}, + {2879, 2879}, + {9: 5452, 584: 5881}, + {555: 5882}, + {570: 5628, 1095: 5627, 1260: 5883}, // 2930 - {748: 5860, 788: 5861, 1418: 5859}, - {212, 212, 9: 212}, - {217, 217, 9: 217}, - {216, 216, 9: 216, 58: 5863}, - {214, 214, 9: 214, 58: 5862}, + {9: 5669, 52: 5884}, + {2811, 2811}, + {2880, 2880}, + {2874, 2874}, + {28: 209, 54: 209, 176: 209, 555: 209, 576: 209, 580: 209}, // 2935 - {213, 213, 9: 213}, - {215, 215, 9: 215}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5857, 1318: 5865}, - {211, 211, 9: 211}, - {221, 221}, + {54: 5392, 555: 5888, 576: 5393, 1026: 5405}, + {214, 214}, + {580: 3135, 824: 5894}, + {580: 3135, 824: 5893}, + {211, 211}, // 2940 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5868, 904: 5869}, - {1273, 1273, 9: 1273, 565: 5870}, - {189, 189, 9: 4021}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5872, 791: 5378, 3121, 3122, 3120, 880: 5871}, - {188, 188, 9: 5379}, + {212, 212}, + {213, 213}, + {170: 5897, 632: 5896, 1115: 5898}, + {2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 10: 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 53: 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 556: 2396, 585: 2396, 605: 2396}, + {2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 10: 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 53: 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 556: 2395, 585: 2395, 605: 2395}, // 2945 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 5873}, - {9: 5379, 52: 5874}, - {187, 187}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5876}, - {550: 5877, 575: 2661, 581: 2661, 1149: 5878}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 5899}, + {215, 215, 9: 4055}, + {582: 5903}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 5902}, + {582: 216}, // 2950 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2667, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 646: 3771, 791: 4117, 3121, 3122, 3120, 796: 5911, 841: 5910, 1148: 5909, 1362: 5908, 5912}, - {575: 5879, 581: 238, 1229: 5880}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 3991, 3121, 3122, 3120, 799: 5903, 1228: 5902, 1416: 5901}, - {581: 5881}, - {550: 2980, 2979, 5884, 567: 2978, 627: 2977, 668: 2973, 795: 5882, 826: 5883, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 5887, 5886, 1401: 5885}, + {580: 3135, 824: 5904}, + {321: 5906, 556: 220, 576: 220, 611: 220, 736: 220, 828: 220, 1387: 5905}, + {556: 3005, 576: 2990, 611: 2989, 736: 3115, 828: 2969, 840: 5909, 847: 3114, 2970, 5913, 5914, 5912, 860: 2971, 864: 5911, 1490: 5910}, + {355: 5907}, + {176: 5908, 556: 219, 576: 219, 611: 219, 736: 219, 828: 219}, // 2955 - {222, 222, 551: 222, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {225, 225, 551: 225, 558: 1034, 569: 1034, 1034}, - {267, 267, 245: 5897, 551: 267, 1203: 5898}, - {233, 233, 551: 5888, 1078: 5889}, - {224, 224, 551: 224}, + {556: 218, 576: 218, 611: 218, 736: 218, 828: 218}, + {736: 3115, 828: 2969, 847: 5917, 5915, 860: 5916}, + {225, 225}, + {224, 224}, + {223, 223}, // 2960 - {223, 223, 551: 223}, - {57: 5892, 1227: 5891, 1415: 5890}, - {226, 226}, - {232, 232, 9: 5895}, - {231, 231, 9: 231}, + {222, 222}, + {221, 221}, + {2418, 2418}, + {2417, 2417}, + {458, 458, 566: 458}, // 2965 - {229, 229, 9: 229, 573: 5893}, - {552: 3675, 562: 5046, 5047, 566: 3666, 576: 3670, 648: 3665, 3667, 655: 3669, 3668, 3673, 3674, 667: 3672, 797: 5045, 3671, 1105: 5894}, - {228, 228, 9: 228}, - {57: 5892, 1227: 5896}, - {230, 230, 9: 230}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5930, 1324: 5931, 1517: 5929}, + {234, 234, 234, 234, 234, 234, 234, 234, 234, 10: 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 53: 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 585: 234}, + {233, 233, 233, 233, 233, 233, 233, 233, 233, 10: 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 53: 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 585: 233}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5922, 909: 5923}, + {1293, 1293, 9: 1293, 570: 5924}, // 2970 - {552: 5900}, - {233, 233, 551: 5888, 1078: 5899}, - {227, 227}, - {266, 266, 551: 266, 568: 266, 571: 266, 579: 266}, - {237, 237, 9: 5906, 551: 237, 581: 237}, + {207, 207, 9: 4055}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5926, 796: 5451, 3149, 3150, 3148, 885: 5925}, + {206, 206, 9: 5452}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 5927}, + {9: 5452, 52: 5928}, // 2975 - {235, 235, 9: 235, 551: 235, 581: 235}, - {573: 5904}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 5905}, - {234, 234, 9: 234, 551: 234, 581: 234}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 3991, 3121, 3122, 3120, 799: 5903, 1228: 5907}, + {205, 205}, + {235, 235, 9: 5937}, + {753: 5933, 793: 5934, 1428: 5932}, + {227, 227, 9: 227}, + {232, 232, 9: 232}, // 2980 - {236, 236, 9: 236, 551: 236, 581: 236}, - {9: 5914, 52: 2666}, - {9: 2665, 52: 2665}, - {9: 2663, 52: 2663}, - {9: 2662, 52: 2662}, + {231, 231, 9: 231, 59: 5936}, + {229, 229, 9: 229, 59: 5935}, + {228, 228, 9: 228}, + {230, 230, 9: 230}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5930, 1324: 5938}, // 2985 - {52: 5913}, - {2660, 2660, 551: 2660, 575: 2660, 581: 2660}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 646: 3771, 791: 4117, 3121, 3122, 3120, 796: 5911, 841: 5910, 1148: 5915}, - {9: 2664, 52: 2664}, - {58: 269, 852: 5920, 1005: 269, 1420: 5919}, + {226, 226, 9: 226}, + {236, 236}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5941, 909: 5942}, + {1293, 1293, 9: 1293, 570: 5943}, + {204, 204, 9: 4055}, // 2990 - {552: 5918}, - {193, 193}, - {58: 5922, 1005: 261, 1417: 5921}, - {58: 268, 1005: 268}, - {1005: 5923}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5945, 796: 5451, 3149, 3150, 3148, 885: 5944}, + {203, 203, 9: 5452}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 5946}, + {9: 5452, 52: 5947}, + {202, 202}, // 2995 - {1005: 260}, - {552: 5924}, - {245: 5897, 568: 267, 571: 267, 579: 267, 1203: 5925}, - {568: 5926, 571: 5927, 579: 2434, 1188: 5928}, - {2433, 2433, 549: 2433, 2433, 2433, 556: 2433, 567: 2433, 579: 2433, 627: 2433, 668: 2433}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 5949}, + {555: 5950, 581: 2687, 586: 2687, 1155: 5951}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2693, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 654: 3804, 796: 4151, 3149, 3150, 3148, 801: 5984, 846: 5983, 1154: 5982, 1372: 5981, 5985}, + {581: 5952, 586: 253, 1235: 5953}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4025, 3149, 3150, 3148, 804: 5976, 1234: 5975, 1426: 5974}, // 3000 - {2432, 2432, 549: 2432, 2432, 2432, 556: 2432, 567: 2432, 579: 2432, 627: 2432, 668: 2432}, - {579: 5929}, - {627: 5930}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 5931}, - {263, 263, 143: 263, 170: 263, 550: 263, 263, 568: 263, 575: 263, 728: 5933, 742: 263, 1359: 5932}, + {586: 5954}, + {555: 3006, 3005, 5957, 572: 3004, 632: 3003, 680: 2999, 800: 5955, 831: 5956, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 5960, 5959, 1411: 5958}, + {237, 237, 556: 237, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {240, 240, 556: 240, 563: 1054, 574: 1054, 1054}, + {282, 282, 249: 5970, 556: 282, 1209: 5971}, // 3005 - {259, 259, 143: 4043, 170: 4042, 550: 259, 259, 568: 259, 575: 259, 742: 259, 954: 4041, 1197: 5936}, - {575: 5934}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 5935}, - {262, 262, 143: 262, 170: 262, 550: 262, 262, 568: 262, 575: 262, 742: 262}, - {244, 244, 550: 244, 244, 568: 244, 575: 244, 742: 4071, 1226: 5937}, + {248, 248, 556: 5961, 1084: 5962}, + {239, 239, 556: 239}, + {238, 238, 556: 238}, + {54: 5965, 1233: 5964, 1425: 5963}, + {241, 241}, // 3010 - {265, 265, 550: 265, 265, 568: 5939, 575: 265, 1399: 5938}, - {2661, 2661, 550: 5877, 2661, 575: 2661, 1149: 5942}, - {576: 3107, 819: 5940}, - {742: 5941}, - {264, 264, 550: 264, 264, 575: 264}, + {247, 247, 9: 5968}, + {246, 246, 9: 246}, + {244, 244, 9: 244, 577: 5966}, + {557: 3708, 567: 5119, 5120, 571: 3699, 580: 3703, 651: 3698, 3700, 659: 3702, 3701, 662: 3706, 3707, 671: 3705, 802: 5118, 3704, 1043: 5967}, + {243, 243, 9: 243}, // 3015 - {238, 238, 551: 238, 575: 5879, 1229: 5943}, - {233, 233, 551: 5888, 1078: 5944}, - {270, 270}, - {9: 327, 57: 327, 549: 327, 581: 327, 646: 2133, 732: 327, 745: 2133}, - {9: 292, 549: 292, 292, 581: 292, 646: 2099, 732: 292, 745: 2099}, + {54: 5965, 1233: 5969}, + {245, 245, 9: 245}, + {557: 5973}, + {248, 248, 556: 5961, 1084: 5972}, + {242, 242}, // 3020 - {9: 306, 549: 306, 306, 581: 306, 646: 2073, 732: 306, 745: 2073}, - {9: 293, 549: 293, 293, 581: 293, 646: 2070, 732: 293, 745: 2070}, - {9: 282, 549: 282, 282, 581: 282, 646: 2032, 732: 282, 745: 2032}, - {9: 302, 549: 302, 302, 581: 302, 646: 1952, 732: 302, 745: 1952}, - {9: 307, 549: 307, 307, 581: 307, 646: 1945, 732: 307, 745: 1945}, + {281, 281, 556: 281, 573: 281, 576: 281, 584: 281}, + {252, 252, 9: 5979, 556: 252, 586: 252}, + {250, 250, 9: 250, 556: 250, 586: 250}, + {577: 5977}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 5978}, // 3025 - {358: 6053, 391: 6054, 646: 1926, 745: 1926}, - {9: 294, 549: 294, 294, 581: 294, 646: 1923, 732: 294, 745: 1923}, - {9: 283, 549: 283, 283, 581: 283, 646: 1920, 732: 283, 745: 1920}, - {646: 6051, 745: 6050}, - {9: 954, 549: 954, 581: 954, 646: 449, 732: 954, 745: 449}, + {249, 249, 9: 249, 556: 249, 586: 249}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4025, 3149, 3150, 3148, 804: 5976, 1234: 5980}, + {251, 251, 9: 251, 556: 251, 586: 251}, + {9: 5987, 52: 2692}, + {9: 2691, 52: 2691}, // 3030 - {9: 953, 549: 953, 581: 953, 732: 953}, - {9: 323, 57: 6049, 549: 323, 581: 323, 732: 323}, - {9: 325, 549: 325, 581: 325, 732: 325}, - {9: 324, 549: 324, 581: 324, 732: 324}, - {581: 6047}, + {9: 2689, 52: 2689}, + {9: 2688, 52: 2688}, + {52: 5986}, + {2686, 2686, 556: 2686, 581: 2686, 586: 2686}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 654: 3804, 796: 4151, 3149, 3150, 3148, 801: 5984, 846: 5983, 1154: 5988}, // 3035 - {9: 303, 549: 303, 303, 579: 6045, 581: 303, 732: 303}, - {9: 320, 549: 320, 581: 320, 732: 320}, - {9: 5997, 549: 5998, 581: 5999}, - {9: 318, 549: 318, 5994, 581: 318, 732: 318}, - {9: 316, 253: 5993, 549: 316, 316, 581: 316, 732: 316}, + {9: 2690, 52: 2690}, + {59: 284, 857: 5993, 1011: 284, 1430: 5992}, + {557: 5991}, + {208, 208}, + {59: 5995, 1011: 276, 1427: 5994}, // 3040 - {9: 314, 350: 5992, 549: 314, 314, 581: 314, 732: 314}, - {9: 313, 20: 5986, 148: 5988, 203: 5989, 231: 5987, 5985, 350: 5990, 549: 313, 313, 581: 313, 732: 313}, - {9: 310, 549: 310, 310, 581: 310, 732: 310}, - {9: 309, 549: 309, 309, 581: 309, 732: 309}, - {9: 308, 203: 5984, 549: 308, 308, 581: 308, 732: 308}, + {59: 283, 1011: 283}, + {1011: 5996}, + {1011: 275}, + {557: 5997}, + {249: 5970, 573: 282, 576: 282, 584: 282, 1209: 5998}, // 3045 - {9: 305, 549: 305, 305, 581: 305, 732: 305}, - {9: 304, 549: 304, 304, 581: 304, 732: 304}, - {148: 5983, 1169: 5982}, - {9: 300, 549: 300, 300, 581: 300, 732: 300}, - {1029: 5981}, + {573: 5999, 576: 6000, 584: 2460, 1194: 6001}, + {2459, 2459, 554: 2459, 2459, 2459, 561: 2459, 572: 2459, 584: 2459, 632: 2459, 680: 2459}, + {2458, 2458, 554: 2458, 2458, 2458, 561: 2458, 572: 2458, 584: 2458, 632: 2458, 680: 2458}, + {584: 6002}, + {632: 6003}, // 3050 - {9: 298, 549: 298, 298, 581: 298, 732: 298}, - {9: 295, 549: 295, 295, 581: 295, 732: 295}, - {168: 5980}, - {9: 290, 549: 290, 290, 581: 290, 732: 290}, - {9: 299, 549: 299, 299, 581: 299, 732: 299}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6004}, + {278, 278, 144: 278, 172: 278, 555: 278, 278, 573: 278, 581: 278, 733: 6006, 748: 278, 1369: 6005}, + {274, 274, 144: 4077, 172: 4076, 555: 274, 274, 573: 274, 581: 274, 748: 274, 959: 4075, 1203: 6009}, + {581: 6007}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 6008}, // 3055 - {9: 301, 549: 301, 301, 581: 301, 732: 301}, - {9: 288, 549: 288, 288, 581: 288, 732: 288}, - {9: 286, 549: 286, 286, 581: 286, 732: 286}, - {9: 312, 549: 312, 312, 581: 312, 732: 312}, - {9: 311, 549: 311, 311, 581: 311, 732: 311}, + {277, 277, 144: 277, 172: 277, 555: 277, 277, 573: 277, 581: 277, 748: 277}, + {259, 259, 555: 259, 259, 573: 259, 581: 259, 748: 4105, 1232: 6010}, + {280, 280, 555: 280, 280, 573: 6012, 581: 280, 1409: 6011}, + {2687, 2687, 555: 5950, 2687, 581: 2687, 1155: 6015}, + {580: 3135, 824: 6013}, // 3060 - {168: 5991}, - {9: 289, 549: 289, 289, 581: 289, 732: 289}, - {9: 287, 549: 287, 287, 581: 287, 732: 287}, - {9: 285, 549: 285, 285, 581: 285, 732: 285}, - {9: 291, 549: 291, 291, 581: 291, 732: 291}, + {748: 6014}, + {279, 279, 555: 279, 279, 581: 279}, + {253, 253, 556: 253, 581: 5952, 1235: 6016}, + {248, 248, 556: 5961, 1084: 6017}, + {285, 285}, // 3065 - {9: 284, 549: 284, 284, 581: 284, 732: 284}, - {9: 315, 549: 315, 315, 581: 315, 732: 315}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 5995}, - {9: 4120, 52: 5996}, - {9: 317, 549: 317, 581: 317, 732: 317}, + {9: 342, 54: 342, 554: 342, 586: 342, 654: 2159, 737: 342, 750: 2159}, + {9: 307, 554: 307, 307, 586: 307, 654: 2125, 737: 307, 750: 2125}, + {9: 321, 554: 321, 321, 586: 321, 654: 2099, 737: 321, 750: 2099}, + {9: 308, 554: 308, 308, 586: 308, 654: 2096, 737: 308, 750: 2096}, + {9: 297, 554: 297, 297, 586: 297, 654: 2058, 737: 297, 750: 2058}, // 3070 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 5945, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 5947, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 5953, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 5949, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 5946, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 5954, 3301, 3560, 5948, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 5951, 3206, 3207, 3455, 5952, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 5950, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 5956, 582: 5979, 606: 5973, 668: 5962, 725: 5977, 729: 5972, 731: 5975, 735: 5966, 743: 5967, 746: 5971, 762: 5968, 791: 3827, 3121, 3122, 3120, 823: 5970, 825: 5955, 918: 5957, 929: 5961, 964: 5974, 983: 5976, 1067: 5958, 1093: 5959, 5965, 1101: 5960, 6044, 1113: 5969, 1117: 5978}, - {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, 6011, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 580: 281, 627: 6010, 991: 6012, 1237: 6013}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6002, 995: 6003}, - {967, 967, 6: 967, 9: 967, 15: 967, 51: 967, 53: 967, 967, 967, 967, 148: 967, 201: 967, 551: 967, 561: 967, 573: 967, 646: 6008, 676: 967, 732: 967, 737: 967, 744: 967, 6007}, - {1428, 1428, 6: 1428, 9: 1428, 15: 1428, 51: 1428, 53: 1428, 1428, 1428, 1428, 148: 1428, 201: 1428, 550: 4456, 1428, 561: 1428, 573: 1428, 676: 1428, 732: 1428, 737: 1428, 744: 1428, 1247: 6006}, + {9: 317, 554: 317, 317, 586: 317, 654: 1978, 737: 317, 750: 1978}, + {9: 322, 554: 322, 322, 586: 322, 654: 1971, 737: 322, 750: 1971}, + {362: 6126, 395: 6127, 654: 1952, 750: 1952}, + {9: 309, 554: 309, 309, 586: 309, 654: 1949, 737: 309, 750: 1949}, + {9: 298, 554: 298, 298, 586: 298, 654: 1946, 737: 298, 750: 1946}, // 3075 - {963, 963, 9: 963, 551: 963}, - {271, 271, 9: 6004}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6005}, - {962, 962, 9: 962, 551: 962}, - {964, 964, 6: 964, 9: 964, 15: 964, 51: 964, 53: 964, 964, 964, 964, 148: 964, 201: 964, 551: 964, 561: 964, 573: 964, 676: 964, 732: 964, 737: 964, 744: 964}, + {654: 6124, 750: 6123}, + {9: 974, 554: 974, 586: 974, 654: 464, 737: 974, 750: 464}, + {9: 973, 554: 973, 586: 973, 737: 973}, + {9: 338, 54: 6122, 554: 338, 586: 338, 737: 338}, + {9: 340, 554: 340, 586: 340, 737: 340}, // 3080 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 791: 3827, 3121, 3122, 3120, 825: 6009}, - {965, 965, 6: 965, 9: 965, 15: 965, 51: 965, 53: 965, 965, 965, 965, 148: 965, 201: 965, 551: 965, 561: 965, 573: 965, 676: 965, 732: 965, 737: 965, 744: 965}, - {966, 966, 6: 966, 9: 966, 15: 966, 51: 966, 53: 966, 966, 966, 966, 148: 966, 201: 966, 551: 966, 561: 966, 573: 966, 676: 966, 732: 966, 737: 966, 744: 966}, - {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, 580: 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, 580: 279}, + {9: 339, 554: 339, 586: 339, 737: 339}, + {586: 6120}, + {9: 318, 554: 318, 318, 584: 6118, 586: 318, 737: 318}, + {9: 335, 554: 335, 586: 335, 737: 335}, + {9: 6070, 554: 6071, 586: 6072}, // 3085 - {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, 580: 278}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6014, 791: 6015, 3121, 3122, 3120, 1264: 6016}, - {581: 277, 732: 277, 734: 6042}, - {581: 273, 732: 273, 734: 6039}, - {581: 6017}, + {9: 333, 554: 333, 6067, 586: 333, 737: 333}, + {9: 331, 257: 6066, 554: 331, 331, 586: 331, 737: 331}, + {9: 329, 354: 6065, 554: 329, 329, 586: 329, 737: 329}, + {9: 328, 20: 6059, 149: 6058, 6061, 208: 6062, 236: 6060, 354: 6063, 554: 328, 328, 586: 328, 737: 328}, + {9: 325, 554: 325, 325, 586: 325, 737: 325}, // 3090 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6018, 1016: 6019, 1045: 6020}, - {380, 380, 6: 380, 9: 380, 15: 380, 51: 380, 53: 380, 380, 380, 380, 201: 6024, 551: 380, 744: 380, 1349: 6023}, - {427, 427, 6: 427, 9: 427, 15: 427, 51: 427, 53: 427, 427, 427, 427, 551: 427, 744: 427}, - {272, 272, 9: 6021}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6018, 1016: 6022}, + {9: 324, 554: 324, 324, 586: 324, 737: 324}, + {9: 323, 208: 6057, 554: 323, 323, 586: 323, 737: 323}, + {9: 320, 554: 320, 320, 586: 320, 737: 320}, + {9: 319, 554: 319, 319, 586: 319, 737: 319}, + {150: 6056, 1175: 6055}, // 3095 - {426, 426, 6: 426, 9: 426, 15: 426, 51: 426, 53: 426, 426, 426, 426, 551: 426, 744: 426}, - {428, 428, 6: 428, 9: 428, 15: 428, 51: 428, 53: 428, 428, 428, 428, 551: 428, 744: 428}, - {551: 6026, 741: 6025}, - {15: 6037, 552: 6034, 1019: 6036}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 791: 3827, 3121, 3122, 3120, 825: 6028, 1350: 6027}, + {9: 315, 554: 315, 315, 586: 315, 737: 315}, + {1034: 6054}, + {9: 313, 554: 313, 313, 586: 313, 737: 313}, + {9: 310, 554: 310, 310, 586: 310, 737: 310}, + {170: 6053}, // 3100 - {378, 378, 6: 378, 9: 378, 15: 378, 51: 378, 53: 378, 378, 378, 378, 551: 378, 556: 6030, 741: 6029, 744: 378}, - {374, 374, 6: 374, 9: 374, 15: 374, 51: 374, 53: 374, 374, 374, 374, 551: 374, 556: 374, 741: 374, 744: 374}, - {552: 6034, 1019: 6035}, - {552: 6032, 657: 6033, 1210: 6031}, - {376, 376, 6: 376, 9: 376, 15: 376, 51: 376, 53: 376, 376, 376, 376, 551: 376, 744: 376}, + {9: 305, 554: 305, 305, 586: 305, 737: 305}, + {9: 314, 554: 314, 314, 586: 314, 737: 314}, + {9: 316, 554: 316, 316, 586: 316, 737: 316}, + {9: 303, 554: 303, 303, 586: 303, 737: 303}, + {9: 301, 554: 301, 301, 586: 301, 737: 301}, // 3105 - {373, 373, 6: 373, 9: 373, 15: 373, 51: 373, 53: 373, 373, 373, 373, 551: 373, 744: 373}, - {372, 372, 6: 372, 9: 372, 15: 372, 51: 372, 53: 372, 372, 372, 372, 551: 372, 744: 372}, - {959, 959, 6: 959, 9: 959, 15: 959, 51: 959, 959, 959, 959, 959, 959, 551: 959, 744: 959}, - {377, 377, 6: 377, 9: 377, 15: 377, 51: 377, 53: 377, 377, 377, 377, 551: 377, 744: 377}, - {379, 379, 6: 379, 9: 379, 15: 379, 51: 379, 53: 379, 379, 379, 379, 551: 379, 744: 379}, + {9: 327, 554: 327, 327, 586: 327, 737: 327}, + {9: 326, 554: 326, 326, 586: 326, 737: 326}, + {170: 6064}, + {9: 304, 554: 304, 304, 586: 304, 737: 304}, + {9: 302, 554: 302, 302, 586: 302, 737: 302}, // 3110 - {552: 6032, 657: 6033, 1210: 6038}, - {375, 375, 6: 375, 9: 375, 15: 375, 51: 375, 53: 375, 375, 375, 375, 551: 375, 744: 375}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6040, 791: 6041, 3121, 3122, 3120}, - {581: 275, 732: 275}, - {581: 274, 732: 274}, + {9: 300, 554: 300, 300, 586: 300, 737: 300}, + {9: 306, 554: 306, 306, 586: 306, 737: 306}, + {9: 299, 554: 299, 299, 586: 299, 737: 299}, + {9: 330, 554: 330, 330, 586: 330, 737: 330}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 6068}, // 3115 - {580: 6043}, - {581: 276, 732: 276}, - {9: 319, 549: 319, 581: 319, 732: 319}, - {352: 6046}, - {9: 321, 549: 321, 581: 321, 732: 321}, + {9: 4154, 52: 6069}, + {9: 332, 554: 332, 586: 332, 737: 332}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6018, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 6020, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 6026, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 6022, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 6019, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 6027, 3329, 3589, 6021, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 6024, 3234, 3235, 3483, 6025, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 6023, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6029, 587: 6052, 611: 6046, 680: 6035, 731: 6050, 734: 6045, 736: 6048, 740: 6039, 747: 6040, 751: 6044, 767: 6041, 796: 3861, 3149, 3150, 3148, 828: 6043, 830: 6028, 923: 6030, 934: 6034, 969: 6047, 989: 6049, 1073: 6031, 1099: 6032, 6038, 1107: 6033, 6117, 1118: 6042, 1122: 6051}, + {2: 296, 296, 296, 296, 296, 296, 296, 10: 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 53: 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 6084, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 585: 296, 632: 6083, 997: 6085, 1243: 6086}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6075, 1001: 6076}, // 3120 - {352: 6048}, - {9: 322, 549: 322, 581: 322, 732: 322}, - {9: 326, 57: 326, 549: 326, 581: 326, 732: 326}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 791: 3827, 3121, 3122, 3120, 825: 6052}, - {955, 955, 9: 955, 549: 955, 581: 955, 732: 955}, + {987, 987, 6: 987, 9: 987, 15: 987, 51: 987, 53: 987, 55: 987, 987, 987, 150: 987, 205: 987, 556: 987, 566: 987, 577: 987, 654: 6081, 681: 987, 737: 987, 744: 987, 749: 987, 6080}, + {1449, 1449, 6: 1449, 9: 1449, 15: 1449, 51: 1449, 53: 1449, 55: 1449, 1449, 1449, 150: 1449, 205: 1449, 555: 4490, 1449, 566: 1449, 577: 1449, 681: 1449, 737: 1449, 744: 1449, 749: 1449, 1253: 6079}, + {983, 983, 9: 983, 556: 983}, + {286, 286, 9: 6077}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6078}, // 3125 - {956, 956, 9: 956, 549: 956, 581: 956, 732: 956}, - {9: 297, 549: 297, 297, 581: 297, 732: 297}, - {9: 296, 549: 296, 296, 581: 296, 732: 296}, - {549: 6097, 646: 2046, 745: 2046}, - {9: 5997, 549: 6057, 732: 6058}, + {982, 982, 9: 982, 556: 982}, + {984, 984, 6: 984, 9: 984, 15: 984, 51: 984, 53: 984, 55: 984, 984, 984, 150: 984, 205: 984, 556: 984, 566: 984, 577: 984, 681: 984, 737: 984, 744: 984, 749: 984}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 796: 3861, 3149, 3150, 3148, 830: 6082}, + {985, 985, 6: 985, 9: 985, 15: 985, 51: 985, 53: 985, 55: 985, 985, 985, 150: 985, 205: 985, 556: 985, 566: 985, 577: 985, 681: 985, 737: 985, 744: 985, 749: 985}, + {986, 986, 6: 986, 9: 986, 15: 986, 51: 986, 53: 986, 55: 986, 986, 986, 150: 986, 205: 986, 556: 986, 566: 986, 577: 986, 681: 986, 737: 986, 744: 986, 749: 986}, // 3130 - {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, 6011, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 580: 281, 627: 6010, 991: 6012, 1237: 6060}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6002, 995: 6059}, - {334, 334, 9: 6004}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6014, 791: 6015, 3121, 3122, 3120, 1264: 6061}, - {732: 6062}, + {2: 295, 295, 295, 295, 295, 295, 295, 10: 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 53: 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 585: 295}, + {2: 294, 294, 294, 294, 294, 294, 294, 10: 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 53: 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 585: 294}, + {2: 293, 293, 293, 293, 293, 293, 293, 10: 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 53: 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 585: 293}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6087, 796: 6088, 3149, 3150, 3148, 1270: 6089}, + {586: 292, 737: 292, 739: 6115}, // 3135 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6018, 1016: 6019, 1045: 6063}, - {417, 417, 9: 6021, 551: 417, 744: 6065, 1098: 6064, 6066}, - {416, 416, 6: 416, 15: 416, 51: 416, 53: 416, 416, 416, 416, 551: 416}, - {175: 6086, 6084, 183: 6087, 6085, 6088, 423: 6079, 470: 6081, 1100: 6083, 1467: 6082, 1492: 6080}, - {333, 333, 551: 6068, 1333: 6067}, + {586: 288, 737: 288, 739: 6112}, + {586: 6090}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6091, 1022: 6092, 1051: 6093}, + {395, 395, 6: 395, 9: 395, 15: 395, 51: 395, 53: 395, 55: 395, 395, 395, 205: 6097, 556: 395, 749: 395, 1359: 6096}, + {442, 442, 6: 442, 9: 442, 15: 442, 51: 442, 53: 442, 55: 442, 442, 442, 556: 442, 749: 442}, // 3140 - {336, 336}, - {178: 6072, 6070, 6071, 6073, 983: 6069}, - {1029: 6078}, - {576: 3107, 819: 6077}, - {576: 3107, 819: 6076}, + {287, 287, 9: 6094}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6091, 1022: 6095}, + {441, 441, 6: 441, 9: 441, 15: 441, 51: 441, 53: 441, 55: 441, 441, 441, 556: 441, 749: 441}, + {443, 443, 6: 443, 9: 443, 15: 443, 51: 443, 53: 443, 55: 443, 443, 443, 556: 443, 749: 443}, + {556: 6099, 746: 6098}, // 3145 - {576: 3107, 819: 6075}, - {576: 3107, 819: 6074}, - {328, 328}, - {329, 329}, - {330, 330}, + {15: 6110, 557: 6107, 1025: 6109}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 796: 3861, 3149, 3150, 3148, 830: 6101, 1360: 6100}, + {393, 393, 6: 393, 9: 393, 15: 393, 51: 393, 53: 393, 55: 393, 393, 393, 556: 393, 561: 6103, 746: 6102, 749: 393}, + {389, 389, 6: 389, 9: 389, 15: 389, 51: 389, 53: 389, 55: 389, 389, 389, 556: 389, 561: 389, 746: 389, 749: 389}, + {557: 6107, 1025: 6108}, // 3150 - {331, 331}, - {332, 332}, - {415, 415, 6: 415, 15: 415, 51: 415, 53: 415, 415, 415, 415, 551: 415}, - {414, 414, 6: 414, 15: 414, 51: 414, 53: 414, 414, 414, 414, 551: 414}, - {413, 413, 6: 413, 15: 413, 51: 413, 53: 413, 413, 413, 413, 551: 413}, + {557: 6105, 662: 6106, 1216: 6104}, + {391, 391, 6: 391, 9: 391, 15: 391, 51: 391, 53: 391, 55: 391, 391, 391, 556: 391, 749: 391}, + {388, 388, 6: 388, 9: 388, 15: 388, 51: 388, 53: 388, 55: 388, 388, 388, 556: 388, 749: 388}, + {387, 387, 6: 387, 9: 387, 15: 387, 51: 387, 53: 387, 55: 387, 387, 387, 556: 387, 749: 387}, + {979, 979, 6: 979, 9: 979, 15: 979, 51: 979, 979, 979, 55: 979, 979, 979, 556: 979, 749: 979}, // 3155 - {412, 412, 6: 412, 15: 412, 51: 412, 53: 412, 412, 412, 412, 175: 6086, 6084, 183: 6087, 6085, 6088, 551: 412, 586: 6094, 1100: 6095}, - {411, 411, 6: 411, 15: 411, 51: 411, 53: 411, 411, 411, 411, 175: 411, 411, 183: 411, 411, 411, 551: 411, 586: 411}, - {552: 6093}, - {552: 6092}, - {552: 6091}, + {392, 392, 6: 392, 9: 392, 15: 392, 51: 392, 53: 392, 55: 392, 392, 392, 556: 392, 749: 392}, + {394, 394, 6: 394, 9: 394, 15: 394, 51: 394, 53: 394, 55: 394, 394, 394, 556: 394, 749: 394}, + {557: 6105, 662: 6106, 1216: 6111}, + {390, 390, 6: 390, 9: 390, 15: 390, 51: 390, 53: 390, 55: 390, 390, 390, 556: 390, 749: 390}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6113, 796: 6114, 3149, 3150, 3148}, // 3160 - {552: 6090}, - {552: 6089}, - {404, 404, 6: 404, 15: 404, 51: 404, 53: 404, 404, 404, 404, 175: 404, 404, 183: 404, 404, 404, 551: 404, 586: 404}, - {405, 405, 6: 405, 15: 405, 51: 405, 53: 405, 405, 405, 405, 175: 405, 405, 183: 405, 405, 405, 551: 405, 586: 405}, - {406, 406, 6: 406, 15: 406, 51: 406, 53: 406, 406, 406, 406, 175: 406, 406, 183: 406, 406, 406, 551: 406, 586: 406}, + {586: 290, 737: 290}, + {586: 289, 737: 289}, + {585: 6116}, + {586: 291, 737: 291}, + {9: 334, 554: 334, 586: 334, 737: 334}, // 3165 - {407, 407, 6: 407, 15: 407, 51: 407, 53: 407, 407, 407, 407, 175: 407, 407, 183: 407, 407, 407, 551: 407, 586: 407}, - {408, 408, 6: 408, 15: 408, 51: 408, 53: 408, 408, 408, 408, 175: 408, 408, 183: 408, 408, 408, 551: 408, 586: 408}, - {175: 6086, 6084, 183: 6087, 6085, 6088, 1100: 6096}, - {409, 409, 6: 409, 15: 409, 51: 409, 53: 409, 409, 409, 409, 175: 409, 409, 183: 409, 409, 409, 551: 409, 586: 409}, - {410, 410, 6: 410, 15: 410, 51: 410, 53: 410, 410, 410, 410, 175: 410, 410, 183: 410, 410, 410, 551: 410, 586: 410}, + {356: 6119}, + {9: 336, 554: 336, 586: 336, 737: 336}, + {356: 6121}, + {9: 337, 554: 337, 586: 337, 737: 337}, + {9: 341, 54: 341, 554: 341, 586: 341, 737: 341}, // 3170 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6098}, - {732: 6099}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6002, 995: 6100}, - {333, 333, 9: 6004, 551: 6068, 1333: 6101}, - {335, 335}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 796: 3861, 3149, 3150, 3148, 830: 6125}, + {975, 975, 9: 975, 554: 975, 586: 975, 737: 975}, + {976, 976, 9: 976, 554: 976, 586: 976, 737: 976}, + {9: 312, 554: 312, 312, 586: 312, 737: 312}, + {9: 311, 554: 311, 311, 586: 311, 737: 311}, // 3175 - {351: 6103, 383: 6105, 568: 6106, 575: 6107, 964: 6104}, - {341, 341, 551: 6119, 578: 6117, 1272: 6118}, - {345, 345}, - {576: 3107, 819: 6116}, - {576: 3107, 819: 6115}, + {554: 6170, 654: 2072, 750: 2072}, + {9: 6070, 554: 6130, 737: 6131}, + {2: 296, 296, 296, 296, 296, 296, 296, 10: 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 53: 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 6084, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 585: 296, 632: 6083, 997: 6085, 1243: 6133}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6075, 1001: 6132}, + {349, 349, 9: 6077}, // 3180 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6110, 3121, 3122, 3120, 1097: 6109, 1271: 6108}, - {342, 342, 9: 6113}, - {339, 339, 9: 339}, - {573: 6111}, - {552: 3675, 566: 3666, 576: 3670, 648: 3665, 3667, 655: 3669, 3668, 3673, 3674, 667: 3672, 797: 6112, 3671}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6087, 796: 6088, 3149, 3150, 3148, 1270: 6134}, + {737: 6135}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6091, 1022: 6092, 1051: 6136}, + {432, 432, 9: 6094, 556: 432, 749: 6138, 1104: 6137, 6139}, + {431, 431, 6: 431, 15: 431, 51: 431, 53: 431, 55: 431, 431, 431, 556: 431}, // 3185 - {337, 337, 9: 337}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6110, 3121, 3122, 3120, 1097: 6114}, - {338, 338, 9: 338}, + {178: 6159, 180: 6157, 187: 6160, 6158, 6161, 427: 6152, 475: 6154, 1106: 6156, 1477: 6155, 1502: 6153}, + {348, 348, 556: 6141, 1342: 6140}, + {351, 351}, + {182: 6145, 6143, 6144, 6146, 989: 6142}, + {1034: 6151}, + // 3190 + {580: 3135, 824: 6150}, + {580: 3135, 824: 6149}, + {580: 3135, 824: 6148}, + {580: 3135, 824: 6147}, {343, 343}, + // 3195 {344, 344}, - // 3190 - {552: 6121}, + {345, 345}, {346, 346}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6110, 3121, 3122, 3120, 1097: 6109, 1271: 6120}, - {340, 340, 9: 6113}, - {341, 341, 551: 6119, 1272: 6122}, - // 3195 {347, 347}, - {2524, 2524, 9: 2524, 16: 2524, 18: 2524, 21: 2524, 554: 2524, 557: 2524, 572: 2524, 575: 2524, 581: 2524, 583: 2524, 603: 2524, 728: 2524, 732: 2524, 784: 2524, 2524}, - {440, 440}, - {2: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 10: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 53: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 550: 1073, 552: 1073, 1073, 1073, 1073, 559: 1073, 1073, 562: 1073, 1073, 1073, 566: 1073, 1073, 1073, 571: 1073, 1073, 576: 1073, 579: 1073, 1073, 1073, 593: 1073, 598: 1073, 605: 1073, 1073, 638: 1073, 645: 1073, 1073, 648: 1073, 1073, 1073, 655: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 664: 1073, 1073, 1073, 1073, 669: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 677: 1073, 679: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 706: 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 730: 1073, 735: 1073, 848: 1073, 1073, 852: 1073, 854: 1073, 856: 1073, 860: 1073, 869: 1073, 1073, 1073}, - {2: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 10: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 53: 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 550: 1071, 568: 1071, 579: 1071, 1071, 1071, 662: 1071, 852: 1071, 854: 1071, 856: 1071}, + {430, 430, 6: 430, 15: 430, 51: 430, 53: 430, 55: 430, 430, 430, 556: 430}, // 3200 - {2: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 10: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 53: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 550: 1278, 568: 1278, 580: 1278, 662: 1278, 852: 6128, 854: 6130, 856: 6129, 959: 6131, 1011: 6132}, - {2: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 10: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 53: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 550: 1281, 552: 1281, 1281, 1281, 1281, 559: 1281, 1281, 562: 1281, 1281, 1281, 566: 1281, 1281, 1281, 571: 1281, 1281, 576: 1281, 579: 1281, 1281, 1281, 593: 1281, 598: 1281, 605: 1281, 1281, 638: 1281, 645: 1281, 1281, 648: 1281, 1281, 1281, 655: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 664: 1281, 1281, 1281, 1281, 669: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 677: 1281, 679: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 706: 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 730: 1281, 735: 1281, 848: 1281, 1281, 852: 1281, 854: 1281, 856: 1281, 860: 1281, 869: 1281, 1281, 1281}, - {2: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 10: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 53: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 550: 1280, 552: 1280, 1280, 1280, 1280, 559: 1280, 1280, 562: 1280, 1280, 1280, 566: 1280, 1280, 1280, 571: 1280, 1280, 576: 1280, 579: 1280, 1280, 1280, 593: 1280, 598: 1280, 605: 1280, 1280, 638: 1280, 645: 1280, 1280, 648: 1280, 1280, 1280, 655: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 664: 1280, 1280, 1280, 1280, 669: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 677: 1280, 679: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 706: 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 730: 1280, 735: 1280, 848: 1280, 1280, 852: 1280, 854: 1280, 856: 1280, 860: 1280, 869: 1280, 1280, 1280}, - {2: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 10: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 53: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 550: 1279, 552: 1279, 1279, 1279, 1279, 559: 1279, 1279, 562: 1279, 1279, 1279, 566: 1279, 1279, 1279, 571: 1279, 1279, 576: 1279, 579: 1279, 1279, 1279, 593: 1279, 598: 1279, 605: 1279, 1279, 638: 1279, 645: 1279, 1279, 648: 1279, 1279, 1279, 655: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 664: 1279, 1279, 1279, 1279, 669: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 677: 1279, 679: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 706: 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 730: 1279, 735: 1279, 848: 1279, 1279, 852: 1279, 854: 1279, 856: 1279, 860: 1279, 869: 1279, 1279, 1279}, - {2: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 10: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 53: 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 550: 1277, 568: 1277, 579: 1277, 1277, 1277, 662: 1277}, + {429, 429, 6: 429, 15: 429, 51: 429, 53: 429, 55: 429, 429, 429, 556: 429}, + {428, 428, 6: 428, 15: 428, 51: 428, 53: 428, 55: 428, 428, 428, 556: 428}, + {427, 427, 6: 427, 15: 427, 51: 427, 53: 427, 55: 427, 427, 427, 178: 6159, 180: 6157, 187: 6160, 6158, 6161, 556: 427, 591: 6167, 1106: 6168}, + {426, 426, 6: 426, 15: 426, 51: 426, 53: 426, 55: 426, 426, 426, 178: 426, 180: 426, 187: 426, 426, 426, 556: 426, 591: 426}, + {557: 6166}, // 3205 - {2: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 10: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 53: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 550: 2161, 568: 4781, 580: 2161, 662: 2161, 984: 6133}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 662: 6137, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6136, 981: 6134, 1015: 6135}, - {1151, 1151, 9: 1151, 52: 1151, 549: 1151, 551: 1151, 558: 1151, 561: 1151, 569: 1151, 1151, 574: 1151, 1151, 577: 1151, 1151, 1151, 582: 1151, 1151, 1151, 591: 1151, 1151, 594: 1151}, - {9: 6192, 575: 6261}, - {9: 1149, 559: 6155, 6156, 575: 6246, 593: 6154, 596: 6157, 599: 6153, 6158, 6159, 937: 6152, 943: 6151}, + {557: 6165}, + {557: 6164}, + {557: 6163}, + {557: 6162}, + {419, 419, 6: 419, 15: 419, 51: 419, 53: 419, 55: 419, 419, 419, 178: 419, 180: 419, 187: 419, 419, 419, 556: 419, 591: 419}, // 3210 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6243, 3121, 3122, 3120}, - {1147, 1147, 9: 1147, 52: 1147, 549: 1147, 551: 1147, 558: 1147, 1147, 1147, 1147, 569: 1147, 1147, 574: 1147, 1147, 577: 1147, 1147, 1147, 582: 1147, 1147, 1147, 591: 1147, 1147, 1147, 1147, 596: 1147, 599: 1147, 1147, 1147, 604: 1147}, - {1146, 1146, 9: 1146, 52: 1146, 549: 1146, 551: 1146, 558: 1146, 1146, 1146, 1146, 569: 1146, 1146, 574: 1146, 1146, 577: 1146, 1146, 1146, 582: 1146, 1146, 1146, 591: 1146, 1146, 1146, 1146, 596: 1146, 599: 1146, 1146, 1146, 604: 1146}, - {1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 551: 1142, 556: 1142, 558: 1142, 1142, 1142, 1142, 565: 6196, 568: 1142, 1142, 1142, 574: 1142, 1142, 577: 1142, 1142, 1142, 582: 1142, 1142, 1142, 1142, 591: 1142, 1142, 1142, 1142, 1142, 1142, 599: 1142, 1142, 1142, 604: 1142, 611: 1142, 750: 1142, 990: 6195}, - {1140, 1140, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1140, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 1140, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 1140, 551: 1140, 556: 6149, 558: 1140, 1140, 1140, 1140, 569: 1140, 1140, 574: 1140, 1140, 577: 1140, 1140, 1140, 582: 1140, 1140, 1140, 591: 1140, 1140, 1140, 1140, 596: 1140, 599: 1140, 1140, 1140, 604: 1140, 791: 6148, 3121, 3122, 3120, 1038: 6147, 6146}, + {420, 420, 6: 420, 15: 420, 51: 420, 53: 420, 55: 420, 420, 420, 178: 420, 180: 420, 187: 420, 420, 420, 556: 420, 591: 420}, + {421, 421, 6: 421, 15: 421, 51: 421, 53: 421, 55: 421, 421, 421, 178: 421, 180: 421, 187: 421, 421, 421, 556: 421, 591: 421}, + {422, 422, 6: 422, 15: 422, 51: 422, 53: 422, 55: 422, 422, 422, 178: 422, 180: 422, 187: 422, 422, 422, 556: 422, 591: 422}, + {423, 423, 6: 423, 15: 423, 51: 423, 53: 423, 55: 423, 423, 423, 178: 423, 180: 423, 187: 423, 423, 423, 556: 423, 591: 423}, + {178: 6159, 180: 6157, 187: 6160, 6158, 6161, 1106: 6169}, // 3215 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 2979, 567: 2978, 580: 4018, 627: 2977, 662: 6137, 668: 2973, 791: 4017, 3121, 3122, 3120, 6145, 824: 6140, 826: 3937, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 3939, 3938, 914: 6139, 919: 6138, 6144, 981: 6134, 1015: 6143}, - {9: 6192, 52: 6193}, - {1149, 1149, 9: 1149, 52: 1149, 549: 1149, 551: 1149, 558: 1149, 6155, 6156, 1149, 569: 1149, 1149, 574: 1149, 1149, 577: 1149, 1149, 1149, 582: 1149, 1149, 1149, 591: 1149, 1149, 6154, 1149, 596: 6157, 599: 6153, 6158, 6159, 937: 6152, 943: 6151}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1140, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 4082, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 556: 6149, 558: 1033, 1140, 1140, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 593: 1140, 596: 1140, 599: 1140, 1140, 1140, 791: 6148, 3121, 3122, 3120, 862: 3950, 3951, 1038: 6147, 6146}, - {1144, 1144, 9: 1144, 52: 1144, 549: 1144, 551: 1144, 558: 1144, 1144, 1144, 1144, 569: 1144, 1144, 574: 1144, 1144, 577: 1144, 1144, 1144, 582: 1144, 1144, 1144, 591: 1144, 1144, 1144, 1144, 596: 1144, 599: 1144, 1144, 1144, 604: 1144}, + {424, 424, 6: 424, 15: 424, 51: 424, 53: 424, 55: 424, 424, 424, 178: 424, 180: 424, 187: 424, 424, 424, 556: 424, 591: 424}, + {425, 425, 6: 425, 15: 425, 51: 425, 53: 425, 55: 425, 425, 425, 178: 425, 180: 425, 187: 425, 425, 425, 556: 425, 591: 425}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6171}, + {737: 6172}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6075, 1001: 6173}, // 3220 - {1139, 1139, 9: 1139, 52: 1139, 549: 1139, 551: 1139, 558: 1139, 1139, 1139, 1139, 568: 1139, 1139, 1139, 574: 1139, 1139, 577: 1139, 1139, 1139, 582: 1139, 1139, 1139, 1139, 591: 1139, 1139, 1139, 1139, 1139, 1139, 599: 1139, 1139, 1139, 604: 1139, 611: 1139, 750: 1139}, - {1138, 1138, 9: 1138, 52: 1138, 549: 1138, 551: 1138, 558: 1138, 1138, 1138, 1138, 568: 1138, 1138, 1138, 574: 1138, 1138, 577: 1138, 1138, 1138, 582: 1138, 1138, 1138, 1138, 591: 1138, 1138, 1138, 1138, 1138, 1138, 599: 1138, 1138, 1138, 604: 1138, 611: 1138, 750: 1138}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6150, 3121, 3122, 3120}, - {1137, 1137, 9: 1137, 52: 1137, 549: 1137, 551: 1137, 558: 1137, 1137, 1137, 1137, 568: 1137, 1137, 1137, 574: 1137, 1137, 577: 1137, 1137, 1137, 582: 1137, 1137, 1137, 1137, 591: 1137, 1137, 1137, 1137, 1137, 1137, 599: 1137, 1137, 1137, 604: 1137, 611: 1137, 750: 1137}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6185}, + {348, 348, 9: 6077, 556: 6141, 1342: 6174}, + {350, 350}, + {355: 6176, 387: 6178, 573: 6179, 581: 6180, 969: 6177}, + {356, 356, 556: 6192, 583: 6190, 1278: 6191}, + {360, 360}, // 3225 - {596: 1107, 1032: 6172, 1253: 6176}, - {559: 6155, 6156, 596: 6169, 937: 6170}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6162}, - {596: 1109, 1032: 1109}, - {596: 1108, 1032: 1108}, + {580: 3135, 824: 6189}, + {580: 3135, 824: 6188}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6183, 3149, 3150, 3148, 1103: 6182, 1277: 6181}, + {357, 357, 9: 6186}, + {354, 354, 9: 354}, // 3230 - {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, 53: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 550: 1105, 580: 1105}, - {596: 6161}, - {596: 6160}, - {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, 53: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 550: 1103, 580: 1103}, - {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, 53: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 550: 1104, 580: 1104}, + {577: 6184}, + {557: 3708, 571: 3699, 580: 3703, 651: 3698, 3700, 659: 3702, 3701, 662: 3706, 3707, 671: 3705, 802: 6185, 3704}, + {352, 352, 9: 352}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6183, 3149, 3150, 3148, 1103: 6187}, + {353, 353, 9: 353}, // 3235 - {1112, 1112, 9: 1112, 52: 1112, 549: 6163, 551: 1112, 558: 1112, 1112, 1112, 6164, 569: 1112, 1112, 574: 1112, 1112, 577: 1112, 1112, 1112, 582: 1112, 1112, 1112, 591: 1112, 1112, 1112, 1112, 596: 1112, 599: 1112, 1112, 1112, 604: 1112, 937: 6152, 943: 6151}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6168}, - {550: 6165}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 6166}, - {9: 4120, 52: 6167}, + {358, 358}, + {359, 359}, + {557: 6194}, + {361, 361}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6183, 3149, 3150, 3148, 1103: 6182, 1277: 6193}, // 3240 - {1110, 1110, 9: 1110, 52: 1110, 549: 1110, 551: 1110, 558: 1110, 1110, 1110, 1110, 569: 1110, 1110, 574: 1110, 1110, 577: 1110, 1110, 1110, 582: 1110, 1110, 1110, 591: 1110, 1110, 1110, 1110, 596: 1110, 599: 1110, 1110, 1110, 604: 1110}, - {1111, 1111, 9: 1111, 52: 1111, 549: 1111, 551: 1111, 558: 1111, 1111, 1111, 1111, 569: 1111, 1111, 574: 1111, 1111, 577: 1111, 1111, 1111, 582: 1111, 1111, 1111, 586: 3835, 3833, 3834, 3832, 3830, 1111, 1111, 1111, 1111, 596: 1111, 599: 1111, 1111, 1111, 604: 1111, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6175}, - {596: 1107, 1032: 6172, 1253: 6171}, - {596: 6173}, + {355, 355, 9: 6186}, + {356, 356, 556: 6192, 1278: 6195}, + {362, 362}, + {2550, 2550, 9: 2550, 16: 2550, 18: 2550, 21: 2550, 559: 2550, 562: 2550, 578: 2550, 581: 2550, 586: 2550, 588: 2550, 608: 2550, 733: 2550, 737: 2550, 789: 2550, 2550}, + {455, 455}, // 3245 - {596: 1106}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6174}, - {1113, 1113, 9: 1113, 52: 1113, 549: 1113, 551: 1113, 558: 1113, 1113, 1113, 1113, 569: 1113, 1113, 574: 1113, 1113, 577: 1113, 1113, 1113, 582: 1113, 1113, 1113, 591: 1113, 1113, 1113, 1113, 596: 1113, 599: 1113, 1113, 1113, 604: 1113, 937: 6152, 943: 6151}, - {1114, 1114, 9: 1114, 52: 1114, 549: 1114, 551: 1114, 558: 1114, 1114, 1114, 1114, 569: 1114, 1114, 574: 1114, 1114, 577: 1114, 1114, 1114, 582: 1114, 1114, 1114, 591: 1114, 1114, 1114, 1114, 596: 1114, 599: 1114, 1114, 1114, 604: 1114, 937: 6152, 943: 6151}, - {596: 6177}, + {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, 1093, 576: 1093, 578: 1093, 580: 1093, 584: 1093, 1093, 1093, 598: 1093, 605: 1093, 610: 1093, 1093, 649: 1093, 1093, 1093, 1093, 654: 1093, 1093, 659: 1093, 1093, 662: 1093, 1093, 1093, 1093, 1093, 1093, 669: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 682: 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 721: 1093, 1093, 1093, 1093, 1093, 1093, 735: 1093, 740: 1093, 853: 1093, 1093, 857: 1093, 859: 1093, 861: 1093, 865: 1093, 874: 1093, 1093, 1093}, + {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, 573: 1091, 584: 1091, 1091, 1091, 667: 1091, 857: 1091, 859: 1091, 861: 1091}, + {2: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 10: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 53: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 555: 1298, 573: 1298, 585: 1298, 667: 1298, 857: 6201, 859: 6203, 861: 6202, 964: 6204, 1017: 6205}, + {2: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 10: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 53: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 555: 1301, 557: 1301, 1301, 1301, 1301, 564: 1301, 1301, 567: 1301, 1301, 1301, 571: 1301, 1301, 1301, 576: 1301, 578: 1301, 580: 1301, 584: 1301, 1301, 1301, 598: 1301, 605: 1301, 610: 1301, 1301, 649: 1301, 1301, 1301, 1301, 654: 1301, 1301, 659: 1301, 1301, 662: 1301, 1301, 1301, 1301, 1301, 1301, 669: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 682: 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 721: 1301, 1301, 1301, 1301, 1301, 1301, 735: 1301, 740: 1301, 853: 1301, 1301, 857: 1301, 859: 1301, 861: 1301, 865: 1301, 874: 1301, 1301, 1301}, + {2: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 10: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 53: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 555: 1300, 557: 1300, 1300, 1300, 1300, 564: 1300, 1300, 567: 1300, 1300, 1300, 571: 1300, 1300, 1300, 576: 1300, 578: 1300, 580: 1300, 584: 1300, 1300, 1300, 598: 1300, 605: 1300, 610: 1300, 1300, 649: 1300, 1300, 1300, 1300, 654: 1300, 1300, 659: 1300, 1300, 662: 1300, 1300, 1300, 1300, 1300, 1300, 669: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 682: 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 721: 1300, 1300, 1300, 1300, 1300, 1300, 735: 1300, 740: 1300, 853: 1300, 1300, 857: 1300, 859: 1300, 861: 1300, 865: 1300, 874: 1300, 1300, 1300}, // 3250 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6178}, - {549: 6179, 559: 6155, 6156, 6180, 593: 6154, 596: 6157, 599: 6153, 6158, 6159, 937: 6152, 943: 6151}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6184}, - {550: 6181}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 6182}, + {2: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 10: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 53: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 555: 1299, 557: 1299, 1299, 1299, 1299, 564: 1299, 1299, 567: 1299, 1299, 1299, 571: 1299, 1299, 1299, 576: 1299, 578: 1299, 580: 1299, 584: 1299, 1299, 1299, 598: 1299, 605: 1299, 610: 1299, 1299, 649: 1299, 1299, 1299, 1299, 654: 1299, 1299, 659: 1299, 1299, 662: 1299, 1299, 1299, 1299, 1299, 1299, 669: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 682: 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 721: 1299, 1299, 1299, 1299, 1299, 1299, 735: 1299, 740: 1299, 853: 1299, 1299, 857: 1299, 859: 1299, 861: 1299, 865: 1299, 874: 1299, 1299, 1299}, + {2: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 10: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 53: 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 555: 1297, 573: 1297, 584: 1297, 1297, 1297, 667: 1297}, + {2: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 10: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 53: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 555: 2187, 573: 4854, 585: 2187, 667: 2187, 990: 6206}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 667: 6210, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6209, 987: 6207, 1021: 6208}, + {1171, 1171, 9: 1171, 52: 1171, 554: 1171, 556: 1171, 563: 1171, 566: 1171, 574: 1171, 1171, 579: 1171, 581: 1171, 1171, 1171, 1171, 587: 1171, 1171, 1171, 596: 1171, 1171, 599: 1171}, // 3255 - {9: 4120, 52: 6183}, - {1115, 1115, 9: 1115, 52: 1115, 549: 1115, 551: 1115, 558: 1115, 1115, 1115, 1115, 569: 1115, 1115, 574: 1115, 1115, 577: 1115, 1115, 1115, 582: 1115, 1115, 1115, 591: 1115, 1115, 1115, 1115, 596: 1115, 599: 1115, 1115, 1115, 604: 1115}, - {1116, 1116, 9: 1116, 52: 1116, 549: 1116, 551: 1116, 558: 1116, 1116, 1116, 1116, 569: 1116, 1116, 574: 1116, 1116, 577: 1116, 1116, 1116, 582: 1116, 1116, 1116, 586: 3835, 3833, 3834, 3832, 3830, 1116, 1116, 1116, 1116, 596: 1116, 599: 1116, 1116, 1116, 604: 1116, 820: 3831, 3829}, - {1119, 1119, 9: 1119, 52: 1119, 549: 6186, 551: 1119, 558: 1119, 6155, 6156, 6187, 569: 1119, 1119, 574: 1119, 1119, 577: 1119, 1119, 1119, 582: 1119, 1119, 1119, 591: 1119, 1119, 6154, 1119, 596: 6157, 599: 6153, 6158, 6159, 604: 1119, 937: 6152, 943: 6151}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6191}, + {9: 6265, 581: 6334}, + {9: 1169, 564: 6228, 6229, 581: 6319, 598: 6227, 601: 6230, 603: 6226, 6231, 606: 6232, 944: 6225, 949: 6224}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6316, 3149, 3150, 3148}, + {1167, 1167, 9: 1167, 52: 1167, 554: 1167, 556: 1167, 563: 1167, 1167, 1167, 1167, 574: 1167, 1167, 579: 1167, 581: 1167, 1167, 1167, 1167, 587: 1167, 1167, 1167, 596: 1167, 1167, 1167, 1167, 601: 1167, 603: 1167, 1167, 606: 1167, 609: 1167}, + {1166, 1166, 9: 1166, 52: 1166, 554: 1166, 556: 1166, 563: 1166, 1166, 1166, 1166, 574: 1166, 1166, 579: 1166, 581: 1166, 1166, 1166, 1166, 587: 1166, 1166, 1166, 596: 1166, 1166, 1166, 1166, 601: 1166, 603: 1166, 1166, 606: 1166, 609: 1166}, // 3260 - {550: 6188}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 6189}, - {9: 4120, 52: 6190}, - {1117, 1117, 9: 1117, 52: 1117, 549: 1117, 551: 1117, 558: 1117, 1117, 1117, 1117, 569: 1117, 1117, 574: 1117, 1117, 577: 1117, 1117, 1117, 582: 1117, 1117, 1117, 591: 1117, 1117, 1117, 1117, 596: 1117, 599: 1117, 1117, 1117, 604: 1117}, - {1118, 1118, 9: 1118, 52: 1118, 549: 1118, 551: 1118, 558: 1118, 1118, 1118, 1118, 569: 1118, 1118, 574: 1118, 1118, 577: 1118, 1118, 1118, 582: 1118, 1118, 1118, 586: 3835, 3833, 3834, 3832, 3830, 1118, 1118, 1118, 1118, 596: 1118, 599: 1118, 1118, 1118, 604: 1118, 820: 3831, 3829}, + {1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 556: 1162, 561: 1162, 563: 1162, 1162, 1162, 1162, 570: 6269, 573: 1162, 1162, 1162, 579: 1162, 581: 1162, 1162, 1162, 1162, 587: 1162, 1162, 1162, 1162, 596: 1162, 1162, 1162, 1162, 1162, 1162, 603: 1162, 1162, 606: 1162, 609: 1162, 616: 1162, 755: 1162, 996: 6268}, + {1160, 1160, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1160, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 1160, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 1160, 556: 1160, 561: 6222, 563: 1160, 1160, 1160, 1160, 574: 1160, 1160, 579: 1160, 581: 1160, 1160, 1160, 1160, 587: 1160, 1160, 1160, 596: 1160, 1160, 1160, 1160, 601: 1160, 603: 1160, 1160, 606: 1160, 609: 1160, 796: 6221, 3149, 3150, 3148, 1044: 6220, 6219}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 3005, 572: 3004, 585: 4052, 632: 3003, 667: 6210, 680: 2999, 796: 4051, 3149, 3150, 3148, 6218, 829: 6213, 831: 3971, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 3973, 3972, 919: 6212, 924: 6211, 6217, 987: 6207, 1021: 6216}, + {9: 6265, 52: 6266}, + {1169, 1169, 9: 1169, 52: 1169, 554: 1169, 556: 1169, 563: 1169, 6228, 6229, 1169, 574: 1169, 1169, 579: 1169, 581: 1169, 1169, 1169, 1169, 587: 1169, 1169, 1169, 596: 1169, 1169, 6227, 1169, 601: 6230, 603: 6226, 6231, 606: 6232, 944: 6225, 949: 6224}, // 3265 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 662: 6137, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6144, 981: 6194}, - {1143, 1143, 9: 1143, 52: 1143, 549: 1143, 551: 1143, 558: 1143, 1143, 1143, 1143, 569: 1143, 1143, 574: 1143, 1143, 577: 1143, 1143, 1143, 582: 1143, 1143, 1143, 591: 1143, 1143, 1143, 1143, 596: 1143, 599: 1143, 1143, 1143, 604: 1143}, - {1150, 1150, 9: 1150, 52: 1150, 549: 1150, 551: 1150, 558: 1150, 561: 1150, 569: 1150, 1150, 574: 1150, 1150, 577: 1150, 1150, 1150, 582: 1150, 1150, 1150, 591: 1150, 1150, 594: 1150}, - {1140, 1140, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1140, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 1140, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 1140, 551: 1140, 556: 6149, 558: 1140, 1140, 1140, 1140, 568: 1140, 1140, 1140, 574: 1140, 1140, 577: 1140, 1140, 1140, 582: 1140, 1140, 1140, 1140, 591: 1140, 1140, 1140, 1140, 1140, 1140, 599: 1140, 1140, 1140, 604: 1140, 611: 1140, 750: 1140, 791: 6148, 3121, 3122, 3120, 1038: 6147, 6200}, - {550: 6197}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1160, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 4116, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 561: 6222, 563: 1053, 1160, 1160, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 598: 1160, 601: 1160, 603: 1160, 1160, 606: 1160, 796: 6221, 3149, 3150, 3148, 867: 3984, 3985, 1044: 6220, 6219}, + {1164, 1164, 9: 1164, 52: 1164, 554: 1164, 556: 1164, 563: 1164, 1164, 1164, 1164, 574: 1164, 1164, 579: 1164, 581: 1164, 1164, 1164, 1164, 587: 1164, 1164, 1164, 596: 1164, 1164, 1164, 1164, 601: 1164, 603: 1164, 1164, 606: 1164, 609: 1164}, + {1159, 1159, 9: 1159, 52: 1159, 554: 1159, 556: 1159, 563: 1159, 1159, 1159, 1159, 573: 1159, 1159, 1159, 579: 1159, 581: 1159, 1159, 1159, 1159, 587: 1159, 1159, 1159, 1159, 596: 1159, 1159, 1159, 1159, 1159, 1159, 603: 1159, 1159, 606: 1159, 609: 1159, 616: 1159, 755: 1159}, + {1158, 1158, 9: 1158, 52: 1158, 554: 1158, 556: 1158, 563: 1158, 1158, 1158, 1158, 573: 1158, 1158, 1158, 579: 1158, 581: 1158, 1158, 1158, 1158, 587: 1158, 1158, 1158, 1158, 596: 1158, 1158, 1158, 1158, 1158, 1158, 603: 1158, 1158, 606: 1158, 609: 1158, 616: 1158, 755: 1158}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6223, 3149, 3150, 3148}, // 3270 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 6198}, - {9: 5379, 52: 6199}, - {1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 556: 1141, 558: 1141, 1141, 1141, 1141, 567: 1141, 1141, 1141, 1141, 574: 1141, 1141, 577: 1141, 1141, 1141, 582: 1141, 1141, 1141, 1141, 591: 1141, 1141, 1141, 1141, 1141, 1141, 599: 1141, 1141, 1141, 604: 1141, 611: 1141, 627: 1141, 647: 1141, 668: 1141, 729: 1141, 741: 1141, 750: 1141}, - {2168, 2168, 9: 2168, 52: 2168, 549: 2168, 551: 2168, 558: 2168, 2168, 2168, 2168, 568: 2168, 2168, 2168, 574: 2168, 2168, 577: 2168, 2168, 2168, 582: 2168, 2168, 2168, 2168, 591: 2168, 2168, 2168, 2168, 2168, 2168, 599: 2168, 2168, 2168, 604: 2168, 611: 2168, 750: 4746, 1017: 6201, 1347: 6202}, - {2167, 2167, 9: 2167, 52: 2167, 549: 2167, 551: 2167, 558: 2167, 2167, 2167, 2167, 568: 2167, 2167, 2167, 574: 2167, 2167, 577: 2167, 2167, 2167, 582: 2167, 2167, 2167, 2167, 591: 2167, 2167, 2167, 2167, 2167, 2167, 599: 2167, 2167, 2167, 604: 2167, 611: 2167}, + {1157, 1157, 9: 1157, 52: 1157, 554: 1157, 556: 1157, 563: 1157, 1157, 1157, 1157, 573: 1157, 1157, 1157, 579: 1157, 581: 1157, 1157, 1157, 1157, 587: 1157, 1157, 1157, 1157, 596: 1157, 1157, 1157, 1157, 1157, 1157, 603: 1157, 1157, 606: 1157, 609: 1157, 616: 1157, 755: 1157}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6258}, + {601: 1127, 1037: 6245, 1259: 6249}, + {564: 6228, 6229, 601: 6242, 944: 6243}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6235}, // 3275 - {1121, 1121, 9: 1121, 52: 1121, 549: 1121, 551: 1121, 558: 1121, 1121, 1121, 1121, 568: 6205, 1121, 1121, 574: 1121, 1121, 577: 1121, 1121, 1121, 582: 1121, 1121, 1121, 6206, 591: 1121, 1121, 1121, 1121, 6204, 1121, 599: 1121, 1121, 1121, 604: 1121, 611: 1121, 1074: 6208, 6207, 1213: 6209, 6203}, - {1236, 1236, 9: 1236, 52: 1236, 549: 1236, 551: 1236, 558: 1236, 1236, 1236, 1236, 569: 1236, 1236, 574: 1236, 1236, 577: 1236, 1236, 1236, 582: 1236, 1236, 1236, 591: 1236, 1236, 1236, 1236, 596: 1236, 599: 1236, 1236, 1236, 604: 1236, 611: 6224, 1510: 6225}, - {663: 5012, 729: 5013, 938: 6223}, - {663: 5012, 729: 5013, 938: 6222}, - {663: 5012, 729: 5013, 938: 6221}, + {601: 1129, 1037: 1129}, + {601: 1128, 1037: 1128}, + {2: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 10: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 53: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 555: 1125, 585: 1125}, + {601: 6234}, + {601: 6233}, // 3280 - {550: 1133, 578: 6211, 1402: 6212}, - {1123, 1123, 9: 1123, 52: 1123, 549: 1123, 551: 1123, 558: 1123, 1123, 1123, 1123, 568: 1123, 1123, 1123, 574: 1123, 1123, 577: 1123, 1123, 1123, 582: 1123, 1123, 1123, 1123, 591: 1123, 1123, 1123, 1123, 1123, 1123, 599: 1123, 1123, 1123, 604: 1123, 611: 1123}, - {1120, 1120, 9: 1120, 52: 1120, 549: 1120, 551: 1120, 558: 1120, 1120, 1120, 1120, 568: 6205, 1120, 1120, 574: 1120, 1120, 577: 1120, 1120, 1120, 582: 1120, 1120, 1120, 6206, 591: 1120, 1120, 1120, 1120, 6204, 1120, 599: 1120, 1120, 1120, 604: 1120, 611: 1120, 1074: 6210, 6207}, - {1122, 1122, 9: 1122, 52: 1122, 549: 1122, 551: 1122, 558: 1122, 1122, 1122, 1122, 568: 1122, 1122, 1122, 574: 1122, 1122, 577: 1122, 1122, 1122, 582: 1122, 1122, 1122, 1122, 591: 1122, 1122, 1122, 1122, 1122, 1122, 599: 1122, 1122, 1122, 604: 1122, 611: 1122}, - {584: 6217, 591: 6218, 596: 6216}, + {2: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 10: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 53: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 555: 1123, 585: 1123}, + {2: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 10: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 53: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 555: 1124, 585: 1124}, + {1132, 1132, 9: 1132, 52: 1132, 554: 6236, 556: 1132, 563: 1132, 1132, 1132, 6237, 574: 1132, 1132, 579: 1132, 581: 1132, 1132, 1132, 1132, 587: 1132, 1132, 1132, 596: 1132, 1132, 1132, 1132, 601: 1132, 603: 1132, 1132, 606: 1132, 609: 1132, 944: 6225, 949: 6224}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6241}, + {555: 6238}, // 3285 - {550: 6213}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1128, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 1128, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 678: 5682, 791: 5681, 3121, 3122, 3120, 986: 6214}, - {9: 5684, 52: 6215}, - {1129, 1129, 9: 1129, 52: 1129, 549: 1129, 551: 1129, 558: 1129, 1129, 1129, 1129, 568: 1129, 1129, 1129, 574: 1129, 1129, 577: 1129, 1129, 1129, 582: 1129, 1129, 1129, 1129, 591: 1129, 1129, 1129, 1129, 1129, 1129, 599: 1129, 1129, 1129, 604: 1129, 611: 1129}, - {550: 1132}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 6239}, + {9: 4154, 52: 6240}, + {1130, 1130, 9: 1130, 52: 1130, 554: 1130, 556: 1130, 563: 1130, 1130, 1130, 1130, 574: 1130, 1130, 579: 1130, 581: 1130, 1130, 1130, 1130, 587: 1130, 1130, 1130, 596: 1130, 1130, 1130, 1130, 601: 1130, 603: 1130, 1130, 606: 1130, 609: 1130}, + {1131, 1131, 9: 1131, 52: 1131, 554: 1131, 556: 1131, 563: 1131, 1131, 1131, 1131, 574: 1131, 1131, 579: 1131, 581: 1131, 1131, 1131, 1131, 587: 1131, 1131, 1131, 591: 3869, 3867, 3868, 3866, 3864, 1131, 1131, 1131, 1131, 601: 1131, 603: 1131, 1131, 606: 1131, 609: 1131, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6248}, // 3290 - {741: 6220}, - {741: 6219}, - {550: 1130}, - {550: 1131}, - {550: 1134, 578: 1134}, + {601: 1127, 1037: 6245, 1259: 6244}, + {601: 6246}, + {601: 1126}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6247}, + {1133, 1133, 9: 1133, 52: 1133, 554: 1133, 556: 1133, 563: 1133, 1133, 1133, 1133, 574: 1133, 1133, 579: 1133, 581: 1133, 1133, 1133, 1133, 587: 1133, 1133, 1133, 596: 1133, 1133, 1133, 1133, 601: 1133, 603: 1133, 1133, 606: 1133, 609: 1133, 944: 6225, 949: 6224}, // 3295 - {550: 1135, 578: 1135}, - {550: 1136, 578: 1136}, - {120: 6229, 385: 6228, 455: 6227, 550: 1233, 1509: 6226}, - {1145, 1145, 9: 1145, 52: 1145, 549: 1145, 551: 1145, 558: 1145, 1145, 1145, 1145, 569: 1145, 1145, 574: 1145, 1145, 577: 1145, 1145, 1145, 582: 1145, 1145, 1145, 591: 1145, 1145, 1145, 1145, 596: 1145, 599: 1145, 1145, 1145, 604: 1145}, - {550: 6230}, + {1134, 1134, 9: 1134, 52: 1134, 554: 1134, 556: 1134, 563: 1134, 1134, 1134, 1134, 574: 1134, 1134, 579: 1134, 581: 1134, 1134, 1134, 1134, 587: 1134, 1134, 1134, 596: 1134, 1134, 1134, 1134, 601: 1134, 603: 1134, 1134, 606: 1134, 609: 1134, 944: 6225, 949: 6224}, + {601: 6250}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6251}, + {554: 6252, 564: 6228, 6229, 6253, 598: 6227, 601: 6230, 603: 6226, 6231, 606: 6232, 944: 6225, 949: 6224}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6257}, // 3300 - {550: 1232}, - {550: 1231}, - {550: 1230}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 6232, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6231}, - {52: 1229, 432: 6240, 586: 3835, 3833, 3834, 3832, 3830, 607: 6239, 820: 3831, 3829, 1511: 6238}, + {555: 6254}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 6255}, + {9: 4154, 52: 6256}, + {1135, 1135, 9: 1135, 52: 1135, 554: 1135, 556: 1135, 563: 1135, 1135, 1135, 1135, 574: 1135, 1135, 579: 1135, 581: 1135, 1135, 1135, 1135, 587: 1135, 1135, 1135, 596: 1135, 1135, 1135, 1135, 601: 1135, 603: 1135, 1135, 606: 1135, 609: 1135}, + {1136, 1136, 9: 1136, 52: 1136, 554: 1136, 556: 1136, 563: 1136, 1136, 1136, 1136, 574: 1136, 1136, 579: 1136, 581: 1136, 1136, 1136, 1136, 587: 1136, 1136, 1136, 591: 3869, 3867, 3868, 3866, 3864, 1136, 1136, 1136, 1136, 601: 1136, 603: 1136, 1136, 606: 1136, 609: 1136, 826: 3865, 3863}, // 3305 - {1226, 1226, 9: 1226, 52: 1226, 285: 6234, 549: 1226, 551: 1226, 558: 1226, 1226, 1226, 1226, 569: 1226, 1226, 574: 1226, 1226, 577: 1226, 1226, 1226, 582: 1226, 1226, 1226, 591: 1226, 1226, 1226, 1226, 596: 1226, 599: 1226, 1226, 1226, 604: 1226, 1279: 6233}, - {1234, 1234, 9: 1234, 52: 1234, 549: 1234, 551: 1234, 558: 1234, 1234, 1234, 1234, 569: 1234, 1234, 574: 1234, 1234, 577: 1234, 1234, 1234, 582: 1234, 1234, 1234, 591: 1234, 1234, 1234, 1234, 596: 1234, 599: 1234, 1234, 1234, 604: 1234}, - {550: 6235}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6236}, - {52: 6237, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {1139, 1139, 9: 1139, 52: 1139, 554: 6259, 556: 1139, 563: 1139, 6228, 6229, 6260, 574: 1139, 1139, 579: 1139, 581: 1139, 1139, 1139, 1139, 587: 1139, 1139, 1139, 596: 1139, 1139, 6227, 1139, 601: 6230, 603: 6226, 6231, 606: 6232, 609: 1139, 944: 6225, 949: 6224}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6264}, + {555: 6261}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 6262}, + {9: 4154, 52: 6263}, // 3310 - {1225, 1225, 9: 1225, 52: 1225, 549: 1225, 551: 1225, 558: 1225, 1225, 1225, 1225, 569: 1225, 1225, 574: 1225, 1225, 577: 1225, 1225, 1225, 582: 1225, 1225, 1225, 591: 1225, 1225, 1225, 1225, 596: 1225, 599: 1225, 1225, 1225, 604: 1225}, - {52: 6241}, - {52: 1228}, - {52: 1227}, - {1226, 1226, 9: 1226, 52: 1226, 285: 6234, 549: 1226, 551: 1226, 558: 1226, 1226, 1226, 1226, 569: 1226, 1226, 574: 1226, 1226, 577: 1226, 1226, 1226, 582: 1226, 1226, 1226, 591: 1226, 1226, 1226, 1226, 596: 1226, 599: 1226, 1226, 1226, 604: 1226, 1279: 6242}, + {1137, 1137, 9: 1137, 52: 1137, 554: 1137, 556: 1137, 563: 1137, 1137, 1137, 1137, 574: 1137, 1137, 579: 1137, 581: 1137, 1137, 1137, 1137, 587: 1137, 1137, 1137, 596: 1137, 1137, 1137, 1137, 601: 1137, 603: 1137, 1137, 606: 1137, 609: 1137}, + {1138, 1138, 9: 1138, 52: 1138, 554: 1138, 556: 1138, 563: 1138, 1138, 1138, 1138, 574: 1138, 1138, 579: 1138, 581: 1138, 1138, 1138, 1138, 587: 1138, 1138, 1138, 591: 3869, 3867, 3868, 3866, 3864, 1138, 1138, 1138, 1138, 601: 1138, 603: 1138, 1138, 606: 1138, 609: 1138, 826: 3865, 3863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 667: 6210, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6217, 987: 6267}, + {1163, 1163, 9: 1163, 52: 1163, 554: 1163, 556: 1163, 563: 1163, 1163, 1163, 1163, 574: 1163, 1163, 579: 1163, 581: 1163, 1163, 1163, 1163, 587: 1163, 1163, 1163, 596: 1163, 1163, 1163, 1163, 601: 1163, 603: 1163, 1163, 606: 1163, 609: 1163}, + {1170, 1170, 9: 1170, 52: 1170, 554: 1170, 556: 1170, 563: 1170, 566: 1170, 574: 1170, 1170, 579: 1170, 581: 1170, 1170, 1170, 1170, 587: 1170, 1170, 1170, 596: 1170, 1170, 599: 1170}, // 3315 - {1235, 1235, 9: 1235, 52: 1235, 549: 1235, 551: 1235, 558: 1235, 1235, 1235, 1235, 569: 1235, 1235, 574: 1235, 1235, 577: 1235, 1235, 1235, 582: 1235, 1235, 1235, 591: 1235, 1235, 1235, 1235, 596: 1235, 599: 1235, 1235, 1235, 604: 1235}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6244}, - {559: 6155, 6156, 593: 6154, 596: 6157, 599: 6153, 6158, 6159, 604: 6245, 937: 6152, 943: 6151}, - {1148, 1148, 9: 1148, 52: 1148, 549: 1148, 551: 1148, 558: 1148, 561: 1148, 569: 1148, 1148, 574: 1148, 1148, 577: 1148, 1148, 1148, 582: 1148, 1148, 1148, 591: 1148, 1148, 594: 1148}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 6247, 1018: 6248, 1048: 6249}, + {1160, 1160, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1160, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 1160, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 1160, 556: 1160, 561: 6222, 563: 1160, 1160, 1160, 1160, 573: 1160, 1160, 1160, 579: 1160, 581: 1160, 1160, 1160, 1160, 587: 1160, 1160, 1160, 1160, 596: 1160, 1160, 1160, 1160, 1160, 1160, 603: 1160, 1160, 606: 1160, 609: 1160, 616: 1160, 755: 1160, 796: 6221, 3149, 3150, 3148, 1044: 6220, 6273}, + {555: 6270}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 6271}, + {9: 5452, 52: 6272}, + {1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 561: 1161, 563: 1161, 1161, 1161, 1161, 572: 1161, 1161, 1161, 1161, 579: 1161, 581: 1161, 1161, 1161, 1161, 587: 1161, 1161, 1161, 1161, 596: 1161, 1161, 1161, 1161, 1161, 1161, 603: 1161, 1161, 606: 1161, 609: 1161, 616: 1161, 632: 1161, 653: 1161, 680: 1161, 734: 1161, 746: 1161, 755: 1161}, // 3320 - {573: 6258, 737: 6259, 912: 6257}, - {2692, 2692, 9: 2692, 561: 2692, 577: 2692, 583: 2692, 2692}, - {438, 438, 9: 6250, 561: 438, 577: 438, 583: 4767, 438, 909: 4768, 6251}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 6247, 1018: 6256}, - {1523, 1523, 561: 1523, 577: 1523, 584: 3947, 862: 4001, 931: 6252}, + {2194, 2194, 9: 2194, 52: 2194, 554: 2194, 556: 2194, 563: 2194, 2194, 2194, 2194, 573: 2194, 2194, 2194, 579: 2194, 581: 2194, 2194, 2194, 2194, 587: 2194, 2194, 2194, 2194, 596: 2194, 2194, 2194, 2194, 2194, 2194, 603: 2194, 2194, 606: 2194, 609: 2194, 616: 2194, 755: 4819, 1023: 6274, 1357: 6275}, + {2193, 2193, 9: 2193, 52: 2193, 554: 2193, 556: 2193, 563: 2193, 2193, 2193, 2193, 573: 2193, 2193, 2193, 579: 2193, 581: 2193, 2193, 2193, 2193, 587: 2193, 2193, 2193, 2193, 596: 2193, 2193, 2193, 2193, 2193, 2193, 603: 2193, 2193, 606: 2193, 609: 2193, 616: 2193}, + {1141, 1141, 9: 1141, 52: 1141, 554: 1141, 556: 1141, 563: 1141, 1141, 1141, 1141, 573: 6278, 1141, 1141, 579: 1141, 581: 1141, 1141, 1141, 1141, 587: 1141, 1141, 1141, 6279, 596: 1141, 1141, 1141, 1141, 6277, 1141, 603: 1141, 1141, 606: 1141, 609: 1141, 616: 1141, 1080: 6281, 6280, 1219: 6282, 6276}, + {1256, 1256, 9: 1256, 52: 1256, 554: 1256, 556: 1256, 563: 1256, 1256, 1256, 1256, 574: 1256, 1256, 579: 1256, 581: 1256, 1256, 1256, 1256, 587: 1256, 1256, 1256, 596: 1256, 1256, 1256, 1256, 601: 1256, 603: 1256, 1256, 606: 1256, 609: 1256, 616: 6297, 1520: 6298}, + {668: 5085, 734: 5086, 945: 6296}, // 3325 - {1102, 1102, 561: 1102, 577: 6253, 1223: 6254}, - {576: 3107, 661: 3958, 819: 3956, 834: 3957, 1006: 6255}, - {442, 442, 561: 442}, - {1101, 1101, 561: 1101}, - {2691, 2691, 9: 2691, 561: 2691, 577: 2691, 583: 2691, 2691}, + {668: 5085, 734: 5086, 945: 6295}, + {668: 5085, 734: 5086, 945: 6294}, + {555: 1153, 583: 6284, 1412: 6285}, + {1143, 1143, 9: 1143, 52: 1143, 554: 1143, 556: 1143, 563: 1143, 1143, 1143, 1143, 573: 1143, 1143, 1143, 579: 1143, 581: 1143, 1143, 1143, 1143, 587: 1143, 1143, 1143, 1143, 596: 1143, 1143, 1143, 1143, 1143, 1143, 603: 1143, 1143, 606: 1143, 609: 1143, 616: 1143}, + {1140, 1140, 9: 1140, 52: 1140, 554: 1140, 556: 1140, 563: 1140, 1140, 1140, 1140, 573: 6278, 1140, 1140, 579: 1140, 581: 1140, 1140, 1140, 1140, 587: 1140, 1140, 1140, 6279, 596: 1140, 1140, 1140, 1140, 6277, 1140, 603: 1140, 1140, 606: 1140, 609: 1140, 616: 1140, 1080: 6283, 6280}, // 3330 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6260}, - {2: 997, 997, 997, 997, 997, 997, 997, 10: 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 53: 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 552: 997, 997, 997, 997, 559: 997, 997, 562: 997, 997, 997, 566: 997, 997, 571: 997, 997, 576: 997, 598: 997, 605: 997, 997, 638: 997, 645: 997, 997, 648: 997, 997, 997, 655: 997, 997, 997, 997, 997, 997, 997, 997, 664: 997, 997, 997, 997, 669: 997, 997, 997, 997, 997, 997, 997, 677: 997, 679: 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 706: 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 730: 997}, - {2: 996, 996, 996, 996, 996, 996, 996, 10: 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 53: 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 552: 996, 996, 996, 996, 559: 996, 996, 562: 996, 996, 996, 566: 996, 996, 571: 996, 996, 576: 996, 598: 996, 605: 996, 996, 638: 996, 645: 996, 996, 648: 996, 996, 996, 655: 996, 996, 996, 996, 996, 996, 996, 996, 664: 996, 996, 996, 996, 669: 996, 996, 996, 996, 996, 996, 996, 677: 996, 679: 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 706: 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 730: 996}, - {2693, 2693, 9: 2693, 561: 2693, 577: 2693, 583: 2693, 2693}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 6247, 1018: 6248, 1048: 6262}, + {1142, 1142, 9: 1142, 52: 1142, 554: 1142, 556: 1142, 563: 1142, 1142, 1142, 1142, 573: 1142, 1142, 1142, 579: 1142, 581: 1142, 1142, 1142, 1142, 587: 1142, 1142, 1142, 1142, 596: 1142, 1142, 1142, 1142, 1142, 1142, 603: 1142, 1142, 606: 1142, 609: 1142, 616: 1142}, + {589: 6290, 596: 6291, 601: 6289}, + {555: 6286}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1148, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 1148, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 720: 5755, 796: 5754, 3149, 3150, 3148, 992: 6287}, + {9: 5757, 52: 6288}, // 3335 - {438, 438, 9: 6250, 561: 438, 583: 4767, 909: 4768, 6263}, - {441, 441, 561: 441}, - {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, 580: 588}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6266}, - {587, 587}, + {1149, 1149, 9: 1149, 52: 1149, 554: 1149, 556: 1149, 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, 603: 1149, 1149, 606: 1149, 609: 1149, 616: 1149}, + {555: 1152}, + {746: 6293}, + {746: 6292}, + {555: 1150}, // 3340 - {22: 6277, 167: 6270, 5824, 171: 785, 253: 6269, 259: 6280, 272: 6278, 289: 6271, 303: 6275, 323: 6279, 327: 6272, 605: 6276, 627: 5823, 1110: 6274, 1391: 6268, 1419: 6273}, - {795, 795}, - {792, 792}, - {791, 791}, - {281: 6287}, + {555: 1151}, + {555: 1154, 583: 1154}, + {555: 1155, 583: 1155}, + {555: 1156, 583: 1156}, + {120: 6302, 389: 6301, 460: 6300, 555: 1253, 1519: 6299}, // 3345 - {789, 789}, - {171: 6286}, - {776, 776, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 551: 776, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 4905, 1319: 6281}, - {786, 786}, - {171: 784}, + {1165, 1165, 9: 1165, 52: 1165, 554: 1165, 556: 1165, 563: 1165, 1165, 1165, 1165, 574: 1165, 1165, 579: 1165, 581: 1165, 1165, 1165, 1165, 587: 1165, 1165, 1165, 596: 1165, 1165, 1165, 1165, 601: 1165, 603: 1165, 1165, 606: 1165, 609: 1165}, + {555: 6303}, + {555: 1252}, + {555: 1251}, + {555: 1250}, // 3350 - {171: 783}, - {171: 782}, - {171: 781}, - {171: 780}, - {774, 774, 551: 6283, 1539: 6282}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 6305, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6304}, + {52: 1249, 436: 6313, 591: 3869, 3867, 3868, 3866, 3864, 612: 6312, 826: 3865, 3863, 1521: 6311}, + {1246, 1246, 9: 1246, 52: 1246, 290: 6307, 554: 1246, 556: 1246, 563: 1246, 1246, 1246, 1246, 574: 1246, 1246, 579: 1246, 581: 1246, 1246, 1246, 1246, 587: 1246, 1246, 1246, 596: 1246, 1246, 1246, 1246, 601: 1246, 603: 1246, 1246, 606: 1246, 609: 1246, 1285: 6306}, + {1254, 1254, 9: 1254, 52: 1254, 554: 1254, 556: 1254, 563: 1254, 1254, 1254, 1254, 574: 1254, 1254, 579: 1254, 581: 1254, 1254, 1254, 1254, 587: 1254, 1254, 1254, 596: 1254, 1254, 1254, 1254, 601: 1254, 603: 1254, 1254, 606: 1254, 609: 1254}, + {555: 6308}, // 3355 - {787, 787}, - {748: 6284}, - {582: 6285}, - {773, 773}, - {788, 788}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6309}, + {52: 6310, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {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, 603: 1245, 1245, 606: 1245, 609: 1245}, + {52: 6314}, + {52: 1248}, // 3360 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6288, 3121, 3122, 3120, 1091: 6289}, - {794, 794, 9: 794}, - {790, 790, 9: 6290}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6291, 3121, 3122, 3120}, - {793, 793, 9: 793}, + {52: 1247}, + {1246, 1246, 9: 1246, 52: 1246, 290: 6307, 554: 1246, 556: 1246, 563: 1246, 1246, 1246, 1246, 574: 1246, 1246, 579: 1246, 581: 1246, 1246, 1246, 1246, 587: 1246, 1246, 1246, 596: 1246, 1246, 1246, 1246, 601: 1246, 603: 1246, 1246, 606: 1246, 609: 1246, 1285: 6315}, + {1255, 1255, 9: 1255, 52: 1255, 554: 1255, 556: 1255, 563: 1255, 1255, 1255, 1255, 574: 1255, 1255, 579: 1255, 581: 1255, 1255, 1255, 1255, 587: 1255, 1255, 1255, 596: 1255, 1255, 1255, 1255, 601: 1255, 603: 1255, 1255, 606: 1255, 609: 1255}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6317}, + {564: 6228, 6229, 598: 6227, 601: 6230, 603: 6226, 6231, 606: 6232, 609: 6318, 944: 6225, 949: 6224}, // 3365 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 6411, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 6412, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 6410, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6413}, - {627: 6396, 729: 6397}, - {729: 6393}, - {627: 6388, 729: 6387}, - {627: 6385}, + {1168, 1168, 9: 1168, 52: 1168, 554: 1168, 556: 1168, 563: 1168, 566: 1168, 574: 1168, 1168, 579: 1168, 581: 1168, 1168, 1168, 1168, 587: 1168, 1168, 1168, 596: 1168, 1168, 599: 1168}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 6320, 1024: 6321, 1054: 6322}, + {577: 6331, 744: 6332, 917: 6330}, + {2718, 2718, 9: 2718, 566: 2718, 582: 2718, 588: 2718, 2718}, + {453, 453, 9: 6323, 566: 453, 582: 453, 588: 4840, 453, 914: 4841, 6324}, // 3370 - {267: 6382}, - {267: 6379}, - {267: 6373}, - {196: 6370, 287: 6372, 360: 6371, 407: 6368, 428: 6369}, - {268: 6365, 271: 6364}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 6320, 1024: 6329}, + {1544, 1544, 566: 1544, 582: 1544, 589: 3981, 867: 4035, 937: 6325}, + {1122, 1122, 566: 1122, 582: 6326, 1229: 6327}, + {580: 3135, 666: 3992, 824: 3990, 839: 3991, 1012: 6328}, + {457, 457, 566: 457}, // 3375 - {627: 6323}, - {94: 6319, 196: 6317, 236: 806, 258: 6321, 332: 6320, 1497: 6318}, - {196: 6316}, - {196: 6315}, - {293: 6310}, + {1121, 1121, 566: 1121}, + {2717, 2717, 9: 2717, 566: 2717, 582: 2717, 588: 2717, 2717}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6333}, + {2: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 10: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 53: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 557: 1017, 1017, 1017, 1017, 564: 1017, 1017, 567: 1017, 1017, 1017, 571: 1017, 1017, 576: 1017, 578: 1017, 580: 1017, 605: 1017, 610: 1017, 1017, 649: 1017, 1017, 1017, 1017, 654: 1017, 1017, 659: 1017, 1017, 662: 1017, 1017, 1017, 1017, 1017, 1017, 669: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 682: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 721: 1017, 1017, 1017, 1017, 1017, 1017, 735: 1017}, + {2: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 10: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 53: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 557: 1016, 1016, 1016, 1016, 564: 1016, 1016, 567: 1016, 1016, 1016, 571: 1016, 1016, 576: 1016, 578: 1016, 580: 1016, 605: 1016, 610: 1016, 1016, 649: 1016, 1016, 1016, 1016, 654: 1016, 1016, 659: 1016, 1016, 662: 1016, 1016, 1016, 1016, 1016, 1016, 669: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 682: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 721: 1016, 1016, 1016, 1016, 1016, 1016, 735: 1016}, // 3380 - {293: 6308}, - {203: 6309}, - {912, 912}, - {203: 6311}, - {445: 6313, 678: 6312, 1352: 6314}, + {2719, 2719, 9: 2719, 566: 2719, 582: 2719, 588: 2719, 2719}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 6320, 1024: 6321, 1054: 6335}, + {453, 453, 9: 6323, 566: 453, 588: 4840, 914: 4841, 6336}, + {456, 456, 566: 456}, + {2: 603, 603, 603, 603, 603, 603, 603, 10: 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, 603, 603, 603, 603, 603, 603, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 585: 603}, // 3385 - {945, 945}, - {944, 944}, - {914, 914}, - {919, 919}, - {920, 920}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6339}, + {602, 602}, + {22: 6350, 169: 6343, 5897, 175: 801, 257: 6342, 263: 6353, 277: 6351, 294: 6344, 307: 6348, 327: 6352, 331: 6345, 610: 6349, 632: 5896, 1115: 6347, 1401: 6341, 1429: 6346}, + {811, 811}, + {808, 808}, // 3390 - {921, 921}, - {236: 6322}, - {236: 805}, - {236: 804}, - {236: 803}, + {807, 807}, + {286: 6360}, + {805, 805}, + {175: 6359}, + {792, 792, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 556: 792, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 4978, 1325: 6354}, // 3395 - {915, 915}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6324}, - {762: 6325, 1057: 6326}, - {94: 6329, 231: 6328, 627: 2385, 1087: 6327}, - {922, 922}, + {802, 802}, + {175: 800}, + {175: 799}, + {175: 798}, + {175: 797}, // 3400 - {627: 6331}, - {168: 2384, 627: 2384}, - {231: 6330}, - {168: 2383, 627: 2383}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 580: 2163, 598: 5457, 888: 6332}, + {175: 796}, + {790, 790, 556: 6356, 1551: 6355}, + {803, 803}, + {753: 6357}, + {587: 6358}, // 3405 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6333}, - {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, 549: 637, 6337, 637, 554: 637, 556: 637, 637, 637, 565: 637, 567: 637, 637, 571: 637, 637, 585: 637, 603: 6336, 627: 637, 668: 637, 728: 637, 637, 1413: 6335, 1506: 6334}, - {594, 594, 6: 4831, 4833, 598, 15: 4850, 2505, 4848, 4787, 4852, 4839, 4868, 4832, 4835, 4834, 4837, 4838, 4840, 4847, 598, 4858, 4859, 4869, 4845, 4846, 4851, 4853, 4865, 4864, 4873, 4866, 4863, 4856, 4861, 4862, 4855, 4857, 4860, 4849, 4870, 4871, 549: 594, 594, 594, 554: 4830, 556: 594, 2505, 4867, 565: 594, 567: 594, 594, 571: 594, 2505, 585: 5637, 627: 594, 668: 594, 728: 2505, 4836, 885: 4841, 911: 4843, 932: 4842, 955: 4844, 961: 4854, 967: 4872, 1041: 6352, 1166: 6351}, - {2508, 2508, 549: 6345, 1240: 6344}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6343}, + {789, 789}, + {804, 804}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6361, 3149, 3150, 3148, 1097: 6362}, + {810, 810, 9: 810}, + {806, 806, 9: 6363}, // 3410 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 5603, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 603: 6338, 663: 2749, 678: 2749, 705: 2749, 723: 2749, 5194, 729: 2749, 765: 2749, 2749, 791: 4117, 3121, 3122, 3120, 841: 5058, 952: 5604, 979: 5606, 1024: 5605, 1056: 5607, 1109: 5608, 1317: 6339}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6341}, - {9: 5611, 52: 6340}, - {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, 549: 636, 636, 636, 554: 636, 556: 636, 636, 636, 565: 636, 567: 636, 636, 571: 636, 636, 585: 636, 627: 636, 668: 636, 728: 636, 636}, - {52: 6342}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6364, 3149, 3150, 3148}, + {809, 809, 9: 809}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 6496, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 6495, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 6494, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6497}, + {632: 6480, 734: 6481}, + {734: 6477}, // 3415 - {2419, 2419, 549: 2419}, - {2420, 2420, 549: 2420}, - {2509, 2509}, - {96: 6346}, - {435: 6348, 823: 6347}, + {632: 6472, 734: 6471}, + {632: 6469}, + {246: 6466}, + {246: 6463}, + {246: 6457}, // 3420 - {607: 6350}, - {607: 6349}, - {2506, 2506}, - {2507, 2507}, - {2503, 2503, 549: 2503, 2503, 2503, 556: 2503, 565: 6354, 567: 2503, 2503, 571: 2503, 627: 2503, 668: 2503, 1257: 6353}, + {200: 6454, 292: 6456, 364: 6455, 411: 6452, 432: 6453}, + {273: 6449, 276: 6448}, + {632: 6407}, + {94: 6403, 200: 6401, 239: 822, 262: 6405, 336: 6404, 1507: 6402}, + {200: 6400}, // 3425 - {593, 593, 6: 4831, 4833, 598, 5639, 15: 4850, 2505, 4848, 4787, 4852, 4839, 4868, 4832, 4835, 4834, 4837, 4838, 4840, 4847, 598, 4858, 4859, 4869, 4845, 4846, 4851, 4853, 4865, 4864, 4873, 4866, 4863, 4856, 4861, 4862, 4855, 4857, 4860, 4849, 4870, 4871, 549: 593, 593, 593, 554: 4830, 556: 593, 2505, 4867, 565: 593, 567: 593, 593, 571: 593, 2505, 585: 5637, 627: 593, 668: 593, 728: 2505, 4836, 885: 4841, 911: 4843, 932: 4842, 955: 4844, 961: 4854, 967: 5638}, - {2434, 2434, 549: 2434, 2434, 2434, 556: 2434, 567: 2434, 5926, 571: 5927, 627: 2434, 668: 2434, 1188: 6355}, - {741: 5695}, - {2431, 2431, 549: 2431, 2431, 2431, 556: 6357, 567: 2431, 627: 2431, 668: 2431, 1348: 6356}, - {2429, 2429, 549: 2429, 2980, 2979, 567: 2978, 627: 2977, 668: 2973, 795: 6362, 826: 6360, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 6361, 6359, 1370: 6358}, + {200: 6399}, + {298: 6394}, + {298: 6392}, + {246: 6382}, + {206: 6383}, // 3430 - {2430, 2430, 549: 2430, 2430, 2430, 567: 2430, 627: 2430, 668: 2430}, - {2508, 2508, 549: 6345, 1240: 6363}, - {2428, 2428, 549: 2428}, - {2427, 2427, 549: 2427, 558: 1034, 569: 1034, 1034}, - {2426, 2426, 549: 2426}, + {580: 3135, 824: 4676, 855: 6384}, + {54: 6387, 1134: 6386, 1348: 6385}, + {931, 931, 9: 6390}, + {930, 930, 9: 930}, + {577: 6388}, // 3435 - {2425, 2425, 549: 2425, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {2510, 2510}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6288, 3121, 3122, 3120, 1091: 6367}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6288, 3121, 3122, 3120, 1091: 6366}, - {924, 924, 9: 6290}, + {557: 3708, 567: 5119, 5120, 571: 3699, 580: 3703, 651: 3698, 3700, 659: 3702, 3701, 662: 3706, 3707, 671: 3705, 802: 5118, 3704, 1043: 6389}, + {928, 928, 9: 928}, + {54: 6387, 1134: 6391}, + {929, 929, 9: 929}, + {208: 6393}, // 3440 - {925, 925, 9: 6290}, - {927, 927}, - {926, 926}, - {918, 918}, - {917, 917}, + {932, 932}, + {208: 6395}, + {450: 6397, 720: 6396, 1362: 6398}, + {965, 965}, + {964, 964}, // 3445 - {916, 916}, - {234: 6374}, - {576: 3107, 819: 4639, 851: 6376, 1028: 6375}, - {931, 931, 9: 6377}, - {904, 904, 9: 904}, + {934, 934}, + {939, 939}, + {940, 940}, + {941, 941}, + {239: 6406}, // 3450 - {576: 3107, 819: 4639, 851: 6378}, - {903, 903, 9: 903}, - {234: 6380}, - {576: 3107, 819: 4639, 851: 6376, 1028: 6381}, - {932, 932, 9: 6377}, + {239: 821}, + {239: 820}, + {239: 819}, + {935, 935}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6408}, // 3455 - {234: 6383}, - {576: 3107, 819: 4639, 851: 6376, 1028: 6384}, - {933, 933, 9: 6377}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 6386}, - {934, 934, 9: 4021}, + {767: 6409, 1063: 6410}, + {94: 6413, 236: 6412, 632: 2411, 1093: 6411}, + {942, 942}, + {632: 6415}, + {170: 2410, 632: 2410}, // 3460 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6391}, - {582: 6389}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 6390}, - {923, 923, 9: 4021}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6392, 3121, 3122, 3120}, + {236: 6414}, + {170: 2409, 632: 2409}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 585: 2189, 605: 5530, 893: 6416}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6417}, + {652, 652, 6: 652, 652, 652, 15: 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 554: 652, 6421, 652, 559: 652, 561: 652, 652, 652, 570: 652, 572: 652, 652, 576: 652, 578: 652, 590: 652, 608: 6420, 632: 652, 680: 652, 733: 652, 652, 1423: 6419, 1516: 6418}, // 3465 - {936, 936}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6394}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6395, 3121, 3122, 3120}, - {937, 937}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 6409}, + {609, 609, 6: 4904, 4906, 613, 15: 4923, 2531, 4921, 4860, 4925, 4912, 4941, 4905, 4908, 4907, 4910, 4911, 4913, 4920, 613, 4931, 4932, 4942, 4918, 4919, 4924, 4926, 4938, 4937, 4946, 4939, 4936, 4929, 4934, 4935, 4928, 4930, 4933, 4922, 4943, 4944, 554: 609, 609, 609, 559: 4903, 561: 609, 2531, 4940, 570: 609, 572: 609, 609, 576: 609, 578: 2531, 590: 5710, 632: 609, 680: 609, 733: 2531, 4909, 890: 4914, 916: 4916, 938: 4915, 960: 4917, 966: 4927, 972: 4945, 1047: 6436, 1172: 6435}, + {2534, 2534, 554: 6429, 1246: 6428}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6427}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 5676, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 608: 6422, 668: 2775, 720: 2775, 727: 2775, 2775, 5267, 734: 2775, 770: 2775, 2775, 796: 4151, 3149, 3150, 3148, 846: 5131, 957: 5677, 985: 5679, 1029: 5678, 1062: 5680, 1114: 5681, 1323: 6423}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6425}, // 3470 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6398}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6399, 3121, 3122, 3120}, - {938, 938, 550: 6402, 1209: 6401, 1397: 6400}, - {935, 935, 9: 6407}, - {907, 907, 9: 907}, + {9: 5684, 52: 6424}, + {651, 651, 6: 651, 651, 651, 15: 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 554: 651, 651, 651, 559: 651, 561: 651, 651, 651, 570: 651, 572: 651, 651, 576: 651, 578: 651, 590: 651, 632: 651, 680: 651, 733: 651, 651}, + {52: 6426}, + {2445, 2445, 554: 2445}, + {2446, 2446, 554: 2446}, // 3475 - {576: 3107, 819: 4639, 851: 6403}, - {9: 6404}, - {576: 3107, 819: 4639, 851: 6405}, - {52: 6406}, - {905, 905, 9: 905}, + {2535, 2535}, + {96: 6430}, + {439: 6432, 828: 6431}, + {612: 6434}, + {612: 6433}, // 3480 - {550: 6402, 1209: 6408}, - {906, 906, 9: 906}, - {939, 939, 9: 4021}, - {203: 6438, 226: 2113, 734: 2113}, - {226: 1931, 439: 6430, 460: 6431, 734: 1931, 1337: 6429}, + {2532, 2532}, + {2533, 2533}, + {2529, 2529, 554: 2529, 2529, 2529, 561: 2529, 570: 6438, 572: 2529, 2529, 576: 2529, 632: 2529, 680: 2529, 1263: 6437}, + {608, 608, 6: 4904, 4906, 613, 5712, 15: 4923, 2531, 4921, 4860, 4925, 4912, 4941, 4905, 4908, 4907, 4910, 4911, 4913, 4920, 613, 4931, 4932, 4942, 4918, 4919, 4924, 4926, 4938, 4937, 4946, 4939, 4936, 4929, 4934, 4935, 4928, 4930, 4933, 4922, 4943, 4944, 554: 608, 608, 608, 559: 4903, 561: 608, 2531, 4940, 570: 608, 572: 608, 608, 576: 608, 578: 2531, 590: 5710, 632: 608, 680: 608, 733: 2531, 4909, 890: 4914, 916: 4916, 938: 4915, 960: 4917, 966: 4927, 972: 5711}, + {2460, 2460, 554: 2460, 2460, 2460, 561: 2460, 572: 2460, 5999, 576: 6000, 632: 2460, 680: 2460, 1194: 6439}, // 3485 - {943, 943, 225: 6416, 1739, 234: 6415, 734: 1739}, - {226: 6414}, - {940, 940}, - {438, 438, 576: 3107, 583: 4767, 819: 4639, 851: 6427, 909: 4768, 6426}, - {438: 6417}, + {746: 5768}, + {2457, 2457, 554: 2457, 2457, 2457, 561: 6441, 572: 2457, 632: 2457, 680: 2457, 1358: 6440}, + {2455, 2455, 554: 2455, 3006, 3005, 572: 3004, 632: 3003, 680: 2999, 800: 6446, 831: 6444, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 6445, 6443, 1380: 6442}, + {2456, 2456, 554: 2456, 2456, 2456, 572: 2456, 632: 2456, 680: 2456}, + {2534, 2534, 554: 6429, 1246: 6447}, // 3490 - {576: 3107, 6418, 819: 4639, 851: 6376, 1028: 6419, 1338: 6420}, - {576: 3107, 819: 3956, 834: 6421}, - {930, 930, 9: 6377}, - {929, 929}, - {948, 948, 9: 6422, 227: 6423}, + {2454, 2454, 554: 2454}, + {2453, 2453, 554: 2453, 563: 1054, 574: 1054, 1054}, + {2452, 2452, 554: 2452}, + {2451, 2451, 554: 2451, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {2536, 2536}, // 3495 - {576: 3107, 819: 3956, 834: 6425}, - {576: 3107, 819: 3956, 834: 6424}, - {946, 946}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6361, 3149, 3150, 3148, 1097: 6451}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6361, 3149, 3150, 3148, 1097: 6450}, + {944, 944, 9: 6363}, + {945, 945, 9: 6363}, {947, 947}, - {942, 942}, // 3500 - {438, 438, 583: 4767, 909: 4768, 6428}, - {941, 941}, - {928, 928}, - {576: 3107, 819: 6437}, - {414: 6433, 576: 3107, 735: 6434, 819: 6432}, + {946, 946}, + {938, 938}, + {937, 937}, + {936, 936}, + {206: 6458}, // 3505 - {910, 910}, - {576: 3107, 819: 6436}, - {576: 3107, 819: 6435}, - {908, 908}, - {909, 909}, + {580: 3135, 824: 4676, 855: 6460, 1033: 6459}, + {951, 951, 9: 6461}, + {920, 920, 9: 920}, + {580: 3135, 824: 4676, 855: 6462}, + {919, 919, 9: 919}, // 3510 - {911, 911}, - {913, 913}, - {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, 552: 460, 554: 460, 573: 2101, 605: 460, 734: 2101, 737: 2101}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6594, 573: 2099, 734: 2099, 737: 2099, 791: 6593, 3121, 3122, 3120}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 6591, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 573: 2062, 734: 2062, 737: 2062, 791: 6453, 3121, 3122, 3120, 949: 6494}, + {206: 6464}, + {580: 3135, 824: 4676, 855: 6460, 1033: 6465}, + {952, 952, 9: 6461}, + {206: 6467}, + {580: 3135, 824: 4676, 855: 6460, 1033: 6468}, // 3515 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 573: 2056, 734: 2056, 737: 2056, 791: 6453, 3121, 3122, 3120, 949: 6588}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 554: 6584, 573: 2054, 605: 4447, 734: 2054, 737: 2054, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 6583}, - {573: 6258, 578: 6573, 734: 2049, 737: 2049, 912: 6572}, - {573: 2040, 591: 6570, 734: 2040, 737: 2040}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 6475, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 554: 6567, 573: 2038, 734: 2038, 6565, 737: 2038, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 6482, 6480, 993: 6478, 1294: 6566, 1479: 6564}, + {953, 953, 9: 6461}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 6470}, + {954, 954, 9: 4055}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6475}, + {587: 6473}, // 3520 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 6562, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 573: 2035, 734: 2035, 737: 2035, 791: 6453, 3121, 3122, 3120, 949: 6491}, - {247: 6547, 573: 2017, 734: 2017, 737: 2017, 748: 6548, 1044: 6546, 1112: 6545}, - {400: 6499, 402: 6498, 573: 1959, 734: 1959, 737: 1959, 1354: 6500}, - {552: 6497, 573: 1730, 734: 1730, 737: 1730}, - {1028, 1028, 9: 6487}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 6474}, + {943, 943, 9: 4055}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6476, 3149, 3150, 3148}, + {956, 956}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6478}, // 3525 - {203: 6473}, - {573: 995, 734: 6471, 737: 995}, - {573: 6258, 737: 6259, 912: 6469}, - {573: 6258, 737: 6259, 912: 6464}, - {573: 6258, 737: 6259, 912: 6462}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6479, 3149, 3150, 3148}, + {957, 957}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 6493}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6482}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6483, 3149, 3150, 3148}, // 3530 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 554: 6461, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 6460, 1358: 6459}, - {973, 973, 9: 973}, - {980, 980, 9: 980}, - {979, 979, 9: 979}, - {978, 978, 9: 978}, + {958, 958, 555: 6486, 1215: 6485, 1407: 6484}, + {955, 955, 9: 6491}, + {923, 923, 9: 923}, + {580: 3135, 824: 4676, 855: 6487}, + {9: 6488}, // 3535 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6463}, - {985, 985, 9: 985, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 6466, 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 6465, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6467, 963: 6468}, - {999, 999, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 999, 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 4551, 3686, 3768, 3685, 3682}, - {1000, 1000, 9: 1000}, + {580: 3135, 824: 4676, 855: 6489}, + {52: 6490}, + {921, 921, 9: 921}, + {555: 6486, 1215: 6492}, + {922, 922, 9: 922}, // 3540 - {998, 998, 9: 998}, - {986, 986, 9: 986}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 6466, 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 6465, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6467, 963: 6470}, - {990, 990, 9: 990}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6472, 3121, 3122, 3120}, + {959, 959, 9: 4055}, + {208: 6522, 231: 2139, 739: 2139}, + {231: 1957, 443: 6514, 465: 6515, 739: 1957, 1346: 6513}, + {963, 963, 206: 6499, 230: 6500, 1765, 739: 1765}, + {231: 6498}, // 3545 - {573: 994, 737: 994}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 6475, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 735: 6477, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 6482, 6480, 993: 6478, 1294: 6476}, - {957, 957, 9: 957, 646: 2133, 732: 957, 745: 2133}, - {1016, 1016, 646: 1954, 732: 1016, 745: 1954}, - {732: 6485}, + {960, 960}, + {453, 453, 580: 3135, 588: 4840, 824: 4676, 855: 6511, 914: 4841, 6510}, + {442: 6501}, + {580: 3135, 582: 6502, 824: 4676, 855: 6460, 1033: 6503, 1347: 6504}, + {580: 3135, 824: 3990, 839: 6505}, // 3550 - {732: 1015}, - {1014, 1014, 9: 6483, 732: 1014}, - {958, 958, 9: 958, 646: 449, 732: 958, 745: 449}, - {952, 952, 9: 952, 732: 952}, - {951, 951, 9: 951, 732: 951}, + {950, 950, 9: 6461}, + {949, 949}, + {968, 968, 9: 6506, 232: 6507}, + {580: 3135, 824: 3990, 839: 6509}, + {580: 3135, 824: 3990, 839: 6508}, // 3555 - {950, 950, 9: 950, 732: 950}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 6484, 6480}, - {949, 949, 9: 949, 732: 949}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6002, 995: 6486}, - {1017, 1017, 9: 6004}, + {966, 966}, + {967, 967}, + {962, 962}, + {453, 453, 588: 4840, 914: 4841, 6512}, + {961, 961}, // 3560 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 6439, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 6442, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 6488, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 6489, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 6443, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 572: 4520, 646: 6456, 673: 6455, 728: 4518, 791: 6453, 3121, 3122, 3120, 873: 6457, 949: 6454, 1121: 6490}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 573: 2062, 734: 2062, 737: 2062, 791: 6453, 3121, 3122, 3120, 949: 6494}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 573: 2035, 734: 2035, 737: 2035, 791: 6453, 3121, 3122, 3120, 949: 6491}, - {972, 972, 9: 972}, - {573: 6258, 737: 6259, 912: 6492}, + {948, 948}, + {580: 3135, 824: 6521}, + {418: 6517, 580: 3135, 740: 6518, 824: 6516}, + {926, 926}, + {580: 3135, 824: 6520}, // 3565 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 6466, 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 6465, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6467, 963: 6493}, - {988, 988, 9: 988}, - {573: 6258, 737: 6259, 912: 6495}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 6466, 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 6465, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6467, 963: 6496}, - {989, 989, 9: 989}, + {580: 3135, 824: 6519}, + {924, 924}, + {925, 925}, + {927, 927}, + {933, 933}, // 3570 - {1020, 1020}, - {578: 2548}, - {578: 2547}, - {578: 6501}, - {550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 676: 6513, 731: 3088, 795: 6504, 823: 6502, 826: 6505, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 6503, 6507, 6506, 842: 3087, 6509, 6510, 6511, 6508, 951: 6512}, + {2: 475, 475, 475, 475, 475, 475, 475, 10: 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 53: 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 557: 475, 559: 475, 577: 2127, 610: 475, 739: 2127, 744: 2127}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6678, 577: 2125, 739: 2125, 744: 2125, 796: 6677, 3149, 3150, 3148}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 6675, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 577: 2088, 739: 2088, 744: 2088, 796: 6537, 3149, 3150, 3148, 954: 6578}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 577: 2082, 739: 2082, 744: 2082, 796: 6537, 3149, 3150, 3148, 954: 6672}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 559: 6668, 577: 2080, 610: 4481, 739: 2080, 744: 2080, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 6667}, // 3575 - {2: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 10: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 53: 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 568: 1072, 581: 1072, 852: 1072, 854: 1072, 856: 1072, 860: 6125, 966: 6126, 1014: 6518}, - {550: 2980, 567: 2978, 627: 2977, 668: 2973, 731: 3088, 795: 3944, 826: 3943, 2974, 2975, 2976, 2985, 2983, 3945, 3946, 842: 5844}, - {365, 365, 558: 1033, 561: 365, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {367, 367, 558: 1034, 561: 367, 569: 1034, 1034}, - {368, 368, 561: 368}, + {577: 6331, 583: 6657, 739: 2075, 744: 2075, 917: 6656}, + {577: 2066, 596: 6654, 739: 2066, 744: 2066}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 6559, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 559: 6651, 577: 2064, 739: 2064, 6649, 744: 2064, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 6566, 6564, 999: 6562, 1300: 6650, 1489: 6648}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 6646, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 577: 2061, 739: 2061, 744: 2061, 796: 6537, 3149, 3150, 3148, 954: 6575}, + {251: 6631, 577: 2043, 739: 2043, 744: 2043, 753: 6632, 1050: 6630, 1117: 6629}, // 3580 - {366, 366, 561: 366}, - {364, 364, 561: 364}, - {363, 363, 561: 363}, - {362, 362, 561: 362}, - {361, 361, 561: 361}, + {404: 6583, 406: 6582, 577: 1985, 739: 1985, 744: 1985, 1364: 6584}, + {557: 6581, 577: 1756, 739: 1756, 744: 1756}, + {1048, 1048, 9: 6571}, + {208: 6557}, + {577: 1015, 739: 6555, 744: 1015}, // 3585 - {350, 350, 561: 6516}, - {233: 6514}, - {552: 6515}, - {348, 348}, - {550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 795: 6504, 823: 6502, 826: 6505, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 6503, 6507, 6506, 842: 3087, 6509, 6510, 6511, 6508, 951: 6517}, + {577: 6331, 744: 6332, 917: 6553}, + {577: 6331, 744: 6332, 917: 6548}, + {577: 6331, 744: 6332, 917: 6546}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 559: 6545, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 6544, 1368: 6543}, + {993, 993, 9: 993}, // 3590 - {349, 349}, - {2: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 10: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 53: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 568: 1278, 581: 1278, 852: 6128, 854: 6130, 856: 6129, 959: 6131, 1011: 6519}, - {2: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 10: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 53: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 6521, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 568: 1265, 581: 1265, 1270: 6520}, - {2: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 10: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 53: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 568: 4781, 581: 2161, 984: 6522}, - {2: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 10: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 53: 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 568: 1264, 581: 1264}, + {1000, 1000, 9: 1000}, + {999, 999, 9: 999}, + {998, 998, 9: 998}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6547}, + {1005, 1005, 9: 1005, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, // 3595 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 581: 6523, 791: 6525, 3121, 3122, 3120, 1040: 6526, 1108: 6524}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6538}, - {9: 6534, 581: 6533}, - {9: 1267, 561: 1267, 581: 1267, 734: 6528, 1031: 6527}, - {9: 1269, 561: 1269, 581: 1269}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 6550, 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 6549, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6551, 968: 6552}, + {1019, 1019, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1019, 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 4585, 3719, 3801, 3718, 3715}, + {1020, 1020, 9: 1020}, + {1018, 1018, 9: 1018}, + {1006, 1006, 9: 1006}, // 3600 - {9: 1271, 561: 1271, 581: 1271}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6530, 791: 6529, 3121, 3122, 3120}, - {9: 1267, 561: 1267, 581: 1267, 734: 6532, 1031: 6531}, - {9: 1266, 561: 1266, 581: 1266}, - {9: 1270, 561: 1270, 581: 1270}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 6550, 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 6549, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6551, 968: 6554}, + {1010, 1010, 9: 1010}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6556, 3149, 3150, 3148}, + {577: 1014, 744: 1014}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 6559, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 740: 6561, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 6566, 6564, 999: 6562, 1300: 6560}, // 3605 - {580: 6530}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 662: 6137, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6144, 981: 6134, 1015: 6536}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6525, 3121, 3122, 3120, 1040: 6535}, - {9: 1268, 561: 1268, 581: 1268}, - {438, 438, 9: 6192, 561: 438, 583: 4767, 909: 4768, 6537}, + {977, 977, 9: 977, 654: 2159, 737: 977, 750: 2159}, + {1036, 1036, 654: 1980, 737: 1036, 750: 1980}, + {737: 6569}, + {737: 1035}, + {1034, 1034, 9: 6567, 737: 1034}, // 3610 - {2396, 2396, 561: 2396}, - {1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 10: 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 53: 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 556: 1142, 561: 1142, 565: 6196, 568: 1142, 577: 1142, 583: 1142, 1142, 1142, 595: 1142, 990: 6539}, - {1140, 1140, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 556: 6149, 561: 1140, 568: 1140, 577: 1140, 583: 1140, 1140, 1140, 595: 1140, 791: 6148, 3121, 3122, 3120, 1038: 6147, 6540}, - {1121, 1121, 561: 1121, 568: 6205, 577: 1121, 583: 1121, 1121, 6206, 595: 6204, 1074: 6208, 6207, 1213: 6209, 6541}, - {438, 438, 561: 438, 577: 438, 583: 4767, 438, 909: 4768, 6542}, + {978, 978, 9: 978, 654: 464, 737: 978, 750: 464}, + {972, 972, 9: 972, 737: 972}, + {971, 971, 9: 971, 737: 971}, + {970, 970, 9: 970, 737: 970}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 6568, 6564}, // 3615 - {1523, 1523, 561: 1523, 577: 1523, 584: 3947, 862: 4001, 931: 6543}, - {1102, 1102, 561: 1102, 577: 6253, 1223: 6544}, - {2397, 2397, 561: 2397}, - {1023, 1023, 9: 6560}, - {1010, 1010, 9: 1010}, + {969, 969, 9: 969, 737: 969}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6075, 1001: 6570}, + {1037, 1037, 9: 6077}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 6523, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 6526, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 6572, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 6573, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 6527, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 578: 4554, 654: 6540, 677: 6539, 733: 4552, 796: 6537, 3149, 3150, 3148, 878: 6541, 954: 6538, 1126: 6574}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 577: 2088, 739: 2088, 744: 2088, 796: 6537, 3149, 3150, 3148, 954: 6578}, // 3620 - {418: 6552}, - {217: 6550, 788: 6549}, - {1007, 1007, 9: 1007}, - {1006, 1006, 9: 1006, 750: 4746, 1017: 6551}, - {1005, 1005, 9: 1005}, - // 3625 - {285: 6554, 447: 6556, 748: 6555, 1409: 6553}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 577: 2061, 739: 2061, 744: 2061, 796: 6537, 3149, 3150, 3148, 954: 6575}, + {992, 992, 9: 992}, + {577: 6331, 744: 6332, 917: 6576}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 6550, 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 6549, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6551, 968: 6577}, {1008, 1008, 9: 1008}, - {748: 6559}, - {395: 6557, 465: 6558}, - {1001, 1001, 9: 1001}, - // 3630 - {1003, 1003, 9: 1003}, - {1002, 1002, 9: 1002}, - {1004, 1004, 9: 1004}, - {247: 6547, 748: 6548, 1044: 6561}, + // 3625 + {577: 6331, 744: 6332, 917: 6579}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 6550, 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 6549, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6551, 968: 6580}, {1009, 1009, 9: 1009}, + {1040, 1040}, + {583: 2574}, + // 3630 + {583: 2573}, + {583: 6585}, + {555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 6597, 736: 3115, 800: 6588, 828: 6586, 831: 6589, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 6587, 6591, 6590, 847: 3114, 6593, 6594, 6595, 6592, 956: 6596}, + {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, 573: 1092, 586: 1092, 857: 1092, 859: 1092, 861: 1092, 865: 6198, 971: 6199, 1020: 6602}, + {555: 3006, 572: 3004, 632: 3003, 680: 2999, 736: 3115, 800: 3978, 831: 3977, 3000, 3001, 3002, 3011, 3009, 3979, 3980, 847: 5917}, // 3635 - {247: 6547, 573: 2017, 734: 2017, 737: 2017, 748: 6548, 1044: 6546, 1112: 6563}, - {1024, 1024, 9: 6560}, - {1018, 1018}, - {1015, 1015, 569: 6568}, - {1012, 1012}, + {380, 380, 563: 1053, 566: 380, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {382, 382, 563: 1054, 566: 382, 574: 1054, 1054}, + {383, 383, 566: 383}, + {381, 381, 566: 381}, + {379, 379, 566: 379}, // 3640 - {1011, 1011}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 6482, 6480, 993: 6569}, - {1013, 1013, 9: 6483}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 791: 4698, 3121, 3122, 3120, 947: 6571}, - {1019, 1019}, + {378, 378, 566: 378}, + {377, 377, 566: 377}, + {376, 376, 566: 376}, + {365, 365, 566: 6600}, + {237: 6598}, // 3645 - {15: 6578, 552: 6577, 1258: 6582}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6574}, - {573: 6258, 737: 6259, 912: 6575}, - {15: 6578, 552: 6577, 1258: 6576}, - {1026, 1026}, + {557: 6599}, + {363, 363}, + {555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 800: 6588, 828: 6586, 831: 6589, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 6587, 6591, 6590, 847: 3114, 6593, 6594, 6595, 6592, 956: 6601}, + {364, 364}, + {2: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 10: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 53: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 573: 1298, 586: 1298, 857: 6201, 859: 6203, 861: 6202, 964: 6204, 1017: 6603}, // 3650 - {961, 961}, - {550: 6579}, - {552: 6034, 1019: 6580}, - {52: 6581}, - {960, 960}, + {2: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 10: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 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, 6605, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 573: 1285, 586: 1285, 1276: 6604}, + {2: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 10: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 53: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 573: 4854, 586: 2187, 990: 6606}, + {2: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 10: 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 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, 573: 1284, 586: 1284}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 586: 6607, 796: 6609, 3149, 3150, 3148, 1046: 6610, 1113: 6608}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6622}, // 3655 - {1027, 1027}, - {984, 984, 9: 984, 557: 6585}, - {981, 981, 9: 981}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 554: 6586, 791: 3827, 3121, 3122, 3120, 825: 6587}, - {983, 983, 9: 983}, + {9: 6618, 586: 6617}, + {9: 1287, 566: 1287, 586: 1287, 739: 6612, 1036: 6611}, + {9: 1289, 566: 1289, 586: 1289}, + {9: 1291, 566: 1291, 586: 1291}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6614, 796: 6613, 3149, 3150, 3148}, // 3660 - {982, 982, 9: 982}, - {573: 6258, 737: 6259, 912: 6589}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 6466, 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 6465, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6467, 963: 6590}, - {987, 987, 9: 987}, - {247: 6547, 573: 2017, 734: 2017, 737: 2017, 748: 6548, 1044: 6546, 1112: 6592}, + {9: 1287, 566: 1287, 586: 1287, 739: 6616, 1036: 6615}, + {9: 1286, 566: 1286, 586: 1286}, + {9: 1290, 566: 1290, 586: 1290}, + {585: 6614}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 667: 6210, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6217, 987: 6207, 1021: 6620}, // 3665 - {1025, 1025, 9: 6560}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6596, 3121, 3122, 3120, 1023: 6603}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6596, 3121, 3122, 3120, 1023: 6595}, - {573: 6258, 737: 6259, 912: 6601}, - {563: 6598, 573: 993, 734: 6597, 737: 993}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6609, 3149, 3150, 3148, 1046: 6619}, + {9: 1288, 566: 1288, 586: 1288}, + {453, 453, 9: 6265, 566: 453, 588: 4840, 914: 4841, 6621}, + {2422, 2422, 566: 2422}, + {1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 10: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 53: 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 561: 1162, 566: 1162, 570: 6269, 573: 1162, 582: 1162, 588: 1162, 1162, 1162, 600: 1162, 996: 6623}, // 3670 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6596, 3121, 3122, 3120, 1023: 6600}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6596, 3121, 3122, 3120, 1023: 6599}, - {573: 991, 737: 991}, - {573: 992, 737: 992}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 6466, 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 6465, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6467, 963: 6602}, + {1160, 1160, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 561: 6222, 566: 1160, 573: 1160, 582: 1160, 588: 1160, 1160, 1160, 600: 1160, 796: 6221, 3149, 3150, 3148, 1044: 6220, 6624}, + {1141, 1141, 566: 1141, 573: 6278, 582: 1141, 588: 1141, 1141, 6279, 600: 6277, 1080: 6281, 6280, 1219: 6282, 6625}, + {453, 453, 566: 453, 582: 453, 588: 4840, 453, 914: 4841, 6626}, + {1544, 1544, 566: 1544, 582: 1544, 589: 3981, 867: 4035, 937: 6627}, + {1122, 1122, 566: 1122, 582: 6326, 1229: 6628}, // 3675 - {1021, 1021}, - {573: 6258, 737: 6259, 912: 6604}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 6466, 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 6465, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6467, 963: 6605}, - {1022, 1022}, - {550: 2980, 567: 2978, 627: 2977, 668: 2973, 795: 6617, 826: 6616, 2974, 2975, 2976, 6618}, + {2423, 2423, 566: 2423}, + {1043, 1043, 9: 6644}, + {1030, 1030, 9: 1030}, + {422: 6636}, + {222: 6634, 793: 6633}, // 3680 - {550: 1463, 567: 1463, 627: 1463, 668: 1463, 735: 4267, 848: 4265, 4266, 906: 6610, 908: 6611, 1061: 6613, 1104: 6615}, - {550: 1463, 567: 1463, 627: 1463, 668: 1463, 735: 4267, 848: 4265, 4266, 906: 6610, 908: 6611, 1061: 6613, 1104: 6614}, - {550: 1463, 567: 1463, 627: 1463, 668: 1463, 735: 4267, 848: 4265, 4266, 906: 6610, 908: 6611, 1061: 6613, 1104: 6612}, - {2: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 10: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 53: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 550: 1466, 552: 1466, 1466, 1466, 1466, 559: 1466, 1466, 562: 1466, 1466, 1466, 566: 1466, 1466, 571: 1466, 1466, 576: 1466, 580: 1466, 593: 1466, 598: 1466, 605: 1466, 1466, 627: 1466, 638: 1466, 645: 1466, 1466, 648: 1466, 1466, 1466, 655: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 664: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 677: 1466, 679: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 706: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 730: 1466, 735: 1466, 848: 1466, 1466, 852: 1466, 854: 1466, 856: 1466, 860: 1466, 869: 1466, 1466, 1466}, - {550: 1462, 567: 1462, 627: 1462, 668: 1462}, + {1027, 1027, 9: 1027}, + {1026, 1026, 9: 1026, 755: 4819, 1023: 6635}, + {1025, 1025, 9: 1025}, + {290: 6638, 452: 6640, 753: 6639, 1419: 6637}, + {1028, 1028, 9: 1028}, // 3685 - {550: 1030, 567: 1030, 627: 1030, 668: 1030}, - {550: 1029, 567: 1029, 627: 1029, 668: 1029}, - {550: 1031, 567: 1031, 627: 1031, 668: 1031}, - {550: 1032, 567: 1032, 627: 1032, 668: 1032}, - {1044, 1044, 52: 1044, 549: 1044, 551: 1044, 558: 1034, 561: 1044, 569: 1034, 1034}, + {753: 6643}, + {399: 6641, 470: 6642}, + {1021, 1021, 9: 1021}, + {1023, 1023, 9: 1023}, + {1022, 1022, 9: 1022}, // 3690 - {1043, 1043, 52: 1043, 549: 1043, 551: 1043, 558: 1033, 561: 1043, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 6619, 6620}, - {558: 1035, 569: 1035, 1035}, - {1042, 1042, 52: 1042, 549: 1042, 551: 1042, 561: 1042, 574: 3949, 577: 3948, 863: 6621}, - {1041, 1041, 52: 1041, 549: 1041, 551: 1041, 561: 1041}, - {1040, 1040, 52: 1040, 549: 1040, 551: 1040, 561: 1040}, + {1024, 1024, 9: 1024}, + {251: 6631, 753: 6632, 1050: 6645}, + {1029, 1029, 9: 1029}, + {251: 6631, 577: 2043, 739: 2043, 744: 2043, 753: 6632, 1050: 6630, 1117: 6647}, + {1044, 1044, 9: 6644}, // 3695 - {52: 4082, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {9: 6637, 550: 1217, 567: 1217, 627: 1217, 668: 1217, 731: 1217, 823: 1217}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6626, 3121, 3122, 3120, 1055: 6625, 1334: 6636}, - {9: 1214, 550: 1214, 567: 1214, 627: 1214, 668: 1214, 731: 1214, 823: 1214}, - {550: 6627, 556: 2671, 1398: 6628}, + {1038, 1038}, + {1035, 1035, 574: 6652}, + {1032, 1032}, + {1031, 1031}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 6566, 6564, 999: 6653}, // 3700 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6632, 3121, 3122, 3120, 1004: 6631}, - {556: 6629}, - {550: 2980, 795: 6630}, - {9: 1213, 550: 1213, 567: 1213, 627: 1213, 668: 1213, 731: 1213, 823: 1213}, - {9: 6634, 52: 6633}, + {1033, 1033, 9: 6567}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 796: 4735, 3149, 3150, 3148, 952: 6655}, + {1039, 1039}, + {15: 6662, 557: 6661, 1264: 6666}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6658}, // 3705 - {2669, 2669, 9: 2669, 52: 2669, 551: 2669}, - {556: 2670}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6635, 3121, 3122, 3120}, - {2668, 2668, 9: 2668, 52: 2668, 551: 2668}, - {9: 6637, 550: 1216, 567: 1216, 627: 1216, 668: 1216, 731: 1216, 823: 1216}, + {577: 6331, 744: 6332, 917: 6659}, + {15: 6662, 557: 6661, 1264: 6660}, + {1046, 1046}, + {981, 981}, + {555: 6663}, // 3710 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6626, 3121, 3122, 3120, 1055: 6638}, - {9: 1215, 550: 1215, 567: 1215, 627: 1215, 668: 1215, 731: 1215, 823: 1215}, - {1523, 1523, 52: 1523, 549: 1523, 551: 1523, 558: 1523, 561: 1523, 569: 1523, 1523, 574: 1523, 577: 1523, 1523, 1523, 582: 1523, 584: 3947, 862: 4001, 931: 6640}, - {1088, 1088, 52: 1088, 549: 1088, 551: 1088, 558: 1088, 561: 1088, 569: 1088, 1088, 574: 3949, 577: 3948, 1088, 1088, 582: 1088, 863: 4006, 948: 6641}, - {1059, 1059, 52: 1059, 549: 1059, 551: 1059, 558: 1059, 561: 1059, 569: 1059, 1059, 578: 4008, 1059, 582: 4009, 1012: 6642}, + {557: 6107, 1025: 6664}, + {52: 6665}, + {980, 980}, + {1047, 1047}, + {1004, 1004, 9: 1004, 562: 6669}, // 3715 - {1065, 1065, 52: 1065, 549: 1065, 551: 1065, 558: 1065, 561: 1065, 569: 1065, 1065, 579: 4037, 1013: 6643}, - {1221, 1221, 52: 1221, 549: 1221, 551: 1221, 558: 1221, 561: 1221, 569: 1221, 1221}, - {1088, 1088, 52: 1088, 549: 1088, 551: 1088, 558: 1088, 561: 1088, 569: 1088, 1088, 574: 3949, 577: 3948, 1088, 1088, 582: 1088, 863: 4006, 948: 6645}, - {1059, 1059, 52: 1059, 549: 1059, 551: 1059, 558: 1059, 561: 1059, 569: 1059, 1059, 578: 4008, 1059, 582: 4009, 1012: 6646}, - {1065, 1065, 52: 1065, 549: 1065, 551: 1065, 558: 1065, 561: 1065, 569: 1065, 1065, 579: 4037, 1013: 6647}, + {1001, 1001, 9: 1001}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 559: 6670, 796: 3861, 3149, 3150, 3148, 830: 6671}, + {1003, 1003, 9: 1003}, + {1002, 1002, 9: 1002}, + {577: 6331, 744: 6332, 917: 6673}, // 3720 - {1222, 1222, 52: 1222, 549: 1222, 551: 1222, 558: 1222, 561: 1222, 569: 1222, 1222}, - {741: 6655}, - {1523, 1523, 52: 1523, 549: 1523, 551: 1523, 558: 1523, 561: 1523, 569: 1523, 1523, 574: 1523, 577: 1523, 1523, 1523, 582: 1523, 584: 3947, 862: 4001, 931: 6651}, - {1066, 1066, 52: 1066, 549: 1066, 551: 1066, 558: 1066, 561: 1066, 569: 1066, 1066, 574: 1066, 577: 1066, 1066, 1066, 582: 1066, 584: 1066, 592: 1066, 594: 1066}, - {1088, 1088, 52: 1088, 549: 1088, 551: 1088, 558: 1088, 561: 1088, 569: 1088, 1088, 574: 3949, 577: 3948, 1088, 1088, 582: 1088, 863: 4006, 948: 6652}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 6550, 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 6549, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6551, 968: 6674}, + {1007, 1007, 9: 1007}, + {251: 6631, 577: 2043, 739: 2043, 744: 2043, 753: 6632, 1050: 6630, 1117: 6676}, + {1045, 1045, 9: 6644}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6680, 3149, 3150, 3148, 1028: 6687}, // 3725 - {1059, 1059, 52: 1059, 549: 1059, 551: 1059, 558: 1059, 561: 1059, 569: 1059, 1059, 578: 4008, 1059, 582: 4009, 1012: 6653}, - {1065, 1065, 52: 1065, 549: 1065, 551: 1065, 558: 1065, 561: 1065, 569: 1065, 1065, 579: 4037, 1013: 6654}, - {1223, 1223, 52: 1223, 549: 1223, 551: 1223, 558: 1223, 561: 1223, 569: 1223, 1223}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3971, 997: 3973, 1022: 6656}, - {2173, 2173, 9: 3974, 52: 2173, 549: 2173, 551: 6657, 558: 2173, 561: 2173, 569: 2173, 2173, 574: 2173, 577: 2173, 2173, 2173, 582: 2173, 584: 2173, 592: 2173, 594: 2173, 1540: 6658}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6680, 3149, 3150, 3148, 1028: 6679}, + {577: 6331, 744: 6332, 917: 6685}, + {568: 6682, 577: 1013, 739: 6681, 744: 1013}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6680, 3149, 3150, 3148, 1028: 6684}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6680, 3149, 3150, 3148, 1028: 6683}, // 3730 - {444: 6659}, - {2171, 2171, 52: 2171, 549: 2171, 551: 2171, 558: 2171, 561: 2171, 569: 2171, 2171, 574: 2171, 577: 2171, 2171, 2171, 582: 2171, 584: 2171, 592: 2171, 594: 2171}, - {2172, 2172, 52: 2172, 549: 2172, 551: 2172, 558: 2172, 561: 2172, 569: 2172, 2172, 574: 2172, 577: 2172, 2172, 2172, 582: 2172, 584: 2172, 592: 2172, 594: 2172}, - {438, 438, 52: 438, 549: 438, 551: 438, 558: 438, 561: 438, 569: 438, 438, 574: 438, 577: 438, 438, 438, 582: 438, 4767, 438, 591: 438, 909: 4768, 6685}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 662: 6137, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6144, 981: 6134, 1015: 6670, 1378: 6669, 1508: 6668}, + {577: 1011, 744: 1011}, + {577: 1012, 744: 1012}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 6550, 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 6549, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6551, 968: 6686}, + {1041, 1041}, + {577: 6331, 744: 6332, 917: 6688}, // 3735 - {1067, 1067, 52: 1067, 549: 1067, 551: 1067, 558: 1067, 561: 1067, 569: 1067, 1067, 574: 1067, 577: 1067, 1067, 1067, 582: 1067, 584: 1067, 591: 6648, 1073: 6650, 1103: 6663}, - {1523, 1523, 52: 1523, 549: 1523, 551: 1523, 558: 1523, 561: 1523, 569: 1523, 1523, 574: 1523, 577: 1523, 1523, 1523, 582: 1523, 584: 3947, 862: 4001, 931: 6664}, - {1088, 1088, 52: 1088, 549: 1088, 551: 1088, 558: 1088, 561: 1088, 569: 1088, 1088, 574: 3949, 577: 3948, 1088, 1088, 582: 1088, 863: 4006, 948: 6665}, - {1059, 1059, 52: 1059, 549: 1059, 551: 1059, 558: 1059, 561: 1059, 569: 1059, 1059, 578: 4008, 1059, 582: 4009, 1012: 6666}, - {1065, 1065, 52: 1065, 549: 1065, 551: 1065, 558: 1065, 561: 1065, 569: 1065, 1065, 579: 4037, 1013: 6667}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 6550, 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 6549, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6551, 968: 6689}, + {1042, 1042}, + {555: 3006, 572: 3004, 632: 3003, 680: 2999, 800: 6701, 831: 6700, 3000, 3001, 3002, 6702}, + {555: 1484, 572: 1484, 632: 1484, 680: 1484, 740: 4301, 853: 4299, 4300, 911: 6694, 913: 6695, 1067: 6697, 1110: 6699}, + {555: 1484, 572: 1484, 632: 1484, 680: 1484, 740: 4301, 853: 4299, 4300, 911: 6694, 913: 6695, 1067: 6697, 1110: 6698}, // 3740 - {1224, 1224, 52: 1224, 549: 1224, 551: 1224, 558: 1224, 561: 1224, 569: 1224, 1224}, - {438, 438, 52: 438, 549: 438, 551: 438, 558: 438, 561: 438, 569: 438, 438, 574: 438, 577: 438, 438, 438, 582: 438, 4767, 438, 591: 438, 438, 594: 438, 909: 4768, 6671}, - {1212, 1212, 52: 1212, 549: 1212, 551: 1212, 558: 1212, 561: 1212, 569: 1212, 1212, 574: 1212, 577: 1212, 1212, 1212, 582: 1212, 1212, 1212, 591: 1212}, - {1152, 1152, 9: 6192, 52: 1152, 549: 1152, 551: 1152, 558: 1152, 561: 1152, 569: 1152, 1152, 574: 1152, 577: 1152, 1152, 1152, 582: 1152, 1152, 1152, 591: 1152, 1152, 594: 1152}, - {1067, 1067, 52: 1067, 549: 1067, 551: 1067, 558: 1067, 561: 1067, 569: 1067, 1067, 574: 1067, 577: 1067, 1067, 1067, 582: 1067, 584: 1067, 591: 6648, 1067, 594: 1067, 1073: 6650, 1103: 6672}, + {555: 1484, 572: 1484, 632: 1484, 680: 1484, 740: 4301, 853: 4299, 4300, 911: 6694, 913: 6695, 1067: 6697, 1110: 6696}, + {2: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 10: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 53: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 555: 1487, 557: 1487, 1487, 1487, 1487, 564: 1487, 1487, 567: 1487, 1487, 1487, 571: 1487, 1487, 576: 1487, 578: 1487, 580: 1487, 585: 1487, 598: 1487, 605: 1487, 610: 1487, 1487, 632: 1487, 649: 1487, 1487, 1487, 1487, 654: 1487, 1487, 659: 1487, 1487, 662: 1487, 1487, 1487, 1487, 1487, 1487, 669: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 682: 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 721: 1487, 1487, 1487, 1487, 1487, 1487, 735: 1487, 740: 1487, 853: 1487, 1487, 857: 1487, 859: 1487, 861: 1487, 865: 1487, 874: 1487, 1487, 1487}, + {555: 1483, 572: 1483, 632: 1483, 680: 1483}, + {555: 1050, 572: 1050, 632: 1050, 680: 1050}, + {555: 1049, 572: 1049, 632: 1049, 680: 1049}, // 3745 - {2170, 2170, 52: 2170, 549: 2170, 551: 2170, 558: 2170, 561: 2170, 569: 2170, 2170, 574: 2170, 577: 2170, 2170, 2170, 582: 2170, 584: 2170, 592: 6673, 594: 2170, 1211: 6674}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6684}, - {1211, 1211, 52: 1211, 549: 1211, 551: 1211, 558: 1211, 561: 1211, 569: 1211, 1211, 574: 1211, 577: 1211, 1211, 1211, 582: 1211, 584: 1211, 594: 6676, 1532: 6675}, - {1237, 1237, 52: 1237, 549: 1237, 551: 1237, 558: 1237, 561: 1237, 569: 1237, 1237, 574: 1237, 577: 1237, 1237, 1237, 582: 1237, 584: 1237}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4159, 3121, 3122, 3120, 1047: 6679, 1330: 6678, 1533: 6677}, + {555: 1051, 572: 1051, 632: 1051, 680: 1051}, + {555: 1052, 572: 1052, 632: 1052, 680: 1052}, + {1064, 1064, 52: 1064, 554: 1064, 556: 1064, 563: 1054, 566: 1064, 574: 1054, 1054}, + {1063, 1063, 52: 1063, 554: 1063, 556: 1063, 563: 1053, 566: 1063, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 6703, 6704}, + {563: 1055, 574: 1055, 1055}, // 3750 - {1210, 1210, 9: 6682, 52: 1210, 549: 1210, 551: 1210, 558: 1210, 561: 1210, 569: 1210, 1210, 574: 1210, 577: 1210, 1210, 1210, 582: 1210, 584: 1210}, - {1209, 1209, 9: 1209, 52: 1209, 549: 1209, 551: 1209, 558: 1209, 561: 1209, 569: 1209, 1209, 574: 1209, 577: 1209, 1209, 1209, 582: 1209, 584: 1209}, - {556: 6680}, - {550: 4160, 1332: 6681}, - {1207, 1207, 9: 1207, 52: 1207, 549: 1207, 551: 1207, 558: 1207, 561: 1207, 569: 1207, 1207, 574: 1207, 577: 1207, 1207, 1207, 582: 1207, 584: 1207}, + {1062, 1062, 52: 1062, 554: 1062, 556: 1062, 566: 1062, 579: 3983, 582: 3982, 868: 6705}, + {1061, 1061, 52: 1061, 554: 1061, 556: 1061, 566: 1061}, + {1060, 1060, 52: 1060, 554: 1060, 556: 1060, 566: 1060}, + {52: 4116, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {9: 6721, 555: 1237, 572: 1237, 632: 1237, 680: 1237, 736: 1237, 828: 1237}, // 3755 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4159, 3121, 3122, 3120, 1047: 6679, 1330: 6683}, - {1208, 1208, 9: 1208, 52: 1208, 549: 1208, 551: 1208, 558: 1208, 561: 1208, 569: 1208, 1208, 574: 1208, 577: 1208, 1208, 1208, 582: 1208, 584: 1208}, - {2169, 2169, 52: 2169, 549: 2169, 551: 2169, 558: 2169, 561: 2169, 569: 2169, 2169, 574: 2169, 577: 2169, 2169, 2169, 581: 2169, 2169, 2169, 2169, 586: 3835, 3833, 3834, 3832, 3830, 2169, 594: 2169, 820: 3831, 3829}, - {1238, 1238, 52: 1238, 549: 1238, 551: 1238, 558: 1238, 561: 1238, 569: 1238, 1238, 574: 1238, 577: 1238, 1238, 1238, 582: 1238, 584: 1238, 591: 1238}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 580: 6702, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 6703, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6701, 1195: 6704, 1388: 6705, 1474: 6706}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6710, 3149, 3150, 3148, 1061: 6709, 1343: 6720}, + {9: 1234, 555: 1234, 572: 1234, 632: 1234, 680: 1234, 736: 1234, 828: 1234}, + {555: 6711, 561: 2697, 1408: 6712}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6716, 3149, 3150, 3148, 1010: 6715}, + {561: 6713}, // 3760 - {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, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 550: 1086, 552: 1086, 1086, 1086, 1086, 559: 1086, 1086, 562: 1086, 1086, 1086, 566: 1086, 1086, 571: 1086, 1086, 576: 1086, 580: 1086, 593: 1086, 598: 1086, 605: 1086, 1086, 638: 1086, 645: 1086, 1086, 648: 1086, 1086, 1086, 655: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 664: 1086, 1086, 1086, 1086, 669: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 677: 1086, 679: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 706: 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 730: 1086, 735: 1086, 848: 1086, 1086, 852: 1086, 854: 1086, 856: 1086, 860: 1086, 869: 1086, 1086, 1086}, - {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, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 550: 1085, 552: 1085, 1085, 1085, 1085, 559: 1085, 1085, 562: 1085, 1085, 1085, 566: 1085, 1085, 571: 1085, 1085, 576: 1085, 580: 1085, 593: 1085, 598: 1085, 605: 1085, 1085, 638: 1085, 645: 1085, 1085, 648: 1085, 1085, 1085, 655: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 664: 1085, 1085, 1085, 1085, 669: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 677: 1085, 679: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 706: 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 730: 1085, 735: 1085, 848: 1085, 1085, 852: 1085, 854: 1085, 856: 1085, 860: 1085, 869: 1085, 1085, 1085}, - {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, 550: 1084, 552: 1084, 1084, 1084, 1084, 559: 1084, 1084, 562: 1084, 1084, 1084, 566: 1084, 1084, 571: 1084, 1084, 576: 1084, 580: 1084, 593: 1084, 598: 1084, 605: 1084, 1084, 638: 1084, 645: 1084, 1084, 648: 1084, 1084, 1084, 655: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 664: 1084, 1084, 1084, 1084, 669: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 677: 1084, 679: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 706: 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 730: 1084, 735: 1084, 848: 1084, 1084, 852: 1084, 854: 1084, 856: 1084, 860: 1084, 869: 1084, 1084, 1084}, - {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, 550: 1083, 552: 1083, 1083, 1083, 1083, 559: 1083, 1083, 562: 1083, 1083, 1083, 566: 1083, 1083, 571: 1083, 1083, 576: 1083, 580: 1083, 593: 1083, 598: 1083, 605: 1083, 1083, 638: 1083, 645: 1083, 1083, 648: 1083, 1083, 1083, 655: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 664: 1083, 1083, 1083, 1083, 669: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 677: 1083, 679: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 706: 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 730: 1083, 735: 1083, 848: 1083, 1083, 852: 1083, 854: 1083, 856: 1083, 860: 1083, 869: 1083, 1083, 1083}, - {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, 550: 1082, 552: 1082, 1082, 1082, 1082, 559: 1082, 1082, 562: 1082, 1082, 1082, 566: 1082, 1082, 571: 1082, 1082, 576: 1082, 580: 1082, 593: 1082, 598: 1082, 605: 1082, 1082, 638: 1082, 645: 1082, 1082, 648: 1082, 1082, 1082, 655: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 664: 1082, 1082, 1082, 1082, 669: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 677: 1082, 679: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 706: 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 730: 1082, 735: 1082, 848: 1082, 1082, 852: 1082, 854: 1082, 856: 1082, 860: 1082, 869: 1082, 1082, 1082}, + {555: 3006, 800: 6714}, + {9: 1233, 555: 1233, 572: 1233, 632: 1233, 680: 1233, 736: 1233, 828: 1233}, + {9: 6718, 52: 6717}, + {2695, 2695, 9: 2695, 52: 2695, 556: 2695}, + {561: 2696}, // 3765 - {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, 550: 1081, 552: 1081, 1081, 1081, 1081, 559: 1081, 1081, 562: 1081, 1081, 1081, 566: 1081, 1081, 571: 1081, 1081, 576: 1081, 580: 1081, 593: 1081, 598: 1081, 605: 1081, 1081, 638: 1081, 645: 1081, 1081, 648: 1081, 1081, 1081, 655: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 664: 1081, 1081, 1081, 1081, 669: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 677: 1081, 679: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 706: 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 730: 1081, 735: 1081, 848: 1081, 1081, 852: 1081, 854: 1081, 856: 1081, 860: 1081, 869: 1081, 1081, 1081}, - {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, 550: 1080, 552: 1080, 1080, 1080, 1080, 559: 1080, 1080, 562: 1080, 1080, 1080, 566: 1080, 1080, 571: 1080, 1080, 576: 1080, 580: 1080, 593: 1080, 598: 1080, 605: 1080, 1080, 638: 1080, 645: 1080, 1080, 648: 1080, 1080, 1080, 655: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 664: 1080, 1080, 1080, 1080, 669: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 677: 1080, 679: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 706: 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 730: 1080, 735: 1080, 848: 1080, 1080, 852: 1080, 854: 1080, 856: 1080, 860: 1080, 869: 1080, 1080, 1080}, - {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, 550: 1079, 552: 1079, 1079, 1079, 1079, 559: 1079, 1079, 562: 1079, 1079, 1079, 566: 1079, 1079, 571: 1079, 1079, 576: 1079, 580: 1079, 593: 1079, 598: 1079, 605: 1079, 1079, 638: 1079, 645: 1079, 1079, 648: 1079, 1079, 1079, 655: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 664: 1079, 1079, 1079, 1079, 669: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 677: 1079, 679: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 706: 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 730: 1079, 735: 1079, 848: 1079, 1079, 852: 1079, 854: 1079, 856: 1079, 860: 1079, 869: 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, 550: 1078, 552: 1078, 1078, 1078, 1078, 559: 1078, 1078, 562: 1078, 1078, 1078, 566: 1078, 1078, 571: 1078, 1078, 576: 1078, 580: 1078, 593: 1078, 598: 1078, 605: 1078, 1078, 638: 1078, 645: 1078, 1078, 648: 1078, 1078, 1078, 655: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 664: 1078, 1078, 1078, 1078, 669: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 677: 1078, 679: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 706: 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 730: 1078, 735: 1078, 848: 1078, 1078, 852: 1078, 854: 1078, 856: 1078, 860: 1078, 869: 1078, 1078, 1078}, - {2: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 10: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 53: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 6692, 6698, 6699, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 550: 1076, 552: 1076, 1076, 1076, 1076, 559: 1076, 1076, 562: 1076, 1076, 1076, 566: 1076, 1076, 571: 1076, 1076, 576: 1076, 580: 1076, 593: 6695, 598: 1076, 605: 1076, 1076, 638: 1076, 645: 1076, 1076, 648: 1076, 1076, 1076, 655: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 664: 1076, 1076, 1076, 1076, 669: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 677: 1076, 679: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 706: 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 730: 1076, 735: 4267, 848: 4265, 4266, 852: 6128, 854: 6130, 856: 6129, 860: 6125, 869: 6691, 6694, 6690, 906: 6610, 908: 6688, 959: 6689, 966: 6687, 1291: 6700, 6693}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6719, 3149, 3150, 3148}, + {2694, 2694, 9: 2694, 52: 2694, 556: 2694}, + {9: 6721, 555: 1236, 572: 1236, 632: 1236, 680: 1236, 736: 1236, 828: 1236}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6710, 3149, 3150, 3148, 1061: 6722}, + {9: 1235, 555: 1235, 572: 1235, 632: 1235, 680: 1235, 736: 1235, 828: 1235}, // 3770 - {2: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 10: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 53: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 550: 1074, 552: 1074, 1074, 1074, 1074, 559: 1074, 1074, 562: 1074, 1074, 1074, 566: 1074, 1074, 571: 1074, 1074, 576: 1074, 580: 1074, 593: 1074, 598: 1074, 605: 1074, 1074, 638: 1074, 645: 1074, 1074, 648: 1074, 1074, 1074, 655: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 664: 1074, 1074, 1074, 1074, 669: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 677: 1074, 679: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 706: 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 730: 1074, 735: 1074, 848: 1074, 1074, 852: 1074, 854: 1074, 856: 1074, 860: 1074, 869: 1074, 1074, 1074}, - {2: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 10: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 53: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 550: 1070, 552: 1070, 1070, 1070, 1070, 559: 1070, 1070, 562: 1070, 1070, 1070, 566: 1070, 1070, 571: 1070, 1070, 576: 1070, 580: 1070, 593: 1070, 598: 1070, 605: 1070, 1070, 638: 1070, 645: 1070, 1070, 648: 1070, 1070, 1070, 655: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 664: 1070, 1070, 1070, 1070, 669: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 677: 1070, 679: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 706: 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 730: 1070, 735: 1070, 848: 1070, 1070, 852: 1070, 854: 1070, 856: 1070, 860: 1070, 869: 1070, 1070, 1070}, - {2: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 10: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 53: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 550: 1069, 552: 1069, 1069, 1069, 1069, 559: 1069, 1069, 562: 1069, 1069, 1069, 566: 1069, 1069, 571: 1069, 1069, 576: 1069, 580: 1069, 593: 1069, 598: 1069, 605: 1069, 1069, 638: 1069, 645: 1069, 1069, 648: 1069, 1069, 1069, 655: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 664: 1069, 1069, 1069, 1069, 669: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 677: 1069, 679: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 706: 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 730: 1069, 735: 1069, 848: 1069, 1069, 852: 1069, 854: 1069, 856: 1069, 860: 1069, 869: 1069, 1069, 1069}, - {2: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 10: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 53: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 550: 1075, 552: 1075, 1075, 1075, 1075, 559: 1075, 1075, 562: 1075, 1075, 1075, 566: 1075, 1075, 571: 1075, 1075, 576: 1075, 580: 1075, 593: 1075, 598: 1075, 605: 1075, 1075, 638: 1075, 645: 1075, 1075, 648: 1075, 1075, 1075, 655: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 664: 1075, 1075, 1075, 1075, 669: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 677: 1075, 679: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 706: 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 730: 1075, 735: 1075, 848: 1075, 1075, 852: 1075, 854: 1075, 856: 1075, 860: 1075, 869: 1075, 1075, 1075}, - {2181, 2181, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 2181, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2181, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 2181, 551: 2181, 6719, 556: 6718, 558: 2181, 561: 2181, 569: 2181, 2181, 574: 2181, 577: 2181, 2181, 2181, 581: 2181, 2181, 2181, 2181, 586: 3835, 3833, 3834, 3832, 3830, 2181, 2181, 791: 6717, 3121, 3122, 3120, 820: 3831, 3829, 1385: 6716, 6715}, + {1544, 1544, 52: 1544, 554: 1544, 556: 1544, 563: 1544, 566: 1544, 574: 1544, 1544, 579: 1544, 582: 1544, 1544, 1544, 587: 1544, 589: 3981, 867: 4035, 937: 6724}, + {1108, 1108, 52: 1108, 554: 1108, 556: 1108, 563: 1108, 566: 1108, 574: 1108, 1108, 579: 3983, 582: 3982, 1108, 1108, 587: 1108, 868: 4040, 953: 6725}, + {1079, 1079, 52: 1079, 554: 1079, 556: 1079, 563: 1079, 566: 1079, 574: 1079, 1079, 583: 4042, 1079, 587: 4043, 1018: 6726}, + {1085, 1085, 52: 1085, 554: 1085, 556: 1085, 563: 1085, 566: 1085, 574: 1085, 1085, 584: 4071, 1019: 6727}, + {1241, 1241, 52: 1241, 554: 1241, 556: 1241, 563: 1241, 566: 1241, 574: 1241, 1241}, // 3775 - {2185, 2185, 9: 2185, 52: 2185, 549: 2185, 551: 2185, 558: 2185, 561: 2185, 569: 2185, 2185, 574: 2185, 577: 2185, 2185, 2185, 581: 2185, 2185, 2185, 2185, 591: 2185, 2185}, - {1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 551: 1505, 1505, 1505, 555: 1505, 1505, 1505, 1505, 561: 1505, 1505, 1505, 1505, 569: 1505, 1505, 573: 1505, 1505, 577: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 586: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 603: 1505, 625: 1505, 628: 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 639: 1505, 1505, 1505, 1505, 1505, 1505, 647: 1505, 651: 1505, 1505, 1505, 1505, 726: 1505, 734: 6710, 738: 1505, 1505}, - {2175, 2175, 9: 2175, 52: 2175, 549: 2175, 551: 2175, 558: 2175, 561: 2175, 569: 2175, 2175, 574: 2175, 577: 2175, 2175, 2175, 581: 2175, 2175, 2175, 2175, 591: 2175, 2175}, - {1068, 1068, 9: 6708, 52: 1068, 549: 1068, 551: 1068, 558: 1068, 561: 1068, 569: 1068, 1068, 574: 1068, 577: 1068, 1068, 1068, 581: 1068, 1068, 1068, 1068, 591: 1068, 1068}, - {2170, 2170, 52: 2170, 549: 2170, 551: 2170, 558: 2170, 561: 2170, 569: 2170, 2170, 574: 2170, 577: 2170, 2170, 2170, 581: 2170, 2170, 2170, 2170, 591: 2170, 6673, 1211: 6707}, + {1108, 1108, 52: 1108, 554: 1108, 556: 1108, 563: 1108, 566: 1108, 574: 1108, 1108, 579: 3983, 582: 3982, 1108, 1108, 587: 1108, 868: 4040, 953: 6729}, + {1079, 1079, 52: 1079, 554: 1079, 556: 1079, 563: 1079, 566: 1079, 574: 1079, 1079, 583: 4042, 1079, 587: 4043, 1018: 6730}, + {1085, 1085, 52: 1085, 554: 1085, 556: 1085, 563: 1085, 566: 1085, 574: 1085, 1085, 584: 4071, 1019: 6731}, + {1242, 1242, 52: 1242, 554: 1242, 556: 1242, 563: 1242, 566: 1242, 574: 1242, 1242}, + {746: 6739}, // 3780 - {1239, 1239, 52: 1239, 549: 1239, 551: 1239, 558: 1239, 561: 1239, 569: 1239, 1239, 574: 1239, 577: 1239, 1239, 1239, 581: 1239, 1239, 1239, 1239, 591: 1239}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 580: 6702, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 6703, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 6701, 1195: 6709}, - {2174, 2174, 9: 2174, 52: 2174, 549: 2174, 551: 2174, 558: 2174, 561: 2174, 569: 2174, 2174, 574: 2174, 577: 2174, 2174, 2174, 581: 2174, 2174, 2174, 2174, 591: 2174, 2174}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6711, 791: 6712, 3121, 3122, 3120}, - {2184, 2184, 9: 2184, 52: 2184, 549: 2184, 551: 2184, 558: 2184, 561: 2184, 569: 2184, 2184, 574: 2184, 577: 2184, 2184, 2184, 581: 2184, 2184, 2184, 2184, 591: 2184, 2184}, + {1544, 1544, 52: 1544, 554: 1544, 556: 1544, 563: 1544, 566: 1544, 574: 1544, 1544, 579: 1544, 582: 1544, 1544, 1544, 587: 1544, 589: 3981, 867: 4035, 937: 6735}, + {1086, 1086, 52: 1086, 554: 1086, 556: 1086, 563: 1086, 566: 1086, 574: 1086, 1086, 579: 1086, 582: 1086, 1086, 1086, 587: 1086, 589: 1086, 597: 1086, 599: 1086}, + {1108, 1108, 52: 1108, 554: 1108, 556: 1108, 563: 1108, 566: 1108, 574: 1108, 1108, 579: 3983, 582: 3982, 1108, 1108, 587: 1108, 868: 4040, 953: 6736}, + {1079, 1079, 52: 1079, 554: 1079, 556: 1079, 563: 1079, 566: 1079, 574: 1079, 1079, 583: 4042, 1079, 587: 4043, 1018: 6737}, + {1085, 1085, 52: 1085, 554: 1085, 556: 1085, 563: 1085, 566: 1085, 574: 1085, 1085, 584: 4071, 1019: 6738}, // 3785 - {1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 4578, 1504, 1504, 1504, 555: 1504, 1504, 1504, 1504, 561: 1504, 1504, 1504, 1504, 569: 1504, 1504, 573: 1504, 1504, 577: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 586: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 603: 1504, 625: 1504, 628: 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 639: 1504, 1504, 1504, 1504, 1504, 1504, 647: 1504, 651: 1504, 1504, 1504, 1504, 726: 1504, 734: 6713, 738: 1504, 1504}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6714, 791: 3997, 3121, 3122, 3120}, - {2183, 2183, 9: 2183, 52: 2183, 549: 2183, 551: 2183, 558: 2183, 561: 2183, 569: 2183, 2183, 574: 2183, 577: 2183, 2183, 2183, 581: 2183, 2183, 2183, 2183, 591: 2183, 2183}, - {2182, 2182, 9: 2182, 52: 2182, 549: 2182, 551: 2182, 558: 2182, 561: 2182, 569: 2182, 2182, 574: 2182, 577: 2182, 2182, 2182, 581: 2182, 2182, 2182, 2182, 591: 2182, 2182}, - {2180, 2180, 9: 2180, 52: 2180, 549: 2180, 551: 2180, 558: 2180, 561: 2180, 569: 2180, 2180, 574: 2180, 577: 2180, 2180, 2180, 581: 2180, 2180, 2180, 2180, 591: 2180, 2180}, + {1243, 1243, 52: 1243, 554: 1243, 556: 1243, 563: 1243, 566: 1243, 574: 1243, 1243}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4005, 1003: 4007, 1027: 6740}, + {2199, 2199, 9: 4008, 52: 2199, 554: 2199, 556: 6741, 563: 2199, 566: 2199, 574: 2199, 2199, 579: 2199, 582: 2199, 2199, 2199, 587: 2199, 589: 2199, 597: 2199, 599: 2199, 1552: 6742}, + {449: 6743}, + {2197, 2197, 52: 2197, 554: 2197, 556: 2197, 563: 2197, 566: 2197, 574: 2197, 2197, 579: 2197, 582: 2197, 2197, 2197, 587: 2197, 589: 2197, 597: 2197, 599: 2197}, // 3790 - {2179, 2179, 9: 2179, 52: 2179, 549: 2179, 551: 2179, 558: 2179, 561: 2179, 569: 2179, 2179, 574: 2179, 577: 2179, 2179, 2179, 581: 2179, 2179, 2179, 2179, 591: 2179, 2179}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6721, 791: 6720, 3121, 3122, 3120}, - {2177, 2177, 9: 2177, 52: 2177, 549: 2177, 551: 2177, 558: 2177, 561: 2177, 569: 2177, 2177, 574: 2177, 577: 2177, 2177, 2177, 581: 2177, 2177, 2177, 2177, 591: 2177, 2177}, - {2178, 2178, 9: 2178, 52: 2178, 549: 2178, 551: 2178, 558: 2178, 561: 2178, 569: 2178, 2178, 574: 2178, 577: 2178, 2178, 2178, 581: 2178, 2178, 2178, 2178, 591: 2178, 2178}, - {2176, 2176, 9: 2176, 52: 2176, 549: 2176, 551: 2176, 558: 2176, 561: 2176, 569: 2176, 2176, 574: 2176, 577: 2176, 2176, 2176, 581: 2176, 2176, 2176, 2176, 591: 2176, 2176}, + {2198, 2198, 52: 2198, 554: 2198, 556: 2198, 563: 2198, 566: 2198, 574: 2198, 2198, 579: 2198, 582: 2198, 2198, 2198, 587: 2198, 589: 2198, 597: 2198, 599: 2198}, + {453, 453, 52: 453, 554: 453, 556: 453, 563: 453, 566: 453, 574: 453, 453, 579: 453, 582: 453, 453, 453, 587: 453, 4840, 453, 596: 453, 914: 4841, 6769}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 667: 6210, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6217, 987: 6207, 1021: 6754, 1388: 6753, 1518: 6752}, + {1087, 1087, 52: 1087, 554: 1087, 556: 1087, 563: 1087, 566: 1087, 574: 1087, 1087, 579: 1087, 582: 1087, 1087, 1087, 587: 1087, 589: 1087, 596: 6732, 1079: 6734, 1109: 6747}, + {1544, 1544, 52: 1544, 554: 1544, 556: 1544, 563: 1544, 566: 1544, 574: 1544, 1544, 579: 1544, 582: 1544, 1544, 1544, 587: 1544, 589: 3981, 867: 4035, 937: 6748}, // 3795 - {1240, 1240}, - {1252, 1252}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 6737, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6738, 3121, 3122, 3120}, - {97: 6730, 302: 6729}, - {1244, 1244}, + {1108, 1108, 52: 1108, 554: 1108, 556: 1108, 563: 1108, 566: 1108, 574: 1108, 1108, 579: 3983, 582: 3982, 1108, 1108, 587: 1108, 868: 4040, 953: 6749}, + {1079, 1079, 52: 1079, 554: 1079, 556: 1079, 563: 1079, 566: 1079, 574: 1079, 1079, 583: 4042, 1079, 587: 4043, 1018: 6750}, + {1085, 1085, 52: 1085, 554: 1085, 556: 1085, 563: 1085, 566: 1085, 574: 1085, 1085, 584: 4071, 1019: 6751}, + {1244, 1244, 52: 1244, 554: 1244, 556: 1244, 563: 1244, 566: 1244, 574: 1244, 1244}, + {453, 453, 52: 453, 554: 453, 556: 453, 563: 453, 566: 453, 574: 453, 453, 579: 453, 582: 453, 453, 453, 587: 453, 4840, 453, 596: 453, 453, 599: 453, 914: 4841, 6755}, // 3800 - {917: 6728}, - {1243, 1243}, - {1246, 1246, 97: 6735}, - {302: 6731}, - {1245, 1245, 97: 6733, 917: 6732}, + {1232, 1232, 52: 1232, 554: 1232, 556: 1232, 563: 1232, 566: 1232, 574: 1232, 1232, 579: 1232, 582: 1232, 1232, 1232, 587: 1232, 1232, 1232, 596: 1232}, + {1172, 1172, 9: 6265, 52: 1172, 554: 1172, 556: 1172, 563: 1172, 566: 1172, 574: 1172, 1172, 579: 1172, 582: 1172, 1172, 1172, 587: 1172, 1172, 1172, 596: 1172, 1172, 599: 1172}, + {1087, 1087, 52: 1087, 554: 1087, 556: 1087, 563: 1087, 566: 1087, 574: 1087, 1087, 579: 1087, 582: 1087, 1087, 1087, 587: 1087, 589: 1087, 596: 6732, 1087, 599: 1087, 1079: 6734, 1109: 6756}, + {2196, 2196, 52: 2196, 554: 2196, 556: 2196, 563: 2196, 566: 2196, 574: 2196, 2196, 579: 2196, 582: 2196, 2196, 2196, 587: 2196, 589: 2196, 597: 6757, 599: 2196, 1217: 6758}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6768}, // 3805 - {1248, 1248}, - {917: 6734}, - {1247, 1247}, - {917: 6736}, - {1249, 1249}, + {1231, 1231, 52: 1231, 554: 1231, 556: 1231, 563: 1231, 566: 1231, 574: 1231, 1231, 579: 1231, 582: 1231, 1231, 1231, 587: 1231, 589: 1231, 599: 6760, 1544: 6759}, + {1257, 1257, 52: 1257, 554: 1257, 556: 1257, 563: 1257, 566: 1257, 574: 1257, 1257, 579: 1257, 582: 1257, 1257, 1257, 587: 1257, 589: 1257}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4193, 3149, 3150, 3148, 1053: 6763, 1339: 6762, 1545: 6761}, + {1230, 1230, 9: 6766, 52: 1230, 554: 1230, 556: 1230, 563: 1230, 566: 1230, 574: 1230, 1230, 579: 1230, 582: 1230, 1230, 1230, 587: 1230, 589: 1230}, + {1229, 1229, 9: 1229, 52: 1229, 554: 1229, 556: 1229, 563: 1229, 566: 1229, 574: 1229, 1229, 579: 1229, 582: 1229, 1229, 1229, 587: 1229, 589: 1229}, // 3810 - {1936, 1936, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6739, 3121, 3122, 3120}, - {1251, 1251}, - {1250, 1250}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6741, 3121, 3122, 3120}, - {1256, 1256}, + {561: 6764}, + {555: 4194, 1341: 6765}, + {1227, 1227, 9: 1227, 52: 1227, 554: 1227, 556: 1227, 563: 1227, 566: 1227, 574: 1227, 1227, 579: 1227, 582: 1227, 1227, 1227, 587: 1227, 589: 1227}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4193, 3149, 3150, 3148, 1053: 6763, 1339: 6767}, + {1228, 1228, 9: 1228, 52: 1228, 554: 1228, 556: 1228, 563: 1228, 566: 1228, 574: 1228, 1228, 579: 1228, 582: 1228, 1228, 1228, 587: 1228, 589: 1228}, // 3815 - {1260, 1260, 561: 6743}, - {646: 3771, 796: 6745, 1518: 6744}, - {1259, 1259, 9: 6746}, - {1258, 1258, 9: 1258}, - {646: 3771, 796: 6747}, + {2195, 2195, 52: 2195, 554: 2195, 556: 2195, 563: 2195, 566: 2195, 574: 2195, 2195, 579: 2195, 582: 2195, 2195, 2195, 586: 2195, 2195, 2195, 2195, 591: 3869, 3867, 3868, 3866, 3864, 2195, 599: 2195, 826: 3865, 3863}, + {1258, 1258, 52: 1258, 554: 1258, 556: 1258, 563: 1258, 566: 1258, 574: 1258, 1258, 579: 1258, 582: 1258, 1258, 1258, 587: 1258, 589: 1258, 596: 1258}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 585: 6786, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 6787, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6785, 1201: 6788, 1398: 6789, 1484: 6790}, + {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, 53: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 555: 1106, 557: 1106, 1106, 1106, 1106, 564: 1106, 1106, 567: 1106, 1106, 1106, 571: 1106, 1106, 576: 1106, 578: 1106, 580: 1106, 585: 1106, 598: 1106, 605: 1106, 610: 1106, 1106, 649: 1106, 1106, 1106, 1106, 654: 1106, 1106, 659: 1106, 1106, 662: 1106, 1106, 1106, 1106, 1106, 1106, 669: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 682: 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 721: 1106, 1106, 1106, 1106, 1106, 1106, 735: 1106, 740: 1106, 853: 1106, 1106, 857: 1106, 859: 1106, 861: 1106, 865: 1106, 874: 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, 53: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 555: 1105, 557: 1105, 1105, 1105, 1105, 564: 1105, 1105, 567: 1105, 1105, 1105, 571: 1105, 1105, 576: 1105, 578: 1105, 580: 1105, 585: 1105, 598: 1105, 605: 1105, 610: 1105, 1105, 649: 1105, 1105, 1105, 1105, 654: 1105, 1105, 659: 1105, 1105, 662: 1105, 1105, 1105, 1105, 1105, 1105, 669: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 682: 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 721: 1105, 1105, 1105, 1105, 1105, 1105, 735: 1105, 740: 1105, 853: 1105, 1105, 857: 1105, 859: 1105, 861: 1105, 865: 1105, 874: 1105, 1105, 1105}, // 3820 - {1257, 1257, 9: 1257}, - {581: 6749}, - {552: 6751, 646: 3771, 796: 6752, 1449: 6750}, - {1263, 1263}, - {1262, 1262}, + {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, 53: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 555: 1104, 557: 1104, 1104, 1104, 1104, 564: 1104, 1104, 567: 1104, 1104, 1104, 571: 1104, 1104, 576: 1104, 578: 1104, 580: 1104, 585: 1104, 598: 1104, 605: 1104, 610: 1104, 1104, 649: 1104, 1104, 1104, 1104, 654: 1104, 1104, 659: 1104, 1104, 662: 1104, 1104, 1104, 1104, 1104, 1104, 669: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 682: 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 721: 1104, 1104, 1104, 1104, 1104, 1104, 735: 1104, 740: 1104, 853: 1104, 1104, 857: 1104, 859: 1104, 861: 1104, 865: 1104, 874: 1104, 1104, 1104}, + {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, 53: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 555: 1103, 557: 1103, 1103, 1103, 1103, 564: 1103, 1103, 567: 1103, 1103, 1103, 571: 1103, 1103, 576: 1103, 578: 1103, 580: 1103, 585: 1103, 598: 1103, 605: 1103, 610: 1103, 1103, 649: 1103, 1103, 1103, 1103, 654: 1103, 1103, 659: 1103, 1103, 662: 1103, 1103, 1103, 1103, 1103, 1103, 669: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 682: 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 721: 1103, 1103, 1103, 1103, 1103, 1103, 735: 1103, 740: 1103, 853: 1103, 1103, 857: 1103, 859: 1103, 861: 1103, 865: 1103, 874: 1103, 1103, 1103}, + {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, 53: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 555: 1102, 557: 1102, 1102, 1102, 1102, 564: 1102, 1102, 567: 1102, 1102, 1102, 571: 1102, 1102, 576: 1102, 578: 1102, 580: 1102, 585: 1102, 598: 1102, 605: 1102, 610: 1102, 1102, 649: 1102, 1102, 1102, 1102, 654: 1102, 1102, 659: 1102, 1102, 662: 1102, 1102, 1102, 1102, 1102, 1102, 669: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 682: 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 721: 1102, 1102, 1102, 1102, 1102, 1102, 735: 1102, 740: 1102, 853: 1102, 1102, 857: 1102, 859: 1102, 861: 1102, 865: 1102, 874: 1102, 1102, 1102}, + {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, 53: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 555: 1101, 557: 1101, 1101, 1101, 1101, 564: 1101, 1101, 567: 1101, 1101, 1101, 571: 1101, 1101, 576: 1101, 578: 1101, 580: 1101, 585: 1101, 598: 1101, 605: 1101, 610: 1101, 1101, 649: 1101, 1101, 1101, 1101, 654: 1101, 1101, 659: 1101, 1101, 662: 1101, 1101, 1101, 1101, 1101, 1101, 669: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 682: 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 721: 1101, 1101, 1101, 1101, 1101, 1101, 735: 1101, 740: 1101, 853: 1101, 1101, 857: 1101, 859: 1101, 861: 1101, 865: 1101, 874: 1101, 1101, 1101}, + {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, 53: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 555: 1100, 557: 1100, 1100, 1100, 1100, 564: 1100, 1100, 567: 1100, 1100, 1100, 571: 1100, 1100, 576: 1100, 578: 1100, 580: 1100, 585: 1100, 598: 1100, 605: 1100, 610: 1100, 1100, 649: 1100, 1100, 1100, 1100, 654: 1100, 1100, 659: 1100, 1100, 662: 1100, 1100, 1100, 1100, 1100, 1100, 669: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 682: 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 721: 1100, 1100, 1100, 1100, 1100, 1100, 735: 1100, 740: 1100, 853: 1100, 1100, 857: 1100, 859: 1100, 861: 1100, 865: 1100, 874: 1100, 1100, 1100}, // 3825 - {1261, 1261}, - {2: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 10: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 53: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 579: 1278, 1278, 852: 6128, 854: 6130, 856: 6129, 959: 6131, 1011: 6754}, - {2: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 10: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 53: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 579: 6755, 1579, 1218: 6756}, - {2: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 10: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 53: 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 580: 1578}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6757}, + {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, 53: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 555: 1099, 557: 1099, 1099, 1099, 1099, 564: 1099, 1099, 567: 1099, 1099, 1099, 571: 1099, 1099, 576: 1099, 578: 1099, 580: 1099, 585: 1099, 598: 1099, 605: 1099, 610: 1099, 1099, 649: 1099, 1099, 1099, 1099, 654: 1099, 1099, 659: 1099, 1099, 662: 1099, 1099, 1099, 1099, 1099, 1099, 669: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 682: 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 721: 1099, 1099, 1099, 1099, 1099, 1099, 735: 1099, 740: 1099, 853: 1099, 1099, 857: 1099, 859: 1099, 861: 1099, 865: 1099, 874: 1099, 1099, 1099}, + {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, 53: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 555: 1098, 557: 1098, 1098, 1098, 1098, 564: 1098, 1098, 567: 1098, 1098, 1098, 571: 1098, 1098, 576: 1098, 578: 1098, 580: 1098, 585: 1098, 598: 1098, 605: 1098, 610: 1098, 1098, 649: 1098, 1098, 1098, 1098, 654: 1098, 1098, 659: 1098, 1098, 662: 1098, 1098, 1098, 1098, 1098, 1098, 669: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 682: 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 721: 1098, 1098, 1098, 1098, 1098, 1098, 735: 1098, 740: 1098, 853: 1098, 1098, 857: 1098, 859: 1098, 861: 1098, 865: 1098, 874: 1098, 1098, 1098}, + {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, 53: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 6776, 6782, 6783, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 555: 1096, 557: 1096, 1096, 1096, 1096, 564: 1096, 1096, 567: 1096, 1096, 1096, 571: 1096, 1096, 576: 1096, 578: 1096, 580: 1096, 585: 1096, 598: 6779, 605: 1096, 610: 1096, 1096, 649: 1096, 1096, 1096, 1096, 654: 1096, 1096, 659: 1096, 1096, 662: 1096, 1096, 1096, 1096, 1096, 1096, 669: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 682: 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 721: 1096, 1096, 1096, 1096, 1096, 1096, 735: 1096, 740: 4301, 853: 4299, 4300, 857: 6201, 859: 6203, 861: 6202, 865: 6198, 874: 6775, 6778, 6774, 911: 6694, 913: 6772, 964: 6773, 971: 6771, 1297: 6784, 6777}, + {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, 578: 1094, 580: 1094, 585: 1094, 598: 1094, 605: 1094, 610: 1094, 1094, 649: 1094, 1094, 1094, 1094, 654: 1094, 1094, 659: 1094, 1094, 662: 1094, 1094, 1094, 1094, 1094, 1094, 669: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 682: 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 721: 1094, 1094, 1094, 1094, 1094, 1094, 735: 1094, 740: 1094, 853: 1094, 1094, 857: 1094, 859: 1094, 861: 1094, 865: 1094, 874: 1094, 1094, 1094}, + {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, 578: 1090, 580: 1090, 585: 1090, 598: 1090, 605: 1090, 610: 1090, 1090, 649: 1090, 1090, 1090, 1090, 654: 1090, 1090, 659: 1090, 1090, 662: 1090, 1090, 1090, 1090, 1090, 1090, 669: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 682: 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 721: 1090, 1090, 1090, 1090, 1090, 1090, 735: 1090, 740: 1090, 853: 1090, 1090, 857: 1090, 859: 1090, 861: 1090, 865: 1090, 874: 1090, 1090, 1090}, // 3830 - {205: 1142, 550: 1142, 1142, 565: 6196, 567: 1142, 575: 1142, 627: 1142, 668: 1142, 990: 6758}, - {205: 6766, 550: 6759, 2979, 567: 6767, 575: 6765, 627: 2977, 668: 2973, 795: 6764, 826: 6762, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 6763, 6761, 1120: 6760, 1217: 6768}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2673, 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 2980, 2979, 567: 2978, 627: 2977, 668: 2973, 791: 4117, 3121, 3122, 3120, 6622, 826: 3937, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 3939, 3938, 841: 4118, 923: 5761, 1147: 6781}, - {550: 3983, 962: 6778, 1118: 6777}, - {1571, 1571, 549: 1571, 561: 1571}, + {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, 578: 1089, 580: 1089, 585: 1089, 598: 1089, 605: 1089, 610: 1089, 1089, 649: 1089, 1089, 1089, 1089, 654: 1089, 1089, 659: 1089, 1089, 662: 1089, 1089, 1089, 1089, 1089, 1089, 669: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 682: 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 721: 1089, 1089, 1089, 1089, 1089, 1089, 735: 1089, 740: 1089, 853: 1089, 1089, 857: 1089, 859: 1089, 861: 1089, 865: 1089, 874: 1089, 1089, 1089}, + {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, 578: 1095, 580: 1095, 585: 1095, 598: 1095, 605: 1095, 610: 1095, 1095, 649: 1095, 1095, 1095, 1095, 654: 1095, 1095, 659: 1095, 1095, 662: 1095, 1095, 1095, 1095, 1095, 1095, 669: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 682: 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 721: 1095, 1095, 1095, 1095, 1095, 1095, 735: 1095, 740: 1095, 853: 1095, 1095, 857: 1095, 859: 1095, 861: 1095, 865: 1095, 874: 1095, 1095, 1095}, + {2207, 2207, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 2207, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2207, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 2207, 556: 2207, 6803, 561: 6802, 563: 2207, 566: 2207, 574: 2207, 2207, 579: 2207, 582: 2207, 2207, 2207, 586: 2207, 2207, 2207, 2207, 591: 3869, 3867, 3868, 3866, 3864, 2207, 2207, 796: 6801, 3149, 3150, 3148, 826: 3865, 3863, 1395: 6800, 6799}, + {2211, 2211, 9: 2211, 52: 2211, 554: 2211, 556: 2211, 563: 2211, 566: 2211, 574: 2211, 2211, 579: 2211, 582: 2211, 2211, 2211, 586: 2211, 2211, 2211, 2211, 596: 2211, 2211}, + {1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 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, 1526, 1526, 566: 1526, 1526, 1526, 1526, 574: 1526, 1526, 577: 1526, 579: 1526, 582: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 591: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 608: 1526, 630: 1526, 633: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 653: 1526, 656: 1526, 1526, 1526, 661: 1526, 730: 1526, 739: 6794, 742: 1526, 1526}, // 3835 - {1570, 1570, 549: 1570, 558: 1034, 561: 1570, 569: 1034, 1034}, - {1569, 1569, 549: 1569, 561: 1569}, - {1568, 1568, 549: 1568, 558: 1033, 561: 1568, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 6770, 1364: 6769}, - {550: 1566}, + {2201, 2201, 9: 2201, 52: 2201, 554: 2201, 556: 2201, 563: 2201, 566: 2201, 574: 2201, 2201, 579: 2201, 582: 2201, 2201, 2201, 586: 2201, 2201, 2201, 2201, 596: 2201, 2201}, + {1088, 1088, 9: 6792, 52: 1088, 554: 1088, 556: 1088, 563: 1088, 566: 1088, 574: 1088, 1088, 579: 1088, 582: 1088, 1088, 1088, 586: 1088, 1088, 1088, 1088, 596: 1088, 1088}, + {2196, 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, 6757, 1217: 6791}, + {1259, 1259, 52: 1259, 554: 1259, 556: 1259, 563: 1259, 566: 1259, 574: 1259, 1259, 579: 1259, 582: 1259, 1259, 1259, 586: 1259, 1259, 1259, 1259, 596: 1259}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 585: 6786, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 6787, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 6785, 1201: 6793}, // 3840 - {550: 1565, 659: 3982, 1036: 3981, 1119: 3980}, - {1551, 1551, 561: 1551}, - {1567, 1567, 9: 6773, 549: 1567, 561: 1567}, - {573: 6258, 737: 6259, 912: 6771}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6772}, + {2200, 2200, 9: 2200, 52: 2200, 554: 2200, 556: 2200, 563: 2200, 566: 2200, 574: 2200, 2200, 579: 2200, 582: 2200, 2200, 2200, 586: 2200, 2200, 2200, 2200, 596: 2200, 2200}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6795, 796: 6796, 3149, 3150, 3148}, + {2210, 2210, 9: 2210, 52: 2210, 554: 2210, 556: 2210, 563: 2210, 566: 2210, 574: 2210, 2210, 579: 2210, 582: 2210, 2210, 2210, 586: 2210, 2210, 2210, 2210, 596: 2210, 2210}, + {1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 4612, 1525, 1525, 1525, 560: 1525, 1525, 1525, 1525, 566: 1525, 1525, 1525, 1525, 574: 1525, 1525, 577: 1525, 579: 1525, 582: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 591: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 608: 1525, 630: 1525, 633: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 653: 1525, 656: 1525, 1525, 1525, 661: 1525, 730: 1525, 739: 6797, 742: 1525, 1525}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6798, 796: 4031, 3149, 3150, 3148}, // 3845 - {1555, 1555, 9: 1555, 549: 1555, 561: 1555}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 6774}, - {573: 6258, 737: 6259, 912: 6775}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3989, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3985, 913: 6776}, - {1554, 1554, 9: 1554, 549: 1554, 561: 1554}, + {2209, 2209, 9: 2209, 52: 2209, 554: 2209, 556: 2209, 563: 2209, 566: 2209, 574: 2209, 2209, 579: 2209, 582: 2209, 2209, 2209, 586: 2209, 2209, 2209, 2209, 596: 2209, 2209}, + {2208, 2208, 9: 2208, 52: 2208, 554: 2208, 556: 2208, 563: 2208, 566: 2208, 574: 2208, 2208, 579: 2208, 582: 2208, 2208, 2208, 586: 2208, 2208, 2208, 2208, 596: 2208, 2208}, + {2206, 2206, 9: 2206, 52: 2206, 554: 2206, 556: 2206, 563: 2206, 566: 2206, 574: 2206, 2206, 579: 2206, 582: 2206, 2206, 2206, 586: 2206, 2206, 2206, 2206, 596: 2206, 2206}, + {2205, 2205, 9: 2205, 52: 2205, 554: 2205, 556: 2205, 563: 2205, 566: 2205, 574: 2205, 2205, 579: 2205, 582: 2205, 2205, 2205, 586: 2205, 2205, 2205, 2205, 596: 2205, 2205}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6805, 796: 6804, 3149, 3150, 3148}, // 3850 - {1572, 1572, 9: 6779, 549: 1572, 561: 1572}, - {1564, 1564, 9: 1564, 549: 1564, 561: 1564}, - {550: 3983, 962: 6780}, - {1563, 1563, 9: 1563, 549: 1563, 561: 1563}, - {52: 6782}, + {2203, 2203, 9: 2203, 52: 2203, 554: 2203, 556: 2203, 563: 2203, 566: 2203, 574: 2203, 2203, 579: 2203, 582: 2203, 2203, 2203, 586: 2203, 2203, 2203, 2203, 596: 2203, 2203}, + {2204, 2204, 9: 2204, 52: 2204, 554: 2204, 556: 2204, 563: 2204, 566: 2204, 574: 2204, 2204, 579: 2204, 582: 2204, 2204, 2204, 586: 2204, 2204, 2204, 2204, 596: 2204, 2204}, + {2202, 2202, 9: 2202, 52: 2202, 554: 2202, 556: 2202, 563: 2202, 566: 2202, 574: 2202, 2202, 579: 2202, 582: 2202, 2202, 2202, 586: 2202, 2202, 2202, 2202, 596: 2202, 2202}, + {1260, 1260}, + {1272, 1272}, // 3855 - {205: 6766, 550: 2980, 2979, 567: 6767, 627: 2977, 668: 2973, 795: 6787, 826: 6785, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 6786, 6784, 1120: 6783}, - {550: 3983, 962: 6778, 1118: 6788}, - {1576, 1576, 549: 1576, 561: 1576}, - {1575, 1575, 549: 1575, 558: 1034, 561: 1575, 569: 1034, 1034}, - {1574, 1574, 549: 1574, 561: 1574}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 6821, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6822, 3149, 3150, 3148}, + {97: 6814, 306: 6813}, + {1264, 1264}, + {922: 6812}, + {1263, 1263}, // 3860 - {1573, 1573, 549: 1573, 558: 1033, 561: 1573, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {1577, 1577, 9: 6779, 549: 1577, 561: 1577}, - {2: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 10: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 53: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 568: 1278, 579: 1278, 1278, 852: 6128, 854: 6130, 856: 6129, 959: 6131, 1011: 6790}, - {2: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 10: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 53: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 568: 4781, 579: 2161, 2161, 984: 6791}, - {2: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 10: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 53: 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 579: 6755, 1579, 1218: 6792}, + {1266, 1266, 97: 6819}, + {306: 6815}, + {1265, 1265, 97: 6817, 922: 6816}, + {1268, 1268}, + {922: 6818}, // 3865 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 6793}, - {205: 1142, 550: 1142, 1142, 565: 6196, 567: 1142, 575: 1142, 627: 1142, 668: 1142, 990: 6794}, - {205: 6766, 550: 6759, 2979, 567: 6767, 575: 6765, 627: 2977, 668: 2973, 795: 6764, 826: 6762, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 6763, 6761, 1120: 6760, 1217: 6795}, - {1553, 1553, 549: 6797, 561: 1553, 1427: 6796}, - {1580, 1580, 561: 1580}, + {1267, 1267}, + {922: 6820}, + {1269, 1269}, + {1962, 1962, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6823, 3149, 3150, 3148}, + {1271, 1271}, // 3870 - {318: 6798}, - {663: 6799}, - {731: 6800}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 6247, 1018: 6248, 1048: 6801}, - {1552, 1552, 9: 6250, 561: 1552}, + {1270, 1270}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6825, 3149, 3150, 3148}, + {1276, 1276}, + {1280, 1280, 566: 6827}, + {654: 3804, 801: 6829, 1530: 6828}, // 3875 - {1584, 1584, 550: 6810, 734: 2133}, - {1585, 1585}, - {734: 6805}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6806, 3121, 3122, 3120}, - {1583, 1583, 550: 6807}, + {1279, 1279, 9: 6830}, + {1278, 1278, 9: 1278}, + {654: 3804, 801: 6831}, + {1277, 1277, 9: 1277}, + {586: 6833}, // 3880 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 6808}, - {52: 6809}, - {1581, 1581}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 2230, 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 3932, 878: 4438, 945: 6811}, - {52: 6812}, + {557: 6835, 654: 3804, 801: 6836, 1459: 6834}, + {1283, 1283}, + {1282, 1282}, + {1281, 1281}, + {2: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 10: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 53: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 584: 1298, 1298, 857: 6201, 859: 6203, 861: 6202, 964: 6204, 1017: 6838}, // 3885 - {1582, 1582}, - {2: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 10: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 53: 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 554: 2390, 557: 2390, 572: 2390, 575: 2390, 580: 2390, 598: 2390, 728: 2390}, - {581: 6919}, - {581: 6824}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6819, 791: 6123, 3121, 3122, 3120, 927: 6821, 1374: 6820}, + {2: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 10: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 53: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 584: 6839, 1600, 1224: 6840}, + {2: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 10: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 53: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 585: 1599}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6841}, + {210: 1162, 555: 1162, 1162, 570: 6269, 572: 1162, 581: 1162, 632: 1162, 680: 1162, 996: 6842}, + {210: 6850, 555: 6843, 3005, 572: 6851, 581: 6849, 632: 3003, 680: 2999, 800: 6848, 831: 6846, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 6847, 6845, 1125: 6844, 1223: 6852}, // 3890 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 6818}, - {9: 4021, 581: 2321, 732: 2321}, - {581: 2323, 732: 2323}, - {9: 6822, 581: 2322, 732: 2322}, - {9: 2320, 581: 2320, 732: 2320}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2699, 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 3006, 3005, 572: 3004, 632: 3003, 680: 2999, 796: 4151, 3149, 3150, 3148, 6706, 831: 3971, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 3973, 3972, 846: 4152, 928: 5834, 1153: 6865}, + {555: 4017, 967: 6862, 1123: 6861}, + {1592, 1592, 554: 1592, 566: 1592}, + {1591, 1591, 554: 1591, 563: 1054, 566: 1591, 574: 1054, 1054}, + {1590, 1590, 554: 1590, 566: 1590}, // 3895 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 6823}, - {9: 2319, 581: 2319, 732: 2319}, - {552: 6825}, - {2318, 2318, 17: 2318, 59: 2318, 61: 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, 549: 2318, 733: 2318, 975: 6826}, - {2324, 2324, 17: 6862, 59: 6829, 61: 6858, 6851, 6834, 6830, 6831, 6848, 6828, 6838, 6846, 6861, 6837, 6847, 6845, 6839, 6850, 6849, 6864, 6868, 6842, 6859, 6843, 6852, 6833, 6860, 6865, 6832, 6835, 6866, 6836, 6844, 6867, 6840, 6841, 549: 6853, 733: 6863, 971: 6855, 6854, 6857, 6827, 976: 6856}, + {1589, 1589, 554: 1589, 563: 1053, 566: 1589, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 6854, 1374: 6853}, + {555: 1587}, + {555: 1586, 664: 4016, 1041: 4015, 1124: 4014}, + {1572, 1572, 566: 1572}, // 3900 - {2317, 2317, 17: 2317, 59: 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, 549: 2317, 733: 2317}, - {573: 2316, 576: 2316}, - {573: 2315, 576: 2315}, - {573: 2314, 576: 2314}, - {573: 2313, 576: 2313}, + {1588, 1588, 9: 6857, 554: 1588, 566: 1588}, + {577: 6331, 744: 6332, 917: 6855}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6856}, + {1576, 1576, 9: 1576, 554: 1576, 566: 1576}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 6858}, // 3905 - {573: 2312, 576: 2312, 648: 2312, 2312}, - {573: 2311, 576: 2311, 648: 2311, 2311}, - {573: 2310, 576: 2310, 648: 2310, 2310}, - {573: 2309, 576: 2309, 648: 2309, 2309}, - {573: 2308, 576: 2308, 648: 2308, 2308}, + {577: 6331, 744: 6332, 917: 6859}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 4023, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 4019, 918: 6860}, + {1575, 1575, 9: 1575, 554: 1575, 566: 1575}, + {1593, 1593, 9: 6863, 554: 1593, 566: 1593}, + {1585, 1585, 9: 1585, 554: 1585, 566: 1585}, // 3910 - {573: 2307, 576: 2307, 648: 2307, 2307}, - {573: 2306, 576: 2306, 648: 2306, 2306}, - {573: 2305, 576: 2305, 648: 2305, 2305}, - {573: 2304, 576: 2304, 648: 2304, 2304}, - {573: 2303, 576: 2303, 648: 2303, 2303}, + {555: 4017, 967: 6864}, + {1584, 1584, 9: 1584, 554: 1584, 566: 1584}, + {52: 6866}, + {210: 6850, 555: 3006, 3005, 572: 6851, 632: 3003, 680: 2999, 800: 6871, 831: 6869, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 6870, 6868, 1125: 6867}, + {555: 4017, 967: 6862, 1123: 6872}, // 3915 - {573: 2302, 576: 2302, 648: 2302, 2302}, - {573: 2301, 576: 2301, 648: 2301, 2301}, - {552: 2300, 573: 2300}, - {552: 2299, 573: 2299}, - {552: 2298, 573: 2298}, + {1597, 1597, 554: 1597, 566: 1597}, + {1596, 1596, 554: 1596, 563: 1054, 566: 1596, 574: 1054, 1054}, + {1595, 1595, 554: 1595, 566: 1595}, + {1594, 1594, 554: 1594, 563: 1053, 566: 1594, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {1598, 1598, 9: 6863, 554: 1598, 566: 1598}, // 3920 - {552: 2297, 573: 2297}, - {552: 2296, 573: 2296}, - {552: 2295, 573: 2295}, - {552: 2294, 573: 2294}, - {2: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 10: 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, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2293, 552: 2293, 568: 2293, 571: 2293, 573: 2293}, + {2: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 10: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 53: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 573: 1298, 584: 1298, 1298, 857: 6201, 859: 6203, 861: 6202, 964: 6204, 1017: 6874}, + {2: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 10: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 53: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 573: 4854, 584: 2187, 2187, 990: 6875}, + {2: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 10: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 53: 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 584: 6839, 1600, 1224: 6876}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 6877}, + {210: 1162, 555: 1162, 1162, 570: 6269, 572: 1162, 581: 1162, 632: 1162, 680: 1162, 996: 6878}, // 3925 - {2: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 10: 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, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2292, 552: 2292, 568: 2292, 571: 2292, 573: 2292}, - {318: 6918}, - {573: 4689, 576: 2368, 822: 6916}, - {573: 4689, 576: 2368, 648: 2368, 2368, 822: 6914}, - {552: 2368, 573: 4689, 822: 6912}, + {210: 6850, 555: 6843, 3005, 572: 6851, 581: 6849, 632: 3003, 680: 2999, 800: 6848, 831: 6846, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 6847, 6845, 1125: 6844, 1223: 6879}, + {1574, 1574, 554: 6881, 566: 1574, 1437: 6880}, + {1601, 1601, 566: 1601}, + {322: 6882}, + {668: 6883}, // 3930 - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 568: 2368, 571: 2368, 573: 4689, 822: 6907}, - {552: 2368, 573: 4689, 576: 2368, 822: 6902}, - {552: 2368, 573: 4689, 576: 2368, 822: 6899}, - {573: 4689, 576: 2368, 822: 6894}, - {143: 2368, 170: 2368, 573: 4689, 576: 2368, 822: 6891}, + {736: 6884}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 6320, 1024: 6321, 1054: 6885}, + {1573, 1573, 9: 6323, 566: 1573}, + {1605, 1605, 555: 6894, 739: 2159}, + {1606, 1606}, // 3935 - {251: 2368, 2368, 254: 2368, 573: 4689, 576: 2368, 648: 2368, 2368, 822: 6888}, - {251: 2368, 2368, 254: 2368, 573: 4689, 576: 2368, 648: 2368, 2368, 822: 6879}, - {552: 2368, 573: 4689, 822: 6877}, - {552: 2368, 573: 4689, 822: 6875}, - {552: 2368, 573: 4689, 822: 6873}, + {739: 6889}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6890, 3149, 3150, 3148}, + {1604, 1604, 555: 6891}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 6892}, + {52: 6893}, // 3940 - {552: 2368, 573: 4689, 822: 6871}, - {552: 2368, 573: 4689, 822: 6869}, - {552: 6870}, - {2270, 2270, 17: 2270, 59: 2270, 61: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 549: 2270, 733: 2270}, - {552: 6872}, + {1602, 1602}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 2256, 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 3966, 879: 4472, 942: 6895}, + {52: 6896}, + {1603, 1603}, + {2: 2416, 2416, 2416, 2416, 2416, 2416, 2416, 10: 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 53: 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 559: 2416, 562: 2416, 578: 2416, 581: 2416, 585: 2416, 605: 2416, 733: 2416}, // 3945 - {2271, 2271, 17: 2271, 59: 2271, 61: 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 549: 2271, 733: 2271}, - {552: 6874}, - {2272, 2272, 17: 2272, 59: 2272, 61: 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 549: 2272, 733: 2272}, - {552: 6876}, - {2273, 2273, 17: 2273, 59: 2273, 61: 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 549: 2273, 733: 2273}, + {586: 7000}, + {586: 6908}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6903, 796: 6196, 3149, 3150, 3148, 932: 6905, 1384: 6904}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 6902}, + {9: 4055, 586: 2347, 737: 2347}, // 3950 - {552: 6878}, - {2274, 2274, 17: 2274, 59: 2274, 61: 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 549: 2274, 733: 2274}, - {251: 6885, 6886, 254: 6887, 576: 3107, 648: 6883, 6884, 819: 6882, 1020: 6880, 1248: 6881}, - {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, 549: 2276, 733: 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, 549: 2275, 733: 2275}, + {586: 2349, 737: 2349}, + {9: 6906, 586: 2348, 737: 2348}, + {9: 2346, 586: 2346, 737: 2346}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 6907}, + {9: 2345, 586: 2345, 737: 2345}, // 3955 - {2266, 2266, 9: 2266, 17: 2266, 59: 2266, 61: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 121: 2266, 2266, 2266, 2266, 2266, 549: 2266, 733: 2266}, - {2265, 2265, 9: 2265, 17: 2265, 59: 2265, 61: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 121: 2265, 2265, 2265, 2265, 2265, 549: 2265, 733: 2265}, - {2264, 2264, 9: 2264, 17: 2264, 59: 2264, 61: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 121: 2264, 2264, 2264, 2264, 2264, 549: 2264, 733: 2264}, - {2263, 2263, 17: 2263, 59: 2263, 61: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 549: 2263, 733: 2263}, - {2262, 2262, 17: 2262, 59: 2262, 61: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 549: 2262, 733: 2262}, + {557: 6909}, + {2344, 2344, 17: 2344, 58: 2344, 60: 2344, 62: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 554: 2344, 738: 2344, 981: 6910}, + {2350, 2350, 17: 6946, 58: 6933, 60: 6913, 62: 6942, 6935, 6918, 6914, 6915, 6932, 6912, 6922, 6930, 6945, 6921, 6931, 6929, 6923, 6934, 6948, 6952, 6926, 6943, 6927, 6936, 6917, 6944, 6949, 6916, 6919, 6950, 6920, 6928, 6951, 6924, 6925, 554: 6937, 738: 6947, 977: 6939, 6938, 6941, 6911, 982: 6940}, + {2343, 2343, 17: 2343, 58: 2343, 60: 2343, 62: 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 554: 2343, 738: 2343}, + {577: 2342, 580: 2342}, // 3960 - {2261, 2261, 17: 2261, 59: 2261, 61: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 549: 2261, 733: 2261}, - {251: 6885, 6886, 254: 6887, 576: 3107, 648: 6883, 6884, 819: 6882, 1020: 6889, 1248: 6890}, - {2278, 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, 549: 2278, 733: 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, 549: 2277, 733: 2277}, - {143: 4043, 170: 4042, 576: 3107, 819: 3956, 834: 6893, 954: 6892}, + {577: 2341, 580: 2341}, + {577: 2340, 580: 2340}, + {577: 2339, 580: 2339}, + {577: 2338, 580: 2338, 651: 2338, 2338}, + {577: 2337, 580: 2337, 651: 2337, 2337}, // 3965 - {2280, 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, 549: 2280, 733: 2280}, - {2279, 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, 549: 2279, 733: 2279}, - {576: 3107, 819: 3956, 834: 6895}, - {278: 6896}, - {628: 6897}, + {577: 2336, 580: 2336, 651: 2336, 2336}, + {577: 2335, 580: 2335, 651: 2335, 2335}, + {577: 2334, 580: 2334, 651: 2334, 2334}, + {577: 2333, 580: 2333, 651: 2333, 2333}, + {577: 2332, 580: 2332, 651: 2332, 2332}, // 3970 - {151: 6898}, - {2281, 2281, 17: 2281, 59: 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, 549: 2281, 733: 2281}, - {552: 6900, 576: 3107, 819: 3956, 834: 6901}, - {2283, 2283, 17: 2283, 59: 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, 549: 2283, 733: 2283}, - {2282, 2282, 17: 2282, 59: 2282, 61: 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, 549: 2282, 733: 2282}, + {577: 2331, 580: 2331, 651: 2331, 2331}, + {577: 2330, 580: 2330, 651: 2330, 2330}, + {577: 2329, 580: 2329, 651: 2329, 2329}, + {577: 2328, 580: 2328, 651: 2328, 2328}, + {577: 2327, 580: 2327, 651: 2327, 2327}, // 3975 - {552: 6904, 576: 3107, 819: 3956, 834: 6903}, - {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, 128: 3857, 130: 3865, 149: 3853, 151: 3850, 3852, 3849, 3851, 3855, 3856, 3861, 3860, 3859, 3863, 3864, 3858, 3862, 3854, 549: 2284, 733: 2284, 907: 6905}, - {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, 549: 2285, 733: 2285}, - {381: 6906}, - {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, 549: 2286, 733: 2286}, + {557: 2326, 577: 2326}, + {557: 2325, 577: 2325}, + {557: 2324, 577: 2324}, + {557: 2323, 577: 2323}, + {557: 2322, 577: 2322}, // 3980 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 568: 6910, 571: 6911, 791: 3827, 3121, 3122, 3120, 825: 6909, 1501: 6908}, - {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, 549: 2287, 733: 2287}, - {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, 549: 447, 733: 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, 549: 446, 733: 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, 549: 445, 733: 445}, + {557: 2321, 577: 2321}, + {557: 2320, 577: 2320}, + {2: 2319, 2319, 2319, 2319, 2319, 2319, 2319, 10: 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, 2319, 2319, 2319, 2319, 2319, 2319, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 557: 2319, 573: 2319, 576: 2319, 2319}, + {2: 2318, 2318, 2318, 2318, 2318, 2318, 2318, 10: 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, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 557: 2318, 573: 2318, 576: 2318, 2318}, + {322: 6999}, // 3985 - {552: 6913}, - {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, 549: 2288, 733: 2288}, - {576: 3107, 648: 6883, 6884, 819: 6882, 1020: 6915}, - {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, 549: 2289, 733: 2289}, - {576: 3107, 819: 3956, 834: 6917}, + {577: 4726, 580: 2394, 825: 6997}, + {577: 4726, 580: 2394, 651: 2394, 2394, 825: 6995}, + {557: 2394, 577: 4726, 825: 6993}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 573: 2394, 576: 2394, 4726, 825: 6988}, + {557: 2394, 577: 4726, 580: 2394, 825: 6983}, // 3990 - {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, 549: 2290, 733: 2290}, - {2: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 10: 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, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2291, 552: 2291, 568: 2291, 571: 2291, 573: 2291}, - {552: 6920}, - {2318, 2318, 17: 2318, 59: 2318, 61: 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, 549: 2318, 733: 2318, 975: 6921}, - {2325, 2325, 17: 6862, 59: 6829, 61: 6858, 6851, 6834, 6830, 6831, 6848, 6828, 6838, 6846, 6861, 6837, 6847, 6845, 6839, 6850, 6849, 6864, 6868, 6842, 6859, 6843, 6852, 6833, 6860, 6865, 6832, 6835, 6866, 6836, 6844, 6867, 6840, 6841, 549: 6853, 733: 6863, 971: 6855, 6854, 6857, 6827, 976: 6856}, + {557: 2394, 577: 4726, 580: 2394, 825: 6980}, + {577: 4726, 580: 2394, 825: 6975}, + {144: 2394, 172: 2394, 577: 4726, 580: 2394, 825: 6972}, + {255: 2394, 2394, 258: 2394, 577: 4726, 580: 2394, 651: 2394, 2394, 825: 6969}, + {255: 2394, 2394, 258: 2394, 577: 4726, 580: 2394, 651: 2394, 2394, 825: 6963}, // 3995 - {225: 6926}, - {225: 6924}, - {576: 3107, 819: 4639, 851: 6925}, - {2260, 2260}, - {576: 3107, 819: 4639, 851: 6927}, + {557: 2394, 577: 4726, 825: 6961}, + {557: 2394, 577: 4726, 825: 6959}, + {557: 2394, 577: 4726, 825: 6957}, + {557: 2394, 577: 4726, 825: 6955}, + {557: 2394, 577: 4726, 825: 6953}, // 4000 - {2327, 2327}, - {171: 7102, 339: 7103}, - {225: 7098}, - {812, 812, 583: 7095, 603: 7094, 1482: 7093}, - {18: 7078, 51: 7079, 148: 7075, 232: 7080, 257: 7077, 627: 7074, 664: 7076, 991: 7081}, + {557: 6954}, + {2296, 2296, 17: 2296, 58: 2296, 60: 2296, 62: 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: 6956}, + {2297, 2297, 17: 2297, 58: 2297, 60: 2297, 62: 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}, + {557: 6958}, // 4005 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 7063, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7064}, - {891, 891, 578: 7058}, - {167: 7057}, - {420: 7055}, - {167: 7054}, + {2298, 2298, 17: 2298, 58: 2298, 60: 2298, 62: 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, 554: 2298, 738: 2298}, + {557: 6960}, + {2299, 2299, 17: 2299, 58: 2299, 60: 2299, 62: 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}, + {557: 6962}, + {2300, 2300, 17: 2300, 58: 2300, 60: 2300, 62: 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 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}, // 4010 - {143: 4043, 168: 7049, 170: 4042, 282: 7048, 954: 7050}, - {885, 885}, - {875, 875, 249: 7030, 295: 7031, 307: 7032, 310: 7029, 334: 7034, 343: 7033, 359: 7036, 363: 7035, 574: 875, 577: 875, 875, 735: 7037, 1297: 7028, 1485: 7027, 7026}, - {883, 883}, - {882, 882}, + {255: 6966, 6967, 258: 6968, 580: 3135, 651: 4782, 4783, 824: 4781, 976: 6964, 1254: 6965}, + {2302, 2302, 17: 2302, 58: 2302, 60: 2302, 62: 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 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}, + {2301, 2301, 17: 2301, 58: 2301, 60: 2301, 62: 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 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}, + {2289, 2289, 17: 2289, 58: 2289, 60: 2289, 62: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 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}, + {2288, 2288, 17: 2288, 58: 2288, 60: 2288, 62: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 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}, // 4015 - {815, 815, 335: 7018, 578: 7017, 583: 815, 603: 815}, - {225: 7014, 234: 7015}, - {581: 858, 625: 858}, - {581: 857, 625: 857}, - {581: 856, 625: 856}, + {2287, 2287, 17: 2287, 58: 2287, 60: 2287, 62: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 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}, + {255: 6966, 6967, 258: 6968, 580: 3135, 651: 4782, 4783, 824: 4781, 976: 6970, 1254: 6971}, + {2304, 2304, 17: 2304, 58: 2304, 60: 2304, 62: 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 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}, + {2303, 2303, 17: 2303, 58: 2303, 60: 2303, 62: 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303, 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}, + {144: 4077, 172: 4076, 580: 3135, 824: 3990, 839: 6974, 959: 6973}, // 4020 - {853, 853, 583: 853, 603: 853}, - {852, 852, 583: 852, 603: 852}, - {851, 851, 583: 851, 603: 851}, - {850, 850, 583: 850, 603: 850}, - {168: 7012}, + {2306, 2306, 17: 2306, 58: 2306, 60: 2306, 62: 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 554: 2306, 738: 2306}, + {2305, 2305, 17: 2305, 58: 2305, 60: 2305, 62: 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 554: 2305, 738: 2305}, + {580: 3135, 824: 3990, 839: 6976}, + {283: 6977}, + {633: 6978}, // 4025 - {581: 6984, 625: 6985, 924: 7007}, - {143: 802, 170: 802, 275: 6980, 1244: 7001}, - {550: 6996}, - {841, 841, 583: 841, 603: 841}, - {839, 839, 583: 839, 603: 839}, + {153: 6979}, + {2307, 2307, 17: 2307, 58: 2307, 60: 2307, 62: 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 554: 2307, 738: 2307}, + {557: 6981, 580: 3135, 824: 3990, 839: 6982}, + {2309, 2309, 17: 2309, 58: 2309, 60: 2309, 62: 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309, 554: 2309, 738: 2309}, + {2308, 2308, 17: 2308, 58: 2308, 60: 2308, 62: 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 554: 2308, 738: 2308}, // 4030 - {167: 6994, 196: 6995, 263: 6993}, - {835, 835, 583: 835, 603: 835}, - {800, 800, 581: 6984, 583: 800, 603: 800, 625: 6985, 924: 6987, 965: 6992}, - {167: 6991}, - {167: 6990}, + {557: 6985, 580: 3135, 824: 3990, 839: 6984}, + {2310, 2310, 17: 2310, 58: 2310, 60: 2310, 62: 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 128: 3891, 131: 3899, 151: 3887, 153: 3884, 3886, 3883, 3885, 3889, 3890, 3895, 3894, 3893, 3897, 3898, 3892, 3896, 3888, 554: 2310, 738: 2310, 912: 6986}, + {2311, 2311, 17: 2311, 58: 2311, 60: 2311, 62: 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, 554: 2311, 738: 2311}, + {385: 6987}, + {2312, 2312, 17: 2312, 58: 2312, 60: 2312, 62: 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, 554: 2312, 738: 2312}, // 4035 - {167: 6989}, - {800, 800, 581: 6984, 583: 800, 603: 800, 625: 6985, 924: 6987, 965: 6986}, - {829, 829, 583: 829, 603: 829}, - {828, 828, 583: 828, 603: 828}, - {827, 827, 583: 827, 603: 827}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 573: 6991, 576: 6992, 796: 3861, 3149, 3150, 3148, 830: 6990, 1511: 6989}, + {2313, 2313, 17: 2313, 58: 2313, 60: 2313, 62: 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, 554: 2313, 738: 2313}, + {462, 462, 17: 462, 58: 462, 60: 462, 62: 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 554: 462, 738: 462}, + {461, 461, 17: 461, 58: 461, 60: 461, 62: 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 554: 461, 738: 461}, + {460, 460, 17: 460, 58: 460, 60: 460, 62: 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 554: 460, 738: 460}, // 4040 - {826, 826, 583: 826, 603: 826}, - {825, 825, 583: 825, 603: 825}, - {824, 824, 583: 824, 603: 824}, - {823, 823, 583: 823, 603: 823}, - {822, 822, 583: 822, 603: 822}, + {557: 6994}, + {2314, 2314, 17: 2314, 58: 2314, 60: 2314, 62: 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, 554: 2314, 738: 2314}, + {580: 3135, 651: 4782, 4783, 824: 4781, 976: 6996}, + {2315, 2315, 17: 2315, 58: 2315, 60: 2315, 62: 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, 554: 2315, 738: 2315}, + {580: 3135, 824: 3990, 839: 6998}, // 4045 - {821, 821, 583: 821, 603: 821}, - {820, 820, 583: 820, 603: 820}, - {819, 819, 583: 819, 603: 819}, - {167: 6983}, - {817, 817, 583: 817, 603: 817}, + {2316, 2316, 17: 2316, 58: 2316, 60: 2316, 62: 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, 554: 2316, 738: 2316}, + {2: 2317, 2317, 2317, 2317, 2317, 2317, 2317, 10: 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, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2317, 2317, 2317, 2317, 2317, 2317, 557: 2317, 573: 2317, 576: 2317, 2317}, + {557: 7001}, + {2344, 2344, 17: 2344, 58: 2344, 60: 2344, 62: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 554: 2344, 738: 2344, 981: 7002}, + {2351, 2351, 17: 6946, 58: 6933, 60: 6913, 62: 6942, 6935, 6918, 6914, 6915, 6932, 6912, 6922, 6930, 6945, 6921, 6931, 6929, 6923, 6934, 6948, 6952, 6926, 6943, 6927, 6936, 6917, 6944, 6949, 6916, 6919, 6950, 6920, 6928, 6951, 6924, 6925, 554: 6937, 738: 6947, 977: 6939, 6938, 6941, 6911, 982: 6940}, // 4050 - {816, 816, 583: 816, 603: 816}, - {167: 808, 196: 808, 263: 808}, - {167: 807, 196: 807, 223: 807, 263: 807}, - {143: 801, 168: 801, 170: 801, 282: 801}, - {167: 797}, + {230: 7009}, + {230: 7007}, + {206: 7006}, + {145, 145}, + {580: 3135, 824: 4676, 855: 7008}, // 4055 - {167: 796}, - {818, 818, 583: 818, 603: 818}, - {2: 855, 855, 855, 855, 855, 855, 855, 10: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 53: 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 580: 855}, - {2: 854, 854, 854, 854, 854, 854, 854, 10: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 53: 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 580: 854}, - {830, 830, 583: 830, 603: 830}, + {2286, 2286}, + {580: 3135, 824: 4676, 855: 7010}, + {2353, 2353}, + {175: 7187, 343: 7188}, + {230: 7183}, // 4060 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 6988}, - {799, 799, 583: 799, 603: 799}, - {831, 831, 583: 831, 603: 831}, - {832, 832, 583: 832, 603: 832}, - {833, 833, 583: 833, 603: 833}, + {828, 828, 588: 7180, 608: 7179, 1492: 7178}, + {18: 7163, 51: 7164, 149: 7165, 7160, 261: 7162, 632: 7159, 669: 7161, 997: 7166}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 7148, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7149}, + {907, 907, 583: 7143}, + {169: 7142}, // 4065 - {834, 834, 583: 834, 603: 834}, - {838, 838, 583: 838, 603: 838}, - {837, 837, 583: 837, 603: 837}, - {836, 836, 583: 836, 603: 836}, - {580: 6997}, + {424: 7140}, + {169: 7139}, + {144: 4077, 170: 7134, 172: 4076, 287: 7133, 959: 7135}, + {901, 901}, + {891, 891, 253: 7115, 300: 7116, 311: 7117, 314: 7114, 338: 7119, 347: 7118, 363: 7121, 367: 7120, 579: 891, 582: 891, 891, 740: 7122, 1303: 7113, 1495: 7112, 7111}, // 4070 - {52: 6998}, - {328: 7000, 379: 6999}, - {842, 842, 583: 842, 603: 842}, - {840, 840, 583: 840, 603: 840}, - {143: 4043, 170: 4042, 954: 7002}, + {899, 899}, + {898, 898}, + {831, 831, 339: 7103, 583: 7102, 588: 831, 608: 831}, + {206: 7100, 230: 7099}, + {586: 874, 630: 874}, // 4075 - {581: 6984, 625: 6985, 924: 7004, 1299: 7003}, - {800, 800, 581: 6984, 583: 800, 603: 800, 625: 6985, 924: 6987, 965: 7006}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7005}, - {798, 798, 581: 798, 583: 798, 603: 798, 625: 798}, - {843, 843, 583: 843, 603: 843}, + {586: 873, 630: 873}, + {586: 872, 630: 872}, + {869, 869, 588: 869, 608: 869}, + {868, 868, 588: 868, 608: 868}, + {867, 867, 588: 867, 608: 867}, // 4080 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 7008, 3121, 3122, 3120, 824: 7009}, - {1276, 1276, 581: 6984, 583: 1276, 603: 1276, 625: 6985, 734: 4025, 924: 7010}, - {846, 846, 583: 846, 603: 846}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7011, 3121, 3122, 3120}, - {845, 845, 583: 845, 603: 845}, + {866, 866, 588: 866, 608: 866}, + {170: 7097}, + {586: 7069, 630: 7070, 929: 7092}, + {144: 818, 172: 818, 280: 7063, 1250: 7086}, + {555: 7081}, // 4085 - {800, 800, 581: 6984, 583: 800, 603: 800, 625: 6985, 924: 6987, 965: 7013}, - {848, 848, 583: 848, 603: 848}, - {576: 3107, 819: 4639, 851: 7016}, - {813, 813, 583: 813, 603: 813}, - {880, 880}, + {857, 857, 588: 857, 608: 857}, + {855, 855, 588: 855, 608: 855}, + {169: 7079, 200: 7080, 268: 7078}, + {851, 851, 588: 851, 608: 851}, + {816, 816, 586: 7069, 588: 816, 608: 816, 630: 7070, 929: 7072, 970: 7077}, // 4090 - {627: 7021, 664: 6813, 953: 7020, 1483: 7019}, - {814, 814, 583: 814, 603: 814}, - {881, 881}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 7025}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7022}, + {169: 7076}, + {169: 7075}, + {169: 7074}, + {816, 816, 586: 7069, 588: 816, 608: 816, 630: 7070, 929: 7072, 970: 7071}, + {845, 845, 588: 845, 608: 845}, // 4095 - {877, 877, 565: 7023}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7024, 3121, 3122, 3120}, - {876, 876}, - {878, 878}, - {862, 862, 574: 862, 577: 862, 7044, 1484: 7043}, + {844, 844, 588: 844, 608: 844}, + {843, 843, 588: 843, 608: 843}, + {842, 842, 588: 842, 608: 842}, + {841, 841, 588: 841, 608: 841}, + {840, 840, 588: 840, 608: 840}, // 4100 - {874, 874, 9: 7041, 574: 874, 577: 874, 874}, - {873, 873, 9: 873, 574: 873, 577: 873, 873}, - {871, 871, 9: 871, 574: 871, 577: 871, 871}, - {870, 870, 9: 870, 574: 870, 577: 870, 870}, - {416: 7040}, + {839, 839, 588: 839, 608: 839}, + {838, 838, 588: 838, 608: 838}, + {837, 837, 588: 837, 608: 837}, + {836, 836, 588: 836, 608: 836}, + {835, 835, 588: 835, 608: 835}, // 4105 - {454: 7039}, - {409: 7038}, - {866, 866, 9: 866, 574: 866, 577: 866, 866}, - {865, 865, 9: 865, 574: 865, 577: 865, 865}, - {864, 864, 9: 864, 574: 864, 577: 864, 864}, + {169: 7068}, + {833, 833, 588: 833, 608: 833}, + {832, 832, 588: 832, 608: 832}, + {169: 824, 200: 824, 268: 824}, + {169: 823, 200: 823, 228: 823, 268: 823}, // 4110 - {863, 863, 9: 863, 574: 863, 577: 863, 863}, - {867, 867, 9: 867, 574: 867, 577: 867, 867}, - {868, 868, 9: 868, 574: 868, 577: 868, 868}, - {869, 869, 9: 869, 574: 869, 577: 869, 869}, - {249: 7030, 295: 7031, 307: 7032, 310: 7029, 334: 7034, 343: 7033, 359: 7036, 363: 7035, 735: 7037, 1297: 7042}, + {144: 817, 170: 817, 172: 817, 287: 817}, + {169: 813}, + {169: 812}, + {206: 7067}, + {146, 146}, // 4115 - {872, 872, 9: 872, 574: 872, 577: 872, 872}, - {1088, 1088, 574: 3949, 577: 3948, 863: 4006, 948: 7047}, - {173: 7045}, - {576: 3107, 819: 4639, 851: 7046}, - {861, 861, 574: 861, 577: 861}, + {834, 834, 588: 834, 608: 834}, + {2: 871, 871, 871, 871, 871, 871, 871, 10: 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 53: 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 585: 871}, + {2: 870, 870, 870, 870, 870, 870, 870, 10: 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 53: 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 585: 870}, + {846, 846, 588: 846, 608: 846}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 7073}, // 4120 - {884, 884}, - {886, 886}, - {800, 800, 581: 6984, 583: 800, 603: 800, 625: 6985, 924: 6987, 965: 7053}, - {581: 6984, 625: 6985, 924: 7004, 1299: 7051}, - {800, 800, 581: 6984, 583: 800, 603: 800, 625: 6985, 924: 6987, 965: 7052}, + {815, 815, 588: 815, 608: 815}, + {847, 847, 588: 847, 608: 847}, + {848, 848, 588: 848, 608: 848}, + {849, 849, 588: 849, 608: 849}, + {850, 850, 588: 850, 608: 850}, // 4125 - {844, 844, 583: 844, 603: 844}, - {849, 849, 583: 849, 603: 849}, - {887, 887}, - {167: 7056}, - {888, 888}, + {854, 854, 588: 854, 608: 854}, + {853, 853, 588: 853, 608: 853}, + {852, 852, 588: 852, 608: 852}, + {585: 7082}, + {52: 7083}, // 4130 - {889, 889}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 7059}, - {860, 860, 561: 7061, 1519: 7060}, - {890, 890}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 6482, 6480, 993: 7062}, + {332: 7085, 383: 7084}, + {858, 858, 588: 858, 608: 858}, + {856, 856, 588: 856, 608: 856}, + {144: 4077, 172: 4076, 959: 7087}, + {586: 7069, 630: 7070, 929: 7089, 1305: 7088}, // 4135 - {859, 859, 9: 6483}, - {800, 800, 120: 2029, 226: 2029, 565: 2029, 581: 6984, 583: 800, 603: 800, 625: 6985, 729: 2029, 734: 2029, 924: 6987, 965: 7073}, - {120: 1142, 226: 7066, 565: 6196, 729: 1142, 990: 7065}, - {120: 7067, 729: 7068}, - {893, 893}, + {816, 816, 586: 7069, 588: 816, 608: 816, 630: 7070, 929: 7072, 970: 7091}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7090}, + {814, 814, 586: 814, 588: 814, 608: 814, 630: 814}, + {859, 859, 588: 859, 608: 859}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 7093, 3149, 3150, 3148, 829: 7094}, // 4140 - {438, 438, 583: 4767, 909: 4768, 7072}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7069, 3121, 3122, 3120}, - {120: 7070}, - {438, 438, 583: 4767, 909: 4768, 7071}, - {892, 892}, + {1296, 1296, 586: 7069, 588: 1296, 608: 1296, 630: 7070, 739: 4059, 929: 7095}, + {862, 862, 588: 862, 608: 862}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7096, 3149, 3150, 3148}, + {861, 861, 588: 861, 608: 861}, + {816, 816, 586: 7069, 588: 816, 608: 816, 630: 7070, 929: 7072, 970: 7098}, // 4145 - {894, 894}, - {847, 847, 583: 847, 603: 847}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7092}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7091}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 598: 5457, 888: 7089}, + {864, 864, 588: 864, 608: 864}, + {580: 3135, 824: 4676, 855: 7101}, + {829, 829, 588: 829, 608: 829}, + {896, 896}, + {632: 7106, 669: 6897, 958: 7105, 1493: 7104}, // 4150 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7088}, - {228: 7086}, - {591: 7084}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 7083}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7082}, + {830, 830, 588: 830, 608: 830}, + {897, 897}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 7110}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7107}, + {893, 893, 570: 7108}, // 4155 - {879, 879}, - {895, 895}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 791: 4698, 3121, 3122, 3120, 947: 7085}, - {896, 896}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5654, 3121, 3122, 3120, 1010: 7087}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7109, 3149, 3150, 3148}, + {892, 892}, + {894, 894}, + {878, 878, 579: 878, 582: 878, 7129, 1494: 7128}, + {890, 890, 9: 7126, 579: 890, 582: 890, 890}, // 4160 - {897, 897}, - {898, 898}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 7090}, - {899, 899}, - {900, 900}, + {889, 889, 9: 889, 579: 889, 582: 889, 889}, + {887, 887, 9: 887, 579: 887, 582: 887, 887}, + {886, 886, 9: 886, 579: 886, 582: 886, 886}, + {420: 7125}, + {459: 7124}, // 4165 - {901, 901}, - {902, 902}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3771, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3705, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 7097, 3686, 3768, 3685, 3682}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7096}, - {810, 810, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {413: 7123}, + {882, 882, 9: 882, 579: 882, 582: 882, 882}, + {881, 881, 9: 881, 579: 881, 582: 881, 881}, + {880, 880, 9: 880, 579: 880, 582: 880, 880}, + {879, 879, 9: 879, 579: 879, 582: 879, 879}, // 4170 - {811, 811, 557: 3782, 726: 3783}, - {173: 7100, 576: 3107, 819: 4639, 851: 7099}, - {2329, 2329}, - {576: 3107, 819: 4639, 851: 7101}, - {2328, 2328}, + {883, 883, 9: 883, 579: 883, 582: 883, 883}, + {884, 884, 9: 884, 579: 884, 582: 884, 884}, + {885, 885, 9: 885, 579: 885, 582: 885, 885}, + {253: 7115, 300: 7116, 311: 7117, 314: 7114, 338: 7119, 347: 7118, 363: 7121, 367: 7120, 740: 7122, 1303: 7127}, + {888, 888, 9: 888, 579: 888, 582: 888, 888}, // 4175 - {167: 7106, 339: 7107}, - {581: 7104}, - {552: 7105}, - {2326, 2326}, - {2331, 2331}, + {1108, 1108, 579: 3983, 582: 3982, 868: 4040, 953: 7132}, + {176: 7130}, + {580: 3135, 824: 4676, 855: 7131}, + {877, 877, 579: 877, 582: 877}, + {900, 900}, // 4180 - {581: 7108}, - {552: 7109}, - {2330, 2330}, - {171: 7111}, - {581: 7112}, + {902, 902}, + {816, 816, 586: 7069, 588: 816, 608: 816, 630: 7070, 929: 7072, 970: 7138}, + {586: 7069, 630: 7070, 929: 7089, 1305: 7136}, + {816, 816, 586: 7069, 588: 816, 608: 816, 630: 7070, 929: 7072, 970: 7137}, + {860, 860, 588: 860, 608: 860}, // 4185 - {552: 7113}, - {2318, 2318, 17: 2318, 59: 2318, 61: 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, 549: 2318, 733: 2318, 975: 7114}, - {2332, 2332, 17: 6862, 59: 6829, 61: 6858, 6851, 6834, 6830, 6831, 6848, 6828, 6838, 6846, 6861, 6837, 6847, 6845, 6839, 6850, 6849, 6864, 6868, 6842, 6859, 6843, 6852, 6833, 6860, 6865, 6832, 6835, 6866, 6836, 6844, 6867, 6840, 6841, 549: 6853, 733: 6863, 971: 6855, 6854, 6857, 6827, 976: 6856}, - {171: 7116}, - {2333, 2333}, + {865, 865, 588: 865, 608: 865}, + {903, 903}, + {169: 7141}, + {904, 904}, + {905, 905}, // 4190 - {171: 7118}, - {2318, 2318, 17: 2318, 59: 2318, 61: 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, 549: 2318, 733: 2318, 975: 7119}, - {2334, 2334, 17: 6862, 59: 6829, 61: 6858, 6851, 6834, 6830, 6831, 6848, 6828, 6838, 6846, 6861, 6837, 6847, 6845, 6839, 6850, 6849, 6864, 6868, 6842, 6859, 6843, 6852, 6833, 6860, 6865, 6832, 6835, 6866, 6836, 6844, 6867, 6840, 6841, 549: 6853, 733: 6863, 971: 6855, 6854, 6857, 6827, 976: 6856}, - {171: 7121}, - {2335, 2335}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 7144}, + {876, 876, 566: 7146, 1531: 7145}, + {906, 906}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 6566, 6564, 999: 7147}, + {875, 875, 9: 6567}, // 4195 - {732: 7127}, - {732: 7124}, - {552: 7125}, - {2318, 2318, 17: 2318, 59: 2318, 61: 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, 549: 2318, 733: 2318, 975: 7126}, - {2336, 2336, 17: 6862, 59: 6829, 61: 6858, 6851, 6834, 6830, 6831, 6848, 6828, 6838, 6846, 6861, 6837, 6847, 6845, 6839, 6850, 6849, 6864, 6868, 6842, 6859, 6843, 6852, 6833, 6860, 6865, 6832, 6835, 6866, 6836, 6844, 6867, 6840, 6841, 549: 6853, 733: 6863, 971: 6855, 6854, 6857, 6827, 976: 6856}, + {816, 816, 120: 2055, 231: 2055, 570: 2055, 586: 7069, 588: 816, 608: 816, 630: 7070, 734: 2055, 739: 2055, 929: 7072, 970: 7158}, + {120: 1162, 231: 7151, 570: 6269, 734: 1162, 996: 7150}, + {120: 7152, 734: 7153}, + {909, 909}, + {453, 453, 588: 4840, 914: 4841, 7157}, // 4200 - {552: 7128}, - {2318, 2318, 17: 2318, 59: 2318, 61: 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, 549: 2318, 733: 2318, 975: 7129}, - {2337, 2337, 17: 6862, 59: 6829, 61: 6858, 6851, 6834, 6830, 6831, 6848, 6828, 6838, 6846, 6861, 6837, 6847, 6845, 6839, 6850, 6849, 6864, 6868, 6842, 6859, 6843, 6852, 6833, 6860, 6865, 6832, 6835, 6866, 6836, 6844, 6867, 6840, 6841, 549: 6853, 733: 6863, 971: 6855, 6854, 6857, 6827, 976: 6856}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7131, 3121, 3122, 3120}, - {2338, 2338}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7154, 3149, 3150, 3148}, + {120: 7155}, + {453, 453, 588: 4840, 914: 4841, 7156}, + {908, 908}, + {910, 910}, // 4205 - {2339, 2339}, - {2358, 2358, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 7167}, - {2356, 2356}, - {28: 7165}, - {2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 10: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 53: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 573: 7154, 734: 2065}, + {863, 863, 588: 863, 608: 863}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7177}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7176}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 605: 5530, 893: 7174}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7173}, // 4210 - {145: 3094, 245: 7140, 550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 743: 4751, 795: 4752, 823: 2943, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 7139}, - {1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 10: 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 53: 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 579: 5875, 734: 1864}, - {2350, 2350}, - {573: 7141}, - {177: 7145, 297: 7148, 316: 7147, 364: 7151, 376: 7144, 7150, 7149, 552: 7143, 659: 7146, 1194: 7142}, + {233: 7171}, + {596: 7169}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 7168}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7167}, + {895, 895}, // 4215 - {145: 3094, 550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 743: 4751, 795: 4752, 823: 2943, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 7153}, - {145: 3094, 550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 743: 4751, 795: 4752, 823: 2943, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 7152}, - {145: 2347, 550: 2347, 2347, 567: 2347, 571: 2347, 578: 2347, 606: 2347, 627: 2347, 668: 2347, 731: 2347, 743: 2347, 823: 2347}, - {145: 2346, 550: 2346, 2346, 567: 2346, 571: 2346, 578: 2346, 606: 2346, 627: 2346, 668: 2346, 731: 2346, 743: 2346, 823: 2346}, - {145: 2345, 550: 2345, 2345, 567: 2345, 571: 2345, 578: 2345, 606: 2345, 627: 2345, 668: 2345, 731: 2345, 743: 2345, 823: 2345}, + {911, 911}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 796: 4735, 3149, 3150, 3148, 952: 7170}, + {912, 912}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5727, 3149, 3150, 3148, 1016: 7172}, + {913, 913}, // 4220 - {145: 2344, 550: 2344, 2344, 567: 2344, 571: 2344, 578: 2344, 606: 2344, 627: 2344, 668: 2344, 731: 2344, 743: 2344, 823: 2344}, - {145: 2343, 550: 2343, 2343, 567: 2343, 571: 2343, 578: 2343, 606: 2343, 627: 2343, 668: 2343, 731: 2343, 743: 2343, 823: 2343}, - {145: 2342, 550: 2342, 2342, 567: 2342, 571: 2342, 578: 2342, 606: 2342, 627: 2342, 668: 2342, 731: 2342, 743: 2342, 823: 2342}, - {145: 2341, 550: 2341, 2341, 567: 2341, 571: 2341, 578: 2341, 606: 2341, 627: 2341, 668: 2341, 731: 2341, 743: 2341, 823: 2341}, - {145: 2340, 550: 2340, 2340, 567: 2340, 571: 2340, 578: 2340, 606: 2340, 627: 2340, 668: 2340, 731: 2340, 743: 2340, 823: 2340}, + {914, 914}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 7175}, + {915, 915}, + {916, 916}, + {917, 917}, // 4225 - {2348, 2348}, - {2349, 2349}, - {177: 7145, 297: 7148, 316: 7147, 364: 7151, 376: 7144, 7150, 7149, 552: 7155, 659: 7146, 1194: 7156}, - {145: 3094, 550: 2980, 2979, 567: 2978, 571: 2964, 578: 7161, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 743: 4751, 795: 4752, 823: 2943, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 7162}, - {145: 3094, 550: 2980, 2979, 567: 2978, 571: 2964, 578: 7157, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 743: 4751, 795: 4752, 823: 2943, 826: 4753, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 4759, 4758, 842: 3087, 2944, 4756, 4757, 4755, 855: 2945, 859: 4754, 925: 4760, 928: 4761, 944: 7158}, + {918, 918}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3804, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3738, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 7182, 3719, 3801, 3718, 3715}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7181}, + {826, 826, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {827, 827, 562: 3815, 730: 3816}, // 4230 - {28: 7159}, - {2351, 2351}, - {576: 3107, 819: 7160}, - {2352, 2352}, - {28: 7163}, - // 4235 - {2353, 2353}, - {576: 3107, 819: 7164}, - {2354, 2354}, - {576: 3107, 819: 7166}, + {176: 7185, 580: 3135, 824: 4676, 855: 7184}, {2355, 2355}, - // 4240 + {580: 3135, 824: 4676, 855: 7186}, + {2354, 2354}, + {169: 7191, 343: 7192}, + // 4235 + {586: 7189}, + {557: 7190}, + {2352, 2352}, {2357, 2357}, - {2365, 2365}, - {573: 7194}, - {95: 2936, 2939, 98: 2969, 2937, 218: 2952, 457: 7190, 550: 2980, 2979, 567: 2978, 571: 2964, 575: 7173, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 2935, 795: 7171, 823: 2943, 826: 7172, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7179, 7178, 842: 3087, 2944, 7176, 7177, 7175, 855: 2945, 859: 7174, 865: 7187, 7182, 7185, 7186, 917: 2953, 929: 7188, 970: 7181, 989: 7180, 992: 7184, 994: 7183, 1043: 7189}, - {668, 668, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, + {586: 7193}, + // 4240 + {557: 7194}, + {2356, 2356}, + {175: 7196}, + {586: 7197}, + {557: 7198}, // 4245 - {670, 670, 558: 1034, 569: 1034, 1034}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 6444, 6439, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 6445, 53: 3127, 3348, 3478, 3479, 3785, 6442, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 6441, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 6447, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 6440, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 6450, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 6448, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 6443, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 572: 4520, 646: 6456, 673: 6455, 728: 4518, 791: 6453, 3121, 3122, 3120, 873: 6457, 949: 6454, 1121: 6458, 1328: 6451}, - {675, 675}, - {674, 674}, - {673, 673}, + {2344, 2344, 17: 2344, 58: 2344, 60: 2344, 62: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 554: 2344, 738: 2344, 981: 7199}, + {2358, 2358, 17: 6946, 58: 6933, 60: 6913, 62: 6942, 6935, 6918, 6914, 6915, 6932, 6912, 6922, 6930, 6945, 6921, 6931, 6929, 6923, 6934, 6948, 6952, 6926, 6943, 6927, 6936, 6917, 6944, 6949, 6916, 6919, 6950, 6920, 6928, 6951, 6924, 6925, 554: 6937, 738: 6947, 977: 6939, 6938, 6941, 6911, 982: 6940}, + {175: 7201}, + {2359, 2359}, + {175: 7203}, // 4250 - {672, 672}, - {671, 671}, - {669, 669}, - {667, 667}, - {666, 666}, + {2344, 2344, 17: 2344, 58: 2344, 60: 2344, 62: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 554: 2344, 738: 2344, 981: 7204}, + {2360, 2360, 17: 6946, 58: 6933, 60: 6913, 62: 6942, 6935, 6918, 6914, 6915, 6932, 6912, 6922, 6930, 6945, 6921, 6931, 6929, 6923, 6934, 6948, 6952, 6926, 6943, 6927, 6936, 6917, 6944, 6949, 6916, 6919, 6950, 6920, 6928, 6951, 6924, 6925, 554: 6937, 738: 6947, 977: 6939, 6938, 6941, 6911, 982: 6940}, + {175: 7206}, + {2361, 2361}, + {737: 7212}, // 4255 - {665, 665}, - {664, 664}, - {663, 663}, - {662, 662}, - {661, 661}, + {737: 7209}, + {557: 7210}, + {2344, 2344, 17: 2344, 58: 2344, 60: 2344, 62: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 554: 2344, 738: 2344, 981: 7211}, + {2362, 2362, 17: 6946, 58: 6933, 60: 6913, 62: 6942, 6935, 6918, 6914, 6915, 6932, 6912, 6922, 6930, 6945, 6921, 6931, 6929, 6923, 6934, 6948, 6952, 6926, 6943, 6927, 6936, 6917, 6944, 6949, 6916, 6919, 6950, 6920, 6928, 6951, 6924, 6925, 554: 6937, 738: 6947, 977: 6939, 6938, 6941, 6911, 982: 6940}, + {557: 7213}, // 4260 - {660, 660}, - {23: 5916}, - {2363, 2363}, - {573: 7191}, - {552: 7192}, - // 4265 - {95: 2936, 2939, 98: 2969, 2937, 218: 2952, 550: 2980, 2979, 567: 2978, 571: 2964, 575: 7173, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 2935, 795: 7171, 823: 2943, 826: 7172, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7179, 7178, 842: 3087, 2944, 7176, 7177, 7175, 855: 2945, 859: 7174, 865: 7187, 7182, 7185, 7186, 917: 2953, 929: 7188, 970: 7181, 989: 7180, 992: 7184, 994: 7183, 1043: 7193}, - {2362, 2362}, - {552: 7195}, - {95: 2936, 2939, 98: 2969, 2937, 218: 2952, 550: 2980, 2979, 567: 2978, 571: 2964, 575: 7173, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 2935, 795: 7171, 823: 2943, 826: 7172, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7179, 7178, 842: 3087, 2944, 7176, 7177, 7175, 855: 2945, 859: 7174, 865: 7187, 7182, 7185, 7186, 917: 2953, 929: 7188, 970: 7181, 989: 7180, 992: 7184, 994: 7183, 1043: 7196}, + {2344, 2344, 17: 2344, 58: 2344, 60: 2344, 62: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 554: 2344, 738: 2344, 981: 7214}, + {2363, 2363, 17: 6946, 58: 6933, 60: 6913, 62: 6942, 6935, 6918, 6914, 6915, 6932, 6912, 6922, 6930, 6945, 6921, 6931, 6929, 6923, 6934, 6948, 6952, 6926, 6943, 6927, 6936, 6917, 6944, 6949, 6916, 6919, 6950, 6920, 6928, 6951, 6924, 6925, 554: 6937, 738: 6947, 977: 6939, 6938, 6941, 6911, 982: 6940}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7216, 3149, 3150, 3148}, {2364, 2364}, + {2365, 2365}, + // 4265 + {2384, 2384, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 7252}, + {2382, 2382}, + {28: 7250}, + {2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 10: 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 53: 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 577: 7239, 739: 2091}, + {146: 3121, 249: 7225, 555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 747: 4824, 800: 4825, 828: 2969, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 7224}, // 4270 - {2: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 10: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 53: 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 568: 1278, 581: 1278, 852: 6128, 854: 6130, 856: 6129, 959: 6131, 1011: 7198}, - {2: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 10: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 53: 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 6521, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 568: 1265, 581: 1265, 1270: 7199}, - {2: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 10: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 53: 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 568: 4781, 581: 2161, 984: 7200}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 581: 7201, 791: 6525, 3121, 3122, 3120, 1040: 6526, 1108: 6524}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 7203, 3121, 3122, 3120, 824: 6538, 1040: 6526, 1108: 7202}, + {1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 10: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 53: 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 584: 5948, 739: 1890}, + {2376, 2376}, + {577: 7226}, + {181: 7230, 302: 7233, 320: 7232, 368: 7236, 380: 7229, 7235, 7234, 557: 7228, 664: 7231, 1200: 7227}, + {146: 3121, 555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 747: 4824, 800: 4825, 828: 2969, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 7238}, // 4275 - {9: 6534, 561: 7206}, - {1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1267, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 53: 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 556: 1276, 561: 1267, 565: 1276, 568: 1276, 577: 1276, 583: 1276, 1276, 1276, 595: 1276, 734: 7204, 1031: 6527}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 6530, 791: 7205, 3121, 3122, 3120}, - {1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1267, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 53: 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 556: 1275, 561: 1267, 565: 1275, 568: 1275, 577: 1275, 583: 1275, 1275, 1275, 595: 1275, 734: 6532, 1031: 6531}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 6142, 580: 4018, 662: 6137, 791: 4017, 3121, 3122, 3120, 6141, 824: 6140, 914: 6139, 919: 6138, 6144, 981: 6134, 1015: 7207}, + {146: 3121, 555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 747: 4824, 800: 4825, 828: 2969, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 7237}, + {146: 2373, 555: 2373, 2373, 572: 2373, 576: 2373, 583: 2373, 611: 2373, 632: 2373, 680: 2373, 736: 2373, 747: 2373, 828: 2373}, + {146: 2372, 555: 2372, 2372, 572: 2372, 576: 2372, 583: 2372, 611: 2372, 632: 2372, 680: 2372, 736: 2372, 747: 2372, 828: 2372}, + {146: 2371, 555: 2371, 2371, 572: 2371, 576: 2371, 583: 2371, 611: 2371, 632: 2371, 680: 2371, 736: 2371, 747: 2371, 828: 2371}, + {146: 2370, 555: 2370, 2370, 572: 2370, 576: 2370, 583: 2370, 611: 2370, 632: 2370, 680: 2370, 736: 2370, 747: 2370, 828: 2370}, // 4280 - {438, 438, 9: 6192, 583: 4767, 909: 4768, 7208}, - {2395, 2395}, - {2398, 2398, 9: 4083}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7287, 3121, 3122, 3120}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 7285}, + {146: 2369, 555: 2369, 2369, 572: 2369, 576: 2369, 583: 2369, 611: 2369, 632: 2369, 680: 2369, 736: 2369, 747: 2369, 828: 2369}, + {146: 2368, 555: 2368, 2368, 572: 2368, 576: 2368, 583: 2368, 611: 2368, 632: 2368, 680: 2368, 736: 2368, 747: 2368, 828: 2368}, + {146: 2367, 555: 2367, 2367, 572: 2367, 576: 2367, 583: 2367, 611: 2367, 632: 2367, 680: 2367, 736: 2367, 747: 2367, 828: 2367}, + {146: 2366, 555: 2366, 2366, 572: 2366, 576: 2366, 583: 2366, 611: 2366, 632: 2366, 680: 2366, 736: 2366, 747: 2366, 828: 2366}, + {2374, 2374}, // 4285 - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 7276}, - {729: 7271}, - {168: 5824, 627: 5823, 1110: 7267}, - {223: 808, 231: 6330}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 598: 7262, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 7261}, + {2375, 2375}, + {181: 7230, 302: 7233, 320: 7232, 368: 7236, 380: 7229, 7235, 7234, 557: 7240, 664: 7231, 1200: 7241}, + {146: 3121, 555: 3006, 3005, 572: 3004, 576: 2990, 583: 7246, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 747: 4824, 800: 4825, 828: 2969, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 7247}, + {146: 3121, 555: 3006, 3005, 572: 3004, 576: 2990, 583: 7242, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 747: 4824, 800: 4825, 828: 2969, 831: 4826, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 4832, 4831, 847: 3114, 2970, 4829, 4830, 4828, 860: 2971, 864: 4827, 930: 4833, 933: 4834, 950: 7243}, + {28: 7244}, // 4290 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 598: 7258, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6002, 995: 7257}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 598: 7254, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 6482, 6480, 993: 7253}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7249, 904: 7248}, - {223: 7235}, - {228: 7232}, + {2377, 2377}, + {580: 3135, 824: 7245}, + {2378, 2378}, + {28: 7248}, + {2379, 2379}, // 4295 - {591: 7229}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 580: 2165, 598: 5054, 879: 7227}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 580: 2165, 598: 5054, 879: 7225}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7226}, - {29, 29}, + {580: 3135, 824: 7249}, + {2380, 2380}, + {580: 3135, 824: 7251}, + {2381, 2381}, + {2383, 2383}, // 4300 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 7228}, - {156, 156, 9: 4021}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 554: 2165, 598: 5054, 879: 7230}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 791: 4698, 3121, 3122, 3120, 947: 7231}, - {183, 183}, + {2391, 2391}, + {577: 7279}, + {95: 2962, 2965, 98: 2995, 2963, 223: 2978, 462: 7275, 555: 3006, 3005, 572: 3004, 576: 2990, 581: 7258, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 2961, 800: 7256, 828: 2969, 831: 7257, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7264, 7263, 847: 3114, 2970, 7261, 7262, 7260, 860: 2971, 864: 7259, 870: 7272, 7267, 7270, 7271, 922: 2979, 934: 7273, 975: 7266, 995: 7265, 998: 7269, 1000: 7268, 1049: 7274}, + {683, 683, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {685, 685, 563: 1054, 574: 1054, 1054}, // 4305 - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 7233}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5654, 3121, 3122, 3120, 1010: 7234}, - {186, 186}, - {578: 7236}, - {550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 676: 7238, 731: 3088, 795: 6504, 823: 6502, 826: 6505, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 6503, 6507, 6506, 842: 3087, 6509, 6510, 6511, 6508, 951: 7237}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 6528, 6523, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 6529, 53: 3155, 3818, 3376, 3506, 3507, 3528, 6526, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 6525, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 6531, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 6524, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 6534, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 6532, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 6527, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 578: 4554, 654: 6540, 677: 6539, 733: 4552, 796: 6537, 3149, 3150, 3148, 878: 6541, 954: 6538, 1126: 6542, 1337: 6535}, + {690, 690}, + {689, 689}, + {688, 688}, + {687, 687}, // 4310 - {353, 353, 561: 7246}, - {233: 7239}, - {552: 7242, 646: 3771, 796: 7243, 1106: 7240, 1313: 7241}, - {357, 357, 9: 357}, - {351, 351, 9: 7244}, + {686, 686}, + {684, 684}, + {682, 682}, + {681, 681}, + {680, 680}, // 4315 - {355, 355, 9: 355}, - {354, 354, 9: 354}, - {552: 7242, 646: 3771, 796: 7243, 1106: 7245}, - {356, 356, 9: 356}, - {550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 795: 6504, 823: 6502, 826: 6505, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 6503, 6507, 6506, 842: 3087, 6509, 6510, 6511, 6508, 951: 7247}, + {679, 679}, + {678, 678}, + {677, 677}, + {676, 676}, + {675, 675}, // 4320 - {352, 352}, - {2376, 2376, 9: 4021}, - {1273, 1273, 9: 1273, 94: 7251, 565: 7250}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 7252}, - {2374, 2374}, + {23: 5989}, + {2389, 2389}, + {577: 7276}, + {557: 7277}, + {95: 2962, 2965, 98: 2995, 2963, 223: 2978, 555: 3006, 3005, 572: 3004, 576: 2990, 581: 7258, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 2961, 800: 7256, 828: 2969, 831: 7257, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7264, 7263, 847: 3114, 2970, 7261, 7262, 7260, 860: 2971, 864: 7259, 870: 7272, 7267, 7270, 7271, 922: 2979, 934: 7273, 975: 7266, 995: 7265, 998: 7269, 1000: 7268, 1049: 7278}, // 4325 - {2375, 2375, 9: 5379}, - {2378, 2378, 9: 6483}, - {665: 7255}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 6482, 6480, 993: 7256}, - {2377, 2377, 9: 6483}, + {2388, 2388}, + {557: 7280}, + {95: 2962, 2965, 98: 2995, 2963, 223: 2978, 555: 3006, 3005, 572: 3004, 576: 2990, 581: 7258, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 2961, 800: 7256, 828: 2969, 831: 7257, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7264, 7263, 847: 3114, 2970, 7261, 7262, 7260, 860: 2971, 864: 7259, 870: 7272, 7267, 7270, 7271, 922: 2979, 934: 7273, 975: 7266, 995: 7265, 998: 7269, 1000: 7268, 1049: 7281}, + {2390, 2390}, + {2: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 10: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 53: 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 573: 1298, 586: 1298, 857: 6201, 859: 6203, 861: 6202, 964: 6204, 1017: 7283}, // 4330 - {2380, 2380, 9: 6004}, - {665: 7259}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6002, 995: 7260}, - {2379, 2379, 9: 6004}, - {2373, 2373, 9: 4021, 747: 5436, 749: 5435, 1035: 7266}, + {2: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 10: 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 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, 6605, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 573: 1285, 586: 1285, 1276: 7284}, + {2: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 10: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 53: 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 573: 4854, 586: 2187, 990: 7285}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 586: 7286, 796: 6609, 3149, 3150, 3148, 1046: 6610, 1113: 6608}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 7288, 3149, 3150, 3148, 829: 6622, 1046: 6610, 1113: 7287}, + {9: 6618, 566: 7291}, // 4335 - {665: 7263}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 7264}, - {2373, 2373, 9: 4021, 747: 5436, 749: 5435, 1035: 7265}, - {2381, 2381}, - {2382, 2382}, + {1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1287, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 53: 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 561: 1296, 566: 1287, 570: 1296, 573: 1296, 582: 1296, 588: 1296, 1296, 1296, 600: 1296, 739: 7289, 1036: 6611}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 6614, 796: 7290, 3149, 3150, 3148}, + {1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1287, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 53: 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 561: 1295, 566: 1287, 570: 1295, 573: 1295, 582: 1295, 588: 1295, 1295, 1295, 600: 1295, 739: 6616, 1036: 6615}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 6215, 585: 4052, 667: 6210, 796: 4051, 3149, 3150, 3148, 6214, 829: 6213, 919: 6212, 924: 6211, 6217, 987: 6207, 1021: 7292}, + {453, 453, 9: 6265, 588: 4840, 914: 4841, 7293}, // 4340 - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 580: 2165, 598: 5054, 879: 7268}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 4019, 904: 7269}, - {2373, 2373, 9: 4021, 747: 5436, 749: 5435, 1035: 7270}, - {2386, 2386}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 7272}, + {2421, 2421}, + {2424, 2424, 9: 4117}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7372, 3149, 3150, 3148}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 7370}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 7361}, // 4345 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7273, 3121, 3122, 3120}, - {549: 7274}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7275}, - {2387, 2387}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7277, 3121, 3122, 3120}, + {734: 7356}, + {170: 5897, 632: 5896, 1115: 7352}, + {228: 824, 236: 6414}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 605: 7347, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 7346}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 605: 7343, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6075, 1001: 7342}, // 4350 - {549: 7278}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7279}, - {2537, 2537, 110: 4825, 582: 4826, 996: 7281, 1007: 7280, 1215: 7282}, - {2536, 2536, 110: 4825, 996: 7284}, - {2535, 2535, 582: 4826, 1007: 7283}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 605: 7339, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 6566, 6564, 999: 7338}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7334, 909: 7333}, + {228: 7320}, + {233: 7317}, + {596: 7314}, // 4355 - {2388, 2388}, - {2533, 2533}, - {2534, 2534}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 7286}, - {2389, 2389}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 585: 2191, 605: 5127, 884: 7312}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 585: 2191, 605: 5127, 884: 7310}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7311}, + {29, 29}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 7313}, // 4360 - {2545, 2545}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 598: 5457, 888: 7775}, - {729: 7763}, - {729: 2531}, - {729: 2530}, + {171, 171, 9: 4055}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 559: 2191, 605: 5127, 884: 7315}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 796: 4735, 3149, 3150, 3148, 952: 7316}, + {198, 198}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 7318}, // 4365 - {729: 2529}, - {729: 2528}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 598: 5457, 888: 7740}, - {18: 7658, 110: 7657, 148: 2415, 199: 2415, 676: 2415, 1522: 7656}, - {571: 7655}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5727, 3149, 3150, 3148, 1016: 7319}, + {201, 201}, + {583: 7321}, + {555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 7323, 736: 3115, 800: 6588, 828: 6586, 831: 6589, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 6587, 6591, 6590, 847: 3114, 6593, 6594, 6595, 6592, 956: 7322}, + {368, 368, 566: 7331}, // 4370 - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 552: 2163, 598: 5457, 650: 2163, 888: 7600}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 552: 2163, 598: 5457, 888: 7594}, - {223: 7581}, - {591: 7512}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 580: 2163, 598: 5457, 888: 7476}, + {237: 7324}, + {557: 7327, 654: 3804, 801: 7328, 1111: 7325, 1319: 7326}, + {372, 372, 9: 372}, + {366, 366, 9: 7329}, + {370, 370, 9: 370}, // 4375 - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 580: 2163, 598: 5457, 888: 7303}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7304}, - {550: 7305}, - {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, 625: 7309, 1216: 7311, 1252: 7310, 1304: 7308, 7307, 1435: 7312, 1491: 7306}, - {9: 7474, 52: 132}, + {369, 369, 9: 369}, + {557: 7327, 654: 3804, 801: 7328, 1111: 7330}, + {371, 371, 9: 371}, + {555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 800: 6588, 828: 6586, 831: 6589, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 6587, 6591, 6590, 847: 3114, 6593, 6594, 6595, 6592, 956: 7332}, + {367, 367}, // 4380 - {9: 130, 52: 130}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7472, 3121, 3122, 3120}, - {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}, - {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}, - {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}, + {2402, 2402, 9: 4055}, + {1293, 1293, 9: 1293, 94: 7336, 570: 7335}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 7337}, + {2400, 2400}, + {2401, 2401, 9: 5452}, // 4385 - {52: 7313}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7356, 7336, 7335, 7344, 7345, 7348}, - {122, 122, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {124, 124, 558: 1034, 569: 1034, 1034}, - {123, 123}, + {2404, 2404, 9: 6567}, + {670: 7340}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 6566, 6564, 999: 7341}, + {2403, 2403, 9: 6567}, + {2406, 2406, 9: 6077}, // 4390 + {670: 7344}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6075, 1001: 7345}, + {2405, 2405, 9: 6077}, + {2399, 2399, 9: 4055, 752: 5509, 754: 5508, 1040: 7351}, + {670: 7348}, + // 4395 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 7349}, + {2399, 2399, 9: 4055, 752: 5509, 754: 5508, 1040: 7350}, + {2407, 2407}, + {2408, 2408}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 585: 2191, 605: 5127, 884: 7353}, + // 4400 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 4053, 909: 7354}, + {2399, 2399, 9: 4055, 752: 5509, 754: 5508, 1040: 7355}, + {2412, 2412}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 7357}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7358, 3149, 3150, 3148}, + // 4405 + {554: 7359}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7360}, + {2413, 2413}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7362, 3149, 3150, 3148}, + {554: 7363}, + // 4410 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7364}, + {2563, 2563, 110: 4898, 587: 4899, 1002: 7366, 1013: 7365, 1221: 7367}, + {2562, 2562, 110: 4898, 1002: 7369}, + {2561, 2561, 587: 4899, 1013: 7368}, + {2414, 2414}, + // 4415 + {2559, 2559}, + {2560, 2560}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 7371}, + {2415, 2415}, + {2571, 2571}, + // 4420 + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 605: 5530, 893: 7860}, + {734: 7848}, + {734: 2557}, + {734: 2556}, + {734: 2555}, + // 4425 + {734: 2554}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 605: 5530, 893: 7825}, + {18: 7743, 110: 7742, 150: 2441, 203: 2441, 681: 2441, 1534: 7741}, + {576: 7740}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 557: 2189, 605: 5530, 655: 2189, 893: 7685}, + // 4430 + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 557: 2189, 605: 5530, 893: 7679}, + {228: 7666}, + {596: 7597}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 585: 2189, 605: 5530, 893: 7561}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 585: 2189, 605: 5530, 893: 7388}, + // 4435 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7389}, + {555: 7390}, + {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: 7394, 1222: 7396, 1258: 7395, 1310: 7393, 7392, 1445: 7397, 1501: 7391}, + {9: 7559, 52: 132}, + {9: 130, 52: 130}, + // 4440 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7557, 3149, 3150, 3148}, + {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: 7398}, + // 4445 + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7441, 7421, 7420, 7429, 7430, 7433}, + {122, 122, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {124, 124, 563: 1054, 574: 1054, 1054}, + {123, 123}, {121, 121}, + // 4450 {120, 120}, {119, 119}, {118, 118}, {117, 117}, - // 4395 {116, 116}, + // 4455 {115, 115}, {114, 114}, {113, 113}, {112, 112}, - // 4400 {111, 111}, + // 4460 {110, 110}, {105, 105}, - {57: 7471}, - {57: 82, 250: 7462, 581: 7463, 1460: 7461}, - // 4405 - {57: 7460}, - {57: 77, 95: 77, 77, 98: 77, 100: 77, 108: 77, 111: 77, 114: 77, 243: 7413, 550: 77, 77, 567: 77, 571: 77, 574: 77, 77, 595: 77, 597: 77, 77, 602: 77, 606: 77, 627: 77, 638: 77, 645: 77, 668: 77, 731: 77, 733: 77, 823: 77, 847: 77, 850: 77, 857: 77, 77, 1267: 7415, 1454: 7414, 7416}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7402, 1269: 7403}, + {54: 7556}, + {54: 82, 254: 7547, 586: 7548, 1470: 7546}, + {54: 7545}, + // 4465 + {54: 77, 95: 77, 77, 98: 77, 100: 77, 108: 77, 111: 77, 114: 77, 247: 7498, 555: 77, 77, 572: 77, 576: 77, 579: 77, 581: 77, 600: 77, 602: 77, 605: 77, 607: 77, 611: 77, 632: 77, 649: 77, 77, 680: 77, 736: 77, 738: 77, 828: 77, 852: 77, 856: 77, 862: 77, 77, 1273: 7500, 1464: 7499, 7501}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7487, 1275: 7488}, {63, 63}, {62, 62}, - // 4410 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 608: 7382, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7379, 1290: 7380, 1473: 7381}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 613: 7467, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7464, 1296: 7465, 1483: 7466}, + // 4470 {51, 51}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7374}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7365, 7336, 7335, 7344, 7345, 7348, 960: 7366}, - {1336: 7359}, - // 4415 - {57: 7358}, - {57: 7357}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7459}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7450, 7421, 7420, 7429, 7430, 7433, 965: 7451}, + {1345: 7444}, + {54: 7443}, + // 4475 + {54: 7442}, {42, 42}, {41, 41}, {40, 40}, - // 4420 {39, 39}, + // 4480 {38, 38}, {37, 37}, {36, 36}, {35, 35}, - // 4425 {34, 34}, + // 4485 {33, 33}, {32, 32}, {31, 31}, {30, 30}, - // 4430 {43, 43}, + // 4490 {44, 44}, - {95: 7333, 645: 7340, 850: 7339, 886: 7360, 7361}, - {47, 47, 57: 7362, 1266: 7364}, - {47, 47, 57: 7362, 1266: 7363}, - // 4435 + {95: 7418, 650: 7425, 856: 7424, 891: 7445, 7446}, + {47, 47, 54: 7447, 1272: 7449}, + {47, 47, 54: 7447, 1272: 7448}, {46, 46}, + // 4495 {45, 45}, {48, 48}, - {7373}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7367, 7336, 7335, 7344, 7345, 7348, 1116: 7368}, - // 4440 - {7372}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7369}, - {114: 7370, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {645: 7371}, - {49, 49, 57: 49}, - // 4445 - {57: 70, 95: 70, 70, 98: 70, 100: 70, 108: 70, 111: 70, 114: 70, 550: 70, 70, 567: 70, 571: 70, 574: 70, 70, 595: 70, 597: 70, 70, 602: 70, 606: 70, 608: 70, 70, 627: 70, 638: 70, 645: 70, 668: 70, 731: 70, 733: 70, 823: 70, 847: 70, 850: 70, 857: 70, 70, 1065: 70, 1116: 70}, - {57: 71, 95: 71, 71, 98: 71, 100: 71, 108: 71, 111: 71, 114: 71, 550: 71, 71, 567: 71, 571: 71, 574: 71, 71, 595: 71, 597: 71, 71, 602: 71, 606: 71, 608: 71, 71, 627: 71, 638: 71, 645: 71, 668: 71, 731: 71, 733: 71, 823: 71, 847: 71, 850: 71, 857: 71, 71, 1065: 71, 1116: 71}, - {269: 7375, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7365, 7336, 7335, 7344, 7345, 7348, 960: 7376}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 114: 7377, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7367, 7336, 7335, 7344, 7345, 7348}, - // 4450 - {850: 7378}, - {50, 50, 57: 50}, - {586: 3835, 3833, 3834, 3832, 3830, 608: 7394, 820: 3831, 3829, 1301: 7392, 1488: 7393}, - {114: 59, 608: 59, 59}, - {114: 55, 608: 7382, 7387, 1189: 7388, 1290: 7386}, - // 4455 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7383}, - {586: 3835, 3833, 3834, 3832, 3830, 626: 7384, 820: 3831, 3829}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7365, 7336, 7335, 7344, 7345, 7348, 960: 7385}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 114: 56, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 608: 56, 56, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7367, 7336, 7335, 7344, 7345, 7348}, - {114: 58, 608: 58, 58}, - // 4460 - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7365, 7336, 7335, 7344, 7345, 7348, 960: 7391}, - {114: 7389}, - {638: 7390}, - {52, 52}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 114: 54, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7367, 7336, 7335, 7344, 7345, 7348}, - // 4465 - {114: 61, 608: 61, 61}, - {114: 55, 608: 7394, 7387, 1189: 7399, 1301: 7398}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7395}, - {586: 3835, 3833, 3834, 3832, 3830, 626: 7396, 820: 3831, 3829}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7365, 7336, 7335, 7344, 7345, 7348, 960: 7397}, - // 4470 - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 114: 57, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 608: 57, 57, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7367, 7336, 7335, 7344, 7345, 7348}, - {114: 60, 608: 60, 60}, - {114: 7400}, - {638: 7401}, - {53, 53}, - // 4475 - {586: 3835, 3833, 3834, 3832, 3830, 626: 7406, 820: 3831, 3829}, - {114: 7404}, - {598: 7405}, - {68, 68}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7365, 7336, 7335, 7344, 7345, 7348, 960: 7407}, - // 4480 - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 114: 66, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 609: 7410, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7367, 7336, 7335, 7344, 7345, 7348, 1065: 7409, 1450: 7408}, - {114: 67}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7402, 1269: 7412}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7365, 7336, 7335, 7344, 7345, 7348, 960: 7411}, - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 114: 64, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7367, 7336, 7335, 7344, 7345, 7348}, - // 4485 - {114: 65}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 7424, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7425, 3121, 3122, 3120, 1368: 7428, 1382: 7429, 1453: 7426, 1457: 7427}, - {57: 76, 95: 76, 76, 98: 76, 100: 76, 108: 76, 111: 76, 114: 76, 243: 7413, 550: 76, 76, 567: 76, 571: 76, 574: 76, 76, 595: 76, 597: 76, 76, 602: 76, 606: 76, 627: 76, 638: 76, 645: 76, 668: 76, 731: 76, 733: 76, 823: 76, 847: 76, 850: 76, 857: 76, 76, 1267: 7422}, - {7421}, - {57: 73, 95: 73, 73, 98: 73, 100: 73, 108: 73, 111: 73, 114: 73, 550: 73, 73, 567: 73, 571: 73, 574: 73, 73, 595: 73, 597: 73, 73, 602: 73, 606: 73, 627: 73, 638: 73, 645: 73, 668: 73, 731: 73, 733: 73, 823: 73, 847: 73, 850: 73, 857: 73, 73, 1461: 7417}, - // 4490 - {57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 114: 7419, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7418, 7336, 7335, 7344, 7345, 7348}, - {7420}, - {69, 69, 57: 69}, - {57: 72, 95: 72, 72, 98: 72, 100: 72, 108: 72, 111: 72, 114: 72, 550: 72, 72, 567: 72, 571: 72, 574: 72, 72, 595: 72, 597: 72, 72, 602: 72, 606: 72, 627: 72, 638: 72, 645: 72, 668: 72, 731: 72, 733: 72, 823: 72, 847: 72, 850: 72, 857: 72, 72}, - {57: 75, 95: 75, 75, 98: 75, 100: 75, 108: 75, 111: 75, 114: 75, 243: 75, 550: 75, 75, 567: 75, 571: 75, 574: 75, 75, 595: 75, 597: 75, 75, 602: 75, 606: 75, 627: 75, 638: 75, 645: 75, 668: 75, 731: 75, 733: 75, 823: 75, 847: 75, 850: 75, 857: 75, 75}, - // 4495 - {7423}, - {57: 74, 95: 74, 74, 98: 74, 100: 74, 108: 74, 111: 74, 114: 74, 243: 74, 550: 74, 74, 567: 74, 571: 74, 574: 74, 74, 595: 74, 597: 74, 74, 602: 74, 606: 74, 627: 74, 638: 74, 645: 74, 668: 74, 731: 74, 733: 74, 823: 74, 847: 74, 850: 74, 857: 74, 74}, - {9: 2133, 128: 2133, 130: 2133, 177: 2133, 186: 2133, 2133, 189: 2133, 192: 2133, 194: 2133, 2133, 197: 2133, 204: 2133, 207: 2133, 2133, 210: 2133, 213: 2133, 2133, 216: 2133, 572: 2133, 575: 2133, 605: 2133, 728: 2133, 751: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 763: 2133, 2133, 767: 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 1372: 7453}, - {9: 104, 128: 104, 130: 104, 177: 104, 186: 104, 104, 189: 104, 192: 104, 194: 104, 104, 197: 104, 204: 104, 207: 104, 104, 210: 104, 213: 104, 104, 216: 104, 572: 104, 575: 104, 605: 104, 728: 104, 751: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 763: 104, 104, 767: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104}, - {9: 7447, 128: 5112, 130: 5113, 177: 5102, 186: 5123, 5122, 189: 5085, 192: 5125, 194: 5104, 5124, 197: 5082, 204: 5119, 207: 5091, 5081, 210: 5100, 213: 5108, 5107, 216: 5111, 572: 5106, 575: 5101, 605: 5096, 728: 5105, 751: 5088, 5086, 5110, 5109, 5083, 5079, 5073, 5087, 5097, 5080, 5115, 763: 5089, 5090, 767: 5074, 5075, 5076, 5077, 5078, 5103, 5117, 5121, 5116, 5071, 5120, 5072, 5084, 5070, 5114, 5069, 5118, 977: 5092, 1046: 5094, 1050: 5068, 5098, 5065, 1060: 5063, 1068: 5066, 5067, 1076: 5064, 1080: 5093, 1084: 5061, 5095, 1107: 5062, 1111: 5099, 1114: 7448, 1123: 5126}, + {7458}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7452, 7421, 7420, 7429, 7430, 7433, 1121: 7453}, + {7457}, // 4500 - {276: 7430}, - {276: 97}, - {276: 96}, - {578: 7431}, - {555: 7436, 576: 3107, 819: 7438, 1265: 7434, 1268: 7433, 1306: 7437, 7439, 7435, 1458: 7432}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7454}, + {114: 7455, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {650: 7456}, + {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, 605: 70, 607: 70, 611: 70, 613: 70, 70, 632: 70, 649: 70, 70, 680: 70, 736: 70, 738: 70, 828: 70, 852: 70, 856: 70, 862: 70, 70, 1071: 70, 1121: 70}, // 4505 - {9: 7445, 57: 7341, 95: 7333, 2939, 98: 2969, 100: 3086, 108: 7330, 111: 7332, 550: 2980, 2979, 567: 2978, 571: 2964, 574: 7331, 7173, 595: 3089, 597: 2950, 7334, 602: 2948, 606: 2963, 627: 2977, 638: 7337, 645: 7340, 668: 2973, 731: 3088, 733: 2935, 795: 7314, 823: 2943, 826: 7315, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 7316, 7325, 842: 3087, 2944, 7320, 7321, 7318, 2949, 850: 7339, 855: 2945, 857: 7342, 7343, 7326, 865: 7327, 7322, 7323, 7317, 876: 7324, 2951, 881: 7328, 7319, 886: 7329, 7338, 889: 7347, 7350, 7351, 7346, 7354, 7352, 7353, 7355, 7349, 7444, 7336, 7335, 7344, 7345, 7348}, - {9: 95, 57: 95, 95: 95, 95, 98: 95, 100: 95, 108: 95, 111: 95, 550: 95, 95, 567: 95, 571: 95, 574: 95, 95, 595: 95, 597: 95, 95, 602: 95, 606: 95, 627: 95, 638: 95, 645: 95, 668: 95, 731: 95, 733: 95, 823: 95, 847: 95, 850: 95, 857: 95, 95}, - {9: 93, 57: 93, 95: 93, 93, 98: 93, 100: 93, 108: 93, 111: 93, 550: 93, 93, 567: 93, 571: 93, 574: 93, 93, 595: 93, 597: 93, 93, 602: 93, 606: 93, 627: 93, 638: 93, 645: 93, 668: 93, 731: 93, 733: 93, 823: 93, 847: 93, 850: 93, 857: 93, 93}, - {9: 92, 57: 92, 95: 92, 92, 98: 92, 100: 92, 108: 92, 111: 92, 550: 92, 92, 567: 92, 571: 92, 574: 92, 92, 595: 92, 597: 92, 92, 602: 92, 606: 92, 627: 92, 638: 92, 645: 92, 668: 92, 731: 92, 733: 92, 823: 92, 847: 92, 850: 92, 857: 92, 92}, - {410: 7443}, + {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, 605: 71, 607: 71, 611: 71, 613: 71, 71, 632: 71, 649: 71, 71, 680: 71, 736: 71, 738: 71, 828: 71, 852: 71, 856: 71, 862: 71, 71, 1071: 71, 1121: 71}, + {274: 7460, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7450, 7421, 7420, 7429, 7430, 7433, 965: 7461}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 114: 7462, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7452, 7421, 7420, 7429, 7430, 7433}, + {856: 7463}, // 4510 - {9: 90, 57: 90, 95: 90, 90, 98: 90, 100: 90, 108: 90, 111: 90, 550: 90, 90, 567: 90, 571: 90, 574: 90, 90, 595: 90, 597: 90, 90, 602: 90, 606: 90, 627: 90, 638: 90, 645: 90, 668: 90, 731: 90, 733: 90, 823: 90, 847: 90, 850: 90, 857: 90, 90}, - {9: 89, 57: 89, 95: 89, 89, 98: 89, 100: 89, 108: 89, 111: 89, 550: 89, 89, 567: 89, 571: 89, 574: 89, 89, 595: 89, 597: 89, 89, 602: 89, 606: 89, 627: 89, 638: 89, 645: 89, 668: 89, 731: 89, 733: 89, 823: 89, 847: 89, 850: 89, 857: 89, 89}, - {205: 7441, 552: 87, 1437: 7440}, - {552: 7442}, - {552: 86}, + {50, 50, 54: 50}, + {591: 3869, 3867, 3868, 3866, 3864, 613: 7479, 826: 3865, 3863, 1307: 7477, 1498: 7478}, + {114: 59, 613: 59, 59}, + {114: 55, 613: 7467, 7472, 1195: 7473, 1296: 7471}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7468}, // 4515 - {9: 88, 57: 88, 95: 88, 88, 98: 88, 100: 88, 108: 88, 111: 88, 550: 88, 88, 567: 88, 571: 88, 574: 88, 88, 595: 88, 597: 88, 88, 602: 88, 606: 88, 627: 88, 638: 88, 645: 88, 668: 88, 731: 88, 733: 88, 823: 88, 847: 88, 850: 88, 857: 88, 88}, - {9: 91, 57: 91, 95: 91, 91, 98: 91, 100: 91, 108: 91, 111: 91, 550: 91, 91, 567: 91, 571: 91, 574: 91, 91, 595: 91, 597: 91, 91, 602: 91, 606: 91, 627: 91, 638: 91, 645: 91, 668: 91, 731: 91, 733: 91, 823: 91, 847: 91, 850: 91, 857: 91, 91}, - {98}, - {555: 7436, 576: 3107, 819: 7438, 1265: 7434, 1268: 7446, 1306: 7437, 7439, 7435}, - {9: 94, 57: 94, 95: 94, 94, 98: 94, 100: 94, 108: 94, 111: 94, 550: 94, 94, 567: 94, 571: 94, 574: 94, 94, 595: 94, 597: 94, 94, 602: 94, 606: 94, 627: 94, 638: 94, 645: 94, 668: 94, 731: 94, 733: 94, 823: 94, 847: 94, 850: 94, 857: 94, 94}, + {591: 3869, 3867, 3868, 3866, 3864, 631: 7469, 826: 3865, 3863}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7450, 7421, 7420, 7429, 7430, 7433, 965: 7470}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 114: 56, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 613: 56, 56, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7452, 7421, 7420, 7429, 7430, 7433}, + {114: 58, 613: 58, 58}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7450, 7421, 7420, 7429, 7430, 7433, 965: 7476}, // 4520 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7452, 3121, 3122, 3120}, - {102, 554: 7449, 1459: 7450}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3203, 3151, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3119, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3236, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3243, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3164, 3556, 3317, 3193, 3310, 3311, 3306, 3264, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3245, 3125, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3162, 3561, 3184, 3585, 3662, 3232, 3664, 3491, 3233, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3249, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3187, 3564, 3268, 3197, 3352, 3117, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3305, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3118, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3251, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3568, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3225, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3543, 3124, 3247, 3544, 3545, 3138, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3562, 3563, 3389, 3637, 3638, 3617, 3616, 3429, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3287, 3304, 3574, 3430, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3582, 3583, 3584, 3300, 3595, 3596, 3607, 3237, 3591, 3592, 3593, 3626, 3246, 550: 3693, 552: 3675, 3691, 3701, 3775, 559: 3706, 3710, 562: 3690, 3689, 3729, 566: 3666, 3702, 571: 3709, 3727, 576: 3670, 598: 3704, 605: 3697, 3728, 638: 3699, 645: 3708, 3773, 648: 3665, 3667, 3711, 655: 3669, 3668, 3673, 3674, 3694, 3780, 3684, 3696, 664: 3703, 3695, 3700, 3672, 669: 3725, 3707, 3712, 3717, 3770, 3718, 3719, 677: 3748, 679: 3687, 3688, 3743, 3744, 3745, 3746, 3747, 3698, 3730, 3740, 3741, 3734, 3749, 3750, 3751, 3735, 3753, 3754, 3736, 3752, 3731, 3739, 3737, 3723, 3755, 3756, 706: 3760, 3713, 3716, 3759, 3765, 3764, 3766, 3763, 3767, 3762, 3761, 3758, 3757, 3715, 3714, 3720, 3721, 730: 3776, 791: 3676, 3121, 3122, 3120, 3692, 3769, 3683, 3671, 3677, 3742, 3680, 3678, 3679, 3722, 3733, 3732, 3726, 3724, 3738, 3781, 3686, 3768, 3685, 3682, 3779, 3778, 3777, 7451}, - {100}, - {101, 586: 3835, 3833, 3834, 3832, 3830, 820: 3831, 3829}, + {114: 7474}, + {649: 7475}, + {52, 52}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 114: 54, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7452, 7421, 7420, 7429, 7430, 7433}, + {114: 61, 613: 61, 61}, // 4525 - {9: 103, 128: 103, 130: 103, 177: 103, 186: 103, 103, 189: 103, 192: 103, 194: 103, 103, 197: 103, 204: 103, 207: 103, 103, 210: 103, 213: 103, 103, 216: 103, 572: 103, 575: 103, 605: 103, 728: 103, 751: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 763: 103, 103, 767: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103}, - {578: 7454}, - {550: 2980, 2979, 567: 2978, 627: 2977, 668: 2973, 795: 7455, 826: 7456, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 7457, 7458, 1452: 7459}, - {107, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {109, 558: 1034, 569: 1034, 1034}, + {114: 55, 613: 7479, 7472, 1195: 7484, 1307: 7483}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7480}, + {591: 3869, 3867, 3868, 3866, 3864, 631: 7481, 826: 3865, 3863}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7450, 7421, 7420, 7429, 7430, 7433, 965: 7482}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 114: 57, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 613: 57, 57, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7452, 7421, 7420, 7429, 7430, 7433}, // 4530 - {108}, - {106}, - {99}, - {83, 83}, - {57: 7465}, + {114: 60, 613: 60, 60}, + {114: 7485}, + {649: 7486}, + {53, 53}, + {591: 3869, 3867, 3868, 3866, 3864, 631: 7491, 826: 3865, 3863}, // 4535 - {581: 7464}, - {57: 80}, - {57: 81}, - {579: 7466}, - {57: 7468, 1456: 7467}, + {114: 7489}, + {605: 7490}, + {68, 68}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7450, 7421, 7420, 7429, 7430, 7433, 965: 7492}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 114: 66, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 614: 7495, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7452, 7421, 7420, 7429, 7430, 7433, 1071: 7494, 1460: 7493}, // 4540 - {84, 84, 9: 7469}, - {79, 79, 9: 79}, - {57: 7470}, - {78, 78, 9: 78}, - {85, 85}, + {114: 67}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7487, 1275: 7497}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7450, 7421, 7420, 7429, 7430, 7433, 965: 7496}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 114: 64, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7452, 7421, 7420, 7429, 7430, 7433}, + {114: 65}, // 4545 - {128: 5112, 130: 5113, 177: 5102, 186: 5123, 5122, 189: 5085, 192: 5125, 194: 5104, 5124, 197: 5082, 204: 5119, 207: 5091, 5081, 210: 5100, 213: 5108, 5107, 216: 5111, 572: 5106, 575: 5101, 605: 5096, 728: 5105, 751: 5088, 5086, 5110, 5109, 5083, 5079, 5073, 5087, 5097, 5080, 5115, 763: 5089, 5090, 767: 5074, 5075, 5076, 5077, 5078, 5103, 5117, 5121, 5116, 5071, 5120, 5072, 5084, 5070, 5114, 5069, 5118, 977: 5092, 1046: 5094, 1050: 5068, 5098, 5065, 1060: 5063, 1068: 5066, 5067, 1076: 5064, 1080: 5093, 1084: 5061, 5095, 1107: 5062, 1111: 5099, 1114: 7473, 1123: 5126}, - {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, 625: 7309, 1216: 7311, 1252: 7310, 1304: 7308, 7475}, - {9: 131, 52: 131}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7477}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 7509, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7510, 3149, 3150, 3148, 1378: 7513, 1392: 7514, 1463: 7511, 1467: 7512}, + {54: 76, 95: 76, 76, 98: 76, 100: 76, 108: 76, 111: 76, 114: 76, 247: 7498, 555: 76, 76, 572: 76, 576: 76, 579: 76, 581: 76, 600: 76, 602: 76, 605: 76, 607: 76, 611: 76, 632: 76, 649: 76, 76, 680: 76, 736: 76, 738: 76, 828: 76, 852: 76, 856: 76, 862: 76, 76, 1273: 7507}, + {7506}, + {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, 605: 73, 607: 73, 611: 73, 632: 73, 649: 73, 73, 680: 73, 736: 73, 738: 73, 828: 73, 852: 73, 856: 73, 862: 73, 73, 1471: 7502}, + {54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 114: 7504, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7503, 7421, 7420, 7429, 7430, 7433}, // 4550 - {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: 7485, 99: 7482, 102: 7488, 106: 7489, 112: 7490, 7483, 115: 7481, 7491, 7487, 7484, 554: 179, 557: 179, 179, 572: 179, 585: 179, 728: 179, 179, 740: 7486, 1037: 7480, 1369: 7478, 1477: 7479}, - {594, 594, 6: 4831, 4833, 598, 15: 4850, 2505, 4848, 4787, 4852, 4839, 4868, 4832, 4835, 4834, 4837, 4838, 4840, 4847, 598, 4858, 4859, 4869, 4845, 4846, 4851, 4853, 4865, 4864, 4873, 4866, 4863, 4856, 4861, 4862, 4855, 4857, 4860, 4849, 4870, 4871, 554: 4830, 557: 2505, 4867, 572: 2505, 585: 5637, 728: 2505, 4836, 885: 4841, 911: 4843, 932: 4842, 955: 4844, 961: 4854, 967: 4872, 1041: 6352, 1166: 7511}, - {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: 7485, 99: 7482, 102: 7488, 106: 7489, 112: 7490, 7483, 115: 7481, 7491, 7487, 7484, 554: 178, 557: 178, 178, 572: 178, 585: 178, 728: 178, 178, 740: 7486, 1037: 7510}, - {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, 554: 177, 557: 177, 177, 572: 177, 585: 177, 728: 177, 177, 740: 177}, - {562: 2368, 2368, 573: 4689, 576: 2368, 741: 7507, 822: 7506}, + {7505}, + {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, 605: 72, 607: 72, 611: 72, 632: 72, 649: 72, 72, 680: 72, 736: 72, 738: 72, 828: 72, 852: 72, 856: 72, 862: 72, 72}, + {54: 75, 95: 75, 75, 98: 75, 100: 75, 108: 75, 111: 75, 114: 75, 247: 75, 555: 75, 75, 572: 75, 576: 75, 579: 75, 581: 75, 600: 75, 602: 75, 605: 75, 607: 75, 611: 75, 632: 75, 649: 75, 75, 680: 75, 736: 75, 738: 75, 828: 75, 852: 75, 856: 75, 862: 75, 75}, + {7508}, // 4555 - {551: 7503, 562: 2368, 2368, 573: 4689, 576: 2368, 822: 7502}, - {562: 2368, 2368, 573: 4689, 576: 2368, 822: 7500}, - {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, 554: 170, 557: 170, 170, 572: 170, 585: 170, 728: 170, 170, 740: 170}, - {102: 7498, 112: 7499, 7496, 740: 7497}, - {562: 2368, 2368, 573: 4689, 576: 2368, 822: 7494}, + {54: 74, 95: 74, 74, 98: 74, 100: 74, 108: 74, 111: 74, 114: 74, 247: 74, 555: 74, 74, 572: 74, 576: 74, 579: 74, 581: 74, 600: 74, 602: 74, 605: 74, 607: 74, 611: 74, 632: 74, 649: 74, 74, 680: 74, 736: 74, 738: 74, 828: 74, 852: 74, 856: 74, 862: 74, 74}, + {9: 2159, 128: 2159, 131: 2159, 181: 2159, 190: 2159, 2159, 193: 2159, 196: 2159, 198: 2159, 2159, 201: 2159, 209: 2159, 212: 2159, 2159, 215: 2159, 218: 2159, 2159, 221: 2159, 578: 2159, 581: 2159, 610: 2159, 733: 2159, 756: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 768: 2159, 2159, 772: 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 1382: 7538}, + {9: 104, 128: 104, 131: 104, 181: 104, 190: 104, 104, 193: 104, 196: 104, 198: 104, 104, 201: 104, 209: 104, 212: 104, 104, 215: 104, 218: 104, 104, 221: 104, 578: 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: 7532, 128: 5185, 131: 5186, 181: 5175, 190: 5196, 5195, 193: 5158, 196: 5198, 198: 5177, 5197, 201: 5155, 209: 5192, 212: 5164, 5154, 215: 5173, 218: 5181, 5180, 221: 5184, 578: 5179, 581: 5174, 610: 5169, 733: 5178, 756: 5161, 5159, 5183, 5182, 5156, 5152, 5146, 5160, 5170, 5153, 5188, 768: 5162, 5163, 772: 5147, 5148, 5149, 5150, 5151, 5176, 5190, 5194, 5189, 5144, 5193, 5145, 5157, 5143, 5187, 5142, 5191, 983: 5165, 1052: 5167, 1056: 5141, 5171, 5138, 1066: 5136, 1074: 5139, 5140, 1082: 5137, 1086: 5166, 1090: 5134, 5168, 1112: 5135, 1116: 5172, 1119: 7533, 1128: 5199}, + {281: 7515}, // 4560 - {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, 554: 167, 557: 167, 167, 572: 167, 585: 167, 728: 167, 167, 740: 167}, - {562: 2368, 2368, 573: 4689, 576: 2368, 822: 7492}, - {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, 554: 164, 557: 164, 164, 572: 164, 585: 164, 728: 164, 164, 740: 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, 554: 162, 557: 162, 162, 572: 162, 585: 162, 728: 162, 162, 740: 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, 554: 161, 557: 161, 161, 572: 161, 585: 161, 728: 161, 161, 740: 161}, + {281: 97}, + {281: 96}, + {583: 7516}, + {560: 7521, 580: 3135, 824: 7523, 1271: 7519, 1274: 7518, 1312: 7522, 7524, 7520, 1468: 7517}, + {9: 7530, 54: 7426, 95: 7418, 2965, 98: 2995, 100: 3113, 108: 7415, 111: 7417, 555: 3006, 3005, 572: 3004, 576: 2990, 579: 7416, 581: 7258, 600: 3116, 602: 2976, 605: 7419, 607: 2974, 611: 2989, 632: 3003, 649: 7422, 7425, 680: 2999, 736: 3115, 738: 2961, 800: 7399, 828: 2969, 831: 7400, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 7401, 7410, 847: 3114, 2970, 7405, 7406, 7403, 2975, 856: 7424, 860: 2971, 862: 7427, 7428, 7411, 870: 7412, 7407, 7408, 7402, 882: 7409, 2977, 886: 7413, 7404, 891: 7414, 7423, 894: 7432, 7435, 7436, 7431, 7439, 7437, 7438, 7440, 7434, 7529, 7421, 7420, 7429, 7430, 7433}, // 4565 - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7493}, - {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, 554: 165, 557: 165, 165, 572: 165, 585: 165, 728: 165, 165, 740: 165}, - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7495}, - {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, 554: 168, 557: 168, 168, 572: 168, 585: 168, 728: 168, 168, 740: 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, 554: 169, 557: 169, 169, 572: 169, 585: 169, 728: 169, 169, 740: 169}, + {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, 605: 95, 607: 95, 611: 95, 632: 95, 649: 95, 95, 680: 95, 736: 95, 738: 95, 828: 95, 852: 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, 605: 93, 607: 93, 611: 93, 632: 93, 649: 93, 93, 680: 93, 736: 93, 738: 93, 828: 93, 852: 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, 605: 92, 607: 92, 611: 92, 632: 92, 649: 92, 92, 680: 92, 736: 92, 738: 92, 828: 92, 852: 92, 856: 92, 862: 92, 92}, + {414: 7528}, + {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, 605: 90, 607: 90, 611: 90, 632: 90, 649: 90, 90, 680: 90, 736: 90, 738: 90, 828: 90, 852: 90, 856: 90, 862: 90, 90}, // 4570 - {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, 554: 166, 557: 166, 166, 572: 166, 585: 166, 728: 166, 166, 740: 166}, - {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, 554: 163, 557: 163, 163, 572: 163, 585: 163, 728: 163, 163, 740: 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, 554: 160, 557: 160, 160, 572: 160, 585: 160, 728: 160, 160, 740: 160}, - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7501}, - {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, 554: 171, 557: 171, 171, 572: 171, 585: 171, 728: 171, 171, 740: 171}, + {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, 605: 89, 607: 89, 611: 89, 632: 89, 649: 89, 89, 680: 89, 736: 89, 738: 89, 828: 89, 852: 89, 856: 89, 862: 89, 89}, + {210: 7526, 557: 87, 1447: 7525}, + {557: 7527}, + {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, 605: 88, 607: 88, 611: 88, 632: 88, 649: 88, 88, 680: 88, 736: 88, 738: 88, 828: 88, 852: 88, 856: 88, 862: 88, 88}, // 4575 - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7505}, - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7504}, - {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, 554: 172, 557: 172, 172, 572: 172, 585: 172, 728: 172, 172, 740: 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, 554: 173, 557: 173, 173, 572: 173, 585: 173, 728: 173, 173, 740: 173}, - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7509}, + {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, 605: 91, 607: 91, 611: 91, 632: 91, 649: 91, 91, 680: 91, 736: 91, 738: 91, 828: 91, 852: 91, 856: 91, 862: 91, 91}, + {98}, + {560: 7521, 580: 3135, 824: 7523, 1271: 7519, 1274: 7531, 1312: 7522, 7524, 7520}, + {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, 605: 94, 607: 94, 611: 94, 632: 94, 649: 94, 94, 680: 94, 736: 94, 738: 94, 828: 94, 852: 94, 856: 94, 862: 94, 94}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7537, 3149, 3150, 3148}, // 4580 - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7508}, - {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, 554: 174, 557: 174, 174, 572: 174, 585: 174, 728: 174, 174, 740: 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, 554: 175, 557: 175, 175, 572: 175, 585: 175, 728: 175, 175, 740: 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, 554: 176, 557: 176, 176, 572: 176, 585: 176, 728: 176, 176, 740: 176}, - {180, 180}, + {102, 559: 7534, 1469: 7535}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3231, 3179, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3147, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3264, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3271, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3277, 3320, 3192, 3585, 3345, 3221, 3338, 3339, 3334, 3292, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3273, 3153, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3579, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3190, 3590, 3212, 3617, 3695, 3260, 3697, 3519, 3261, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3215, 3593, 3296, 3225, 3380, 3145, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3333, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3146, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3279, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3597, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3253, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3571, 3152, 3275, 3572, 3573, 3166, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3591, 3592, 3417, 3670, 3671, 3650, 3649, 3457, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3315, 3332, 3604, 3458, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3614, 3615, 3616, 3328, 3627, 3628, 3640, 3265, 3623, 3624, 3625, 3659, 3274, 555: 3726, 557: 3708, 3724, 3734, 3808, 564: 3739, 3743, 567: 3723, 3722, 3762, 571: 3699, 3735, 576: 3742, 578: 3760, 580: 3703, 605: 3737, 610: 3730, 3761, 649: 3732, 3741, 3698, 3700, 654: 3806, 3744, 659: 3702, 3701, 662: 3706, 3707, 3727, 3813, 3717, 3729, 669: 3736, 3728, 3705, 3733, 3758, 3740, 3745, 3750, 3803, 3751, 3752, 682: 3781, 3720, 3721, 3776, 3777, 3778, 3779, 3780, 3731, 3763, 3773, 3774, 3767, 3782, 3783, 3784, 3768, 3786, 3787, 3769, 3785, 3764, 3772, 3770, 3756, 3788, 3789, 3793, 3746, 3749, 3792, 3798, 3797, 3799, 3796, 3800, 3795, 3794, 721: 3791, 3790, 3748, 3747, 3753, 3754, 735: 3809, 796: 3709, 3149, 3150, 3148, 3725, 3802, 3716, 3704, 3710, 3775, 3713, 3711, 3712, 3755, 3766, 3765, 3759, 3757, 3771, 3814, 3719, 3801, 3718, 3715, 3812, 3811, 3810, 7536}, + {100}, + {101, 591: 3869, 3867, 3868, 3866, 3864, 826: 3865, 3863}, + {9: 103, 128: 103, 131: 103, 181: 103, 190: 103, 103, 193: 103, 196: 103, 198: 103, 103, 201: 103, 209: 103, 212: 103, 103, 215: 103, 218: 103, 103, 221: 103, 578: 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}, // 4585 - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 554: 2163, 598: 5457, 888: 7513}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 791: 4698, 3121, 3122, 3120, 947: 7514}, - {121: 7521, 7519, 7518, 7520, 7517, 1001: 7515, 1281: 7516}, - {2918, 2918, 9: 2918, 121: 2918, 2918, 2918, 2918, 2918}, - {185, 185, 9: 7579, 121: 7521, 7519, 7518, 7520, 7517, 1001: 7578}, + {583: 7539}, + {555: 3006, 3005, 572: 3004, 632: 3003, 680: 2999, 800: 7540, 831: 7541, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 7542, 7543, 1462: 7544}, + {107, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {109, 563: 1054, 574: 1054, 1054}, + {108}, // 4590 - {261: 2368, 573: 4689, 576: 2368, 822: 7575}, - {325: 2368, 337: 2368, 2368, 573: 4689, 822: 7570}, - {2891, 2891, 9: 2891, 121: 2891, 2891, 2891, 2891, 2891, 573: 4689, 576: 2368, 648: 2368, 2368, 822: 7568}, - {550: 2368, 566: 2368, 573: 4689, 822: 7538}, - {550: 2368, 566: 2368, 573: 4689, 822: 7522}, + {106}, + {99}, + {83, 83}, + {54: 7550}, + {586: 7549}, // 4595 - {550: 7523, 566: 7524}, - {52: 7526, 191: 7528, 193: 7529, 1062: 7527, 1468: 7525}, - {2884, 2884, 9: 2884, 121: 2884, 2884, 2884, 2884, 2884}, - {9: 7536, 52: 7534, 191: 7528, 193: 7529, 1062: 7535}, - {2885, 2885, 9: 2885, 121: 2885, 2885, 2885, 2885, 2885}, + {54: 80}, + {54: 81}, + {584: 7551}, + {54: 7553, 1466: 7552}, + {84, 84, 9: 7554}, // 4600 - {9: 2883, 52: 2883, 191: 2883, 193: 2883}, - {552: 2368, 573: 4689, 822: 7532}, - {573: 4689, 576: 2368, 822: 7530}, - {576: 3107, 819: 3956, 834: 7531}, - {9: 2879, 52: 2879, 191: 2879, 193: 2879}, + {79, 79, 9: 79}, + {54: 7555}, + {78, 78, 9: 78}, + {85, 85}, + {128: 5185, 131: 5186, 181: 5175, 190: 5196, 5195, 193: 5158, 196: 5198, 198: 5177, 5197, 201: 5155, 209: 5192, 212: 5164, 5154, 215: 5173, 218: 5181, 5180, 221: 5184, 578: 5179, 581: 5174, 610: 5169, 733: 5178, 756: 5161, 5159, 5183, 5182, 5156, 5152, 5146, 5160, 5170, 5153, 5188, 768: 5162, 5163, 772: 5147, 5148, 5149, 5150, 5151, 5176, 5190, 5194, 5189, 5144, 5193, 5145, 5157, 5143, 5187, 5142, 5191, 983: 5165, 1052: 5167, 1056: 5141, 5171, 5138, 1066: 5136, 1074: 5139, 5140, 1082: 5137, 1086: 5166, 1090: 5134, 5168, 1112: 5135, 1116: 5172, 1119: 7558, 1128: 5199}, // 4605 - {552: 7533}, - {9: 2880, 52: 2880, 191: 2880, 193: 2880}, - {2886, 2886, 9: 2886, 121: 2886, 2886, 2886, 2886, 2886}, - {9: 2882, 52: 2882, 191: 2882, 193: 2882}, - {191: 7528, 193: 7529, 1062: 7537}, + {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: 7394, 1222: 7396, 1258: 7395, 1310: 7393, 7560}, + {9: 131, 52: 131}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7562}, + {194, 194, 6: 194, 194, 194, 15: 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 97: 7570, 99: 7567, 102: 7573, 106: 7574, 112: 7575, 7568, 115: 7566, 7576, 7572, 7569, 559: 194, 562: 194, 194, 578: 194, 590: 194, 733: 194, 194, 745: 7571, 1042: 7565, 1379: 7563, 1487: 7564}, // 4610 - {9: 2881, 52: 2881, 191: 2881, 193: 2881}, - {550: 7539, 566: 7540}, - {52: 7548, 101: 7546, 142: 7547, 144: 7543, 146: 7544, 7545, 1063: 7541, 1470: 7542}, - {2887, 2887, 9: 2887, 121: 2887, 2887, 2887, 2887, 2887}, - {9: 2912, 52: 2912, 101: 2912, 142: 2912, 144: 2912, 146: 2912, 2912}, + {609, 609, 6: 4904, 4906, 613, 15: 4923, 2531, 4921, 4860, 4925, 4912, 4941, 4905, 4908, 4907, 4910, 4911, 4913, 4920, 613, 4931, 4932, 4942, 4918, 4919, 4924, 4926, 4938, 4937, 4946, 4939, 4936, 4929, 4934, 4935, 4928, 4930, 4933, 4922, 4943, 4944, 559: 4903, 562: 2531, 4940, 578: 2531, 590: 5710, 733: 2531, 4909, 890: 4914, 916: 4916, 938: 4915, 960: 4917, 966: 4927, 972: 4945, 1047: 6436, 1172: 7596}, + {193, 193, 6: 193, 193, 193, 15: 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 97: 7570, 99: 7567, 102: 7573, 106: 7574, 112: 7575, 7568, 115: 7566, 7576, 7572, 7569, 559: 193, 562: 193, 193, 578: 193, 590: 193, 733: 193, 193, 745: 7571, 1042: 7595}, + {192, 192, 6: 192, 192, 192, 15: 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 97: 192, 99: 192, 102: 192, 106: 192, 112: 192, 192, 115: 192, 192, 192, 192, 559: 192, 562: 192, 192, 578: 192, 590: 192, 733: 192, 192, 745: 192}, + {567: 2394, 2394, 577: 4726, 580: 2394, 746: 7592, 825: 7591}, + {556: 7588, 567: 2394, 2394, 577: 4726, 580: 2394, 825: 7587}, // 4615 - {9: 7565, 52: 7566, 101: 7546, 142: 7547, 144: 7543, 146: 7544, 7545, 1063: 7564}, - {552: 2368, 573: 4689, 822: 7562}, - {573: 4689, 576: 2368, 822: 7560}, - {573: 4689, 576: 2368, 822: 7558}, - {242: 2368, 244: 2368, 260: 2368, 573: 4689, 822: 7556, 958: 2368}, + {567: 2394, 2394, 577: 4726, 580: 2394, 825: 7585}, + {185, 185, 6: 185, 185, 185, 15: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 97: 185, 99: 185, 102: 185, 106: 185, 112: 185, 185, 115: 185, 185, 185, 185, 185, 559: 185, 562: 185, 185, 578: 185, 590: 185, 733: 185, 185, 745: 185}, + {102: 7583, 112: 7584, 7581, 745: 7582}, + {567: 2394, 2394, 577: 4726, 580: 2394, 825: 7579}, + {182, 182, 6: 182, 182, 182, 15: 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 97: 182, 99: 182, 102: 182, 106: 182, 112: 182, 182, 115: 182, 182, 182, 182, 182, 559: 182, 562: 182, 182, 578: 182, 590: 182, 733: 182, 182, 745: 182}, // 4620 - {126: 2368, 273: 2368, 286: 2368, 573: 4689, 822: 7549}, - {2888, 2888, 9: 2888, 121: 2888, 2888, 2888, 2888, 2888}, - {126: 4684, 273: 4682, 286: 4683, 1283: 7550}, - {9: 2897, 52: 2897, 101: 2897, 142: 2897, 144: 2897, 146: 2897, 2897, 172: 7552, 1530: 7551}, - {9: 2898, 52: 2898, 101: 2898, 142: 2898, 144: 2898, 146: 2898, 2898}, + {567: 2394, 2394, 577: 4726, 580: 2394, 825: 7577}, + {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: 179, 99: 179, 102: 179, 106: 179, 112: 179, 179, 115: 179, 179, 179, 179, 179, 559: 179, 562: 179, 179, 578: 179, 590: 179, 733: 179, 179, 745: 179}, + {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, 177, 559: 177, 562: 177, 177, 578: 177, 590: 177, 733: 177, 177, 745: 177}, + {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, 176, 559: 176, 562: 176, 176, 578: 176, 590: 176, 733: 176, 176, 745: 176}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 7578}, // 4625 - {261: 2368, 552: 2368, 573: 4689, 822: 7553}, - {261: 7555, 552: 7554}, - {9: 2896, 52: 2896, 101: 2896, 142: 2896, 144: 2896, 146: 2896, 2896}, - {9: 2895, 52: 2895, 101: 2895, 142: 2895, 144: 2895, 146: 2895, 2895}, - {242: 4692, 244: 4691, 260: 4694, 958: 4693, 1282: 7557}, + {180, 180, 6: 180, 180, 180, 15: 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 97: 180, 99: 180, 102: 180, 106: 180, 112: 180, 180, 115: 180, 180, 180, 180, 180, 559: 180, 562: 180, 180, 578: 180, 590: 180, 733: 180, 180, 745: 180}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 7580}, + {183, 183, 6: 183, 183, 183, 15: 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 97: 183, 99: 183, 102: 183, 106: 183, 112: 183, 183, 115: 183, 183, 183, 183, 183, 559: 183, 562: 183, 183, 578: 183, 590: 183, 733: 183, 183, 745: 183}, + {184, 184, 6: 184, 184, 184, 15: 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 97: 184, 99: 184, 102: 184, 106: 184, 112: 184, 184, 115: 184, 184, 184, 184, 184, 559: 184, 562: 184, 184, 578: 184, 590: 184, 733: 184, 184, 745: 184}, + {181, 181, 6: 181, 181, 181, 15: 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 97: 181, 99: 181, 102: 181, 106: 181, 112: 181, 181, 115: 181, 181, 181, 181, 181, 559: 181, 562: 181, 181, 578: 181, 590: 181, 733: 181, 181, 745: 181}, // 4630 - {9: 2899, 52: 2899, 101: 2899, 142: 2899, 144: 2899, 146: 2899, 2899}, - {576: 7559}, - {9: 2900, 52: 2900, 101: 2900, 142: 2900, 144: 2900, 146: 2900, 2900}, - {576: 7561}, - {9: 2901, 52: 2901, 101: 2901, 142: 2901, 144: 2901, 146: 2901, 2901}, + {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: 178, 99: 178, 102: 178, 106: 178, 112: 178, 178, 115: 178, 178, 178, 178, 178, 559: 178, 562: 178, 178, 578: 178, 590: 178, 733: 178, 178, 745: 178}, + {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, 578: 175, 590: 175, 733: 175, 175, 745: 175}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 7586}, + {186, 186, 6: 186, 186, 186, 15: 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 97: 186, 99: 186, 102: 186, 106: 186, 112: 186, 186, 115: 186, 186, 186, 186, 186, 559: 186, 562: 186, 186, 578: 186, 590: 186, 733: 186, 186, 745: 186}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 7590}, // 4635 - {552: 7563}, - {9: 2902, 52: 2902, 101: 2902, 142: 2902, 144: 2902, 146: 2902, 2902}, - {9: 2911, 52: 2911, 101: 2911, 142: 2911, 144: 2911, 146: 2911, 2911}, - {101: 7546, 142: 7547, 144: 7543, 146: 7544, 7545, 1063: 7567}, - {2889, 2889, 9: 2889, 121: 2889, 2889, 2889, 2889, 2889}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 7589}, + {187, 187, 6: 187, 187, 187, 15: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 97: 187, 99: 187, 102: 187, 106: 187, 112: 187, 187, 115: 187, 187, 187, 187, 187, 559: 187, 562: 187, 187, 578: 187, 590: 187, 733: 187, 187, 745: 187}, + {188, 188, 6: 188, 188, 188, 15: 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 97: 188, 99: 188, 102: 188, 106: 188, 112: 188, 188, 115: 188, 188, 188, 188, 188, 559: 188, 562: 188, 188, 578: 188, 590: 188, 733: 188, 188, 745: 188}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 7594}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 7593}, // 4640 - {9: 2910, 52: 2910, 101: 2910, 142: 2910, 144: 2910, 146: 2910, 2910}, - {576: 3107, 648: 6883, 6884, 819: 6882, 1020: 7569}, - {2890, 2890, 9: 2890, 121: 2890, 2890, 2890, 2890, 2890}, - {325: 7573, 337: 7571, 7572, 1469: 7574}, - {2915, 2915, 9: 2915, 121: 2915, 2915, 2915, 2915, 2915}, + {189, 189, 6: 189, 189, 189, 15: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 97: 189, 99: 189, 102: 189, 106: 189, 112: 189, 189, 115: 189, 189, 189, 189, 189, 559: 189, 562: 189, 189, 578: 189, 590: 189, 733: 189, 189, 745: 189}, + {190, 190, 6: 190, 190, 190, 15: 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 97: 190, 99: 190, 102: 190, 106: 190, 112: 190, 190, 115: 190, 190, 190, 190, 190, 559: 190, 562: 190, 190, 578: 190, 590: 190, 733: 190, 190, 745: 190}, + {191, 191, 6: 191, 191, 191, 15: 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 97: 191, 99: 191, 102: 191, 106: 191, 112: 191, 191, 115: 191, 191, 191, 191, 559: 191, 562: 191, 191, 578: 191, 590: 191, 733: 191, 191, 745: 191}, + {195, 195}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 559: 2189, 605: 5530, 893: 7598}, // 4645 - {2914, 2914, 9: 2914, 121: 2914, 2914, 2914, 2914, 2914}, - {2913, 2913, 9: 2913, 121: 2913, 2913, 2913, 2913, 2913}, - {2892, 2892, 9: 2892, 121: 2892, 2892, 2892, 2892, 2892}, - {261: 7577, 576: 3107, 819: 3956, 834: 7576}, - {2894, 2894, 9: 2894, 121: 2894, 2894, 2894, 2894, 2894}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 796: 4735, 3149, 3150, 3148, 952: 7599}, + {121: 7606, 7604, 7603, 7605, 7602, 1007: 7600, 1287: 7601}, + {2944, 2944, 9: 2944, 121: 2944, 2944, 2944, 2944, 2944}, + {200, 200, 9: 7664, 121: 7606, 7604, 7603, 7605, 7602, 1007: 7663}, + {266: 2394, 577: 4726, 580: 2394, 825: 7660}, // 4650 - {2893, 2893, 9: 2893, 121: 2893, 2893, 2893, 2893, 2893}, - {2917, 2917, 9: 2917, 121: 2917, 2917, 2917, 2917, 2917}, - {121: 7521, 7519, 7518, 7520, 7517, 1001: 7580}, - {2916, 2916, 9: 2916, 121: 2916, 2916, 2916, 2916, 2916}, - {561: 7583, 578: 7582, 581: 7584}, + {329: 2394, 341: 2394, 2394, 577: 4726, 825: 7655}, + {2917, 2917, 9: 2917, 121: 2917, 2917, 2917, 2917, 2917, 577: 4726, 580: 2394, 651: 2394, 2394, 825: 7653}, + {555: 2394, 571: 2394, 577: 4726, 825: 7623}, + {555: 2394, 571: 2394, 577: 4726, 825: 7607}, + {555: 7608, 571: 7609}, // 4655 - {550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 795: 6504, 823: 6502, 826: 6505, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 6503, 6507, 6506, 842: 3087, 6509, 6510, 6511, 6508, 951: 7591}, - {550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 795: 6504, 823: 6502, 826: 6505, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 6503, 6507, 6506, 842: 3087, 6509, 6510, 6511, 6508, 951: 7590}, - {277: 7585}, - {561: 7586}, - {126: 7587}, + {52: 7611, 195: 7613, 197: 7614, 1068: 7612, 1478: 7610}, + {2910, 2910, 9: 2910, 121: 2910, 2910, 2910, 2910, 2910}, + {9: 7621, 52: 7619, 195: 7613, 197: 7614, 1068: 7620}, + {2911, 2911, 9: 2911, 121: 2911, 2911, 2911, 2911, 2911}, + {9: 2909, 52: 2909, 195: 2909, 197: 2909}, // 4660 - {233: 7588}, - {552: 7242, 646: 3771, 796: 7243, 1106: 7240, 1313: 7589}, - {358, 358, 9: 7244}, - {359, 359}, - {561: 7592}, + {557: 2394, 577: 4726, 825: 7617}, + {577: 4726, 580: 2394, 825: 7615}, + {580: 3135, 824: 3990, 839: 7616}, + {9: 2905, 52: 2905, 195: 2905, 197: 2905}, + {557: 7618}, // 4665 - {550: 2980, 2979, 567: 2978, 571: 2964, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 795: 6504, 823: 6502, 826: 6505, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 6503, 6507, 6506, 842: 3087, 6509, 6510, 6511, 6508, 951: 7593}, - {360, 360}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 7596, 6480, 1289: 7597, 1471: 7595}, - {435, 435, 9: 7598}, - {371, 371, 9: 371}, + {9: 2906, 52: 2906, 195: 2906, 197: 2906}, + {2912, 2912, 9: 2912, 121: 2912, 2912, 2912, 2912, 2912}, + {9: 2908, 52: 2908, 195: 2908, 197: 2908}, + {195: 7613, 197: 7614, 1068: 7622}, + {9: 2907, 52: 2907, 195: 2907, 197: 2907}, // 4670 - {370, 370, 9: 370}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 6474, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 6479, 791: 3827, 3121, 3122, 3120, 825: 5955, 918: 6481, 941: 7596, 6480, 1289: 7599}, - {369, 369, 9: 369}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6018, 1016: 6019, 1045: 7601}, - {417, 417, 6: 417, 9: 6021, 15: 417, 51: 417, 53: 417, 417, 417, 417, 551: 417, 744: 6065, 1098: 6064, 7602}, + {555: 7624, 571: 7625}, + {52: 7633, 101: 7631, 143: 7632, 145: 7628, 147: 7629, 7630, 1069: 7626, 1480: 7627}, + {2913, 2913, 9: 2913, 121: 2913, 2913, 2913, 2913, 2913}, + {9: 2938, 52: 2938, 101: 2938, 143: 2938, 145: 2938, 147: 2938, 2938}, + {9: 7650, 52: 7651, 101: 7631, 143: 7632, 145: 7628, 147: 7629, 7630, 1069: 7649}, // 4675 - {425, 425, 6: 425, 15: 425, 51: 425, 53: 425, 425, 425, 425, 551: 7604, 1155: 7603}, - {398, 398, 6: 398, 15: 7620, 51: 398, 53: 398, 7619, 7621, 7622, 1090: 7618, 1259: 7617, 7616}, - {178: 7609, 7607, 7608, 7610, 1154: 7606, 1366: 7605}, - {424, 424, 6: 424, 15: 424, 51: 424, 53: 424, 424, 424, 424, 178: 7609, 7607, 7608, 7610, 1154: 7615}, - {423, 423, 6: 423, 15: 423, 51: 423, 53: 423, 423, 423, 423, 178: 423, 423, 423, 423}, + {557: 2394, 577: 4726, 825: 7647}, + {577: 4726, 580: 2394, 825: 7645}, + {577: 4726, 580: 2394, 825: 7643}, + {245: 2394, 248: 2394, 264: 2394, 577: 4726, 825: 7641, 963: 2394}, + {126: 2394, 278: 2394, 291: 2394, 577: 4726, 825: 7634}, // 4680 - {576: 3107, 819: 4639, 851: 7614}, - {576: 3107, 819: 4639, 851: 7613}, - {576: 3107, 819: 4639, 851: 7612}, - {576: 3107, 819: 4639, 851: 7611}, - {418, 418, 6: 418, 15: 418, 51: 418, 53: 418, 418, 418, 418, 178: 418, 418, 418, 418}, + {2914, 2914, 9: 2914, 121: 2914, 2914, 2914, 2914, 2914}, + {126: 4721, 278: 4719, 291: 4720, 1289: 7635}, + {9: 2923, 52: 2923, 101: 2923, 130: 7637, 143: 2923, 145: 2923, 147: 2923, 2923, 1542: 7636}, + {9: 2924, 52: 2924, 101: 2924, 143: 2924, 145: 2924, 147: 2924, 2924}, + {266: 2394, 557: 2394, 577: 4726, 825: 7638}, // 4685 - {419, 419, 6: 419, 15: 419, 51: 419, 53: 419, 419, 419, 419, 178: 419, 419, 419, 419}, - {420, 420, 6: 420, 15: 420, 51: 420, 53: 420, 420, 420, 420, 178: 420, 420, 420, 420}, - {421, 421, 6: 421, 15: 421, 51: 421, 53: 421, 421, 421, 421, 178: 421, 421, 421, 421}, - {422, 422, 6: 422, 15: 422, 51: 422, 53: 422, 422, 422, 422, 178: 422, 422, 422, 422}, - {403, 403, 6: 7647, 51: 403, 53: 7648, 1152: 7646}, + {266: 7640, 557: 7639}, + {9: 2922, 52: 2922, 101: 2922, 143: 2922, 145: 2922, 147: 2922, 2922}, + {9: 2921, 52: 2921, 101: 2921, 143: 2921, 145: 2921, 147: 2921, 2921}, + {245: 4729, 248: 4728, 264: 4731, 963: 4730, 1288: 7642}, + {9: 2925, 52: 2925, 101: 2925, 143: 2925, 145: 2925, 147: 2925, 2925}, // 4690 - {397, 397, 6: 397, 15: 7620, 51: 397, 53: 397, 7619, 7621, 7622, 1090: 7645}, - {396, 396, 6: 396, 15: 396, 51: 396, 53: 396, 396, 396, 396}, - {582: 7644, 1115: 7643}, - {277: 7626, 406: 7628, 443: 7627, 744: 7629}, - {576: 3107, 819: 4639, 851: 7625}, + {580: 7644}, + {9: 2926, 52: 2926, 101: 2926, 143: 2926, 145: 2926, 147: 2926, 2926}, + {580: 7646}, + {9: 2927, 52: 2927, 101: 2927, 143: 2927, 145: 2927, 147: 2927, 2927}, + {557: 7648}, // 4695 - {222: 7624, 576: 3107, 819: 4639, 851: 7623}, - {383, 383, 6: 383, 15: 383, 51: 383, 53: 383, 383, 383, 383}, - {382, 382, 6: 382, 15: 382, 51: 382, 53: 382, 382, 382, 382}, - {384, 384, 6: 384, 15: 384, 51: 384, 53: 384, 384, 384, 384}, - {554: 7641, 576: 3107, 819: 7642}, + {9: 2928, 52: 2928, 101: 2928, 143: 2928, 145: 2928, 147: 2928, 2928}, + {9: 2937, 52: 2937, 101: 2937, 143: 2937, 145: 2937, 147: 2937, 2937}, + {101: 7631, 143: 7632, 145: 7628, 147: 7629, 7630, 1069: 7652}, + {2915, 2915, 9: 2915, 121: 2915, 2915, 2915, 2915, 2915}, + {9: 2936, 52: 2936, 101: 2936, 143: 2936, 145: 2936, 147: 2936, 2936}, // 4700 - {660: 7637}, - {388, 388, 6: 388, 15: 388, 51: 388, 53: 388, 388, 388, 388, 422: 7633, 554: 7634, 660: 7632}, - {198: 7630}, - {554: 7631}, - {381, 381, 6: 381, 15: 381, 51: 381, 53: 381, 381, 381, 381}, + {580: 3135, 651: 4782, 4783, 824: 4781, 976: 7654}, + {2916, 2916, 9: 2916, 121: 2916, 2916, 2916, 2916, 2916}, + {329: 7658, 341: 7656, 7657, 1479: 7659}, + {2941, 2941, 9: 2941, 121: 2941, 2941, 2941, 2941, 2941}, + {2940, 2940, 9: 2940, 121: 2940, 2940, 2940, 2940, 2940}, // 4705 - {576: 3107, 819: 4639, 851: 7635}, - {386, 386, 6: 386, 15: 386, 51: 386, 53: 386, 386, 386, 386}, - {385, 385, 6: 385, 15: 385, 51: 385, 53: 385, 385, 385, 385}, - {149: 7636}, - {387, 387, 6: 387, 15: 387, 51: 387, 53: 387, 387, 387, 387}, + {2939, 2939, 9: 2939, 121: 2939, 2939, 2939, 2939, 2939}, + {2918, 2918, 9: 2918, 121: 2918, 2918, 2918, 2918, 2918}, + {266: 7662, 580: 3135, 824: 3990, 839: 7661}, + {2920, 2920, 9: 2920, 121: 2920, 2920, 2920, 2920, 2920}, + {2919, 2919, 9: 2919, 121: 2919, 2919, 2919, 2919, 2919}, // 4710 - {554: 7638, 576: 3107, 819: 7639}, - {390, 390, 6: 390, 15: 390, 51: 390, 53: 390, 390, 390, 390}, - {149: 7640}, - {389, 389, 6: 389, 15: 389, 51: 389, 53: 389, 389, 389, 389}, - {392, 392, 6: 392, 15: 392, 51: 392, 53: 392, 392, 392, 392}, + {2943, 2943, 9: 2943, 121: 2943, 2943, 2943, 2943, 2943}, + {121: 7606, 7604, 7603, 7605, 7602, 1007: 7665}, + {2942, 2942, 9: 2942, 121: 2942, 2942, 2942, 2942, 2942}, + {566: 7668, 583: 7667, 586: 7669}, + {555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 800: 6588, 828: 6586, 831: 6589, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 6587, 6591, 6590, 847: 3114, 6593, 6594, 6595, 6592, 956: 7676}, // 4715 - {391, 391, 6: 391, 15: 391, 51: 391, 53: 391, 391, 391, 391}, - {394, 394, 6: 394, 15: 394, 51: 394, 53: 394, 394, 394, 394}, - {393, 393, 6: 393, 15: 393, 51: 393, 53: 393, 393, 393, 393}, - {395, 395, 6: 395, 15: 395, 51: 395, 53: 395, 395, 395, 395}, - {400, 400, 51: 7652, 1280: 7651}, + {555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 800: 6588, 828: 6586, 831: 6589, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 6587, 6591, 6590, 847: 3114, 6593, 6594, 6595, 6592, 956: 7675}, + {282: 7670}, + {566: 7671}, + {126: 7672}, + {237: 7673}, // 4720 - {552: 7650}, - {552: 7649}, - {401, 401, 51: 401}, - {402, 402, 51: 402}, - {436, 436}, + {557: 7327, 654: 3804, 801: 7328, 1111: 7325, 1319: 7674}, + {373, 373, 9: 7329}, + {374, 374}, + {566: 7677}, + {555: 3006, 3005, 572: 3004, 576: 2990, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 800: 6588, 828: 6586, 831: 6589, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 6587, 6591, 6590, 847: 3114, 6593, 6594, 6595, 6592, 956: 7678}, // 4725 - {591: 7653}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 791: 4698, 3121, 3122, 3120, 947: 7654}, - {399, 399}, - {18: 2416, 110: 2416, 148: 2416, 199: 2416, 676: 2416}, - {148: 2411, 199: 7708, 676: 2411, 1524: 7707}, + {375, 375}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 7681, 6564, 1295: 7682, 1481: 7680}, + {450, 450, 9: 7683}, + {386, 386, 9: 386}, + {385, 385, 9: 385}, // 4730 - {573: 7703}, - {228: 7659}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 598: 5457, 888: 7660}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5654, 3121, 3122, 3120, 1010: 7661}, - {120: 7665, 131: 7670, 7672, 7666, 7671, 7674, 7668, 7664, 7669, 7675, 7673, 7667, 1000: 7662, 1261: 7663}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 6558, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 6563, 796: 3861, 3149, 3150, 3148, 830: 6028, 923: 6565, 947: 7681, 6564, 1295: 7684}, + {384, 384, 9: 384}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6091, 1022: 6092, 1051: 7686}, + {432, 432, 6: 432, 9: 6094, 15: 432, 51: 432, 53: 432, 55: 432, 432, 432, 556: 432, 749: 6138, 1104: 6137, 7687}, + {440, 440, 6: 440, 15: 440, 51: 440, 53: 440, 55: 440, 440, 440, 556: 7689, 1161: 7688}, // 4735 - {2878, 2878, 9: 2878, 120: 2878, 131: 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878}, - {182, 182, 9: 7701, 120: 7665, 131: 7670, 7672, 7666, 7671, 7674, 7668, 7664, 7669, 7675, 7673, 7667, 1000: 7700}, - {552: 2368, 573: 4689, 822: 7698}, - {552: 2368, 573: 4689, 822: 7696}, - {573: 4689, 576: 2368, 822: 7694}, + {413, 413, 6: 413, 15: 7705, 51: 413, 53: 413, 55: 7704, 7706, 7707, 1096: 7703, 1265: 7702, 7701}, + {182: 7694, 7692, 7693, 7695, 1160: 7691, 1376: 7690}, + {439, 439, 6: 439, 15: 439, 51: 439, 53: 439, 55: 439, 439, 439, 182: 7694, 7692, 7693, 7695, 1160: 7700}, + {438, 438, 6: 438, 15: 438, 51: 438, 53: 438, 55: 438, 438, 438, 182: 438, 438, 438, 438}, + {580: 3135, 824: 4676, 855: 7699}, // 4740 - {573: 4689, 576: 2368, 822: 7692}, - {573: 4689, 576: 2368, 822: 7690}, - {552: 2368, 573: 4689, 822: 7688}, - {552: 2368, 573: 4689, 822: 7686}, - {552: 2368, 573: 4689, 822: 7684}, + {580: 3135, 824: 4676, 855: 7698}, + {580: 3135, 824: 4676, 855: 7697}, + {580: 3135, 824: 4676, 855: 7696}, + {433, 433, 6: 433, 15: 433, 51: 433, 53: 433, 55: 433, 433, 433, 182: 433, 433, 433, 433}, + {434, 434, 6: 434, 15: 434, 51: 434, 53: 434, 55: 434, 434, 434, 182: 434, 434, 434, 434}, // 4745 - {552: 2368, 573: 4689, 822: 7682}, - {552: 2368, 573: 4689, 822: 7680}, - {552: 2368, 573: 4689, 822: 7678}, - {552: 2368, 573: 4689, 822: 7676}, - {552: 7677}, + {435, 435, 6: 435, 15: 435, 51: 435, 53: 435, 55: 435, 435, 435, 182: 435, 435, 435, 435}, + {436, 436, 6: 436, 15: 436, 51: 436, 53: 436, 55: 436, 436, 436, 182: 436, 436, 436, 436}, + {437, 437, 6: 437, 15: 437, 51: 437, 53: 437, 55: 437, 437, 437, 182: 437, 437, 437, 437}, + {418, 418, 6: 7732, 51: 418, 53: 7733, 1158: 7731}, + {412, 412, 6: 412, 15: 7705, 51: 412, 53: 412, 55: 7704, 7706, 7707, 1096: 7730}, // 4750 - {2864, 2864, 9: 2864, 120: 2864, 131: 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864}, - {552: 7679}, - {2865, 2865, 9: 2865, 120: 2865, 131: 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865}, - {552: 7681}, - {2866, 2866, 9: 2866, 120: 2866, 131: 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866}, + {411, 411, 6: 411, 15: 411, 51: 411, 53: 411, 55: 411, 411, 411}, + {587: 7729, 1120: 7728}, + {282: 7711, 410: 7713, 448: 7712, 749: 7714}, + {580: 3135, 824: 4676, 855: 7710}, + {227: 7709, 580: 3135, 824: 4676, 855: 7708}, // 4755 - {552: 7683}, - {2867, 2867, 9: 2867, 120: 2867, 131: 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867}, - {552: 7685}, - {2868, 2868, 9: 2868, 120: 2868, 131: 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868}, - {552: 7687}, + {398, 398, 6: 398, 15: 398, 51: 398, 53: 398, 55: 398, 398, 398}, + {397, 397, 6: 397, 15: 397, 51: 397, 53: 397, 55: 397, 397, 397}, + {399, 399, 6: 399, 15: 399, 51: 399, 53: 399, 55: 399, 399, 399}, + {559: 7726, 580: 3135, 824: 7727}, + {665: 7722}, // 4760 - {2869, 2869, 9: 2869, 120: 2869, 131: 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869}, - {552: 7689}, - {2870, 2870, 9: 2870, 120: 2870, 131: 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870}, - {576: 3107, 819: 3956, 834: 7691}, - {2871, 2871, 9: 2871, 120: 2871, 131: 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871}, + {403, 403, 6: 403, 15: 403, 51: 403, 53: 403, 55: 403, 403, 403, 426: 7718, 559: 7719, 665: 7717}, + {202: 7715}, + {559: 7716}, + {396, 396, 6: 396, 15: 396, 51: 396, 53: 396, 55: 396, 396, 396}, + {580: 3135, 824: 4676, 855: 7720}, // 4765 - {576: 3107, 819: 3956, 834: 7693}, - {2872, 2872, 9: 2872, 120: 2872, 131: 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872}, - {576: 3107, 819: 3956, 834: 7695}, - {2873, 2873, 9: 2873, 120: 2873, 131: 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873}, - {552: 7697}, + {401, 401, 6: 401, 15: 401, 51: 401, 53: 401, 55: 401, 401, 401}, + {400, 400, 6: 400, 15: 400, 51: 400, 53: 400, 55: 400, 400, 400}, + {151: 7721}, + {402, 402, 6: 402, 15: 402, 51: 402, 53: 402, 55: 402, 402, 402}, + {559: 7723, 580: 3135, 824: 7724}, // 4770 - {2874, 2874, 9: 2874, 120: 2874, 131: 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874}, - {552: 7699}, - {2875, 2875, 9: 2875, 120: 2875, 131: 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875}, - {2877, 2877, 9: 2877, 120: 2877, 131: 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877}, - {120: 7665, 131: 7670, 7672, 7666, 7671, 7674, 7668, 7664, 7669, 7675, 7673, 7667, 1000: 7702}, + {405, 405, 6: 405, 15: 405, 51: 405, 53: 405, 55: 405, 405, 405}, + {151: 7725}, + {404, 404, 6: 404, 15: 404, 51: 404, 53: 404, 55: 404, 404, 404}, + {407, 407, 6: 407, 15: 407, 51: 407, 53: 407, 55: 407, 407, 407}, + {406, 406, 6: 406, 15: 406, 51: 406, 53: 406, 55: 406, 406, 406}, // 4775 - {2876, 2876, 9: 2876, 120: 2876, 131: 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876}, - {4: 7705, 458: 7706, 466: 7704}, - {148: 2414, 199: 2414, 676: 2414}, - {148: 2413, 199: 2413, 676: 2413}, - {148: 2412, 199: 2412, 676: 2412}, + {409, 409, 6: 409, 15: 409, 51: 409, 53: 409, 55: 409, 409, 409}, + {408, 408, 6: 408, 15: 408, 51: 408, 53: 408, 55: 408, 408, 408}, + {410, 410, 6: 410, 15: 410, 51: 410, 53: 410, 55: 410, 410, 410}, + {415, 415, 51: 7737, 1286: 7736}, + {557: 7735}, // 4780 - {148: 2409, 676: 7712, 1527: 7711}, - {573: 7709}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 7710}, - {148: 2410, 676: 2410}, - {148: 7716}, + {557: 7734}, + {416, 416, 51: 416}, + {417, 417, 51: 417}, + {451, 451}, + {596: 7738}, // 4785 - {446: 7713}, - {199: 7714, 415: 7715}, - {148: 2408}, - {148: 2407}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7718, 1526: 7717}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 796: 4735, 3149, 3150, 3148, 952: 7739}, + {414, 414}, + {18: 2442, 110: 2442, 150: 2442, 203: 2442, 681: 2442}, + {150: 2437, 203: 7793, 681: 2437, 1536: 7792}, + {577: 7788}, // 4790 - {550: 7720, 556: 2405, 1525: 7719}, - {550: 2406, 556: 2406}, - {556: 7726}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7722, 3121, 3122, 3120, 1361: 7721}, - {9: 7724, 52: 7723}, + {233: 7744}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 605: 5530, 893: 7745}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5727, 3149, 3150, 3148, 1016: 7746}, + {120: 7750, 132: 7755, 7757, 7751, 7756, 7759, 7753, 7749, 7754, 7760, 7758, 7752, 1006: 7747, 1267: 7748}, + {2904, 2904, 9: 2904, 120: 2904, 132: 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904}, // 4795 - {9: 2403, 52: 2403}, - {556: 2404}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7725, 3121, 3122, 3120}, - {9: 2402, 52: 2402}, - {550: 2980, 2979, 567: 2978, 627: 2977, 668: 2973, 795: 7730, 826: 7728, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 3936, 7729, 7727, 1371: 7731}, + {197, 197, 9: 7786, 120: 7750, 132: 7755, 7757, 7751, 7756, 7759, 7753, 7749, 7754, 7760, 7758, 7752, 1006: 7785}, + {557: 2394, 577: 4726, 825: 7783}, + {557: 2394, 577: 4726, 825: 7781}, + {577: 4726, 580: 2394, 825: 7779}, + {577: 4726, 580: 2394, 825: 7777}, // 4800 - {2424, 2424, 551: 2424}, - {2423, 2423, 551: 2423, 558: 1034, 569: 1034, 1034}, - {2422, 2422, 551: 2422}, - {2421, 2421, 551: 2421, 558: 1033, 569: 1033, 1033, 574: 3949, 577: 3948, 584: 3947, 862: 3950, 3951}, - {2401, 2401, 551: 7733, 1523: 7732}, + {577: 4726, 580: 2394, 825: 7775}, + {557: 2394, 577: 4726, 825: 7773}, + {557: 2394, 577: 4726, 825: 7771}, + {557: 2394, 577: 4726, 825: 7769}, + {557: 2394, 577: 4726, 825: 7767}, // 4805 - {2418, 2418}, - {58: 7735, 388: 7734}, - {705: 7738}, - {705: 7736}, - {1029: 7737}, + {557: 2394, 577: 4726, 825: 7765}, + {557: 2394, 577: 4726, 825: 7763}, + {557: 2394, 577: 4726, 825: 7761}, + {557: 7762}, + {2890, 2890, 9: 2890, 120: 2890, 132: 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890}, // 4810 - {2399, 2399}, - {1029: 7739}, - {2400, 2400}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 7741}, - {2514, 2514, 16: 2505, 18: 2505, 21: 2505, 554: 4830, 557: 2505, 572: 2505, 575: 7745, 728: 2505, 885: 7744, 911: 7743, 980: 7747, 1059: 7746, 1373: 7742}, + {557: 7764}, + {2891, 2891, 9: 2891, 120: 2891, 132: 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891}, + {557: 7766}, + {2892, 2892, 9: 2892, 120: 2892, 132: 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892, 2892}, + {557: 7768}, // 4815 - {2525, 2525}, - {16: 4519, 18: 4787, 21: 7755, 557: 7754, 572: 4520, 728: 4518, 873: 7753, 885: 7756}, - {2516, 2516, 16: 2516, 18: 2516, 21: 2516, 554: 2516, 557: 2516, 572: 2516, 575: 2516, 728: 2516}, - {221: 7749}, - {2513, 2513, 16: 2505, 18: 2505, 21: 2505, 554: 4830, 557: 2505, 572: 2505, 575: 7745, 728: 2505, 885: 7744, 911: 7743, 980: 7748}, + {2893, 2893, 9: 2893, 120: 2893, 132: 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893}, + {557: 7770}, + {2894, 2894, 9: 2894, 120: 2894, 132: 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894}, + {557: 7772}, + {2895, 2895, 9: 2895, 120: 2895, 132: 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895}, // 4820 - {2512, 2512, 16: 2512, 18: 2512, 21: 2512, 554: 2512, 557: 2512, 572: 2512, 575: 2512, 728: 2512}, - {2511, 2511, 16: 2511, 18: 2511, 21: 2511, 554: 2511, 557: 2511, 572: 2511, 575: 2511, 728: 2511}, - {230: 7750}, - {576: 3107, 819: 3956, 834: 7751}, - {2847, 2847, 16: 2847, 18: 2847, 21: 2847, 235: 5627, 554: 2847, 557: 2847, 572: 2847, 575: 2847, 728: 2847, 1079: 7752}, + {557: 7774}, + {2896, 2896, 9: 2896, 120: 2896, 132: 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896}, + {580: 3135, 824: 3990, 839: 7776}, + {2897, 2897, 9: 2897, 120: 2897, 132: 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897}, + {580: 3135, 824: 3990, 839: 7778}, // 4825 - {2515, 2515, 16: 2515, 18: 2515, 21: 2515, 554: 2515, 557: 2515, 572: 2515, 575: 2515, 728: 2515}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 573: 4689, 605: 2368, 822: 7761}, - {2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 10: 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, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 53: 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2368, 552: 2368, 573: 4689, 605: 2368, 822: 7759}, - {552: 2368, 573: 4689, 822: 7757}, - {2517, 2517, 16: 2517, 18: 2517, 21: 2517, 554: 2517, 557: 2517, 572: 2517, 575: 2517, 728: 2517}, + {2898, 2898, 9: 2898, 120: 2898, 132: 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898}, + {580: 3135, 824: 3990, 839: 7780}, + {2899, 2899, 9: 2899, 120: 2899, 132: 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899}, + {557: 7782}, + {2900, 2900, 9: 2900, 120: 2900, 132: 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900}, // 4830 - {552: 4902, 1191: 7758}, - {2518, 2518, 16: 2518, 18: 2518, 21: 2518, 554: 2518, 557: 2518, 572: 2518, 575: 2518, 728: 2518}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 3825, 791: 3827, 3121, 3122, 3120, 825: 3824, 998: 7760}, - {2519, 2519, 16: 2519, 18: 2519, 21: 2519, 554: 2519, 557: 2519, 572: 2519, 575: 2519, 728: 2519}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 605: 4447, 791: 3827, 3121, 3122, 3120, 825: 4446, 926: 7762}, + {557: 7784}, + {2901, 2901, 9: 2901, 120: 2901, 132: 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901}, + {2903, 2903, 9: 2903, 120: 2903, 132: 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903}, + {120: 7750, 132: 7755, 7757, 7751, 7756, 7759, 7753, 7749, 7754, 7760, 7758, 7752, 1006: 7787}, + {2902, 2902, 9: 2902, 120: 2902, 132: 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902}, // 4835 - {2520, 2520, 16: 2520, 18: 2520, 21: 2520, 554: 2520, 557: 2520, 572: 2520, 575: 2520, 728: 2520}, - {2: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 10: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 53: 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 598: 5457, 888: 7764}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7765, 3121, 3122, 3120}, - {103: 5476, 549: 2144, 561: 5475, 957: 7767, 1405: 7766}, - {549: 7768}, + {4: 7790, 463: 7791, 471: 7789}, + {150: 2440, 203: 2440, 681: 2440}, + {150: 2439, 203: 2439, 681: 2439}, + {150: 2438, 203: 2438, 681: 2438}, + {150: 2435, 681: 7797, 1539: 7796}, // 4840 - {549: 2143}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7769}, - {550: 7770}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 550: 5223, 791: 4117, 3121, 3122, 3120, 841: 5222, 936: 5221, 946: 7771}, - {9: 5232, 52: 7772}, + {577: 7794}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 7795}, + {150: 2436, 681: 2436}, + {150: 7801}, + {451: 7798}, // 4845 - {2157, 2157, 6: 2157, 19: 2157, 58: 2157, 94: 2157, 103: 2157, 2157, 2157, 107: 2157, 109: 2157, 2157, 551: 2157, 561: 2157, 582: 2157, 988: 7773}, - {2537, 2537, 6: 5470, 19: 5467, 58: 5474, 94: 5473, 103: 5476, 5345, 5032, 107: 5346, 109: 5031, 4825, 551: 5469, 561: 5475, 582: 4826, 956: 5471, 5468, 969: 5472, 987: 5466, 996: 7281, 1007: 7280, 1215: 7774}, - {2544, 2544}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7776, 3121, 3122, 3120}, - {550: 7777}, + {203: 7799, 419: 7800}, + {150: 2434}, + {150: 2433}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7803, 1538: 7802}, + {555: 7805, 561: 2431, 1537: 7804}, // 4850 - {301: 5542, 309: 5544, 312: 5543, 1312: 7778}, - {52: 7779}, - {549: 7780}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7781}, - {550: 7782}, + {555: 2432, 561: 2432}, + {561: 7811}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7807, 3149, 3150, 3148, 1371: 7806}, + {9: 7809, 52: 7808}, + {9: 2429, 52: 2429}, // 4855 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 4117, 3121, 3122, 3120, 841: 4118, 923: 7783}, - {9: 4120, 52: 7784}, - {2546, 2546}, - {2658, 2658}, - {2681, 2681}, + {561: 2430}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7810, 3149, 3150, 3148}, + {9: 2428, 52: 2428}, + {555: 3006, 3005, 572: 3004, 632: 3003, 680: 2999, 800: 7815, 831: 7813, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 3970, 7814, 7812, 1381: 7816}, + {2450, 2450, 556: 2450}, // 4860 - {2687, 2687, 551: 7789, 748: 7788}, - {217: 7796, 788: 7795}, - {389: 7791, 398: 7790}, - {61: 7794}, - {397: 7792}, + {2449, 2449, 556: 2449, 563: 1054, 574: 1054, 1054}, + {2448, 2448, 556: 2448}, + {2447, 2447, 556: 2447, 563: 1053, 574: 1053, 1053, 579: 3983, 582: 3982, 589: 3981, 867: 3984, 3985}, + {2427, 2427, 556: 7818, 1535: 7817}, + {2444, 2444}, // 4865 - {217: 7793}, - {2684, 2684}, - {2685, 2685}, - {2686, 2686}, - {2683, 2683, 750: 4746, 1017: 7797}, + {59: 7820, 392: 7819}, + {727: 7823}, + {727: 7821}, + {1034: 7822}, + {2425, 2425}, // 4870 - {2682, 2682}, - {2689, 2689}, - {2688, 2688}, - {329: 7802, 627: 7801}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7814, 904: 7813}, + {1034: 7824}, + {2426, 2426}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 7826}, + {2540, 2540, 16: 2531, 18: 2531, 21: 2531, 559: 4903, 562: 2531, 578: 2531, 581: 7830, 733: 2531, 890: 7829, 916: 7828, 986: 7832, 1065: 7831, 1383: 7827}, + {2551, 2551}, // 4875 - {627: 7803}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7804}, - {565: 7806, 729: 7805}, - {1128, 1128, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1128, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 551: 1128, 678: 5682, 791: 5681, 3121, 3122, 3120, 986: 7811}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 7807}, + {16: 4553, 18: 4860, 21: 7840, 562: 7839, 578: 4554, 733: 4552, 878: 7838, 890: 7841}, + {2542, 2542, 16: 2542, 18: 2542, 21: 2542, 559: 2542, 562: 2542, 578: 2542, 581: 2542, 733: 2542}, + {226: 7834}, + {2539, 2539, 16: 2531, 18: 2531, 21: 2531, 559: 4903, 562: 2531, 578: 2531, 581: 7830, 733: 2531, 890: 7829, 916: 7828, 986: 7833}, + {2538, 2538, 16: 2538, 18: 2538, 21: 2538, 559: 2538, 562: 2538, 578: 2538, 581: 2538, 733: 2538}, // 4880 - {9: 5379, 729: 7808}, - {1128, 1128, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1128, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 551: 1128, 678: 5682, 791: 5681, 3121, 3122, 3120, 986: 7809}, - {2703, 2703, 9: 5684, 551: 5665, 922: 7810}, - {2711, 2711}, - {2703, 2703, 9: 5684, 551: 5665, 922: 7812}, + {2537, 2537, 16: 2537, 18: 2537, 21: 2537, 559: 2537, 562: 2537, 578: 2537, 581: 2537, 733: 2537}, + {235: 7835}, + {580: 3135, 824: 3990, 839: 7836}, + {2873, 2873, 16: 2873, 18: 2873, 21: 2873, 238: 5700, 559: 2873, 562: 2873, 578: 2873, 581: 2873, 733: 2873, 1085: 7837}, + {2541, 2541, 16: 2541, 18: 2541, 21: 2541, 559: 2541, 562: 2541, 578: 2541, 581: 2541, 733: 2541}, // 4885 - {2714, 2714}, - {2706, 2706, 9: 4021, 229: 7834, 551: 2706, 735: 7833, 1126: 7844}, - {1273, 1273, 9: 1273, 143: 7819, 229: 1273, 551: 1273, 565: 7816, 729: 7815, 731: 7817, 735: 1273, 746: 7818}, - {1128, 1128, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1128, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 551: 1128, 678: 5682, 791: 5681, 3121, 3122, 3120, 986: 7842}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5378, 3121, 3122, 3120, 880: 7829}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 577: 4726, 610: 2394, 825: 7846}, + {2: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 10: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 53: 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 557: 2394, 577: 4726, 610: 2394, 825: 7844}, + {557: 2394, 577: 4726, 825: 7842}, + {2543, 2543, 16: 2543, 18: 2543, 21: 2543, 559: 2543, 562: 2543, 578: 2543, 581: 2543, 733: 2543}, + {557: 4975, 1197: 7843}, // 4890 - {326: 7825}, - {326: 7822}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6632, 3121, 3122, 3120, 1004: 7820}, - {2703, 2703, 9: 6634, 551: 5665, 922: 7821}, - {2708, 2708}, + {2544, 2544, 16: 2544, 18: 2544, 21: 2544, 559: 2544, 562: 2544, 578: 2544, 581: 2544, 733: 2544}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 3859, 796: 3861, 3149, 3150, 3148, 830: 3858, 1004: 7845}, + {2545, 2545, 16: 2545, 18: 2545, 21: 2545, 559: 2545, 562: 2545, 578: 2545, 581: 2545, 733: 2545}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 610: 4481, 796: 3861, 3149, 3150, 3148, 830: 4480, 931: 7847}, + {2546, 2546, 16: 2546, 18: 2546, 21: 2546, 559: 2546, 562: 2546, 578: 2546, 581: 2546, 733: 2546}, // 4895 - {549: 7823}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6632, 3121, 3122, 3120, 1004: 7824}, - {2709, 2709, 9: 6634}, - {549: 7826}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6632, 3121, 3122, 3120, 1004: 7827}, + {2: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 10: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 53: 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 605: 5530, 893: 7849}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7850, 3149, 3150, 3148}, + {103: 5549, 554: 2170, 566: 5548, 962: 7852, 1415: 7851}, + {554: 7853}, + {554: 2169}, // 4900 - {2703, 2703, 9: 6634, 551: 5665, 922: 7828}, - {2710, 2710}, - {2706, 2706, 9: 5379, 143: 7832, 229: 7834, 551: 2706, 729: 7831, 735: 7833, 1126: 7830}, - {2703, 2703, 551: 5665, 922: 7841}, - {1128, 1128, 3372, 3534, 3336, 3211, 3252, 3374, 3135, 1128, 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 551: 1128, 678: 5682, 791: 5681, 3121, 3122, 3120, 986: 7839}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7854}, + {555: 7855}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 555: 5296, 796: 4151, 3149, 3150, 3148, 846: 5295, 943: 5294, 951: 7856}, + {9: 5305, 52: 7857}, + {2183, 2183, 6: 2183, 19: 2183, 59: 2183, 94: 2183, 103: 2183, 2183, 2183, 107: 2183, 109: 2183, 2183, 556: 2183, 566: 2183, 587: 2183, 994: 7858}, // 4905 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6632, 3121, 3122, 3120, 1004: 7837}, - {143: 7836}, - {143: 7835}, - {2704, 2704, 551: 2704}, - {2705, 2705, 551: 2705}, + {2563, 2563, 6: 5543, 19: 5540, 59: 5547, 94: 5546, 103: 5549, 5418, 5105, 107: 5419, 109: 5104, 4898, 556: 5542, 566: 5548, 587: 4899, 961: 5544, 5541, 974: 5545, 993: 5539, 1002: 7366, 1013: 7365, 1221: 7859}, + {2570, 2570}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7861, 3149, 3150, 3148}, + {555: 7862}, + {305: 5615, 313: 5617, 316: 5616, 1318: 7863}, // 4910 - {2703, 2703, 9: 6634, 551: 5665, 922: 7838}, - {2707, 2707}, - {2703, 2703, 9: 5684, 551: 5665, 922: 7840}, - {2712, 2712}, - {2713, 2713}, + {52: 7864}, + {554: 7865}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7866}, + {555: 7867}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 4151, 3149, 3150, 3148, 846: 4152, 928: 7868}, // 4915 - {2703, 2703, 9: 5684, 551: 5665, 922: 7843}, - {2715, 2715}, - {2703, 2703, 551: 5665, 922: 7845}, - {2716, 2716}, - {627: 7851}, + {9: 4154, 52: 7869}, + {2572, 2572}, + {2684, 2684}, + {2707, 2707}, + {2713, 2713, 556: 7874, 753: 7873}, // 4920 - {578: 7849}, - {627: 2718}, - {565: 7850, 627: 2719}, - {627: 2717}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7852}, + {222: 7881, 793: 7880}, + {393: 7876, 402: 7875}, + {62: 7879}, + {401: 7877}, + {222: 7878}, // 4925 - {565: 6196, 647: 1142, 729: 1142, 741: 1142, 990: 7853}, - {647: 7856, 729: 7855, 741: 7857, 1302: 7854}, - {2724, 2724}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7864, 3121, 3122, 3120}, - {550: 3983, 962: 7859}, + {2710, 2710}, + {2711, 2711}, + {2712, 2712}, + {2709, 2709, 755: 4819, 1023: 7882}, + {2708, 2708}, // 4930 - {550: 3983, 962: 6778, 1118: 7858}, - {2721, 2721, 9: 6779}, - {586: 7860}, - {550: 3983, 962: 7861}, - {120: 7862}, + {2715, 2715}, + {2714, 2714}, + {333: 7887, 632: 7886}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7899, 909: 7898}, + {632: 7888}, // 4935 - {576: 3107, 819: 4639, 851: 7863}, - {2722, 2722}, - {647: 7856, 741: 7857, 1302: 7865}, - {2723, 2723}, - {784: 7884, 7885}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7889}, + {570: 7891, 734: 7890}, + {1148, 1148, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1148, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 556: 1148, 720: 5755, 796: 5754, 3149, 3150, 3148, 992: 7896}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 7892}, + {9: 5452, 734: 7893}, // 4940 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7878, 904: 7877}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 6123, 3121, 3122, 3120, 927: 7869}, - {2727, 2727, 732: 7872, 784: 7870, 7871, 1200: 7873}, - {552: 7876}, - {576: 3107, 819: 3956, 834: 7875}, + {1148, 1148, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1148, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 556: 1148, 720: 5755, 796: 5754, 3149, 3150, 3148, 992: 7894}, + {2729, 2729, 9: 5757, 556: 5738, 927: 7895}, + {2737, 2737}, + {2729, 2729, 9: 5757, 556: 5738, 927: 7897}, + {2740, 2740}, // 4945 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7874, 3121, 3122, 3120}, - {2725, 2725}, - {2726, 2726}, - {2729, 2729}, - {2732, 2732}, + {2732, 2732, 9: 4055, 234: 7919, 556: 2732, 740: 7918, 1131: 7929}, + {1293, 1293, 9: 1293, 144: 7904, 234: 1293, 556: 1293, 570: 7901, 734: 7900, 736: 7902, 740: 1293, 751: 7903}, + {1148, 1148, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1148, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 556: 1148, 720: 5755, 796: 5754, 3149, 3150, 3148, 992: 7927}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5451, 3149, 3150, 3148, 885: 7914}, + {330: 7910}, // 4950 - {9: 4021, 784: 7880, 7881}, - {2727, 2727, 9: 1273, 732: 7872, 784: 1273, 1273, 1200: 7879}, - {2728, 2728}, - {552: 7883}, - {576: 3107, 819: 3956, 834: 7882}, + {330: 7907}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6716, 3149, 3150, 3148, 1010: 7905}, + {2729, 2729, 9: 6718, 556: 5738, 927: 7906}, + {2734, 2734}, + {554: 7908}, // 4955 - {2730, 2730}, - {2733, 2733}, - {552: 7887}, - {576: 3107, 819: 3956, 834: 7886}, - {2731, 2731}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6716, 3149, 3150, 3148, 1010: 7909}, + {2735, 2735, 9: 6718}, + {554: 7911}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6716, 3149, 3150, 3148, 1010: 7912}, + {2729, 2729, 9: 6718, 556: 5738, 927: 7913}, // 4960 - {2734, 2734}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 741: 7889, 791: 4017, 3121, 3122, 3120, 824: 7890}, - {225: 7892}, - {2736, 2736, 576: 3107, 819: 4639, 851: 7891}, - {2735, 2735}, + {2736, 2736}, + {2732, 2732, 9: 5452, 144: 7917, 234: 7919, 556: 2732, 734: 7916, 740: 7918, 1131: 7915}, + {2729, 2729, 556: 5738, 927: 7926}, + {1148, 1148, 3400, 3562, 3364, 3239, 3280, 3402, 3163, 1148, 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 556: 1148, 720: 5755, 796: 5754, 3149, 3150, 3148, 992: 7924}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6716, 3149, 3150, 3148, 1010: 7922}, // 4965 - {576: 3107, 819: 4639, 851: 7893}, - {2737, 2737}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7905, 1321: 7904, 1512: 7903}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 7898, 1327: 7897, 1517: 7896}, - {2741, 2741, 9: 7901}, + {144: 7921}, + {144: 7920}, + {2730, 2730, 556: 2730}, + {2731, 2731, 556: 2731}, + {2729, 2729, 9: 6718, 556: 5738, 927: 7923}, // 4970 - {2740, 2740, 9: 2740}, - {732: 7899}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 7900}, - {2738, 2738, 9: 2738}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 7898, 1327: 7902}, + {2733, 2733}, + {2729, 2729, 9: 5757, 556: 5738, 927: 7925}, + {2738, 2738}, + {2739, 2739}, + {2729, 2729, 9: 5757, 556: 5738, 927: 7928}, // 4975 - {2739, 2739, 9: 2739}, - {2745, 2745, 9: 7908}, - {2744, 2744, 9: 2744}, - {732: 7906}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7907}, + {2741, 2741}, + {2729, 2729, 556: 5738, 927: 7930}, + {2742, 2742}, + {632: 7936}, + {583: 7934}, // 4980 - {2742, 2742, 9: 2742}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7905, 1321: 7909}, - {2743, 2743, 9: 2743}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 2505, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4830, 557: 2505, 572: 2505, 575: 7745, 728: 2505, 791: 6123, 3121, 3122, 3120, 885: 7744, 911: 7743, 927: 7959, 980: 7747, 1059: 7960}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 552: 2165, 598: 5054, 650: 2165, 879: 7945}, + {632: 2744}, + {570: 7935, 632: 2745}, + {632: 2743}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7937}, + {570: 6269, 653: 1162, 734: 1162, 746: 1162, 996: 7938}, // 4985 - {348: 7939, 1407: 7938}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 7936, 3121, 3122, 3120}, - {591: 7932}, - {228: 7928}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 580: 2165, 598: 5054, 879: 7917}, + {653: 7941, 734: 7940, 746: 7942, 1308: 7939}, + {2750, 2750}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7949, 3149, 3150, 3148}, + {555: 4017, 967: 7944}, + {555: 4017, 967: 6862, 1123: 7943}, // 4990 - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 580: 4018, 791: 4017, 3121, 3122, 3120, 824: 7918}, - {97: 7485, 99: 7482, 102: 7488, 106: 7489, 112: 7490, 7483, 115: 7481, 7491, 7487, 7484, 7922, 740: 7486, 1037: 7921, 1133: 7920, 1340: 7919}, - {155, 155, 97: 7485, 99: 7482, 102: 7488, 106: 7489, 112: 7490, 7483, 115: 7481, 7491, 7487, 7484, 7922, 740: 7486, 1037: 7921, 1133: 7927}, - {154, 154, 97: 154, 99: 154, 102: 154, 106: 154, 112: 154, 154, 115: 154, 154, 154, 154, 154, 740: 154}, - {152, 152, 97: 152, 99: 152, 102: 152, 106: 152, 112: 152, 152, 115: 152, 152, 152, 152, 152, 740: 152}, + {2747, 2747, 9: 6863}, + {591: 7945}, + {555: 4017, 967: 7946}, + {120: 7947}, + {580: 3135, 824: 4676, 855: 7948}, // 4995 - {151, 151, 97: 151, 99: 151, 102: 151, 106: 151, 112: 151, 151, 115: 151, 151, 151, 151, 151, 551: 7924, 562: 2368, 2368, 573: 4689, 576: 2368, 740: 151, 822: 7923}, - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7926}, - {562: 4642, 4643, 576: 3107, 819: 4639, 851: 4641, 933: 7925}, - {149, 149, 97: 149, 99: 149, 102: 149, 106: 149, 112: 149, 149, 115: 149, 149, 149, 149, 149, 740: 149}, - {150, 150, 97: 150, 99: 150, 102: 150, 106: 150, 112: 150, 150, 115: 150, 150, 150, 150, 150, 740: 150}, + {2748, 2748}, + {653: 7941, 746: 7942, 1308: 7950}, + {2749, 2749}, + {789: 7969, 7970}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7963, 909: 7962}, // 5000 - {153, 153, 97: 153, 99: 153, 102: 153, 106: 153, 112: 153, 153, 115: 153, 153, 153, 153, 153, 740: 153}, - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 598: 5054, 879: 7929}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 791: 5654, 3121, 3122, 3120, 1010: 7930}, - {120: 7665, 131: 7670, 7672, 7666, 7671, 7674, 7668, 7664, 7669, 7675, 7673, 7667, 1000: 7662, 1261: 7931}, - {181, 181, 9: 7701, 120: 7665, 131: 7670, 7672, 7666, 7671, 7674, 7668, 7664, 7669, 7675, 7673, 7667, 1000: 7700}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 6196, 3149, 3150, 3148, 932: 7954}, + {2753, 2753, 737: 7957, 789: 7955, 7956, 1206: 7958}, + {557: 7961}, + {580: 3135, 824: 3990, 839: 7960}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 7959, 3149, 3150, 3148}, // 5005 - {2: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 10: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 53: 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 554: 2165, 598: 5054, 879: 7933}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 3801, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 554: 4699, 791: 4698, 3121, 3122, 3120, 947: 7934}, - {121: 7521, 7519, 7518, 7520, 7517, 1001: 7515, 1281: 7935}, - {184, 184, 9: 7579, 121: 7521, 7519, 7518, 7520, 7517, 1001: 7578}, - {18: 4787, 885: 7937}, + {2751, 2751}, + {2752, 2752}, + {2755, 2755}, + {2758, 2758}, + {9: 4055, 789: 7965, 7966}, // 5010 - {431, 431}, - {432, 432}, - {459: 7940}, - {430, 430, 97: 7941}, - {98: 7942}, + {2753, 2753, 9: 1293, 737: 7957, 789: 1293, 1293, 1206: 7964}, + {2754, 2754}, + {557: 7968}, + {580: 3135, 824: 3990, 839: 7967}, + {2756, 2756}, // 5015 - {549: 7943}, - {272: 7944}, - {429, 429}, - {2: 3372, 3534, 3336, 3211, 3252, 3374, 3135, 10: 3183, 3136, 3275, 3393, 3386, 3793, 3788, 3255, 3575, 3257, 3229, 3169, 3172, 3161, 3194, 3259, 3260, 3368, 3254, 3394, 3523, 3529, 3475, 3134, 3253, 3256, 3267, 3201, 3205, 3263, 3378, 3219, 3303, 3132, 3133, 3302, 3376, 3131, 3391, 3476, 3477, 3212, 53: 3127, 3348, 3478, 3479, 3785, 3196, 3463, 3218, 3221, 3445, 3442, 3497, 3498, 3499, 3434, 3446, 3449, 3450, 3447, 3451, 3452, 3448, 3501, 3500, 3651, 3646, 3495, 3441, 3496, 3453, 3436, 3437, 3650, 3440, 3443, 3648, 3444, 3454, 3649, 3494, 3493, 3190, 3140, 3155, 3289, 3215, 3222, 3797, 3123, 3421, 3406, 3471, 3404, 3420, 3472, 3224, 3405, 3333, 3149, 3422, 3417, 3170, 3416, 3423, 3418, 3419, 3213, 3538, 3661, 3644, 3640, 3660, 3639, 3576, 3227, 3798, 3297, 3403, 3628, 3633, 3620, 3632, 3634, 3623, 3629, 3630, 3631, 3635, 3627, 3658, 3152, 3652, 3388, 3653, 3654, 3292, 3790, 3556, 3810, 3792, 3808, 3809, 3807, 3803, 3395, 3396, 3397, 3398, 3399, 3400, 3402, 3799, 3786, 3145, 3223, 3228, 3392, 3181, 3412, 3559, 3314, 3318, 3342, 3344, 3269, 3322, 3323, 3324, 3325, 3313, 3154, 3343, 3474, 3163, 3789, 3561, 3184, 3585, 3662, 3795, 3664, 3491, 3796, 3294, 3143, 3160, 3334, 3191, 3250, 3271, 3214, 3230, 3241, 3432, 3141, 3142, 3171, 3174, 3186, 3195, 3261, 3262, 3407, 3199, 3274, 3316, 3468, 3231, 3532, 3238, 3293, 3384, 3515, 3608, 3200, 3456, 3579, 3409, 3330, 7946, 3480, 3514, 3410, 3577, 3204, 3522, 3239, 3457, 3144, 3656, 3482, 3655, 3791, 3564, 3268, 3197, 3352, 3811, 3464, 3465, 3288, 3466, 3383, 3519, 3424, 3217, 3321, 3657, 3663, 3381, 3278, 3128, 3506, 3156, 3511, 3283, 3166, 3168, 3285, 3175, 3612, 3185, 3188, 3483, 3366, 3435, 3244, 3462, 3312, 3281, 3341, 3387, 3270, 3659, 3521, 3226, 3531, 3382, 3502, 3503, 3139, 3290, 3353, 3645, 3549, 3504, 3485, 3146, 3507, 3150, 3458, 3508, 3806, 3157, 3355, 3551, 3510, 3350, 3165, 3512, 3364, 3390, 3375, 3557, 3541, 3167, 3385, 3179, 3415, 3615, 3189, 3192, 3641, 3365, 3413, 3176, 3349, 3280, 3565, 3408, 3566, 3359, 3411, 3469, 3643, 3642, 3647, 3295, 3812, 3299, 3357, 3467, 3208, 3209, 3210, 3329, 3438, 3331, 3542, 3580, 3518, 3379, 3380, 3319, 3220, 3328, 3361, 3524, 3130, 3590, 3360, 3636, 3597, 3598, 3599, 3600, 3602, 3601, 3603, 3604, 3605, 3533, 3234, 3362, 3625, 3624, 3242, 3414, 3431, 3137, 3126, 3433, 3459, 3129, 3505, 3340, 3147, 3148, 3327, 3470, 3802, 3509, 3272, 3153, 3158, 3159, 3513, 3284, 3558, 3286, 3173, 3296, 3178, 3347, 3609, 3180, 3358, 3484, 3291, 3265, 3530, 3567, 3335, 3354, 3401, 3277, 3367, 3817, 3258, 3346, 3298, 3489, 3488, 3490, 3535, 3610, 3202, 3370, 3373, 3461, 3536, 3794, 3473, 3308, 3309, 3315, 3572, 3539, 3573, 3439, 3481, 3216, 3377, 3339, 3276, 3520, 3371, 3525, 3526, 3527, 3528, 3356, 3460, 3369, 3594, 3337, 3618, 3606, 3487, 3492, 3235, 3266, 3273, 3338, 3240, 3537, 3486, 3345, 3815, 3124, 3247, 3544, 3545, 3787, 3546, 3547, 3548, 3611, 3550, 3553, 3552, 3554, 3555, 3177, 3332, 3301, 3560, 3182, 3619, 3816, 3563, 3389, 3637, 3638, 3822, 3821, 3813, 3621, 3622, 3570, 3426, 3425, 3351, 3569, 3198, 3516, 3517, 3571, 3428, 3427, 3578, 3307, 3206, 3207, 3455, 3326, 3540, 3804, 3805, 3574, 3814, 3320, 3248, 3363, 3279, 3282, 3613, 3586, 3587, 3588, 3589, 3581, 3614, 3818, 3583, 3584, 3300, 3819, 3820, 3607, 3237, 3591, 3592, 3593, 3626, 3800, 552: 3826, 650: 6001, 791: 3827, 3121, 3122, 3120, 825: 6000, 874: 6018, 1016: 6019, 1045: 7947}, - {2003, 2003, 6: 2003, 9: 2003, 15: 2003, 51: 2003, 53: 2003, 2003, 2003, 2003, 201: 2003, 550: 7953, 2003, 646: 2003, 744: 2003, 2003}, + {2759, 2759}, + {557: 7972}, + {580: 3135, 824: 3990, 839: 7971}, + {2757, 2757}, + {2760, 2760}, // 5020 - {417, 417, 6: 417, 9: 6021, 15: 417, 51: 417, 53: 417, 417, 417, 417, 551: 417, 744: 6065, 1098: 6064, 7948}, - {425, 425, 6: 425, 15: 425, 51: 425, 53: 425, 425, 425, 425, 551: 7604, 1155: 7949}, - {398, 398, 6: 398, 15: 7620, 51: 398, 53: 398, 7619, 7621, 7622, 1090: 7618, 1259: 7617, 7950}, - {403, 403, 6: 7647, 51: 403, 53: 7648, 1152: 7951}, - {400, 400, 51: 7652, 1280: 7952}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 746: 7974, 796: 4051, 3149, 3150, 3148, 829: 7975}, + {230: 7977}, + {2762, 2762, 580: 3135, 824: 4676, 855: 7976}, + {2761, 2761}, + {580: 3135, 824: 4676, 855: 7978}, // 5025 - {434, 434}, - {52: 7954}, - {201: 7955}, - {741: 7956}, - {552: 6034, 1019: 7957}, + {2763, 2763}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7990, 1327: 7989, 1522: 7988}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 7983, 1336: 7982, 1529: 7981}, + {2767, 2767, 9: 7986}, + {2766, 2766, 9: 2766}, // 5030 - {433, 433}, - {16: 1675, 18: 1675, 21: 1675, 228: 5647, 554: 1675, 557: 1675, 572: 1675, 575: 1675, 728: 1675}, - {16: 2505, 18: 2505, 21: 2505, 554: 4830, 557: 2505, 572: 2505, 575: 7745, 728: 2505, 885: 7744, 911: 7743, 980: 7747, 1059: 7961}, - {2526, 2526, 16: 2505, 18: 2505, 21: 2505, 554: 4830, 557: 2505, 572: 2505, 575: 7745, 728: 2505, 885: 7744, 911: 7743, 980: 7748}, - {2527, 2527, 16: 2505, 18: 2505, 21: 2505, 554: 4830, 557: 2505, 572: 2505, 575: 7745, 728: 2505, 885: 7744, 911: 7743, 980: 7748}, + {737: 7984}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 7985}, + {2764, 2764, 9: 2764}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 7983, 1336: 7987}, + {2765, 2765, 9: 2765}, // 5035 - {2366, 2366, 3: 2934, 59: 2957, 95: 2936, 2939, 98: 2969, 2937, 3086, 119: 2971, 126: 3101, 145: 3094, 173: 3103, 206: 2954, 218: 2952, 237: 2965, 265: 2960, 269: 2942, 274: 2989, 280: 2956, 283: 2932, 291: 2988, 3097, 294: 2938, 299: 3102, 311: 2968, 320: 2966, 322: 2933, 324: 2972, 344: 2958, 346: 3090, 349: 2961, 357: 2970, 362: 2955, 375: 2947, 550: 2980, 2979, 567: 2978, 571: 2964, 575: 2987, 582: 3096, 595: 3089, 597: 2950, 602: 2948, 606: 2963, 627: 2977, 668: 2973, 731: 3088, 733: 2935, 743: 2930, 746: 2941, 762: 2940, 786: 3098, 2931, 795: 2984, 823: 2943, 826: 2986, 2974, 2975, 2976, 2985, 2983, 2982, 2981, 835: 2946, 3065, 3064, 842: 3087, 2944, 3047, 3058, 3074, 2949, 855: 2945, 859: 3006, 865: 3000, 3004, 3055, 3066, 876: 3008, 2951, 881: 3073, 3075, 917: 2953, 925: 2993, 928: 3046, 3093, 958: 3100, 964: 2959, 970: 3001, 983: 3091, 989: 3049, 992: 3060, 994: 3063, 1057: 3012, 1115: 3095, 1124: 3020, 2991, 1127: 2992, 2995, 1130: 2998, 2996, 2999, 1134: 2997, 1136: 2994, 1138: 3002, 3003, 1141: 3009, 2962, 3045, 3084, 1157: 3016, 3010, 3011, 3017, 3018, 3019, 3015, 3021, 3022, 1167: 3014, 3013, 1170: 3005, 2967, 1173: 3023, 3037, 3024, 3025, 3028, 3027, 3033, 3032, 3034, 3029, 3035, 3036, 3026, 3031, 3030, 1190: 2990, 1193: 3007, 1198: 3041, 3039, 1201: 3040, 3038, 1206: 3043, 3044, 3042, 1212: 3081, 1220: 3099, 3048, 1230: 3050, 3051, 3077, 1235: 3082, 1245: 3083, 1262: 3053, 3054, 1273: 3080, 3059, 1277: 3056, 3057, 1284: 3079, 3092, 3062, 3061, 1293: 3067, 1295: 3069, 3068, 1298: 3071, 1300: 3078, 1303: 3070, 1309: 7963, 1323: 3072, 3052, 3076}, - {648, 648}, + {2771, 2771, 9: 7993}, + {2770, 2770, 9: 2770}, + {737: 7991}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7992}, + {2768, 2768, 9: 2768}, + // 5040 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 7990, 1327: 7994}, + {2769, 2769, 9: 2769}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 2531, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4903, 562: 2531, 578: 2531, 581: 7830, 733: 2531, 796: 6196, 3149, 3150, 3148, 890: 7829, 916: 7828, 932: 8044, 986: 7832, 1065: 8045}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 557: 2191, 605: 5127, 655: 2191, 884: 8030}, + {352: 8024, 1417: 8023}, + // 5045 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 8021, 3149, 3150, 3148}, + {596: 8017}, + {233: 8013}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 585: 2191, 605: 5127, 884: 8002}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 585: 4052, 796: 4051, 3149, 3150, 3148, 829: 8003}, + // 5050 + {97: 7570, 99: 7567, 102: 7573, 106: 7574, 112: 7575, 7568, 115: 7566, 7576, 7572, 7569, 8007, 745: 7571, 1042: 8006, 1139: 8005, 1350: 8004}, + {170, 170, 97: 7570, 99: 7567, 102: 7573, 106: 7574, 112: 7575, 7568, 115: 7566, 7576, 7572, 7569, 8007, 745: 7571, 1042: 8006, 1139: 8012}, + {169, 169, 97: 169, 99: 169, 102: 169, 106: 169, 112: 169, 169, 115: 169, 169, 169, 169, 169, 745: 169}, + {167, 167, 97: 167, 99: 167, 102: 167, 106: 167, 112: 167, 167, 115: 167, 167, 167, 167, 167, 745: 167}, + {166, 166, 97: 166, 99: 166, 102: 166, 106: 166, 112: 166, 166, 115: 166, 166, 166, 166, 166, 556: 8009, 567: 2394, 2394, 577: 4726, 580: 2394, 745: 166, 825: 8008}, + // 5055 + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 8011}, + {567: 4679, 4680, 580: 3135, 824: 4676, 855: 4678, 939: 8010}, + {164, 164, 97: 164, 99: 164, 102: 164, 106: 164, 112: 164, 164, 115: 164, 164, 164, 164, 164, 745: 164}, + {165, 165, 97: 165, 99: 165, 102: 165, 106: 165, 112: 165, 165, 115: 165, 165, 165, 165, 165, 745: 165}, + {168, 168, 97: 168, 99: 168, 102: 168, 106: 168, 112: 168, 168, 115: 168, 168, 168, 168, 168, 745: 168}, + // 5060 + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 605: 5127, 884: 8014}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 796: 5727, 3149, 3150, 3148, 1016: 8015}, + {120: 7750, 132: 7755, 7757, 7751, 7756, 7759, 7753, 7749, 7754, 7760, 7758, 7752, 1006: 7747, 1267: 8016}, + {196, 196, 9: 7786, 120: 7750, 132: 7755, 7757, 7751, 7756, 7759, 7753, 7749, 7754, 7760, 7758, 7752, 1006: 7785}, + {2: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 10: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 53: 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 559: 2191, 605: 5127, 884: 8018}, + // 5065 + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 3834, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 559: 4736, 796: 4735, 3149, 3150, 3148, 952: 8019}, + {121: 7606, 7604, 7603, 7605, 7602, 1007: 7600, 1287: 8020}, + {199, 199, 9: 7664, 121: 7606, 7604, 7603, 7605, 7602, 1007: 7663}, + {18: 4860, 890: 8022}, + {446, 446}, + // 5070 + {447, 447}, + {464: 8025}, + {445, 445, 97: 8026}, + {98: 8027}, + {554: 8028}, + // 5075 + {277: 8029}, + {444, 444}, + {2: 3400, 3562, 3364, 3239, 3280, 3402, 3163, 10: 3211, 3164, 3303, 3421, 3414, 3826, 3821, 3283, 3605, 3285, 3257, 3197, 3200, 3189, 3222, 3287, 3288, 3396, 3282, 3422, 3551, 3557, 3503, 3162, 3281, 3284, 3295, 3229, 3233, 3291, 3406, 3247, 3331, 3160, 3161, 3330, 3404, 3159, 3419, 3504, 3505, 3240, 53: 3155, 3818, 3376, 3506, 3507, 3528, 3224, 3491, 3246, 3249, 3473, 3470, 3525, 3526, 3527, 3462, 3474, 3477, 3478, 3475, 3479, 3480, 3476, 3529, 3684, 3679, 3523, 3469, 3524, 3481, 3464, 3465, 3683, 3468, 3471, 3681, 3472, 3482, 3682, 3522, 3521, 3218, 3168, 3183, 3317, 3243, 3250, 3830, 3151, 3449, 3434, 3499, 3432, 3448, 3500, 3252, 3433, 3361, 3177, 3450, 3445, 3198, 3444, 3451, 3446, 3447, 3241, 3566, 3694, 3677, 3673, 3693, 3672, 3606, 3255, 3831, 3325, 3588, 3431, 3661, 3666, 3653, 3665, 3667, 3656, 3662, 3663, 3664, 3668, 3660, 3691, 3180, 3685, 3416, 3686, 3687, 8031, 3320, 3823, 3585, 3843, 3825, 3841, 3842, 3840, 3836, 3423, 3424, 3425, 3426, 3427, 3428, 3430, 3832, 3819, 3173, 3251, 3256, 3420, 3209, 3610, 3612, 3440, 3342, 3346, 3370, 3849, 3372, 3297, 3350, 3351, 3352, 3353, 3341, 3182, 3371, 3502, 3191, 3822, 3590, 3212, 3617, 3695, 3828, 3697, 3519, 3829, 3322, 3171, 3188, 3362, 3219, 3278, 3542, 3299, 3242, 3258, 3269, 3460, 3169, 3170, 3199, 3202, 3214, 3223, 3289, 3290, 3435, 3227, 3302, 3344, 3496, 3259, 3560, 3266, 3321, 3412, 3543, 3641, 3228, 3484, 3609, 3437, 3358, 3508, 3438, 3607, 3232, 3550, 3267, 3485, 3172, 3689, 3539, 3510, 3688, 3824, 3593, 3296, 3225, 3380, 3844, 3492, 3493, 3316, 3494, 3411, 3547, 3452, 3245, 3349, 3690, 3639, 3696, 3409, 3306, 3156, 3534, 3174, 3184, 3311, 3194, 3196, 3313, 3203, 3645, 3213, 3216, 3511, 3394, 3463, 3272, 3490, 3340, 3309, 3369, 3415, 3298, 3692, 3549, 3254, 3559, 3410, 3530, 3531, 3167, 3318, 3381, 3678, 3577, 3532, 3513, 3535, 3178, 3486, 3536, 3839, 3185, 3383, 3580, 3538, 3378, 3193, 3540, 3392, 3418, 3403, 3586, 3569, 3195, 3413, 3207, 3443, 3648, 3217, 3220, 3674, 3393, 3441, 3204, 3377, 3308, 3594, 3436, 3595, 3387, 3439, 3497, 3676, 3675, 3680, 3323, 3845, 3327, 3385, 3495, 3236, 3237, 3238, 3357, 3466, 3359, 3570, 3611, 3546, 3407, 3408, 3347, 3248, 3356, 3389, 3552, 3158, 3622, 3388, 3669, 3629, 3630, 3631, 3632, 3634, 3633, 3635, 3636, 3637, 3561, 3262, 3390, 3658, 3657, 3270, 3442, 3459, 3165, 3154, 3461, 3487, 3157, 3533, 3368, 3175, 3176, 3355, 3498, 3835, 3537, 3300, 3181, 3186, 3187, 3541, 3312, 3587, 3314, 3201, 3324, 3206, 3375, 3642, 3208, 3386, 3512, 3319, 3293, 3558, 3596, 3363, 3382, 3429, 3305, 3395, 3851, 3286, 3374, 3326, 3517, 3516, 3518, 3563, 3643, 3230, 3398, 3401, 3489, 3564, 3827, 3501, 3336, 3337, 3343, 3601, 3567, 3602, 3603, 3467, 3509, 3244, 3405, 3367, 3304, 3548, 3399, 3553, 3554, 3555, 3556, 3384, 3488, 3397, 3626, 3365, 3651, 3638, 3515, 3520, 3263, 3294, 3301, 3366, 3268, 3565, 3514, 3373, 3848, 3152, 3275, 3572, 3573, 3820, 3574, 3575, 3576, 3644, 3578, 3582, 3581, 3583, 3584, 3205, 3360, 3329, 3589, 3210, 3652, 3850, 3592, 3417, 3670, 3671, 3856, 3855, 3846, 3654, 3655, 3599, 3454, 3453, 3379, 3598, 3226, 3544, 3545, 3600, 3456, 3455, 3608, 3335, 3234, 3235, 3483, 3354, 3568, 3837, 3838, 3604, 3847, 3348, 3276, 3391, 3307, 3310, 3646, 3618, 3619, 3620, 3621, 3613, 3647, 3852, 3615, 3616, 3328, 3853, 3854, 3640, 3265, 3623, 3624, 3625, 3659, 3833, 557: 3860, 655: 6074, 796: 3861, 3149, 3150, 3148, 830: 6073, 880: 6091, 1022: 6092, 1051: 8032}, + {2029, 2029, 6: 2029, 9: 2029, 15: 2029, 51: 2029, 53: 2029, 55: 2029, 2029, 2029, 205: 2029, 555: 8038, 2029, 654: 2029, 749: 2029, 2029}, + {432, 432, 6: 432, 9: 6094, 15: 432, 51: 432, 53: 432, 55: 432, 432, 432, 556: 432, 749: 6138, 1104: 6137, 8033}, + // 5080 + {440, 440, 6: 440, 15: 440, 51: 440, 53: 440, 55: 440, 440, 440, 556: 7689, 1161: 8034}, + {413, 413, 6: 413, 15: 7705, 51: 413, 53: 413, 55: 7704, 7706, 7707, 1096: 7703, 1265: 7702, 8035}, + {418, 418, 6: 7732, 51: 418, 53: 7733, 1158: 8036}, + {415, 415, 51: 7737, 1286: 8037}, + {449, 449}, + // 5085 + {52: 8039}, + {205: 8040}, + {746: 8041}, + {557: 6107, 1025: 8042}, + {448, 448}, + // 5090 + {16: 1699, 18: 1699, 21: 1699, 233: 5720, 559: 1699, 562: 1699, 578: 1699, 581: 1699, 733: 1699}, + {16: 2531, 18: 2531, 21: 2531, 559: 4903, 562: 2531, 578: 2531, 581: 7830, 733: 2531, 890: 7829, 916: 7828, 986: 7832, 1065: 8046}, + {2552, 2552, 16: 2531, 18: 2531, 21: 2531, 559: 4903, 562: 2531, 578: 2531, 581: 7830, 733: 2531, 890: 7829, 916: 7828, 986: 7833}, + {2553, 2553, 16: 2531, 18: 2531, 21: 2531, 559: 4903, 562: 2531, 578: 2531, 581: 7830, 733: 2531, 890: 7829, 916: 7828, 986: 7833}, + {2392, 2392, 3: 2960, 60: 2983, 95: 2962, 2965, 98: 2995, 2963, 3113, 119: 2997, 126: 3128, 146: 3121, 176: 3131, 211: 2980, 223: 2978, 240: 2991, 265: 3129, 270: 2986, 274: 2968, 279: 3015, 285: 2982, 288: 2958, 296: 3014, 3124, 299: 2964, 304: 3130, 315: 2994, 324: 2992, 326: 2959, 328: 2998, 348: 2984, 350: 3117, 353: 2987, 361: 2996, 366: 2981, 379: 2973, 555: 3006, 3005, 572: 3004, 576: 2990, 581: 3013, 587: 3123, 600: 3116, 602: 2976, 607: 2974, 611: 2989, 632: 3003, 680: 2999, 736: 3115, 738: 2961, 747: 2956, 751: 2967, 767: 2966, 791: 3125, 2957, 800: 3010, 828: 2969, 831: 3012, 3000, 3001, 3002, 3011, 3009, 3008, 3007, 840: 2972, 3091, 3090, 847: 3114, 2970, 3073, 3084, 3100, 2975, 860: 2971, 864: 3032, 870: 3026, 3030, 3081, 3092, 882: 3034, 2977, 886: 3099, 3101, 922: 2979, 930: 3019, 933: 3072, 3120, 963: 3127, 969: 2985, 975: 3027, 989: 3118, 995: 3075, 998: 3086, 1000: 3089, 1063: 3038, 1120: 3122, 1129: 3046, 3017, 1132: 3018, 3021, 1136: 3024, 3022, 3025, 1140: 3023, 1142: 3020, 1144: 3028, 3029, 1147: 3035, 2988, 3071, 3110, 1163: 3042, 3036, 3037, 3043, 3044, 3045, 3041, 3047, 3048, 1173: 3040, 3039, 1176: 3031, 2993, 1179: 3049, 3063, 3050, 3051, 3054, 3053, 3059, 3058, 3060, 3055, 3061, 3062, 3052, 3057, 3056, 1196: 3016, 1199: 3033, 1204: 3067, 3065, 1207: 3066, 3064, 1212: 3069, 3070, 3068, 1218: 3107, 1226: 3126, 3074, 1236: 3076, 3077, 3103, 1241: 3108, 1251: 3109, 1268: 3079, 3080, 1279: 3106, 3085, 1283: 3082, 3083, 1290: 3105, 3119, 3088, 3087, 1299: 3093, 1301: 3095, 3094, 1304: 3097, 1306: 3104, 1309: 3096, 1315: 8048, 1329: 3098, 1332: 3111, 3078, 3102}, + // 5095 + {663, 663}, } ) @@ -13106,7 +13232,7 @@ func yylex1(yylex yyLexer, lval *yySymType) (n int) { } func yyParse(yylex yyLexer, parser *Parser) int { - const yyError = 1547 + const yyError = 1559 yyEx, _ := yylex.(yyLexerEx) var yyn int @@ -17559,13 +17685,13 @@ yynewstate: { parser.yyVAL.item = ast.IndexVisibilityInvisible } - case 1342: + case 1347: { parser.yyVAL.statement = &ast.CallStmt{ Procedure: yyS[yypt-0].expr.(*ast.FuncCallExpr), } } - case 1343: + case 1348: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17573,7 +17699,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1344: + case 1349: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17582,7 +17708,7 @@ yynewstate: Args: []ast.ExprNode{}, } } - case 1345: + case 1350: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17590,7 +17716,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1346: + case 1351: { parser.yyVAL.expr = &ast.FuncCallExpr{ Tp: ast.FuncCallExprTypeGeneric, @@ -17599,7 +17725,7 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1347: + case 1352: { x := yyS[yypt-1].item.(*ast.InsertStmt) x.Priority = yyS[yypt-6].item.(mysql.PriorityEnum) @@ -17616,26 +17742,26 @@ yynewstate: x.PartitionNames = yyS[yypt-2].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1350: + case 1355: { parser.yyVAL.item = &ast.InsertStmt{ Columns: yyS[yypt-3].item.([]*ast.ColumnName), Lists: yyS[yypt-0].item.([][]ast.ExprNode), } } - case 1351: + case 1356: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1352: + case 1357: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1353: + case 1358: { parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1354: + case 1359: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17648,23 +17774,23 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: sel} } - case 1355: + case 1360: { parser.yyVAL.item = &ast.InsertStmt{Lists: yyS[yypt-0].item.([][]ast.ExprNode)} } - case 1356: + case 1361: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1357: + case 1362: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1358: + case 1363: { parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)} } - case 1359: + case 1364: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17677,39 +17803,39 @@ yynewstate: } parser.yyVAL.item = &ast.InsertStmt{Select: sel} } - case 1360: + case 1365: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.InsertStmt) } - case 1363: + case 1368: { parser.yyVAL.item = [][]ast.ExprNode{yyS[yypt-0].item.([]ast.ExprNode)} } - case 1364: + case 1369: { parser.yyVAL.item = append(yyS[yypt-2].item.([][]ast.ExprNode), yyS[yypt-0].item.([]ast.ExprNode)) } - case 1365: + case 1370: { parser.yyVAL.item = yyS[yypt-1].item } - case 1366: + case 1371: { parser.yyVAL.item = []ast.ExprNode{} } - case 1368: + case 1373: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1369: + case 1374: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1371: + case 1376: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1372: + case 1377: { parser.yyVAL.item = &ast.InsertStmt{ Columns: []*ast.ColumnName{yyS[yypt-2].item.(*ast.ColumnName)}, @@ -17717,22 +17843,22 @@ yynewstate: Setlist: true, } } - case 1373: + case 1378: { 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 1374: + case 1379: { parser.yyVAL.item = nil } - case 1375: + case 1380: { parser.yyVAL.item = yyS[yypt-0].item } - case 1376: + case 1381: { x := yyS[yypt-0].item.(*ast.InsertStmt) if yyS[yypt-5].item != nil { @@ -17745,31 +17871,31 @@ yynewstate: x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) parser.yyVAL.statement = x } - case 1377: + case 1382: { parser.yyVAL.expr = ast.NewValueExpr(false, parser.charset, parser.collation) } - case 1378: + case 1383: { parser.yyVAL.expr = ast.NewValueExpr(nil, parser.charset, parser.collation) } - case 1379: + case 1384: { parser.yyVAL.expr = ast.NewValueExpr(true, parser.charset, parser.collation) } - case 1380: + case 1385: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1381: + case 1386: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1382: + case 1387: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1384: + case 1389: { // See https://dev.mysql.com/doc/refman/5.7/en/charset-literal.html co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) @@ -17787,15 +17913,15 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1385: + case 1390: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1386: + case 1391: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1387: + case 1392: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -17812,7 +17938,7 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1388: + case 1393: { co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident) if err != nil { @@ -17829,12 +17955,12 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1389: + case 1394: { expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation) parser.yyVAL.expr = expr } - case 1390: + case 1395: { valExpr := yyS[yypt-1].expr.(ast.ValueExpr) strLit := valExpr.GetString() @@ -17847,31 +17973,31 @@ yynewstate: } parser.yyVAL.expr = expr } - case 1391: + case 1396: { parser.yyVAL.item = []*ast.AlterOrderItem{yyS[yypt-0].item.(*ast.AlterOrderItem)} } - case 1392: + case 1397: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterOrderItem), yyS[yypt-0].item.(*ast.AlterOrderItem)) } - case 1393: + case 1398: { parser.yyVAL.item = &ast.AlterOrderItem{Column: yyS[yypt-1].item.(*ast.ColumnName), Desc: yyS[yypt-0].item.(bool)} } - case 1394: + case 1399: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1395: + case 1400: { parser.yyVAL.item = []*ast.ByItem{yyS[yypt-0].item.(*ast.ByItem)} } - case 1396: + case 1401: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ByItem), yyS[yypt-0].item.(*ast.ByItem)) } - case 1397: + case 1402: { expr := yyS[yypt-0].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -17883,7 +18009,7 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, NullOrder: true} } - case 1398: + case 1403: { expr := yyS[yypt-1].expr valueExpr, ok := expr.(ast.ValueExpr) @@ -17895,55 +18021,55 @@ yynewstate: } parser.yyVAL.item = &ast.ByItem{Expr: expr, Desc: yyS[yypt-0].item.(bool)} } - case 1399: + case 1404: { parser.yyVAL.item = false } - case 1400: + case 1405: { parser.yyVAL.item = true } - case 1401: + case 1406: { parser.yyVAL.item = false // ASC by default } - case 1402: + case 1407: { parser.yyVAL.item = false } - case 1403: + case 1408: { parser.yyVAL.item = true } - case 1404: + case 1409: { parser.yyVAL.item = nil } - case 1406: + case 1411: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Or, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1407: + case 1412: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.And, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1408: + case 1413: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LeftShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1409: + case 1414: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.RightShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1410: + case 1415: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Plus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1411: + case 1416: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Minus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1412: + case 1417: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_ADD"), @@ -17954,7 +18080,7 @@ yynewstate: }, } } - case 1413: + case 1418: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_SUB"), @@ -17965,7 +18091,7 @@ yynewstate: }, } } - case 1414: + case 1419: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr("DATE_ADD"), @@ -17976,44 +18102,44 @@ yynewstate: }, } } - case 1415: + case 1420: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mul, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1416: + case 1421: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Div, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1417: + case 1422: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1418: + case 1423: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.IntDiv, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1419: + case 1424: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1420: + case 1425: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Xor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr} } - case 1422: + case 1427: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1423: + case 1428: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Table: model.NewCIStr(yyS[yypt-2].ident), Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1424: + case 1429: { parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{ Schema: model.NewCIStr(yyS[yypt-4].ident), @@ -18021,39 +18147,39 @@ yynewstate: Name: model.NewCIStr(yyS[yypt-0].ident), }} } - case 1429: + case 1434: { parser.yyVAL.expr = &ast.SetCollationExpr{Expr: yyS[yypt-2].expr, Collate: yyS[yypt-0].ident} } - case 1432: + case 1437: { parser.yyVAL.expr = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1435: + case 1440: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1436: + case 1441: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.BitNeg, V: yyS[yypt-0].expr} } - case 1437: + case 1442: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Minus, V: yyS[yypt-0].expr} } - case 1438: + case 1443: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Plus, V: yyS[yypt-0].expr} } - case 1439: + case 1444: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.Concat), Args: []ast.ExprNode{yyS[yypt-2].expr, yyS[yypt-0].expr}} } - case 1440: + case 1445: { parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr} } - case 1442: + case 1447: { startOffset := parser.startOffset(&yyS[yypt-1]) endOffset := parser.endOffset(&yyS[yypt]) @@ -18061,23 +18187,23 @@ yynewstate: expr.SetText(parser.lexer.client, parser.src[startOffset:endOffset]) parser.yyVAL.expr = &ast.ParenthesesExpr{Expr: expr} } - case 1443: + case 1448: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1444: + case 1449: { values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr) parser.yyVAL.expr = &ast.RowExpr{Values: values} } - case 1445: + case 1450: { sq := yyS[yypt-0].expr.(*ast.SubqueryExpr) sq.Exists = true parser.yyVAL.expr = &ast.ExistsSubqueryExpr{Sel: sq} } - case 1446: + case 1451: { /* * ODBC escape syntax. @@ -18101,7 +18227,7 @@ yynewstate: parser.yyVAL.expr = yyS[yypt-1].expr } } - case 1447: + case 1452: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#operator_binary tp := types.NewFieldType(mysql.TypeString) @@ -18114,7 +18240,7 @@ yynewstate: FunctionType: ast.CastBinaryOperator, } } - case 1448: + case 1453: { /* See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast */ tp := yyS[yypt-2].item.(*types.FieldType) @@ -18140,7 +18266,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1449: + case 1454: { x := &ast.CaseExpr{WhenClauses: yyS[yypt-2].item.([]*ast.WhenClause)} if yyS[yypt-3].expr != nil { @@ -18151,7 +18277,7 @@ yynewstate: } parser.yyVAL.expr = x } - case 1450: + case 1455: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert tp := yyS[yypt-1].item.(*types.FieldType) @@ -18171,7 +18297,7 @@ yynewstate: ExplicitCharSet: explicitCharset, } } - case 1451: + case 1456: { // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") @@ -18180,70 +18306,70 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-3].expr, charset1}, } } - case 1452: + case 1457: { parser.yyVAL.expr = &ast.DefaultExpr{Name: yyS[yypt-1].expr.(*ast.ColumnNameExpr).Name} } - case 1453: + case 1458: { parser.yyVAL.expr = &ast.ValuesExpr{Column: yyS[yypt-1].expr.(*ast.ColumnNameExpr)} } - case 1454: + case 1459: { 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 1455: + case 1460: { 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 1456: + case 1461: { parser.yyVAL.item = false } - case 1457: + case 1462: { parser.yyVAL.item = true } - case 1460: + case 1465: { parser.yyVAL.item = false } - case 1461: + case 1466: { parser.yyVAL.item = true } - case 1462: + case 1467: { parser.yyVAL.item = false } - case 1464: + case 1469: { parser.yyVAL.item = true } - case 1467: + case 1472: { parser.yyVAL.item = true } - case 1512: + case 1517: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1513: + case 1518: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1514: + case 1519: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident)} } - case 1515: + case 1520: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-2].ident)} } - case 1516: + case 1521: { args := []ast.ExprNode{} if yyS[yypt-0].item != nil { @@ -18251,7 +18377,7 @@ yynewstate: } parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-1].ident), Args: args} } - case 1517: + case 1522: { nilVal := ast.NewValueExpr(nil, parser.charset, parser.collation) args := yyS[yypt-1].item.([]ast.ExprNode) @@ -18260,7 +18386,7 @@ yynewstate: Args: append(args, nilVal), } } - case 1518: + case 1523: { charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "") args := yyS[yypt-3].item.([]ast.ExprNode) @@ -18269,42 +18395,42 @@ yynewstate: Args: append(args, charset1), } } - case 1519: + case 1524: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.DateLiteral), Args: []ast.ExprNode{expr}} } - case 1520: + case 1525: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimeLiteral), Args: []ast.ExprNode{expr}} } - case 1521: + case 1526: { expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "") parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.TimestampLiteral), Args: []ast.ExprNode{expr}} } - case 1522: + case 1527: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.InsertFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1523: + case 1528: { parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-3].expr, R: yyS[yypt-1].expr} } - case 1524: + case 1529: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(ast.PasswordFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1525: + case 1530: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1526: + case 1531: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1527: + case 1532: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -18315,7 +18441,7 @@ yynewstate: }, } } - case 1528: + case 1533: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -18326,7 +18452,7 @@ yynewstate: }, } } - case 1529: + case 1534: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-7].ident), @@ -18337,7 +18463,7 @@ yynewstate: }, } } - case 1530: + case 1535: { timeUnit := &ast.TimeUnitExpr{Unit: yyS[yypt-3].item.(ast.TimeUnitType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -18345,7 +18471,7 @@ yynewstate: Args: []ast.ExprNode{timeUnit, yyS[yypt-1].expr}, } } - case 1531: + case 1536: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), @@ -18355,67 +18481,67 @@ yynewstate: }, } } - case 1532: + case 1537: { parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}} } - case 1533: + case 1538: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1534: + case 1539: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}, } } - case 1535: + case 1540: { 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 1536: + case 1541: { 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 1537: + case 1542: { 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 1538: + case 1543: { 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 1539: + case 1544: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1540: + case 1545: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr}, } } - case 1541: + case 1546: { spaceVal := ast.NewValueExpr(" ", parser.charset, parser.collation) direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-3].item.(ast.TrimDirectionType)} @@ -18424,7 +18550,7 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, spaceVal, direction}, } } - case 1542: + case 1547: { direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-4].item.(ast.TrimDirectionType)} parser.yyVAL.expr = &ast.FuncCallExpr{ @@ -18432,63 +18558,67 @@ yynewstate: Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr, direction}, } } - case 1543: + case 1548: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: []ast.ExprNode{yyS[yypt-1].expr}, } } - case 1544: + case 1549: { 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 1545: + case 1550: { 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 1547: + case 1552: { 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 1548: + case 1553: + { + parser.yyVAL.expr = &ast.FuncCallExpr{FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)} + } + case 1554: { parser.yyVAL.item = ast.GetFormatSelectorDate } - case 1549: + case 1555: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1550: + case 1556: { parser.yyVAL.item = ast.GetFormatSelectorTime } - case 1551: + case 1557: { parser.yyVAL.item = ast.GetFormatSelectorDatetime } - case 1556: + case 1562: { parser.yyVAL.item = ast.TrimBoth } - case 1557: + case 1563: { parser.yyVAL.item = ast.TrimLeading } - case 1558: + case 1564: { parser.yyVAL.item = ast.TrimTrailing } - case 1559: + case 1565: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-1].item.(*ast.TableName), @@ -18498,7 +18628,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr}, } } - case 1560: + case 1566: { objNameExpr := &ast.TableNameExpr{ Name: yyS[yypt-3].item.(*ast.TableName), @@ -18509,7 +18639,7 @@ yynewstate: Args: []ast.ExprNode{objNameExpr, valueExpr}, } } - case 1562: + case 1568: { 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))} @@ -18517,15 +18647,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 1563: + case 1569: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: false} } - case 1564: + case 1570: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode)} } - case 1565: + case 1571: { 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))} @@ -18533,7 +18663,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1566: + case 1572: { 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))} @@ -18541,7 +18671,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1567: + case 1573: { 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))} @@ -18549,7 +18679,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1568: + case 1574: { 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))} @@ -18557,7 +18687,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1569: + case 1575: { 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))} @@ -18565,7 +18695,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1570: + case 1576: { 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))} @@ -18573,11 +18703,11 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1571: + case 1577: { parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: true} } - case 1572: + case 1578: { 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))} @@ -18585,7 +18715,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1573: + case 1579: { 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))} @@ -18593,7 +18723,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1574: + case 1580: { args := []ast.ExprNode{ast.NewValueExpr(1, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -18602,7 +18732,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: args} } } - case 1575: + case 1581: { args := yyS[yypt-4].item.([]ast.ExprNode) args = append(args, yyS[yypt-2].item.(ast.ExprNode)) @@ -18616,7 +18746,7 @@ yynewstate: parser.yyVAL.expr = agg } } - case 1576: + case 1582: { 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))} @@ -18624,7 +18754,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 1577: + case 1583: { 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))} @@ -18632,7 +18762,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 1578: + case 1584: { 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))} @@ -18640,7 +18770,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 1579: + case 1585: { 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))} @@ -18648,7 +18778,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1580: + case 1586: { 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))} @@ -18656,7 +18786,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 1581: + case 1587: { 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))} @@ -18664,7 +18794,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)} } } - case 1582: + case 1588: { 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))} @@ -18672,7 +18802,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 1583: + case 1589: { 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))} @@ -18680,7 +18810,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1584: + case 1590: { 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))} @@ -18688,7 +18818,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}} } } - case 1585: + case 1591: { 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))} @@ -18696,7 +18826,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1586: + case 1592: { 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))} @@ -18704,7 +18834,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}} } } - case 1587: + case 1593: { 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))} @@ -18712,7 +18842,7 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1588: + case 1594: { 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))} @@ -18720,22 +18850,22 @@ yynewstate: parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}} } } - case 1589: + case 1595: { parser.yyVAL.item = ast.NewValueExpr(",", "", "") } - case 1590: + case 1596: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1591: + case 1597: { parser.yyVAL.expr = &ast.FuncCallExpr{ FnName: model.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1592: + case 1598: { var tp ast.FuncCallExprType if isInTokenMap(yyS[yypt-3].ident) { @@ -18750,159 +18880,159 @@ yynewstate: Args: yyS[yypt-1].item.([]ast.ExprNode), } } - case 1593: + case 1599: { parser.yyVAL.item = nil } - case 1594: + case 1600: { parser.yyVAL.item = nil } - case 1595: + case 1601: { expr := ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation) parser.yyVAL.item = expr } - case 1597: + case 1603: { parser.yyVAL.item = ast.TimeUnitSecondMicrosecond } - case 1598: + case 1604: { parser.yyVAL.item = ast.TimeUnitMinuteMicrosecond } - case 1599: + case 1605: { parser.yyVAL.item = ast.TimeUnitMinuteSecond } - case 1600: + case 1606: { parser.yyVAL.item = ast.TimeUnitHourMicrosecond } - case 1601: + case 1607: { parser.yyVAL.item = ast.TimeUnitHourSecond } - case 1602: + case 1608: { parser.yyVAL.item = ast.TimeUnitHourMinute } - case 1603: + case 1609: { parser.yyVAL.item = ast.TimeUnitDayMicrosecond } - case 1604: + case 1610: { parser.yyVAL.item = ast.TimeUnitDaySecond } - case 1605: + case 1611: { parser.yyVAL.item = ast.TimeUnitDayMinute } - case 1606: + case 1612: { parser.yyVAL.item = ast.TimeUnitDayHour } - case 1607: + case 1613: { parser.yyVAL.item = ast.TimeUnitYearMonth } - case 1608: + case 1614: { parser.yyVAL.item = ast.TimeUnitMicrosecond } - case 1609: + case 1615: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1610: + case 1616: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1611: + case 1617: { parser.yyVAL.item = ast.TimeUnitHour } - case 1612: + case 1618: { parser.yyVAL.item = ast.TimeUnitDay } - case 1613: + case 1619: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1614: + case 1620: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1615: + case 1621: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1616: + case 1622: { parser.yyVAL.item = ast.TimeUnitYear } - case 1617: + case 1623: { parser.yyVAL.item = ast.TimeUnitSecond } - case 1618: + case 1624: { parser.yyVAL.item = ast.TimeUnitMinute } - case 1619: + case 1625: { parser.yyVAL.item = ast.TimeUnitHour } - case 1620: + case 1626: { parser.yyVAL.item = ast.TimeUnitDay } - case 1621: + case 1627: { parser.yyVAL.item = ast.TimeUnitWeek } - case 1622: + case 1628: { parser.yyVAL.item = ast.TimeUnitMonth } - case 1623: + case 1629: { parser.yyVAL.item = ast.TimeUnitQuarter } - case 1624: + case 1630: { parser.yyVAL.item = ast.TimeUnitYear } - case 1625: + case 1631: { parser.yyVAL.expr = nil } - case 1627: + case 1633: { parser.yyVAL.item = []*ast.WhenClause{yyS[yypt-0].item.(*ast.WhenClause)} } - case 1628: + case 1634: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.WhenClause), yyS[yypt-0].item.(*ast.WhenClause)) } - case 1629: + case 1635: { parser.yyVAL.item = &ast.WhenClause{ Expr: yyS[yypt-2].expr, Result: yyS[yypt-0].expr, } } - case 1630: + case 1636: { parser.yyVAL.item = nil } - case 1631: + case 1637: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1632: + case 1638: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-0].item.(int)) // TODO: Flen should be the flen of expression @@ -18914,7 +19044,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1633: + case 1639: { tp := types.NewFieldType(mysql.TypeVarString) tp.SetFlen(yyS[yypt-1].item.(int)) // TODO: Flen should be the flen of expression @@ -18937,7 +19067,7 @@ yynewstate: } parser.yyVAL.item = tp } - case 1634: + case 1640: { tp := types.NewFieldType(mysql.TypeDate) tp.SetCharset(charset.CharsetBin) @@ -18945,7 +19075,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1635: + case 1641: { tp := types.NewFieldType(mysql.TypeYear) tp.SetCharset(charset.CharsetBin) @@ -18953,7 +19083,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1636: + case 1642: { tp := types.NewFieldType(mysql.TypeDatetime) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDatetime) @@ -18967,7 +19097,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1637: + case 1643: { fopt := yyS[yypt-0].item.(*ast.FloatOpt) tp := types.NewFieldType(mysql.TypeNewDecimal) @@ -18978,7 +19108,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1638: + case 1644: { tp := types.NewFieldType(mysql.TypeDuration) flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDuration) @@ -18992,7 +19122,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1639: + case 1645: { tp := types.NewFieldType(mysql.TypeLonglong) tp.SetCharset(charset.CharsetBin) @@ -19000,7 +19130,7 @@ yynewstate: tp.AddFlag(mysql.BinaryFlag) parser.yyVAL.item = tp } - case 1640: + case 1646: { tp := types.NewFieldType(mysql.TypeLonglong) tp.AddFlag(mysql.UnsignedFlag | mysql.BinaryFlag) @@ -19008,7 +19138,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1641: + case 1647: { tp := types.NewFieldType(mysql.TypeJSON) tp.AddFlag(mysql.BinaryFlag | mysql.ParseToJSONFlag) @@ -19016,7 +19146,7 @@ yynewstate: tp.SetCollate(mysql.DefaultCollationName) parser.yyVAL.item = tp } - case 1642: + case 1648: { tp := types.NewFieldType(mysql.TypeDouble) flen, decimal := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDouble) @@ -19027,7 +19157,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1643: + case 1649: { tp := types.NewFieldType(mysql.TypeFloat) fopt := yyS[yypt-0].item.(*ast.FloatOpt) @@ -19044,7 +19174,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1644: + case 1650: { var tp *types.FieldType if parser.lexer.GetSQLMode().HasRealAsFloatMode() { @@ -19060,7 +19190,7 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1645: + case 1651: { elementType := yyS[yypt-1].item.(*ast.VectorElementType) if elementType.Tp != mysql.TypeFloat { @@ -19073,27 +19203,27 @@ yynewstate: tp.SetCollate(charset.CollationBin) parser.yyVAL.item = tp } - case 1646: + case 1652: { parser.yyVAL.item = mysql.LowPriority } - case 1647: + case 1653: { parser.yyVAL.item = mysql.HighPriority } - case 1648: + case 1654: { parser.yyVAL.item = mysql.DelayedPriority } - case 1649: + case 1655: { parser.yyVAL.item = mysql.NoPriority } - case 1651: + case 1657: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1652: + case 1658: { schema := yyS[yypt-2].ident if isInCorrectIdentifierName(schema) { @@ -19102,45 +19232,45 @@ yynewstate: } parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(schema), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1653: + case 1659: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr("*"), Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1654: + case 1660: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1655: + case 1661: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1656: + case 1662: { parser.yyVAL.item = &ast.TableName{Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1657: + case 1663: { parser.yyVAL.item = &ast.TableName{Schema: model.NewCIStr(yyS[yypt-3].ident), Name: model.NewCIStr(yyS[yypt-1].ident)} } - case 1658: + case 1664: { tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)} parser.yyVAL.item = tbl } - case 1659: + case 1665: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName)) } - case 1662: + case 1668: { parser.yyVAL.item = false } - case 1663: + case 1669: { parser.yyVAL.item = true } - case 1664: + case 1670: { var sqlText string var sqlVar *ast.VariableExpr @@ -19156,94 +19286,94 @@ yynewstate: SQLVar: sqlVar, } } - case 1665: + case 1671: { parser.yyVAL.item = yyS[yypt-0].ident } - case 1666: + case 1672: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1667: + case 1673: { parser.yyVAL.statement = &ast.ExecuteStmt{Name: yyS[yypt-0].ident} } - case 1668: + case 1674: { parser.yyVAL.statement = &ast.ExecuteStmt{ Name: yyS[yypt-2].ident, UsingVars: yyS[yypt-0].item.([]ast.ExprNode), } } - case 1669: + case 1675: { parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr} } - case 1670: + case 1676: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr) } - case 1671: + case 1677: { parser.yyVAL.statement = &ast.DeallocateStmt{Name: yyS[yypt-0].ident} } - case 1674: + case 1680: { parser.yyVAL.statement = &ast.RollbackStmt{} } - case 1675: + case 1681: { parser.yyVAL.statement = &ast.RollbackStmt{CompletionType: yyS[yypt-0].item.(ast.CompletionType)} } - case 1676: + case 1682: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1677: + case 1683: { parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident} } - case 1678: + case 1684: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1679: + case 1685: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1680: + case 1686: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1681: + case 1687: { parser.yyVAL.item = ast.CompletionTypeChain } - case 1682: + case 1688: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1683: + case 1689: { parser.yyVAL.item = ast.CompletionTypeRelease } - case 1684: + case 1690: { parser.yyVAL.item = ast.CompletionTypeDefault } - case 1685: + case 1691: { parser.yyVAL.statement = &ast.ShutdownStmt{} } - case 1686: + case 1692: { parser.yyVAL.statement = &ast.RestartStmt{} } - case 1687: + case 1693: { parser.yyVAL.statement = &ast.HelpStmt{Topic: yyS[yypt-0].ident} } - case 1688: + case 1694: { st := &ast.SelectStmt{ SelectStmtOpts: yyS[yypt-2].item.(*ast.SelectStmtOpts), @@ -19259,7 +19389,7 @@ yynewstate: } parser.yyVAL.item = st } - case 1689: + case 1695: { st := yyS[yypt-2].item.(*ast.SelectStmt) lastField := st.Fields.Fields[len(st.Fields.Fields)-1] @@ -19271,7 +19401,7 @@ yynewstate: st.Where = yyS[yypt-0].item.(ast.ExprNode) } } - case 1690: + case 1696: { st := yyS[yypt-6].item.(*ast.SelectStmt) st.From = yyS[yypt-4].item.(*ast.TableRefsClause) @@ -19294,11 +19424,11 @@ yynewstate: } parser.yyVAL.item = st } - case 1691: + case 1697: { parser.yyVAL.item = nil } - case 1692: + case 1698: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -19311,7 +19441,7 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1693: + case 1699: { var repSeed ast.ExprNode if yyS[yypt-0].expr != nil { @@ -19322,43 +19452,43 @@ yynewstate: RepeatableSeed: repSeed, } } - case 1694: + case 1700: { parser.yyVAL.item = ast.SampleMethodTypeNone } - case 1695: + case 1701: { parser.yyVAL.item = ast.SampleMethodTypeSystem } - case 1696: + case 1702: { parser.yyVAL.item = ast.SampleMethodTypeBernoulli } - case 1697: + case 1703: { parser.yyVAL.item = ast.SampleMethodTypeTiDBRegion } - case 1698: + case 1704: { parser.yyVAL.item = ast.SampleClauseUnitTypeDefault } - case 1699: + case 1705: { parser.yyVAL.item = ast.SampleClauseUnitTypeRow } - case 1700: + case 1706: { parser.yyVAL.item = ast.SampleClauseUnitTypePercent } - case 1701: + case 1707: { parser.yyVAL.expr = nil } - case 1702: + case 1708: { parser.yyVAL.expr = yyS[yypt-1].expr } - case 1703: + case 1709: { st := yyS[yypt-6].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -19381,7 +19511,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1704: + case 1710: { st := yyS[yypt-5].item.(*ast.SelectStmt) if yyS[yypt-4].item != nil { @@ -19401,7 +19531,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1705: + case 1711: { st := yyS[yypt-4].item.(*ast.SelectStmt) if yyS[yypt-1].item != nil { @@ -19418,7 +19548,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1706: + case 1712: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindTable, @@ -19440,7 +19570,7 @@ yynewstate: } parser.yyVAL.statement = st } - case 1707: + case 1713: { st := &ast.SelectStmt{ Kind: ast.SelectStmtKindValues, @@ -19461,13 +19591,13 @@ yynewstate: } parser.yyVAL.statement = st } - case 1708: + case 1714: { sel := yyS[yypt-0].statement.(*ast.SelectStmt) sel.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = sel } - case 1709: + case 1715: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -19483,11 +19613,11 @@ yynewstate: } parser.yyVAL.statement = sel } - case 1710: + case 1716: { parser.yyVAL.item = yyS[yypt-0].item } - case 1711: + case 1717: { ws := yyS[yypt-0].item.(*ast.WithClause) ws.IsRecursive = true @@ -19496,20 +19626,20 @@ yynewstate: } parser.yyVAL.item = ws } - case 1712: + case 1718: { ws := yyS[yypt-2].item.(*ast.WithClause) ws.CTEs = append(ws.CTEs, yyS[yypt-0].item.(*ast.CommonTableExpression)) parser.yyVAL.item = ws } - case 1713: + case 1719: { 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 1714: + case 1720: { cte := &ast.CommonTableExpression{} cte.Name = model.NewCIStr(yyS[yypt-3].ident) @@ -19517,37 +19647,37 @@ yynewstate: cte.Query = yyS[yypt-0].expr.(*ast.SubqueryExpr) parser.yyVAL.item = cte } - case 1716: + case 1722: { parser.yyVAL.item = nil } - case 1717: + case 1723: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.WindowSpec) } - case 1718: + case 1724: { parser.yyVAL.item = []ast.WindowSpec{yyS[yypt-0].item.(ast.WindowSpec)} } - case 1719: + case 1725: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.WindowSpec), yyS[yypt-0].item.(ast.WindowSpec)) } - case 1720: + case 1726: { var spec = yyS[yypt-0].item.(ast.WindowSpec) spec.Name = yyS[yypt-2].item.(model.CIStr) parser.yyVAL.item = spec } - case 1721: + case 1727: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1722: + case 1728: { parser.yyVAL.item = yyS[yypt-1].item.(ast.WindowSpec) } - case 1723: + case 1729: { spec := ast.WindowSpec{Ref: yyS[yypt-3].item.(model.CIStr)} if yyS[yypt-2].item != nil { @@ -19561,138 +19691,138 @@ yynewstate: } parser.yyVAL.item = spec } - case 1724: + case 1730: { parser.yyVAL.item = model.CIStr{} } - case 1726: + case 1732: { parser.yyVAL.item = nil } - case 1727: + case 1733: { parser.yyVAL.item = &ast.PartitionByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1728: + case 1734: { parser.yyVAL.item = nil } - case 1729: + case 1735: { parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)} } - case 1730: + case 1736: { parser.yyVAL.item = nil } - case 1731: + case 1737: { parser.yyVAL.item = &ast.FrameClause{ Type: yyS[yypt-1].item.(ast.FrameType), Extent: yyS[yypt-0].item.(ast.FrameExtent), } } - case 1732: + case 1738: { parser.yyVAL.item = ast.FrameType(ast.Rows) } - case 1733: + case 1739: { parser.yyVAL.item = ast.FrameType(ast.Ranges) } - case 1734: + case 1740: { parser.yyVAL.item = ast.FrameType(ast.Groups) } - case 1735: + case 1741: { parser.yyVAL.item = ast.FrameExtent{ Start: yyS[yypt-0].item.(ast.FrameBound), End: ast.FrameBound{Type: ast.CurrentRow}, } } - case 1737: + case 1743: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, UnBounded: true} } - case 1738: + case 1744: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1739: + case 1745: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1740: + case 1746: { parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1741: + case 1747: { parser.yyVAL.item = ast.FrameBound{Type: ast.CurrentRow} } - case 1742: + case 1748: { parser.yyVAL.item = ast.FrameExtent{Start: yyS[yypt-2].item.(ast.FrameBound), End: yyS[yypt-0].item.(ast.FrameBound)} } - case 1744: + case 1750: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, UnBounded: true} } - case 1745: + case 1751: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} } - case 1746: + case 1752: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)} } - case 1747: + case 1753: { parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)} } - case 1748: + case 1754: { parser.yyVAL.item = nil } - case 1749: + case 1755: { spec := yyS[yypt-0].item.(ast.WindowSpec) parser.yyVAL.item = &spec } - case 1750: + case 1756: { parser.yyVAL.item = yyS[yypt-0].item.(ast.WindowSpec) } - case 1751: + case 1757: { parser.yyVAL.item = ast.WindowSpec{Name: yyS[yypt-0].item.(model.CIStr), OnlyAlias: true} } - case 1753: + case 1759: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1754: + case 1760: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1755: + case 1761: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1756: + case 1762: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1757: + case 1763: { parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)} } - case 1758: + case 1764: { 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 1759: + case 1765: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -19700,7 +19830,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 1760: + case 1766: { args := []ast.ExprNode{yyS[yypt-4].expr} if yyS[yypt-3].item != nil { @@ -19708,23 +19838,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 1761: + case 1767: { 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 1762: + case 1768: { 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 1763: + case 1769: { 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 1764: + case 1770: { parser.yyVAL.item = nil } - case 1765: + case 1771: { args := []ast.ExprNode{ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)} if yyS[yypt-0].item != nil { @@ -19732,7 +19862,7 @@ yynewstate: } parser.yyVAL.item = args } - case 1766: + case 1772: { args := []ast.ExprNode{ast.NewParamMarkerExpr(yyS[yypt-1].offset)} if yyS[yypt-0].item != nil { @@ -19740,43 +19870,43 @@ yynewstate: } parser.yyVAL.item = args } - case 1767: + case 1773: { parser.yyVAL.item = nil } - case 1768: + case 1774: { parser.yyVAL.item = yyS[yypt-0].expr } - case 1769: + case 1775: { parser.yyVAL.item = false } - case 1770: + case 1776: { parser.yyVAL.item = false } - case 1771: + case 1777: { parser.yyVAL.item = true } - case 1772: + case 1778: { parser.yyVAL.item = false } - case 1773: + case 1779: { parser.yyVAL.item = false } - case 1774: + case 1780: { parser.yyVAL.item = true } - case 1775: + case 1781: { parser.yyVAL.item = &ast.TableRefsClause{TableRefs: yyS[yypt-0].item.(*ast.Join)} } - case 1776: + case 1782: { if j, ok := yyS[yypt-0].item.(*ast.Join); ok { // if $1 is Join, use it directly @@ -19785,12 +19915,12 @@ yynewstate: parser.yyVAL.item = &ast.Join{Left: yyS[yypt-0].item.(ast.ResultSetNode), Right: nil} } } - case 1777: + case 1783: { /* 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 1779: + case 1785: { /* * ODBC escape syntax for outer join is { OJ join_table } @@ -19798,7 +19928,7 @@ yynewstate: */ parser.yyVAL.item = yyS[yypt-1].item } - case 1782: + case 1788: { tn := yyS[yypt-5].item.(*ast.TableName) tn.PartitionNames = yyS[yypt-4].item.([]model.CIStr) @@ -19811,66 +19941,66 @@ yynewstate: } parser.yyVAL.item = &ast.TableSource{Source: tn, AsName: yyS[yypt-3].item.(model.CIStr)} } - case 1783: + case 1789: { resultNode := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query parser.yyVAL.item = &ast.TableSource{Source: resultNode, AsName: yyS[yypt-0].item.(model.CIStr)} } - case 1784: + case 1790: { j := yyS[yypt-1].item.(*ast.Join) j.ExplicitParens = true parser.yyVAL.item = yyS[yypt-1].item } - case 1785: + case 1791: { parser.yyVAL.item = []model.CIStr{} } - case 1786: + case 1792: { parser.yyVAL.item = yyS[yypt-1].item } - case 1787: + case 1793: { parser.yyVAL.item = model.CIStr{} } - case 1789: + case 1795: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1790: + case 1796: { parser.yyVAL.item = model.NewCIStr(yyS[yypt-0].ident) } - case 1791: + case 1797: { parser.yyVAL.item = ast.HintUse } - case 1792: + case 1798: { parser.yyVAL.item = ast.HintIgnore } - case 1793: + case 1799: { parser.yyVAL.item = ast.HintForce } - case 1794: + case 1800: { parser.yyVAL.item = ast.HintForScan } - case 1795: + case 1801: { parser.yyVAL.item = ast.HintForJoin } - case 1796: + case 1802: { parser.yyVAL.item = ast.HintForOrderBy } - case 1797: + case 1803: { parser.yyVAL.item = ast.HintForGroupBy } - case 1798: + case 1804: { parser.yyVAL.item = &ast.IndexHint{ IndexNames: yyS[yypt-1].item.([]model.CIStr), @@ -19878,138 +20008,138 @@ yynewstate: HintScope: yyS[yypt-3].item.(ast.IndexHintScope), } } - case 1799: + case 1805: { var nameList []model.CIStr parser.yyVAL.item = nameList } - case 1800: + case 1806: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1801: + case 1807: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1802: + case 1808: { parser.yyVAL.item = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } - case 1803: + case 1809: { parser.yyVAL.item = append(yyS[yypt-2].item.([]model.CIStr), model.NewCIStr(yyS[yypt-0].ident)) } - case 1804: + case 1810: { parser.yyVAL.item = []*ast.IndexHint{yyS[yypt-0].item.(*ast.IndexHint)} } - case 1805: + case 1811: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.IndexHint), yyS[yypt-0].item.(*ast.IndexHint)) } - case 1806: + case 1812: { parser.yyVAL.item = []*ast.IndexHint{} } - case 1808: + case 1814: { parser.yyVAL.item = ast.NewCrossJoin(yyS[yypt-2].item.(ast.ResultSetNode), yyS[yypt-0].item.(ast.ResultSetNode)) } - case 1809: + case 1815: { 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 1810: + case 1816: { 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 1811: + case 1817: { 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 1812: + case 1818: { 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 1813: + case 1819: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-3].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), NaturalJoin: true} } - case 1814: + case 1820: { 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 1815: + case 1821: { parser.yyVAL.item = &ast.Join{Left: yyS[yypt-2].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), StraightJoin: true} } - case 1816: + case 1822: { 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 1817: + case 1823: { 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 1818: + case 1824: { parser.yyVAL.item = ast.LeftJoin } - case 1819: + case 1825: { parser.yyVAL.item = ast.RightJoin } - case 1825: + case 1831: { parser.yyVAL.item = nil } - case 1826: + case 1832: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ValueExpr)} } - case 1827: + case 1833: { parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation) } - case 1828: + case 1834: { parser.yyVAL.item = ast.NewParamMarkerExpr(yyS[yypt].offset) } - case 1833: + case 1839: { parser.yyVAL.item = ast.NewValueExpr(uint64(1), parser.charset, parser.collation) } - case 1835: + case 1841: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1836: + case 1842: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-2].item.(ast.ExprNode), Count: yyS[yypt-0].item.(ast.ExprNode)} } - case 1837: + case 1843: { parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-0].item.(ast.ExprNode), Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1838: + case 1844: { parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-2].item.(ast.ExprNode)} } - case 1839: + case 1845: { parser.yyVAL.item = nil } - case 1841: + case 1847: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.TableHints = yyS[yypt-0].item.([]*ast.TableOptimizerHint) parser.yyVAL.item = opt } - case 1842: + case 1848: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true @@ -20021,61 +20151,61 @@ yynewstate: } parser.yyVAL.item = opt } - case 1843: + case 1849: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.Priority = yyS[yypt-0].item.(mysql.PriorityEnum) parser.yyVAL.item = opt } - case 1844: + case 1850: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLSmallResult = true parser.yyVAL.item = opt } - case 1845: + case 1851: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBigResult = true parser.yyVAL.item = opt } - case 1846: + case 1852: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.SQLBufferResult = true parser.yyVAL.item = opt } - case 1847: + case 1853: { opt := &ast.SelectStmtOpts{} opt.SQLCache = yyS[yypt-0].item.(bool) parser.yyVAL.item = opt } - case 1848: + case 1854: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.CalcFoundRows = true parser.yyVAL.item = opt } - case 1849: + case 1855: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true opt.StraightJoin = true parser.yyVAL.item = opt } - case 1850: + case 1856: { opt := &ast.SelectStmtOpts{} opt.SQLCache = true parser.yyVAL.item = opt } - case 1852: + case 1858: { opts := yyS[yypt-1].item.(*ast.SelectStmtOpts) opt := yyS[yypt-0].item.(*ast.SelectStmtOpts) @@ -20120,7 +20250,7 @@ yynewstate: parser.yyVAL.item = opts } - case 1854: + case 1860: { hints, warns := parser.parseHint(yyS[yypt-0].ident) for _, w := range warns { @@ -20129,31 +20259,31 @@ yynewstate: } parser.yyVAL.item = hints } - case 1855: + case 1861: { parser.yyVAL.item = nil } - case 1857: + case 1863: { parser.yyVAL.item = true } - case 1858: + case 1864: { parser.yyVAL.item = false } - case 1859: + case 1865: { parser.yyVAL.item = &ast.FieldList{Fields: yyS[yypt-0].item.([]*ast.SelectField)} } - case 1860: + case 1866: { parser.yyVAL.item = nil } - case 1862: + case 1868: { parser.yyVAL.item = nil } - case 1863: + case 1869: { x := &ast.SelectIntoOption{ Tp: ast.SelectIntoOutfile, @@ -20168,7 +20298,7 @@ yynewstate: parser.yyVAL.item = x } - case 1864: + case 1870: { rs := yyS[yypt-1].statement.(*ast.SelectStmt) endOffset := parser.endOffset(&yyS[yypt]) @@ -20178,14 +20308,14 @@ yynewstate: rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset]) parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } - case 1865: + case 1871: { 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 1866: + case 1872: { switch rs := yyS[yypt-1].statement.(type) { case *ast.SelectStmt: @@ -20201,7 +20331,7 @@ yynewstate: parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } } - case 1867: + case 1873: { subQuery := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query isRecursive := true @@ -20224,32 +20354,32 @@ yynewstate: parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs} } } - case 1868: + case 1874: { parser.yyVAL.item = nil } - case 1869: + case 1875: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdate, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1870: + case 1876: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1871: + case 1877: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1872: + case 1878: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateWaitN, @@ -20257,55 +20387,55 @@ yynewstate: Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1873: + case 1879: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareNoWait, Tables: yyS[yypt-1].item.([]*ast.TableName), } } - case 1874: + case 1880: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForUpdateSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1875: + case 1881: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShareSkipLocked, Tables: yyS[yypt-2].item.([]*ast.TableName), } } - case 1876: + case 1882: { parser.yyVAL.item = &ast.SelectLockInfo{ LockType: ast.SelectLockForShare, Tables: []*ast.TableName{}, } } - case 1877: + case 1883: { parser.yyVAL.item = []*ast.TableName{} } - case 1878: + case 1884: { parser.yyVAL.item = yyS[yypt-0].item.([]*ast.TableName) } - case 1881: + case 1887: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1882: + case 1888: { setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt) setOpr.With = yyS[yypt-1].item.(*ast.WithClause) parser.yyVAL.statement = setOpr } - case 1883: + case 1889: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20322,7 +20452,7 @@ yynewstate: setOpr.SelectList.Selects = append(setOpr.SelectList.Selects, st) parser.yyVAL.statement = setOpr } - case 1884: + case 1890: { setOprList1 := yyS[yypt-2].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20351,7 +20481,7 @@ yynewstate: setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}} parser.yyVAL.statement = setOpr } - case 1885: + case 1891: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20379,7 +20509,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1886: + case 1892: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20407,7 +20537,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1887: + case 1893: { setOprList1 := yyS[yypt-4].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { @@ -20436,7 +20566,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1888: + case 1894: { var setOprList []ast.Node switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20449,7 +20579,7 @@ yynewstate: setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause) parser.yyVAL.statement = setOpr } - case 1889: + case 1895: { var setOprList []ast.Node switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20462,7 +20592,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1890: + case 1896: { var setOprList []ast.Node switch x := yyS[yypt-2].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20476,7 +20606,7 @@ yynewstate: setOpr.Limit = yyS[yypt-0].item.(*ast.Limit) parser.yyVAL.statement = setOpr } - case 1892: + case 1898: { setOprList1 := yyS[yypt-2].item.([]ast.Node) setOprList2 := yyS[yypt-0].item.([]ast.Node) @@ -20492,11 +20622,11 @@ yynewstate: } parser.yyVAL.item = append(setOprList1, setOprList2...) } - case 1893: + case 1899: { parser.yyVAL.item = []ast.Node{yyS[yypt-0].statement.(*ast.SelectStmt)} } - case 1894: + case 1900: { var setOprList []ast.Node switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -20507,7 +20637,7 @@ yynewstate: } parser.yyVAL.item = setOprList } - case 1895: + case 1901: { var tp ast.SetOprType tp = ast.Union @@ -20516,7 +20646,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1896: + case 1902: { var tp ast.SetOprType tp = ast.Except @@ -20525,7 +20655,7 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1897: + case 1903: { var tp ast.SetOprType tp = ast.Intersect @@ -20534,19 +20664,19 @@ yynewstate: } parser.yyVAL.item = &tp } - case 1899: + case 1905: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1900: + case 1906: { parser.yyVAL.statement = &ast.SetPwdStmt{Password: yyS[yypt-0].ident} } - case 1901: + case 1907: { parser.yyVAL.statement = &ast.SetPwdStmt{User: yyS[yypt-2].item.(*auth.UserIdentity), Password: yyS[yypt-0].ident} } - case 1902: + case 1908: { vars := yyS[yypt-0].item.([]*ast.VariableAssignment) for _, v := range vars { @@ -20554,11 +20684,11 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: vars} } - case 1903: + case 1909: { parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)} } - case 1904: + case 1910: { assigns := yyS[yypt-0].item.([]*ast.VariableAssignment) for i := 0; i < len(assigns); i++ { @@ -20569,27 +20699,27 @@ yynewstate: } parser.yyVAL.statement = &ast.SetStmt{Variables: assigns} } - case 1905: + case 1911: { parser.yyVAL.statement = &ast.SetConfigStmt{Type: strings.ToLower(yyS[yypt-3].ident), Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1906: + case 1912: { parser.yyVAL.statement = &ast.SetConfigStmt{Instance: yyS[yypt-3].ident, Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr} } - case 1907: + case 1913: { parser.yyVAL.statement = &ast.SetSessionStatesStmt{SessionStates: yyS[yypt-0].ident} } - case 1908: + case 1914: { parser.yyVAL.statement = &ast.SetResourceGroupStmt{Name: model.NewCIStr(yyS[yypt-0].ident)} } - case 1909: + case 1915: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.SetRoleStmt) } - case 1910: + case 1916: { tmp := yyS[yypt-2].item.(*ast.SetRoleStmt) parser.yyVAL.statement = &ast.SetDefaultRoleStmt{ @@ -20598,27 +20728,27 @@ yynewstate: UserList: yyS[yypt-0].item.([]*auth.UserIdentity), } } - case 1911: + case 1917: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleNone, RoleList: nil} } - case 1912: + case 1918: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAll, RoleList: nil} } - case 1913: + case 1919: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleRegular, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1914: + case 1920: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAllExcept, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)} } - case 1916: + case 1922: { parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleDefault, RoleList: nil} } - case 1917: + case 1923: { if yyS[yypt-0].item != nil { parser.yyVAL.item = yyS[yypt-0].item @@ -20626,7 +20756,7 @@ yynewstate: parser.yyVAL.item = []*ast.VariableAssignment{} } } - case 1918: + case 1924: { if yyS[yypt-0].item != nil { varAssigns := yyS[yypt-0].item.([]*ast.VariableAssignment) @@ -20635,28 +20765,28 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 1919: + case 1925: { 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 1920: + case 1926: { 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 1921: + case 1927: { 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 1922: + case 1928: { varAssigns := []*ast.VariableAssignment{} asof := yyS[yypt-0].item.(*ast.AsOfClause) @@ -20665,59 +20795,59 @@ yynewstate: } parser.yyVAL.item = varAssigns } - case 1923: + case 1929: { parser.yyVAL.ident = ast.RepeatableRead } - case 1924: + case 1930: { parser.yyVAL.ident = ast.ReadCommitted } - case 1925: + case 1931: { parser.yyVAL.ident = ast.ReadUncommitted } - case 1926: + case 1932: { parser.yyVAL.ident = ast.Serializable } - case 1927: + case 1933: { parser.yyVAL.expr = ast.NewValueExpr("ON", parser.charset, parser.collation) } - case 1928: + case 1934: { parser.yyVAL.expr = ast.NewValueExpr("BINARY", parser.charset, parser.collation) } - case 1933: + case 1939: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1935: + case 1941: { parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident } - case 1936: + case 1942: { parser.yyVAL.ident = yyS[yypt-2].ident + "-" + yyS[yypt-0].ident } - case 1937: + case 1943: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1938: + case 1944: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsGlobal: true, IsSystem: true} } - case 1939: + case 1945: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1940: + case 1946: { parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true} } - case 1941: + case 1947: { v := strings.ToLower(yyS[yypt-2].ident) var isGlobal bool @@ -20733,27 +20863,27 @@ yynewstate: } parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr, IsGlobal: isGlobal, IsSystem: true} } - case 1942: + case 1948: { v := yyS[yypt-2].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr} } - case 1943: + case 1949: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1944: + case 1950: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, Value: ast.NewValueExpr(yyS[yypt-2].ident, "", ""), } } - case 1945: + case 1951: { parser.yyVAL.item = &ast.VariableAssignment{ Name: ast.SetNames, @@ -20761,24 +20891,24 @@ yynewstate: ExtendValue: ast.NewValueExpr(yyS[yypt-0].ident, "", ""), } } - case 1946: + case 1952: { v := &ast.DefaultExpr{} parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetNames, Value: v} } - case 1947: + case 1953: { parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetCharset, Value: yyS[yypt-0].expr} } - case 1948: + case 1954: { parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].ident, "", "") } - case 1949: + case 1955: { parser.yyVAL.expr = &ast.DefaultExpr{} } - case 1950: + case 1956: { // Validate input charset name to keep the same behavior as parser of MySQL. cs, err := charset.GetCharsetInfo(yyS[yypt-0].ident) @@ -20790,11 +20920,11 @@ yynewstate: // to keep lower case of input for generated column restore. parser.yyVAL.ident = cs.Name } - case 1951: + case 1957: { parser.yyVAL.ident = charset.CharsetBin } - case 1952: + case 1958: { info, err := charset.GetCollationByName(yyS[yypt-0].ident) if err != nil { @@ -20803,19 +20933,19 @@ yynewstate: } parser.yyVAL.ident = info.Name } - case 1953: + case 1959: { parser.yyVAL.ident = charset.CollationBin } - case 1954: + case 1960: { parser.yyVAL.item = []*ast.VariableAssignment{yyS[yypt-0].item.(*ast.VariableAssignment)} } - case 1955: + case 1961: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.VariableAssignment), yyS[yypt-0].item.(*ast.VariableAssignment)) } - case 1958: + case 1964: { v := strings.ToLower(yyS[yypt-0].ident) var isGlobal bool @@ -20832,97 +20962,97 @@ yynewstate: } parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: isGlobal, IsSystem: true, ExplicitScope: explicitScope} } - case 1959: + case 1965: { v := yyS[yypt-0].ident v = strings.TrimPrefix(v, "@") parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: false, IsSystem: false} } - case 1960: + case 1966: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1961: + case 1967: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1962: + case 1968: { parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1963: + case 1969: { parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true} } - case 1964: + case 1970: { parser.yyVAL.item = []*auth.UserIdentity{yyS[yypt-0].item.(*auth.UserIdentity)} } - case 1965: + case 1971: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.UserIdentity), yyS[yypt-0].item.(*auth.UserIdentity)) } - case 1967: + case 1973: { parser.yyVAL.ident = yyS[yypt-1].ident } - case 1971: + case 1977: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)} } - case 1972: + case 1978: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))} } - case 1973: + case 1979: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1974: + case 1980: { parser.yyVAL.item = yyS[yypt-0].item } - case 1975: + case 1981: { parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"} } - case 1976: + case 1982: { parser.yyVAL.item = yyS[yypt-0].item } - case 1977: + case 1983: { parser.yyVAL.item = []*auth.RoleIdentity{yyS[yypt-0].item.(*auth.RoleIdentity)} } - case 1978: + case 1984: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.RoleIdentity), yyS[yypt-0].item.(*auth.RoleIdentity)) } - case 1979: + case 1985: { parser.yyVAL.item = &ast.LimitSimple{Offset: 0, Count: yyS[yypt-0].item.(uint64)} } - case 1980: + case 1986: { parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-2].item.(uint64), Count: yyS[yypt-0].item.(uint64)} } - case 1981: + case 1987: { parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-0].item.(uint64), Count: yyS[yypt-2].item.(uint64)} } - case 1982: + case 1988: { parser.yyVAL.item = ast.BDRRolePrimary } - case 1983: + case 1989: { parser.yyVAL.item = ast.BDRRoleSecondary } - case 1984: + case 1990: { parser.yyVAL.statement = &ast.AdminStmt{Tp: ast.AdminShowDDL} } - case 1985: + case 1991: { stmt := &ast.AdminStmt{Tp: ast.AdminShowDDLJobs} if yyS[yypt-0].item != nil { @@ -20930,7 +21060,7 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1986: + case 1992: { stmt := &ast.AdminStmt{ Tp: ast.AdminShowDDLJobs, @@ -20941,21 +21071,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 1987: + case 1993: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowNextRowID, Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)}, } } - case 1988: + case 1994: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1989: + case 1995: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndex, @@ -20963,7 +21093,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1990: + case 1996: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminRecoverIndex, @@ -20971,7 +21101,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1991: + case 1997: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCleanupIndex, @@ -20979,7 +21109,7 @@ yynewstate: Index: string(yyS[yypt-0].ident), } } - case 1992: + case 1998: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCheckIndexRange, @@ -20988,42 +21118,42 @@ yynewstate: HandleRanges: yyS[yypt-0].item.([]ast.HandleRange), } } - case 1993: + case 1999: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminChecksumTable, Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 1994: + case 2000: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCancelDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1995: + case 2001: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPauseDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1996: + case 2002: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminResumeDDLJobs, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1997: + case 2003: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowDDLJobQueries, JobIDs: yyS[yypt-0].item.([]int64), } } - case 1998: + case 2004: { ret := &ast.AdminStmt{ Tp: ast.AdminShowDDLJobQueriesWithRange, @@ -21032,122 +21162,145 @@ yynewstate: ret.LimitSimple.Offset = yyS[yypt-0].item.(*ast.LimitSimple).Offset parser.yyVAL.statement = ret } - case 1999: + case 2005: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowSlow, ShowSlow: yyS[yypt-0].item.(*ast.ShowSlow), } } - case 2000: + case 2006: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadExprPushdownBlacklist, } } - case 2001: + case 2007: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadOptRuleBlacklist, } } - case 2002: + case 2008: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginEnable, Plugins: yyS[yypt-0].item.([]string), } } - case 2003: + case 2009: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminPluginDisable, Plugins: yyS[yypt-0].item.([]string), } } - case 2004: + case 2010: { parser.yyVAL.statement = &ast.CleanupTableLockStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2005: + case 2011: { parser.yyVAL.statement = &ast.RepairTableStmt{ Table: yyS[yypt-1].item.(*ast.TableName), CreateStmt: yyS[yypt-0].statement.(*ast.CreateTableStmt), } } - case 2006: + case 2012: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushBindings, } } - case 2007: + case 2013: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminCaptureBindings, } } - case 2008: + case 2014: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminEvolveBindings, } } - case 2009: + case 2015: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadBindings, } } - case 2010: + case 2016: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 2011: + case 2017: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminReloadStatistics, } } - case 2012: + case 2018: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminFlushPlanCache, StatementScope: yyS[yypt-1].item.(ast.StatementScope), } } - case 2013: + case 2019: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminSetBDRRole, BDRRole: yyS[yypt-0].item.(ast.BDRRole), } } - case 2014: + case 2020: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminShowBDRRole, } } - case 2015: + case 2021: { parser.yyVAL.statement = &ast.AdminStmt{ Tp: ast.AdminUnsetBDRRole, } } - case 2016: + case 2022: + { + parser.yyVAL.statement = &ast.AdminStmt{ + Tp: ast.AdminAlterDDLJob, + JobNumber: yyS[yypt-1].item.(int64), + AlterJobOptions: yyS[yypt-0].item.([]*ast.AlterJobOption), + } + } + case 2023: + { + parser.yyVAL.item = []*ast.AlterJobOption{yyS[yypt-0].item.(*ast.AlterJobOption)} + } + case 2024: + { + parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterJobOption), yyS[yypt-0].item.(*ast.AlterJobOption)) + } + case 2025: + { + parser.yyVAL.item = &ast.AlterJobOption{ + Name: strings.ToLower(yyS[yypt-2].ident), + Value: yyS[yypt-0].expr.(ast.ExprNode), + } + } + case 2026: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowRecent, Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2017: + case 2027: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -21155,7 +21308,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2018: + case 2028: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -21163,7 +21316,7 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2019: + case 2029: { parser.yyVAL.item = &ast.ShowSlow{ Tp: ast.ShowSlowTop, @@ -21171,27 +21324,27 @@ yynewstate: Count: getUint64FromNUM(yyS[yypt-0].item), } } - case 2020: + case 2030: { parser.yyVAL.item = []ast.HandleRange{yyS[yypt-0].item.(ast.HandleRange)} } - case 2021: + case 2031: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.HandleRange), yyS[yypt-0].item.(ast.HandleRange)) } - case 2022: + case 2032: { parser.yyVAL.item = ast.HandleRange{Begin: yyS[yypt-3].item.(int64), End: yyS[yypt-1].item.(int64)} } - case 2023: + case 2033: { parser.yyVAL.item = []int64{yyS[yypt-0].item.(int64)} } - case 2024: + case 2034: { parser.yyVAL.item = append(yyS[yypt-2].item.([]int64), yyS[yypt-0].item.(int64)) } - case 2025: + case 2035: { stmt := yyS[yypt-1].item.(*ast.ShowStmt) if yyS[yypt-0].item != nil { @@ -21203,21 +21356,21 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 2026: + case 2036: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2027: + case 2037: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateView, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2028: + case 2038: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateDatabase, @@ -21225,28 +21378,28 @@ yynewstate: DBName: yyS[yypt-0].ident, } } - case 2029: + case 2039: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateSequence, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2030: + case 2040: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreatePlacementPolicy, DBName: yyS[yypt-0].ident, } } - case 2031: + case 2041: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateResourceGroup, ResourceGroupName: yyS[yypt-0].ident, } } - case 2032: + case 2042: { // See https://dev.mysql.com/doc/refman/5.7/en/show-create-user.html parser.yyVAL.statement = &ast.ShowStmt{ @@ -21254,7 +21407,7 @@ yynewstate: User: yyS[yypt-0].item.(*auth.UserIdentity), } } - case 2033: + case 2043: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -21266,14 +21419,14 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 2034: + case 2044: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowTableNextRowId, Table: yyS[yypt-1].item.(*ast.TableName), } } - case 2035: + case 2045: { stmt := &ast.ShowStmt{ Tp: ast.ShowRegions, @@ -21286,12 +21439,12 @@ yynewstate: } parser.yyVAL.statement = stmt } - case 2036: + case 2046: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html parser.yyVAL.statement = &ast.ShowStmt{Tp: ast.ShowGrants} } - case 2037: + case 2047: { // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html if yyS[yypt-0].item != nil { @@ -21308,38 +21461,38 @@ yynewstate: } } } - case 2038: + case 2048: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowMasterStatus, } } - case 2039: + case 2049: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowBinlogStatus, } } - case 2040: + case 2050: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowReplicaStatus, } } - case 2041: + case 2051: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProcessList, Full: yyS[yypt-1].item.(bool), } } - case 2042: + case 2052: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowProfiles, } } - case 2043: + case 2053: { v := &ast.ShowStmt{ Tp: ast.ShowProfile, @@ -21355,23 +21508,23 @@ yynewstate: } parser.yyVAL.statement = v } - case 2044: + case 2054: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowPrivileges, } } - case 2045: + case 2055: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowBuiltins, } } - case 2046: + case 2056: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.ShowStmt) } - case 2047: + case 2057: { v := yyS[yypt-0].item.(int64) parser.yyVAL.statement = &ast.ShowStmt{ @@ -21379,28 +21532,28 @@ yynewstate: ImportJobID: &v, } } - case 2048: + case 2058: { parser.yyVAL.statement = &ast.ShowStmt{ Tp: ast.ShowCreateProcedure, Procedure: yyS[yypt-0].item.(*ast.TableName), } } - case 2049: + case 2059: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForDatabase, DBName: yyS[yypt-0].ident, } } - case 2050: + case 2060: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForTable, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2051: + case 2061: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlacementForPartition, @@ -21408,90 +21561,90 @@ yynewstate: Partition: model.NewCIStr(yyS[yypt-0].ident), } } - case 2052: + case 2062: { parser.yyVAL.item = nil } - case 2054: + case 2064: { parser.yyVAL.item = []int{yyS[yypt-0].item.(int)} } - case 2055: + case 2065: { l := yyS[yypt-2].item.([]int) l = append(l, yyS[yypt-0].item.(int)) parser.yyVAL.item = l } - case 2056: + case 2066: { parser.yyVAL.item = ast.ProfileTypeCPU } - case 2057: + case 2067: { parser.yyVAL.item = ast.ProfileTypeMemory } - case 2058: + case 2068: { parser.yyVAL.item = ast.ProfileTypeBlockIo } - case 2059: + case 2069: { parser.yyVAL.item = ast.ProfileTypeContextSwitch } - case 2060: + case 2070: { parser.yyVAL.item = ast.ProfileTypePageFaults } - case 2061: + case 2071: { parser.yyVAL.item = ast.ProfileTypeIpc } - case 2062: + case 2072: { parser.yyVAL.item = ast.ProfileTypeSwaps } - case 2063: + case 2073: { parser.yyVAL.item = ast.ProfileTypeSource } - case 2064: + case 2074: { parser.yyVAL.item = ast.ProfileTypeAll } - case 2065: + case 2075: { parser.yyVAL.item = nil } - case 2066: + case 2076: { v := yyS[yypt-0].item.(int64) parser.yyVAL.item = &v } - case 2067: + case 2077: { parser.yyVAL.item = nil } - case 2068: + case 2078: { parser.yyVAL.item = yyS[yypt-0].item.([]*auth.RoleIdentity) } - case 2074: + case 2084: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowEngines} } - case 2075: + case 2085: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowDatabases} } - case 2076: + case 2086: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowConfig} } - case 2077: + case 2087: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowCharset} } - case 2078: + case 2088: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTables, @@ -21499,28 +21652,28 @@ yynewstate: Full: yyS[yypt-2].item.(bool), } } - case 2079: + case 2089: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowOpenTables, DBName: yyS[yypt-0].ident, } } - case 2080: + case 2090: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTableStatus, DBName: yyS[yypt-0].ident, } } - case 2081: + case 2091: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowIndex, Table: yyS[yypt-0].item.(*ast.TableName), } } - case 2082: + case 2092: { show := &ast.ShowStmt{ Tp: ast.ShowIndex, @@ -21528,7 +21681,7 @@ yynewstate: } parser.yyVAL.item = show } - case 2083: + case 2093: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -21537,7 +21690,7 @@ yynewstate: Full: yyS[yypt-3].item.(bool), } } - case 2084: + case 2094: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowColumns, @@ -21547,69 +21700,69 @@ yynewstate: Extended: true, } } - case 2085: + case 2095: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings, CountWarningsOrErrors: true} } - case 2086: + case 2096: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings} } - case 2087: + case 2097: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors, CountWarningsOrErrors: true} } - case 2088: + case 2098: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors} } - case 2089: + case 2099: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowVariables, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2090: + case 2100: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowStatus, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2091: + case 2101: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindings, GlobalScope: yyS[yypt-1].item.(bool), } } - case 2092: + case 2102: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowCollation, } } - case 2093: + case 2103: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowTriggers, DBName: yyS[yypt-0].ident, } } - case 2094: + case 2104: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowBindingCacheStatus, } } - case 2095: + case 2105: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowProcedureStatus, } } - case 2096: + case 2106: { // 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 @@ -21619,88 +21772,88 @@ yynewstate: Tp: ast.ShowFunctionStatus, } } - case 2097: + case 2107: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowEvents, DBName: yyS[yypt-0].ident, } } - case 2098: + case 2108: { parser.yyVAL.item = &ast.ShowStmt{ Tp: ast.ShowPlugins, } } - case 2099: + case 2109: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowSessionStates} } - case 2100: + case 2110: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsExtended} } - case 2101: + case 2111: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsMeta, Table: &ast.TableName{Name: model.NewCIStr("STATS_META"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2102: + case 2112: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHistograms, Table: &ast.TableName{Name: model.NewCIStr("STATS_HISTOGRAMS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2103: + case 2113: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsTopN} } - case 2104: + case 2114: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsBuckets, Table: &ast.TableName{Name: model.NewCIStr("STATS_BUCKETS"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2105: + case 2115: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHealthy} } - case 2106: + case 2116: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsLocked, Table: &ast.TableName{Name: model.NewCIStr("STATS_TABLE_LOCKED"), Schema: model.NewCIStr(mysql.SystemDB)}} } - case 2107: + case 2117: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowHistogramsInFlight} } - case 2108: + case 2118: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowColumnStatsUsage} } - case 2109: + case 2119: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowAnalyzeStatus} } - case 2110: + case 2120: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowBackups} } - case 2111: + case 2121: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowRestores} } - case 2112: + case 2122: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacement} } - case 2113: + case 2123: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacementLabels} } - case 2114: + case 2124: { parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowImportJobs} } - case 2115: + case 2125: { parser.yyVAL.item = nil } - case 2116: + case 2126: { parser.yyVAL.item = &ast.PatternLikeOrIlikeExpr{ Pattern: yyS[yypt-0].expr, @@ -21708,105 +21861,105 @@ yynewstate: IsLike: true, } } - case 2117: + case 2127: { parser.yyVAL.item = yyS[yypt-0].expr } - case 2118: + case 2128: { parser.yyVAL.item = false } - case 2119: + case 2129: { parser.yyVAL.item = true } - case 2120: + case 2130: { parser.yyVAL.item = false } - case 2121: + case 2131: { parser.yyVAL.item = ast.StatementScopeSession } - case 2122: + case 2132: { parser.yyVAL.item = ast.StatementScopeGlobal } - case 2123: + case 2133: { parser.yyVAL.item = ast.StatementScopeInstance } - case 2124: + case 2134: { parser.yyVAL.item = ast.StatementScopeSession } - case 2125: + case 2135: { parser.yyVAL.item = false } - case 2126: + case 2136: { parser.yyVAL.item = true } - case 2127: + case 2137: { parser.yyVAL.ident = "" } - case 2128: + case 2138: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2129: + case 2139: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.TableName) } - case 2132: + case 2142: { tmp := yyS[yypt-0].item.(*ast.FlushStmt) tmp.NoWriteToBinLog = yyS[yypt-1].item.(bool) parser.yyVAL.statement = tmp } - case 2133: + case 2143: { parser.yyVAL.item = []string{yyS[yypt-0].ident} } - case 2134: + case 2144: { parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident) } - case 2135: + case 2145: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushPrivileges, } } - case 2136: + case 2146: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushStatus, } } - case 2137: + case 2147: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTiDBPlugin, Plugins: yyS[yypt-0].item.([]string), } } - case 2138: + case 2148: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushHosts, } } - case 2139: + case 2149: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushLogs, LogType: yyS[yypt-1].item.(ast.LogType), } } - case 2140: + case 2150: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushTables, @@ -21814,61 +21967,61 @@ yynewstate: ReadLock: yyS[yypt-0].item.(bool), } } - case 2141: + case 2151: { parser.yyVAL.item = &ast.FlushStmt{ Tp: ast.FlushClientErrorsSummary, } } - case 2142: + case 2152: { parser.yyVAL.item = ast.LogTypeDefault } - case 2143: + case 2153: { parser.yyVAL.item = ast.LogTypeBinary } - case 2144: + case 2154: { parser.yyVAL.item = ast.LogTypeEngine } - case 2145: + case 2155: { parser.yyVAL.item = ast.LogTypeError } - case 2146: + case 2156: { parser.yyVAL.item = ast.LogTypeGeneral } - case 2147: + case 2157: { parser.yyVAL.item = ast.LogTypeSlow } - case 2148: + case 2158: { parser.yyVAL.item = false } - case 2149: + case 2159: { parser.yyVAL.item = true } - case 2150: + case 2160: { parser.yyVAL.item = true } - case 2151: + case 2161: { parser.yyVAL.item = []*ast.TableName{} } - case 2153: + case 2163: { parser.yyVAL.item = false } - case 2154: + case 2164: { parser.yyVAL.item = true } - case 2232: + case 2242: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -21881,7 +22034,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2259: + case 2270: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -21894,7 +22047,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2275: + case 2286: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -21907,7 +22060,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2278: + case 2289: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -21917,7 +22070,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2279: + case 2290: { if yyS[yypt-0].statement != nil { s := yyS[yypt-0].statement @@ -21927,7 +22080,7 @@ yynewstate: parser.result = append(parser.result, s) } } - case 2280: + case 2291: { cst := yyS[yypt-0].item.(*ast.Constraint) if yyS[yypt-1].item != nil { @@ -21936,7 +22089,7 @@ yynewstate: } parser.yyVAL.item = cst } - case 2281: + case 2292: { c := &ast.Constraint{ IfNotExists: yyS[yypt-5].item.(bool), @@ -21971,7 +22124,7 @@ yynewstate: } parser.yyVAL.item = c } - case 2282: + case 2293: { cst := yyS[yypt-0].item.(*ast.Constraint) if yyS[yypt-1].item != nil { @@ -21980,11 +22133,11 @@ yynewstate: } parser.yyVAL.item = cst } - case 2283: + case 2294: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.Constraint) } - case 2288: + case 2299: { if yyS[yypt-0].item != nil { parser.yyVAL.item = []interface{}{yyS[yypt-0].item.(interface{})} @@ -21992,7 +22145,7 @@ yynewstate: parser.yyVAL.item = []interface{}{} } } - case 2289: + case 2300: { if yyS[yypt-0].item != nil { parser.yyVAL.item = append(yyS[yypt-2].item.([]interface{}), yyS[yypt-0].item) @@ -22000,7 +22153,7 @@ yynewstate: parser.yyVAL.item = yyS[yypt-2].item } } - case 2290: + case 2301: { var columnDefs []*ast.ColumnDef var constraints []*ast.Constraint @@ -22009,7 +22162,7 @@ yynewstate: Constraints: constraints, } } - case 2291: + case 2302: { tes := yyS[yypt-1].item.([]interface{}) var columnDefs []*ast.ColumnDef @@ -22027,69 +22180,69 @@ yynewstate: Constraints: constraints, } } - case 2293: + case 2304: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCharset, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2294: + case 2305: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCollate, StrValue: yyS[yypt-0].ident, UintValue: ast.TableOptionCharsetWithoutConvertTo} } - case 2295: + case 2306: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIncrement, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2296: + case 2307: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIdCache, UintValue: yyS[yypt-0].item.(uint64)} } - case 2297: + case 2308: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoRandomBase, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)} } - case 2298: + case 2309: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAvgRowLength, UintValue: yyS[yypt-0].item.(uint64)} } - case 2299: + case 2310: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionConnection, StrValue: yyS[yypt-0].ident} } - case 2300: + case 2311: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2301: + case 2312: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTableCheckSum, UintValue: yyS[yypt-0].item.(uint64)} } - case 2302: + case 2313: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionPassword, StrValue: yyS[yypt-0].ident} } - case 2303: + case 2314: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCompression, StrValue: yyS[yypt-0].ident} } - case 2304: + case 2315: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionKeyBlockSize, UintValue: yyS[yypt-0].item.(uint64)} } - case 2305: + case 2316: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionDelayKeyWrite, UintValue: yyS[yypt-0].item.(uint64)} } - case 2306: + case 2317: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionRowFormat, UintValue: yyS[yypt-0].item.(uint64)} } - case 2307: + case 2318: { parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsPersistent} } - case 2308: + case 2319: { n := yyS[yypt-0].item.(uint64) if n != 0 && n != 1 { @@ -22100,13 +22253,13 @@ yynewstate: yylex.AppendError(yylex.Errorf("The STATS_AUTO_RECALC is parsed but ignored by all storage engines.")) parser.lastErrorAsWarn() } - case 2309: + case 2320: { 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 2310: + case 2321: { // Parse it but will ignore it. // In MySQL, STATS_SAMPLE_PAGES=N(Where 0 1 { @@ -24133,7 +24286,7 @@ yynewstate: OptEnclosed: true, } } - case 2676: + case 2687: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -24145,7 +24298,7 @@ yynewstate: Value: str, } } - case 2677: + case 2688: { str := yyS[yypt-0].ident if str != "\\" && len(str) > 1 { @@ -24157,14 +24310,14 @@ yynewstate: Value: str, } } - case 2678: + case 2689: { parser.yyVAL.item = &ast.FieldItem{ Type: ast.DefinedNullBy, Value: yyS[yypt-0].item.(*ast.TextString).Value, } } - case 2679: + case 2690: { parser.yyVAL.item = &ast.FieldItem{ Type: ast.DefinedNullBy, @@ -24172,89 +24325,89 @@ yynewstate: OptEnclosed: true, } } - case 2681: + case 2692: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2682: + case 2693: { parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString() } - case 2683: + case 2694: { parser.yyVAL.item = (*ast.LinesClause)(nil) } - case 2684: + case 2695: { parser.yyVAL.item = &ast.LinesClause{Starting: yyS[yypt-1].item.(*string), Terminated: yyS[yypt-0].item.(*string)} } - case 2685: + case 2696: { parser.yyVAL.item = (*string)(nil) } - case 2686: + case 2697: { s := yyS[yypt-0].ident parser.yyVAL.item = &s } - case 2687: + case 2698: { parser.yyVAL.item = (*string)(nil) } - case 2688: + case 2699: { s := yyS[yypt-0].ident parser.yyVAL.item = &s } - case 2689: + case 2700: { parser.yyVAL.item = ([]*ast.Assignment)(nil) } - case 2690: + case 2701: { parser.yyVAL.item = yyS[yypt-0].item } - case 2691: + case 2702: { l := yyS[yypt-2].item.([]*ast.Assignment) parser.yyVAL.item = append(l, yyS[yypt-0].item.(*ast.Assignment)) } - case 2692: + case 2703: { parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)} } - case 2693: + case 2704: { parser.yyVAL.item = &ast.Assignment{ Column: yyS[yypt-2].expr.(*ast.ColumnNameExpr).Name, Expr: yyS[yypt-0].expr, } } - case 2694: + case 2705: { parser.yyVAL.item = []*ast.LoadDataOpt{} } - case 2695: + case 2706: { parser.yyVAL.item = yyS[yypt-0].item.([]*ast.LoadDataOpt) } - case 2696: + case 2707: { parser.yyVAL.item = []*ast.LoadDataOpt{yyS[yypt-0].item.(*ast.LoadDataOpt)} } - case 2697: + case 2708: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.LoadDataOpt), yyS[yypt-0].item.(*ast.LoadDataOpt)) } - case 2698: + case 2709: { parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-0].ident)} } - case 2699: + case 2710: { parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-2].ident), Value: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2700: + case 2711: { parser.yyVAL.statement = &ast.ImportIntoStmt{ Table: yyS[yypt-6].item.(*ast.TableName), @@ -24265,7 +24418,7 @@ yynewstate: Options: yyS[yypt-0].item.([]*ast.LoadDataOpt), } } - case 2701: + case 2712: { st := &ast.ImportIntoStmt{ Table: yyS[yypt-5].item.(*ast.TableName), @@ -24285,19 +24438,19 @@ yynewstate: } parser.yyVAL.statement = st } - case 2702: + case 2713: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2703: + case 2714: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2704: + case 2715: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2705: + case 2716: { var sel ast.ResultSetNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -24310,48 +24463,48 @@ yynewstate: } parser.yyVAL.statement = sel.(ast.StmtNode) } - case 2706: + case 2717: { parser.yyVAL.statement = &ast.UnlockTablesStmt{} } - case 2707: + case 2718: { parser.yyVAL.statement = &ast.LockTablesStmt{ TableLocks: yyS[yypt-0].item.([]ast.TableLock), } } - case 2710: + case 2721: { parser.yyVAL.item = ast.TableLock{ Table: yyS[yypt-1].item.(*ast.TableName), Type: yyS[yypt-0].item.(model.TableLockType), } } - case 2711: + case 2722: { parser.yyVAL.item = model.TableLockRead } - case 2712: + case 2723: { parser.yyVAL.item = model.TableLockReadLocal } - case 2713: + case 2724: { parser.yyVAL.item = model.TableLockWrite } - case 2714: + case 2725: { parser.yyVAL.item = model.TableLockWriteLocal } - case 2715: + case 2726: { parser.yyVAL.item = []ast.TableLock{yyS[yypt-0].item.(ast.TableLock)} } - case 2716: + case 2727: { parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.TableLock), yyS[yypt-0].item.(ast.TableLock)) } - case 2717: + case 2728: { parser.yyVAL.statement = &ast.NonTransactionalDMLStmt{ DryRun: yyS[yypt-1].item.(int), @@ -24360,48 +24513,48 @@ yynewstate: DMLStmt: yyS[yypt-0].statement.(ast.ShardableDMLStmt), } } - case 2722: + case 2733: { parser.yyVAL.item = ast.NoDryRun } - case 2723: + case 2734: { parser.yyVAL.item = ast.DryRunSplitDml } - case 2724: + case 2735: { parser.yyVAL.item = ast.DryRunQuery } - case 2725: + case 2736: { parser.yyVAL.item = (*ast.ColumnName)(nil) } - case 2726: + case 2737: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.ColumnName) } - case 2727: + case 2738: { parser.yyVAL.statement = &ast.OptimizeTableStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), NoWriteToBinLog: yyS[yypt-2].item.(bool), } } - case 2728: + case 2739: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-1].item.(bool), } } - case 2729: + case 2740: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2730: + case 2741: { parser.yyVAL.statement = &ast.KillStmt{ ConnectionID: getUint64FromNUM(yyS[yypt-0].item), @@ -24409,34 +24562,34 @@ yynewstate: TiDBExtension: yyS[yypt-2].item.(bool), } } - case 2731: + case 2742: { parser.yyVAL.statement = &ast.KillStmt{ TiDBExtension: yyS[yypt-1].item.(bool), Expr: yyS[yypt-0].expr, } } - case 2732: + case 2743: { parser.yyVAL.item = false } - case 2733: + case 2744: { parser.yyVAL.item = true } - case 2734: + case 2745: { parser.yyVAL.statement = &ast.LoadStatsStmt{ Path: yyS[yypt-0].ident, } } - case 2735: + case 2746: { parser.yyVAL.statement = &ast.LockStatsStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2736: + case 2747: { x := yyS[yypt-2].item.(*ast.TableName) x.PartitionNames = yyS[yypt-0].item.([]model.CIStr) @@ -24444,7 +24597,7 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2737: + case 2748: { x := yyS[yypt-4].item.(*ast.TableName) x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) @@ -24452,13 +24605,13 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2738: + case 2749: { parser.yyVAL.statement = &ast.UnlockStatsStmt{ Tables: yyS[yypt-0].item.([]*ast.TableName), } } - case 2739: + case 2750: { x := yyS[yypt-2].item.(*ast.TableName) x.PartitionNames = yyS[yypt-0].item.([]model.CIStr) @@ -24466,7 +24619,7 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2740: + case 2751: { x := yyS[yypt-4].item.(*ast.TableName) x.PartitionNames = yyS[yypt-1].item.([]model.CIStr) @@ -24474,14 +24627,14 @@ yynewstate: Tables: []*ast.TableName{x}, } } - case 2741: + case 2752: { parser.yyVAL.statement = &ast.DropPlacementPolicyStmt{ IfExists: yyS[yypt-1].item.(bool), PolicyName: model.NewCIStr(yyS[yypt-0].ident), } } - case 2742: + case 2753: { parser.yyVAL.statement = &ast.CreateResourceGroupStmt{ IfNotExists: yyS[yypt-2].item.(bool), @@ -24489,7 +24642,7 @@ yynewstate: ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption), } } - case 2743: + case 2754: { parser.yyVAL.statement = &ast.AlterResourceGroupStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -24497,14 +24650,14 @@ yynewstate: ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption), } } - case 2744: + case 2755: { parser.yyVAL.statement = &ast.DropResourceGroupStmt{ IfExists: yyS[yypt-1].item.(bool), ResourceGroupName: model.NewCIStr(yyS[yypt-0].ident), } } - case 2745: + case 2756: { parser.yyVAL.statement = &ast.CreatePlacementPolicyStmt{ OrReplace: yyS[yypt-5].item.(bool), @@ -24513,7 +24666,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2746: + case 2757: { parser.yyVAL.statement = &ast.AlterPlacementPolicyStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -24521,7 +24674,7 @@ yynewstate: PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption), } } - case 2747: + case 2758: { parser.yyVAL.statement = &ast.CreateSequenceStmt{ IfNotExists: yyS[yypt-3].item.(bool), @@ -24530,87 +24683,87 @@ yynewstate: TblOptions: yyS[yypt-0].item.([]*ast.TableOption), } } - case 2748: + case 2759: { parser.yyVAL.item = []*ast.SequenceOption{} } - case 2750: + case 2761: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2751: + case 2762: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2752: + case 2763: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2753: + case 2764: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)} } - case 2754: + case 2765: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2755: + case 2766: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2756: + case 2767: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMinValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2757: + case 2768: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2758: + case 2769: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue} } - case 2759: + case 2770: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMaxValue, IntValue: yyS[yypt-0].item.(int64)} } - case 2760: + case 2771: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2761: + case 2772: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue} } - case 2762: + case 2773: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCache, IntValue: yyS[yypt-0].item.(int64)} } - case 2763: + case 2774: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2764: + case 2775: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache} } - case 2765: + case 2776: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCycle} } - case 2766: + case 2777: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2767: + case 2778: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle} } - case 2769: + case 2780: { parser.yyVAL.item = yyS[yypt-0].item } - case 2770: + case 2781: { unsigned_num := getUint64FromNUM(yyS[yypt-0].item) if unsigned_num > 9223372036854775808 { @@ -24623,14 +24776,14 @@ yynewstate: parser.yyVAL.item = -int64(unsigned_num) } } - case 2771: + case 2782: { parser.yyVAL.statement = &ast.DropSequenceStmt{ IfExists: yyS[yypt-1].item.(bool), Sequences: yyS[yypt-0].item.([]*ast.TableName), } } - case 2772: + case 2783: { parser.yyVAL.statement = &ast.AlterSequenceStmt{ IfExists: yyS[yypt-2].item.(bool), @@ -24638,27 +24791,27 @@ yynewstate: SeqOptions: yyS[yypt-0].item.([]*ast.SequenceOption), } } - case 2773: + case 2784: { parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)} } - case 2774: + case 2785: { parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption)) } - case 2776: + case 2787: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestart} } - case 2777: + case 2788: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2778: + case 2789: { parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)} } - case 2779: + case 2790: { // Parse it but will ignore it switch yyS[yypt-0].ident { @@ -24673,19 +24826,19 @@ yynewstate: } parser.yyVAL.ident = yyS[yypt-0].ident } - case 2780: + case 2791: { parser.yyVAL.item = append([]*ast.RowExpr{}, yyS[yypt-0].item.(*ast.RowExpr)) } - case 2781: + case 2792: { parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.RowExpr), yyS[yypt-0].item.(*ast.RowExpr)) } - case 2782: + case 2793: { parser.yyVAL.item = &ast.RowExpr{Values: yyS[yypt-0].item.([]ast.ExprNode)} } - case 2783: + case 2794: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -24704,7 +24857,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2784: + case 2795: { x := &ast.PlanReplayerStmt{ Stmt: yyS[yypt-0].statement, @@ -24723,7 +24876,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2785: + case 2796: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24746,7 +24899,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2786: + case 2797: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24769,7 +24922,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2787: + case 2798: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24782,7 +24935,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 2788: + case 2799: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24795,7 +24948,7 @@ yynewstate: } parser.yyVAL.statement = x } - case 2789: + case 2800: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24809,7 +24962,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2790: + case 2801: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24824,7 +24977,7 @@ yynewstate: parser.yyVAL.statement = x } - case 2791: + case 2802: { x := &ast.PlanReplayerStmt{ Stmt: nil, @@ -24839,33 +24992,118 @@ yynewstate: parser.yyVAL.statement = x } - case 2792: + case 2803: { parser.yyVAL.item = nil } - case 2793: + case 2804: { parser.yyVAL.item = yyS[yypt-0].item.(*ast.AsOfClause) } - case 2794: + case 2805: + { + x := &ast.TrafficStmt{ + OpType: ast.TrafficOpCapture, + Dir: yyS[yypt-1].ident, + } + if yyS[yypt-0].item != nil { + x.Options = yyS[yypt-0].item.([]*ast.TrafficOption) + } + + parser.yyVAL.statement = x + } + case 2806: + { + x := &ast.TrafficStmt{ + OpType: ast.TrafficOpReplay, + Dir: yyS[yypt-1].ident, + } + if yyS[yypt-0].item != nil { + x.Options = yyS[yypt-0].item.([]*ast.TrafficOption) + } + + parser.yyVAL.statement = x + } + case 2807: + { + parser.yyVAL.statement = &ast.TrafficStmt{ + OpType: ast.TrafficOpShow, + } + } + case 2808: + { + parser.yyVAL.statement = &ast.TrafficStmt{ + OpType: ast.TrafficOpCancel, + } + } + case 2809: + { + parser.yyVAL.item = []*ast.TrafficOption{yyS[yypt-0].item.(*ast.TrafficOption)} + } + case 2810: + { + parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.TrafficOption), yyS[yypt-0].item.(*ast.TrafficOption)) + } + case 2811: + { + _, err := time.ParseDuration(yyS[yypt-0].ident) + if err != nil { + yylex.AppendError(yylex.Errorf("The DURATION option is not a valid duration: %s", err.Error())) + return 1 + } + parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionDuration, StrValue: yyS[yypt-0].ident} + } + case 2812: + { + parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionEncryptionMethod, StrValue: yyS[yypt-0].ident} + } + case 2813: + { + parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionCompress, BoolValue: yyS[yypt-0].item.(bool)} + } + case 2814: + { + parser.yyVAL.item = []*ast.TrafficOption{yyS[yypt-0].item.(*ast.TrafficOption)} + } + case 2815: + { + parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.TrafficOption), yyS[yypt-0].item.(*ast.TrafficOption)) + } + case 2816: + { + parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionUsername, StrValue: yyS[yypt-0].ident} + } + case 2817: + { + parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionPassword, StrValue: yyS[yypt-0].ident} + } + case 2818: + { + parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionSpeed, FloatValue: ast.NewValueExpr(yyS[yypt-0].item, "", "")} + } + case 2819: + { + parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionReadOnly, BoolValue: yyS[yypt-0].item.(bool)} + } + case 2820: { parser.yyVAL.item = []*ast.StoreParameter{} } - case 2795: + case 2821: { parser.yyVAL.item = yyS[yypt-0].item } - case 2796: + case 2822: { l := yyS[yypt-2].item.([]*ast.StoreParameter) l = append(l, yyS[yypt-0].item.(*ast.StoreParameter)) parser.yyVAL.item = l } - case 2797: + case 2823: { parser.yyVAL.item = []*ast.StoreParameter{yyS[yypt-0].item.(*ast.StoreParameter)} } - case 2798: + case 2824: { x := &ast.StoreParameter{ Paramstatus: yyS[yypt-2].item.(int), @@ -24874,23 +25112,23 @@ yynewstate: } parser.yyVAL.item = x } - case 2799: + case 2825: { parser.yyVAL.item = ast.MODE_IN } - case 2800: + case 2826: { parser.yyVAL.item = ast.MODE_IN } - case 2801: + case 2827: { parser.yyVAL.item = ast.MODE_OUT } - case 2802: + case 2828: { parser.yyVAL.item = ast.MODE_INOUT } - case 2805: + case 2831: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -24903,7 +25141,7 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2820: + case 2846: { var sel ast.StmtNode switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) { @@ -24916,29 +25154,29 @@ yynewstate: } parser.yyVAL.statement = sel } - case 2822: + case 2848: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2823: + case 2849: { parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)} } - case 2824: + case 2850: { l := yyS[yypt-2].item.([]string) l = append(l, strings.ToLower(yyS[yypt-0].ident)) parser.yyVAL.item = l } - case 2825: + case 2851: { parser.yyVAL.item = nil } - case 2826: + case 2852: { parser.yyVAL.item = yyS[yypt-0].expr } - case 2827: + case 2853: { x := &ast.ProcedureDecl{ DeclNames: yyS[yypt-2].item.([]string), @@ -24949,7 +25187,7 @@ yynewstate: } parser.yyVAL.item = x } - case 2828: + case 2854: { name := strings.ToLower(yyS[yypt-3].ident) parser.yyVAL.item = &ast.ProcedureCursor{ @@ -24957,7 +25195,7 @@ yynewstate: Selectstring: yyS[yypt-0].statement.(ast.StmtNode), } } - case 2829: + case 2855: { parser.yyVAL.item = &ast.ProcedureErrorControl{ ControlHandle: yyS[yypt-4].item.(int), @@ -24965,66 +25203,66 @@ yynewstate: Operate: yyS[yypt-0].statement.(ast.StmtNode), } } - case 2830: + case 2856: { parser.yyVAL.item = ast.PROCEDUR_CONTINUE } - case 2831: + case 2857: { parser.yyVAL.item = ast.PROCEDUR_EXIT } - case 2832: + case 2858: { parser.yyVAL.item = []ast.ErrNode{yyS[yypt-0].statement.(ast.ErrNode)} } - case 2833: + case 2859: { l := yyS[yypt-2].item.([]ast.ErrNode) l = append(l, yyS[yypt-0].statement.(ast.ErrNode)) parser.yyVAL.item = l } - case 2834: + case 2860: { parser.yyVAL.statement = yyS[yypt-0].statement.(ast.ErrNode) } - case 2835: + case 2861: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_SQLWARNING, } } - case 2836: + case 2862: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_NOT_FOUND, } } - case 2837: + case 2863: { parser.yyVAL.statement = &ast.ProcedureErrorCon{ ErrorCon: ast.PROCEDUR_SQLEXCEPTION, } } - case 2838: + case 2864: { parser.yyVAL.statement = &ast.ProcedureErrorVal{ ErrorNum: getUint64FromNUM(yyS[yypt-0].item), } } - case 2839: + case 2865: { parser.yyVAL.statement = &ast.ProcedureErrorState{ CodeStatus: yyS[yypt-0].ident, } } - case 2842: + case 2868: { name := strings.ToLower(yyS[yypt-0].ident) parser.yyVAL.statement = &ast.ProcedureOpenCur{ CurName: name, } } - case 2843: + case 2869: { name := strings.ToLower(yyS[yypt-2].ident) parser.yyVAL.statement = &ast.ProcedureFetchInto{ @@ -25032,62 +25270,62 @@ yynewstate: Variables: yyS[yypt-0].item.([]string), } } - case 2844: + case 2870: { name := strings.ToLower(yyS[yypt-0].ident) parser.yyVAL.statement = &ast.ProcedureCloseCur{ CurName: name, } } - case 2848: + case 2874: { parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)} } - case 2849: + case 2875: { l := yyS[yypt-2].item.([]string) l = append(l, strings.ToLower(yyS[yypt-0].ident)) parser.yyVAL.item = l } - case 2850: + case 2876: { parser.yyVAL.item = []ast.DeclNode{} } - case 2851: + case 2877: { parser.yyVAL.item = yyS[yypt-0].item } - case 2852: + case 2878: { parser.yyVAL.item = []ast.DeclNode{yyS[yypt-1].item.(ast.DeclNode)} } - case 2853: + case 2879: { l := yyS[yypt-2].item.([]ast.DeclNode) l = append(l, yyS[yypt-1].item.(ast.DeclNode)) parser.yyVAL.item = l } - case 2854: + case 2880: { parser.yyVAL.item = []ast.StmtNode{} } - case 2855: + case 2881: { l := yyS[yypt-2].item.([]ast.StmtNode) l = append(l, yyS[yypt-1].statement.(ast.StmtNode)) parser.yyVAL.item = l } - case 2856: + case 2882: { parser.yyVAL.item = []ast.StmtNode{yyS[yypt-1].statement.(ast.StmtNode)} } - case 2857: + case 2883: { l := yyS[yypt-2].item.([]ast.StmtNode) l = append(l, yyS[yypt-1].statement.(ast.StmtNode)) parser.yyVAL.item = l } - case 2858: + case 2884: { x := &ast.ProcedureBlock{ ProcedureVars: yyS[yypt-2].item.([]ast.DeclNode), @@ -25095,13 +25333,13 @@ yynewstate: } parser.yyVAL.statement = x } - case 2859: + case 2885: { parser.yyVAL.statement = &ast.ProcedureIfInfo{ IfBody: yyS[yypt-2].statement.(*ast.ProcedureIfBlock), } } - case 2860: + case 2886: { ifBlock := &ast.ProcedureIfBlock{ IfExpr: yyS[yypt-3].expr.(ast.ExprNode), @@ -25112,73 +25350,73 @@ yynewstate: } parser.yyVAL.statement = ifBlock } - case 2861: + case 2887: { parser.yyVAL.statement = nil } - case 2862: + case 2888: { parser.yyVAL.statement = &ast.ProcedureElseIfBlock{ ProcedureIfStmt: yyS[yypt-0].statement.(*ast.ProcedureIfBlock), } } - case 2863: + case 2889: { parser.yyVAL.statement = &ast.ProcedureElseBlock{ ProcedureIfStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2864: + case 2890: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2865: + case 2891: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2866: + case 2892: { parser.yyVAL.item = []*ast.SimpleWhenThenStmt{yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt)} } - case 2867: + case 2893: { l := yyS[yypt-1].item.([]*ast.SimpleWhenThenStmt) l = append(l, yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt)) parser.yyVAL.item = l } - case 2868: + case 2894: { parser.yyVAL.item = []*ast.SearchWhenThenStmt{yyS[yypt-0].statement.(*ast.SearchWhenThenStmt)} } - case 2869: + case 2895: { l := yyS[yypt-1].item.([]*ast.SearchWhenThenStmt) l = append(l, yyS[yypt-0].statement.(*ast.SearchWhenThenStmt)) parser.yyVAL.item = l } - case 2870: + case 2896: { parser.yyVAL.statement = &ast.SimpleWhenThenStmt{ Expr: yyS[yypt-2].expr.(ast.ExprNode), ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2871: + case 2897: { parser.yyVAL.statement = &ast.SearchWhenThenStmt{ Expr: yyS[yypt-2].expr.(ast.ExprNode), ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode), } } - case 2872: + case 2898: { parser.yyVAL.item = nil } - case 2873: + case 2899: { parser.yyVAL.item = yyS[yypt-0].item.([]ast.StmtNode) } - case 2874: + case 2900: { caseStmt := &ast.SimpleCaseStmt{ Condition: yyS[yypt-4].expr.(ast.ExprNode), @@ -25189,7 +25427,7 @@ yynewstate: } parser.yyVAL.statement = caseStmt } - case 2875: + case 2901: { caseStmt := &ast.SearchCaseStmt{ WhenCases: yyS[yypt-3].item.([]*ast.SearchWhenThenStmt), @@ -25199,25 +25437,25 @@ yynewstate: } parser.yyVAL.statement = caseStmt } - case 2876: + case 2902: { parser.yyVAL.statement = yyS[yypt-0].statement } - case 2877: + case 2903: { parser.yyVAL.statement = &ast.ProcedureWhileStmt{ Condition: yyS[yypt-4].expr.(ast.ExprNode), Body: yyS[yypt-2].item.([]ast.StmtNode), } } - case 2878: + case 2904: { parser.yyVAL.statement = &ast.ProcedureRepeatStmt{ Body: yyS[yypt-4].item.([]ast.StmtNode), Condition: yyS[yypt-2].expr.(ast.ExprNode), } } - case 2879: + case 2905: { labelBlock := &ast.ProcedureLabelBlock{ LabelName: yyS[yypt-3].ident, @@ -25229,15 +25467,15 @@ yynewstate: } parser.yyVAL.statement = labelBlock } - case 2880: + case 2906: { parser.yyVAL.ident = "" } - case 2881: + case 2907: { parser.yyVAL.ident = yyS[yypt-0].ident } - case 2882: + case 2908: { labelLoop := &ast.ProcedureLabelLoop{ LabelName: yyS[yypt-3].ident, @@ -25249,21 +25487,21 @@ yynewstate: } parser.yyVAL.statement = labelLoop } - case 2883: + case 2909: { parser.yyVAL.statement = &ast.ProcedureJump{ Name: yyS[yypt-0].ident, IsLeave: false, } } - case 2884: + case 2910: { parser.yyVAL.statement = &ast.ProcedureJump{ Name: yyS[yypt-0].ident, IsLeave: true, } } - case 2897: + case 2923: { x := &ast.ProcedureInfo{ IfNotExists: yyS[yypt-5].item.(bool), @@ -25282,38 +25520,38 @@ yynewstate: x.ProcedureParamStr = strings.TrimSpace(parser.src[startOffset:endOffset]) parser.yyVAL.statement = x } - case 2898: + case 2924: { parser.yyVAL.statement = &ast.DropProcedureStmt{ IfExists: yyS[yypt-1].item.(bool), ProcedureName: yyS[yypt-0].item.(*ast.TableName), } } - case 2899: + case 2925: { parser.yyVAL.statement = yyS[yypt-0].item.(*ast.CalibrateResourceStmt) } - case 2900: + case 2926: { parser.yyVAL.item = &ast.CalibrateResourceStmt{} } - case 2901: + case 2927: { parser.yyVAL.item = &ast.CalibrateResourceStmt{ DynamicCalibrateResourceOptionList: yyS[yypt-0].item.([]*ast.DynamicCalibrateResourceOption), } } - case 2902: + case 2928: { parser.yyVAL.item = &ast.CalibrateResourceStmt{ Tp: yyS[yypt-0].item.(ast.CalibrateResourceType), } } - case 2903: + case 2929: { parser.yyVAL.item = []*ast.DynamicCalibrateResourceOption{yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)} } - case 2904: + case 2930: { 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) { @@ -25322,7 +25560,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)) } - case 2905: + case 2931: { 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) { @@ -25331,15 +25569,15 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)) } - case 2906: + case 2932: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateStartTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2907: + case 2933: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateEndTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)} } - case 2908: + case 2934: { _, err := duration.ParseDuration(yyS[yypt-0].ident) if err != nil { @@ -25348,41 +25586,41 @@ yynewstate: } parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, StrValue: yyS[yypt-0].ident} } - case 2909: + case 2935: { parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, Ts: yyS[yypt-1].expr.(ast.ExprNode), Unit: yyS[yypt-0].item.(ast.TimeUnitType)} } - case 2910: + case 2936: { parser.yyVAL.item = ast.TPCC } - case 2911: + case 2937: { parser.yyVAL.item = ast.OLTPREADWRITE } - case 2912: + case 2938: { parser.yyVAL.item = ast.OLTPREADONLY } - case 2913: + case 2939: { parser.yyVAL.item = ast.OLTPWRITEONLY } - case 2914: + case 2940: { parser.yyVAL.item = ast.TPCH10 } - case 2915: + case 2941: { parser.yyVAL.statement = &ast.AddQueryWatchStmt{ QueryWatchOptionList: yyS[yypt-0].item.([]*ast.QueryWatchOption), } } - case 2916: + case 2942: { parser.yyVAL.item = []*ast.QueryWatchOption{yyS[yypt-0].item.(*ast.QueryWatchOption)} } - case 2917: + case 2943: { if !ast.CheckQueryWatchAppend(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) { yylex.AppendError(yylex.Errorf("Dupliated options specified")) @@ -25390,7 +25628,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) } - case 2918: + case 2944: { if !ast.CheckQueryWatchAppend(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) { yylex.AppendError(yylex.Errorf("Dupliated options specified")) @@ -25398,7 +25636,7 @@ yynewstate: } parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) } - case 2919: + case 2945: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchResourceGroup, @@ -25407,7 +25645,7 @@ yynewstate: }, } } - case 2920: + case 2946: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchResourceGroup, @@ -25416,35 +25654,35 @@ yynewstate: }, } } - case 2921: + case 2947: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchAction, ActionOption: yyS[yypt-0].item.(*ast.ResourceGroupRunawayActionOption), } } - case 2922: + case 2948: { parser.yyVAL.item = &ast.QueryWatchOption{ Tp: ast.QueryWatchType, TextOption: yyS[yypt-0].item.(*ast.QueryWatchTextOption), } } - case 2923: + case 2949: { parser.yyVAL.item = &ast.QueryWatchTextOption{ Type: model.WatchSimilar, PatternExpr: yyS[yypt-0].expr, } } - case 2924: + case 2950: { parser.yyVAL.item = &ast.QueryWatchTextOption{ Type: model.WatchPlan, PatternExpr: yyS[yypt-0].expr, } } - case 2925: + case 2951: { parser.yyVAL.item = &ast.QueryWatchTextOption{ Type: yyS[yypt-2].item.(model.RunawayWatchType), @@ -25452,7 +25690,7 @@ yynewstate: TypeSpecified: true, } } - case 2926: + case 2952: { parser.yyVAL.statement = &ast.DropQueryWatchStmt{ IntValue: yyS[yypt-0].item.(int64), diff --git a/pkg/parser/parser.y b/pkg/parser/parser.y index 9d4f89935d8dd..96de1fed3f3a8 100644 --- a/pkg/parser/parser.y +++ b/pkg/parser/parser.y @@ -707,6 +707,7 @@ import ( briefType "BRIEF" burstable "BURSTABLE" cast "CAST" + compress "COMPRESS" constraints "CONSTRAINTS" cooldown "COOLDOWN" copyKwd "COPY" @@ -763,7 +764,9 @@ import ( priority "PRIORITY" processedKeys "PROCESSED_KEYS" queryLimit "QUERY_LIMIT" + readOnly "READ_ONLY" recent "RECENT" + replay "REPLAY" replayer "REPLAYER" restoredTS "RESTORED_TS" ru "RU" @@ -772,6 +775,7 @@ import ( s3 "S3" schedule "SCHEDULE" similar "SIMILAR" + speed "SPEED" staleness "STALENESS" startTime "START_TIME" startTS "START_TS" @@ -804,6 +808,7 @@ import ( tokudbZlib "TOKUDB_ZLIB" tokudbZstd "TOKUDB_ZSTD" top "TOP" + traffic "TRAFFIC" trim "TRIM" trueCardCost "TRUE_CARD_COST" unlimited "UNLIMITED" @@ -1065,6 +1070,7 @@ import ( HelpStmt "HELP statement" ShardableStmt "Shardable statement that can be used in non-transactional DMLs" CancelImportStmt "CANCEL IMPORT JOB statement" + TrafficStmt "Traffic capture/replay statement" ProcedureUnlabeledBlock "The statement block without label in procedure" ProcedureBlockContent "The statement block in procedure expressed with 'Begin ... End'" SimpleWhenThen "Procedure case when then" @@ -1093,6 +1099,8 @@ import ( AdminStmtLimitOpt "Admin show ddl jobs limit option" AllOrPartitionNameList "All or partition name list" AlgorithmClause "Alter table algorithm" + AlterJobOptionList "Alter job option list" + AlterJobOption "Alter job option" AlterTableSpecSingleOpt "Alter table single option" AlterTableSpec "Alter table specification" AlterTableSpecList "Alter table specification list" @@ -1370,6 +1378,10 @@ import ( TextStringList "text string list" TimeUnit "Time unit for 'DATE_ADD', 'DATE_SUB', 'ADDDATE', 'SUBDATE', 'EXTRACT'" TimestampUnit "Time unit for 'TIMESTAMPADD' and 'TIMESTAMPDIFF'" + TrafficCaptureOpt "Traffic capture option" + TrafficCaptureOptList "Traffic capture option list" + TrafficReplayOpt "Traffic replay option" + TrafficReplayOptList "Traffic replay option list" LockType "Table locks type" TransactionChar "Transaction characteristic" TransactionChars "Transaction characteristic list" @@ -2535,8 +2547,8 @@ AlterTableSpec: | "DROP" "FOREIGN" "KEY" Symbol { $$ = &ast.AlterTableSpec{ - Tp: ast.AlterTableDropForeignKey, - Name: $4, + Tp: ast.AlterTableDropForeignKey, + Name: $4, } } | "ORDER" "BY" AlterOrderList %prec lowerThenOrder @@ -7165,6 +7177,7 @@ NotKeywordToken: | "BIT_XOR" | "BRIEF" | "CAST" +| "COMPRESS" | "COPY" | "CURTIME" | "CURDATE" @@ -7187,6 +7200,7 @@ NotKeywordToken: | "MAX" | "NOW" | "RECENT" +| "REPLAY" | "REPLAYER" | "RUNNING" | "PLACEMENT" @@ -7194,7 +7208,9 @@ NotKeywordToken: | "PLAN_CACHE" | "POSITION" | "PREDICATE" +| "READ_ONLY" | "S3" +| "SPEED" | "STRICT" | "SUBDATE" | "SUBSTRING" @@ -7221,6 +7237,7 @@ NotKeywordToken: | "TOKUDB_ZLIB" | "TOKUDB_ZSTD" | "TOP" +| "TRAFFIC" | "TRIM" | "NEXT_ROW_ID" | "EXPR_PUSHDOWN_BLACKLIST" @@ -8340,6 +8357,10 @@ FunctionCallNonKeyword: Args: []ast.ExprNode{$3, $5, $7}, } } +| "COMPRESS" '(' ExpressionListOpt ')' + { + $$ = &ast.FuncCallExpr{FnName: model.NewCIStr($1), Args: $3.([]ast.ExprNode)} + } GetFormatSelector: "DATE" @@ -11371,6 +11392,33 @@ AdminStmt: Tp: ast.AdminUnsetBDRRole, } } +| "ADMIN" "ALTER" "DDL" "JOBS" Int64Num AlterJobOptionList + { + $$ = &ast.AdminStmt{ + Tp: ast.AdminAlterDDLJob, + JobNumber: $5.(int64), + AlterJobOptions: $6.([]*ast.AlterJobOption), + } + } + +AlterJobOptionList: + AlterJobOption + { + $$ = []*ast.AlterJobOption{$1.(*ast.AlterJobOption)} + } +| AlterJobOptionList ',' AlterJobOption + { + $$ = append($1.([]*ast.AlterJobOption), $3.(*ast.AlterJobOption)) + } + +AlterJobOption: + identifier "=" SignedLiteral + { + $$ = &ast.AlterJobOption{ + Name: strings.ToLower($1), + Value: $3.(ast.ExprNode), + } + } AdminShowSlow: "RECENT" NUM @@ -12271,6 +12319,7 @@ Statement: | NonTransactionalDMLStmt | OptimizeTableStmt | CancelImportStmt +| TrafficStmt TraceableStmt: DeleteFromStmt @@ -15733,6 +15782,109 @@ PlanReplayerDumpOpt: $$ = $3.(*ast.AsOfClause) } +/******************************************************************** + * + * Traffic Statement + * + * Examples: + * TRAFFIC CAPTURE TO "/tmp/traffic" DURATION="1h" ENCRYPTION_METHOD="aes256-ctr" COMPRESS=true + * TRAFFIC REPLAY FROM "/tmp/traffic" USER="u1" PASSWORD="123456" SPEED=1.0 READ_ONLY=true + *******************************************************************/ +TrafficStmt: + "TRAFFIC" "CAPTURE" "TO" stringLit TrafficCaptureOptList + { + x := &ast.TrafficStmt{ + OpType: ast.TrafficOpCapture, + Dir: $4, + } + if $5 != nil { + x.Options = $5.([]*ast.TrafficOption) + } + + $$ = x + } +| "TRAFFIC" "REPLAY" "FROM" stringLit TrafficReplayOptList + { + x := &ast.TrafficStmt{ + OpType: ast.TrafficOpReplay, + Dir: $4, + } + if $5 != nil { + x.Options = $5.([]*ast.TrafficOption) + } + + $$ = x + } +| "SHOW" "TRAFFIC" "JOBS" + { + $$ = &ast.TrafficStmt{ + OpType: ast.TrafficOpShow, + } + } +| "CANCEL" "TRAFFIC" "JOBS" + { + $$ = &ast.TrafficStmt{ + OpType: ast.TrafficOpCancel, + } + } + +TrafficCaptureOptList: + TrafficCaptureOpt + { + $$ = []*ast.TrafficOption{$1.(*ast.TrafficOption)} + } +| TrafficCaptureOptList TrafficCaptureOpt + { + $$ = append($1.([]*ast.TrafficOption), $2.(*ast.TrafficOption)) + } + +TrafficCaptureOpt: + "DURATION" EqOpt stringLit + { + _, err := time.ParseDuration($3) + if err != nil { + yylex.AppendError(yylex.Errorf("The DURATION option is not a valid duration: %s", err.Error())) + return 1 + } + $$ = &ast.TrafficOption{OptionType: ast.TrafficOptionDuration, StrValue: $3} + } +| "ENCRYPTION_METHOD" EqOpt stringLit + { + $$ = &ast.TrafficOption{OptionType: ast.TrafficOptionEncryptionMethod, StrValue: $3} + } +| "COMPRESS" EqOpt Boolean + { + $$ = &ast.TrafficOption{OptionType: ast.TrafficOptionCompress, BoolValue: $3.(bool)} + } + +TrafficReplayOptList: + TrafficReplayOpt + { + $$ = []*ast.TrafficOption{$1.(*ast.TrafficOption)} + } +| TrafficReplayOptList TrafficReplayOpt + { + $$ = append($1.([]*ast.TrafficOption), $2.(*ast.TrafficOption)) + } + +TrafficReplayOpt: + "USER" EqOpt stringLit + { + $$ = &ast.TrafficOption{OptionType: ast.TrafficOptionUsername, StrValue: $3} + } +| "PASSWORD" EqOpt stringLit + { + $$ = &ast.TrafficOption{OptionType: ast.TrafficOptionPassword, StrValue: $3} + } +| "SPEED" EqOpt NumLiteral + { + $$ = &ast.TrafficOption{OptionType: ast.TrafficOptionSpeed, FloatValue: ast.NewValueExpr($3, "", "")} + } +| "READ_ONLY" EqOpt Boolean + { + $$ = &ast.TrafficOption{OptionType: ast.TrafficOptionReadOnly, BoolValue: $3.(bool)} + } + /* Stored PROCEDURE parameter declaration list */ OptSpPdparams: /* Empty */ diff --git a/pkg/parser/parser_test.go b/pkg/parser/parser_test.go index 83a1b0bdfc2a2..7e60aaabb4837 100644 --- a/pkg/parser/parser_test.go +++ b/pkg/parser/parser_test.go @@ -538,6 +538,17 @@ func TestAdminStmt(t *testing.T) { {"admin set bdr role secondary", true, "ADMIN SET BDR ROLE SECONDARY"}, {"admin unset bdr role", true, "ADMIN UNSET BDR ROLE"}, {"admin show bdr role", true, "ADMIN SHOW BDR ROLE"}, + // for alter job + {"admin alter ddl jobs 1 thread = 2", true, "ADMIN ALTER DDL JOBS 1 thread = 2"}, + {"admin alter ddl jobs 1 thread = ", false, ""}, + {"admin alter ddl jobs 1 thread", false, ""}, + {"admin alter ddl jobs 1 batch_size = 3", true, "ADMIN ALTER DDL JOBS 1 batch_size = 3"}, + {"admin alter ddl jobs 1 batch_size = ", false, ""}, + {"admin alter ddl jobs 1 batch_size", false, ""}, + {"admin alter ddl jobs 1 max_write_speed = 4", true, "ADMIN ALTER DDL JOBS 1 max_write_speed = 4"}, + {"admin alter ddl jobs 1 max_write_speed = _UTF8MB4'4MiB'", true, "ADMIN ALTER DDL JOBS 1 max_write_speed = _UTF8MB4'4MiB'"}, + {"admin alter ddl jobs 1 max_write_speed = ", false, ""}, + {"admin alter ddl jobs 1 max_write_speed", false, ""}, } RunTest(t, table, false) } @@ -7362,6 +7373,59 @@ func TestPlanReplayer(t *testing.T) { require.True(t, v.Analyze) } +func TestTrafficStmt(t *testing.T) { + table := []testCase{ + {"traffic capture to '/tmp' duration='1s' encryption_method='aes' compress=true", true, "TRAFFIC CAPTURE TO '/tmp' DURATION = '1s' ENCRYPTION_METHOD = 'aes' COMPRESS = TRUE"}, + {"traffic capture to '/tmp' duration '1s' encryption_method 'aes' compress true", true, "TRAFFIC CAPTURE TO '/tmp' DURATION = '1s' ENCRYPTION_METHOD = 'aes' COMPRESS = TRUE"}, + {"traffic capture to '/tmp' encryption_method='aes' duration='1s'", true, "TRAFFIC CAPTURE TO '/tmp' ENCRYPTION_METHOD = 'aes' DURATION = '1s'"}, + {"traffic capture to '/tmp' duration='1m'", true, "TRAFFIC CAPTURE TO '/tmp' DURATION = '1m'"}, + {"traffic capture to '/tmp' duration='1'", false, ""}, + {"traffic capture to '/tmp' duration=1s", false, ""}, + {"traffic capture to '/tmp' compress='true'", false, ""}, + {"traffic capture duration='1m'", false, ""}, + {"traffic capture", false, ""}, + {"traffic replay from '/tmp' user='root' password='123456' speed=1.0 read_only=true", true, "TRAFFIC REPLAY FROM '/tmp' USER = 'root' PASSWORD = '123456' SPEED = 1.0 READONLY = TRUE"}, + {"traffic replay from '/tmp' user 'root' password '123456' speed 1.0 read_only true", true, "TRAFFIC REPLAY FROM '/tmp' USER = 'root' PASSWORD = '123456' SPEED = 1.0 READONLY = TRUE"}, + {"traffic replay from '/tmp' speed 1.0 user='root'", true, "TRAFFIC REPLAY FROM '/tmp' SPEED = 1.0 USER = 'root'"}, + {"traffic replay from '/tmp' speed=1", true, "TRAFFIC REPLAY FROM '/tmp' SPEED = 1"}, + {"traffic replay from '/tmp' speed=0.5", true, "TRAFFIC REPLAY FROM '/tmp' SPEED = 0.5"}, + {"traffic replay from '/tmp' speed=-1", false, ""}, + {"traffic replay speed=1", false, ""}, + {"traffic replay", false, ""}, + {"show traffic jobs", true, "SHOW TRAFFIC JOBS"}, + {"show traffic jobs duration='1m'", false, ""}, + {"show traffic", false, ""}, + {"cancel traffic jobs", true, "CANCEL TRAFFIC JOBS"}, + {"cancel traffic jobs duration='1m'", false, ""}, + {"cancel traffic", false, ""}, + {"traffic test", false, ""}, + {"traffic", false, ""}, + } + + p := parser.New() + var sb strings.Builder + for _, tbl := range table { + stmts, _, err := p.Parse(tbl.src, "", "") + if !tbl.ok { + require.Error(t, err, tbl.src) + continue + } + require.NoError(t, err, tbl.src) + require.Len(t, stmts, 1) + v, ok := stmts[0].(*ast.TrafficStmt) + require.True(t, ok) + switch v.OpType { + case ast.TrafficOpCapture, ast.TrafficOpReplay: + require.Equal(t, "/tmp", v.Dir) + } + sb.Reset() + ctx := NewRestoreCtx(RestoreStringSingleQuotes|RestoreSpacesAroundBinaryOperation|RestoreStringWithoutCharset|RestoreNameBackQuotes, &sb) + err = v.Restore(ctx) + require.NoError(t, err) + require.Equal(t, tbl.restore, sb.String()) + } +} + func TestGBKEncoding(t *testing.T) { p := parser.New() gbkEncoding, _ := charset.Lookup("gbk") diff --git a/pkg/parser/types/field_type.go b/pkg/parser/types/field_type.go index e99ae607aa868..e82d43161685f 100644 --- a/pkg/parser/types/field_type.go +++ b/pkg/parser/types/field_type.go @@ -96,19 +96,17 @@ func (ft *FieldType) Hash64(h IHasher) { // Equals implements the cascades/base.Hasher.<1th> interface. func (ft *FieldType) Equals(other any) bool { - if other == nil { + ft2, ok := other.(*FieldType) + if !ok { return false } - var ft2 *FieldType - switch x := other.(type) { - case *FieldType: - ft2 = x - case FieldType: - ft2 = &x - default: + if ft == nil { + return ft2 == nil + } + if other == nil { return false } - ok := ft.tp == ft2.tp && + ok = ft.tp == ft2.tp && ft.flag == ft2.flag && ft.flen == ft2.flen && ft.decimal == ft2.decimal && diff --git a/pkg/planner/BUILD.bazel b/pkg/planner/BUILD.bazel index 7e651e8949d02..ca5759dfec44f 100644 --- a/pkg/planner/BUILD.bazel +++ b/pkg/planner/BUILD.bazel @@ -13,7 +13,7 @@ go_library( "//pkg/metrics", "//pkg/parser/ast", "//pkg/parser/model", - "//pkg/planner/cascades", + "//pkg/planner/cascades/old", "//pkg/planner/core", "//pkg/planner/core/base", "//pkg/planner/core/resolve", diff --git a/pkg/planner/cardinality/BUILD.bazel b/pkg/planner/cardinality/BUILD.bazel index 0c5f0dc481ea8..36657805f4bce 100644 --- a/pkg/planner/cardinality/BUILD.bazel +++ b/pkg/planner/cardinality/BUILD.bazel @@ -59,7 +59,7 @@ go_test( data = glob(["testdata/**"]), embed = [":cardinality"], flaky = True, - shard_count = 28, + shard_count = 29, deps = [ "//pkg/config", "//pkg/domain", diff --git a/pkg/planner/cardinality/row_count_column.go b/pkg/planner/cardinality/row_count_column.go index 5e6d75bf19a74..fa1d8364ed6e3 100644 --- a/pkg/planner/cardinality/row_count_column.go +++ b/pkg/planner/cardinality/row_count_column.go @@ -15,6 +15,8 @@ package cardinality import ( + "math" + "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/planner/planctx" "github.com/pingcap/tidb/pkg/planner/util/debugtrace" @@ -173,12 +175,27 @@ func equalRowCountOnColumn(sctx planctx.PlanContext, c *statistics.Column, val t // 3. use uniform distribution assumption for the rest (even when this value is not covered by the range of stats) histNDV := float64(c.Histogram.NDV - int64(c.TopN.Num())) if histNDV <= 0 { - // If the table hasn't been modified, it's safe to return 0. Otherwise, the TopN could be stale - return 1. + // If histNDV is zero - we have all NDV's in TopN - and no histograms. This function uses + // c.NotNullCount rather than c.Histogram.NotNullCount() since the histograms are empty. + // + // If the table hasn't been modified, it's safe to return 0. if modifyCount == 0 { return 0, nil } - return 1, nil + // ELSE calculate an approximate estimate based upon newly inserted rows. + // + // Reset to the original NDV, or if no NDV - derive an NDV using sqrt + if c.Histogram.NDV > 0 { + histNDV = float64(c.Histogram.NDV) + } else { + histNDV = math.Sqrt(max(c.NotNullCount(), float64(realtimeRowCount))) + } + // As a conservative estimate - take the smaller of the orignal totalRows or the additions. + // "realtimeRowCount - original count" is a better measure of inserts than modifyCount + totalRowCount := min(c.NotNullCount(), float64(realtimeRowCount)-c.NotNullCount()) + return max(1, totalRowCount/histNDV), nil } + // return the average histogram rows (which excludes topN) and NDV that excluded topN return c.Histogram.NotNullCount() / histNDV, nil } diff --git a/pkg/planner/cardinality/row_count_index.go b/pkg/planner/cardinality/row_count_index.go index c89b6e290c736..928395ae76eef 100644 --- a/pkg/planner/cardinality/row_count_index.go +++ b/pkg/planner/cardinality/row_count_index.go @@ -415,12 +415,27 @@ func equalRowCountOnIndex(sctx planctx.PlanContext, idx *statistics.Index, b []b // 3. use uniform distribution assumption for the rest (even when this value is not covered by the range of stats) histNDV := float64(idx.Histogram.NDV - int64(idx.TopN.Num())) if histNDV <= 0 { - // If the table hasn't been modified, it's safe to return 0. Otherwise, the TopN could be stale - return 1. + // If histNDV is zero - we have all NDV's in TopN - and no histograms. This function uses + // idx.TotalRowCount rather than idx.Histogram.NotNullCount() since the histograms are empty. + // + // If the table hasn't been modified, it's safe to return 0. if modifyCount == 0 { return 0 } - return 1 + // ELSE calculate an approximate estimate based upon newly inserted rows. + // + // Reset to the original NDV, or if no NDV - derive an NDV using sqrt + if idx.Histogram.NDV > 0 { + histNDV = float64(idx.Histogram.NDV) + } else { + histNDV = math.Sqrt(max(idx.TotalRowCount(), float64(realtimeRowCount))) + } + // As a conservative estimate - take the smaller of the orignal totalRows or the additions. + // "realtimeRowCount - original count" is a better measure of inserts than modifyCount + totalRowCount := min(idx.TotalRowCount(), float64(realtimeRowCount)-idx.TotalRowCount()) + return max(1, totalRowCount/histNDV) } + // return the average histogram rows (which excludes topN) and NDV that excluded topN return idx.Histogram.NotNullCount() / histNDV } diff --git a/pkg/planner/cardinality/selectivity_test.go b/pkg/planner/cardinality/selectivity_test.go index 40d336f9b7850..898e932eed31e 100644 --- a/pkg/planner/cardinality/selectivity_test.go +++ b/pkg/planner/cardinality/selectivity_test.go @@ -289,6 +289,56 @@ func TestEstimationForUnknownValues(t *testing.T) { require.Equal(t, 0.0, count) } +func TestEstimationForUnknownValuesAfterModify(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("drop table if exists t") + testKit.MustExec("create table t(a int, key idx(a))") + testKit.MustExec("set @@tidb_analyze_version=2") + testKit.MustExec("set @@global.tidb_enable_auto_analyze='OFF'") + for i := 1; i <= 10; i++ { + testKit.MustExec(fmt.Sprintf("insert into t values (%d)", i)) + testKit.MustExec(fmt.Sprintf("insert into t values (%d)", i)) + testKit.MustExec(fmt.Sprintf("insert into t values (%d)", i)) + testKit.MustExec(fmt.Sprintf("insert into t values (%d)", i)) + testKit.MustExec(fmt.Sprintf("insert into t values (%d)", i)) + testKit.MustExec(fmt.Sprintf("insert into t select a from t where a = %d", i)) + } + testKit.MustExec("analyze table t") + h := dom.StatsHandle() + require.Nil(t, h.DumpStatsDeltaToKV(true)) + + table, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + statsTbl := h.GetTableStats(table.Meta()) + + // Search for a found value == 10.0 + sctx := mock.NewContext() + col := statsTbl.GetCol(table.Meta().Columns[0].ID) + count, err := cardinality.GetColumnRowCount(sctx, col, getRange(5, 5), statsTbl.RealtimeCount, statsTbl.ModifyCount, false) + require.NoError(t, err) + require.Equal(t, 10.0, count) + + // Search for a not found value with zero modifyCount. Defaults to count == 1.0 + count, err = cardinality.GetColumnRowCount(sctx, col, getRange(11, 11), statsTbl.RealtimeCount, statsTbl.ModifyCount, false) + require.NoError(t, err) + require.Equal(t, 1.0, count) + + // Add another 200 rows to the table + testKit.MustExec("insert into t select a+10 from t") + testKit.MustExec("insert into t select a+10 from t where a <= 10") + require.Nil(t, h.DumpStatsDeltaToKV(true)) + require.Nil(t, h.Update(context.Background(), dom.InfoSchema())) + statsTblnew := h.GetTableStats(table.Meta()) + + // Search for a not found value based upon statistics - count should be >= 10 and <=40 + count, err = cardinality.GetColumnRowCount(sctx, col, getRange(15, 15), statsTblnew.RealtimeCount, statsTblnew.ModifyCount, false) + require.NoError(t, err) + require.Truef(t, count < 41, "expected: between 10 to 40, got: %v", count) + require.Truef(t, count > 9, "expected: between 10 to 40, got: %v", count) +} + func TestEstimationUniqueKeyEqualConds(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) testKit := testkit.NewTestKit(t, store) diff --git a/pkg/planner/cascades/memo/BUILD.bazel b/pkg/planner/cascades/memo/BUILD.bazel index 88cedd6f6e1ea..900fa9a0c386a 100644 --- a/pkg/planner/cascades/memo/BUILD.bazel +++ b/pkg/planner/cascades/memo/BUILD.bazel @@ -7,17 +7,18 @@ go_library( "group_expr.go", "group_id_generator.go", "memo.go", - "memo_expr.go", ], importpath = "github.com/pingcap/tidb/pkg/planner/cascades/memo", visibility = ["//visibility:public"], deps = [ + "//pkg/expression", "//pkg/planner/cascades/base", + "//pkg/planner/cascades/pattern", + "//pkg/planner/cascades/util", "//pkg/planner/core/base", - "//pkg/planner/pattern", "//pkg/planner/property", - "//pkg/sessionctx", "//pkg/util/intest", + "@com_github_pingcap_failpoint//:failpoint", ], ) @@ -36,9 +37,10 @@ go_test( deps = [ "//pkg/expression", "//pkg/planner/cascades/base", - "//pkg/planner/core", "//pkg/planner/core/operator/logicalop", "//pkg/testkit/testsetup", + "//pkg/util/mock", + "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", ], diff --git a/pkg/planner/cascades/memo/group.go b/pkg/planner/cascades/memo/group.go index 5da51ea3be8bb..c9a7f4a3286d1 100644 --- a/pkg/planner/cascades/memo/group.go +++ b/pkg/planner/cascades/memo/group.go @@ -17,12 +17,12 @@ package memo import ( "container/list" "fmt" - "io" - "strconv" "github.com/pingcap/tidb/pkg/planner/cascades/base" - "github.com/pingcap/tidb/pkg/planner/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/util" "github.com/pingcap/tidb/pkg/planner/property" + "github.com/pingcap/tidb/pkg/util/intest" ) var _ base.HashEquals = &Group{} @@ -59,25 +59,28 @@ func (g *Group) Hash64(h base.Hasher) { // Equals implements the HashEquals.<1st> interface. func (g *Group) Equals(other any) bool { - if other == nil { + g2, ok := other.(*Group) + if !ok { return false } - switch x := other.(type) { - case *Group: - return g.groupID == x.groupID - case Group: - return g.groupID == x.groupID - default: + if g == nil { + return g2 == nil + } + if g2 == nil { return false } + return g.groupID == g2.groupID } // ******************************************* end of HashEqual methods ******************************************* // Exists checks whether a Group expression existed in a Group. -func (g *Group) Exists(hash64u uint64) bool { - _, ok := g.hash2GroupExpr[hash64u] - return ok +func (g *Group) Exists(e *GroupExpression) bool { + one, ok := g.hash2GroupExpr[e.GetHash64()] + if !ok { + return false + } + return one.Value.(*GroupExpression).Equals(e) } // Insert adds a GroupExpression to the Group. @@ -86,11 +89,10 @@ func (g *Group) Insert(e *GroupExpression) bool { return false } // GroupExpressions hash should be initialized within Init(xxx) method. - hash64 := e.Sum64() - if g.Exists(hash64) { + if g.Exists(e) { return false } - operand := pattern.GetOperand(e.logicalPlan) + operand := pattern.GetOperand(e.LogicalPlan) var newEquiv *list.Element mark, ok := g.Operand2FirstExpr[operand] if ok { @@ -101,7 +103,7 @@ func (g *Group) Insert(e *GroupExpression) bool { newEquiv = g.logicalExpressions.PushBack(e) g.Operand2FirstExpr[operand] = newEquiv } - g.hash2GroupExpr[hash64] = newEquiv + g.hash2GroupExpr[e.GetHash64()] = newEquiv e.group = g return true } @@ -125,9 +127,47 @@ func (g *Group) GetFirstElem(operand pattern.Operand) *list.Element { return g.Operand2FirstExpr[operand] } +// HasLogicalProperty check whether current group has the logical property. +func (g *Group) HasLogicalProperty() bool { + return g.logicalProp != nil +} + +// GetLogicalProperty return this group's logical property. +func (g *Group) GetLogicalProperty() *property.LogicalProperty { + intest.Assert(g.logicalProp != nil) + return g.logicalProp +} + +// SetLogicalProperty set this group's logical property. +func (g *Group) SetLogicalProperty(prop *property.LogicalProperty) { + g.logicalProp = prop +} + +// IsExplored returns whether this group is explored. +func (g *Group) IsExplored() bool { + return g.explored +} + +// SetExplored set the group as tagged as explored. +func (g *Group) SetExplored() { + g.explored = true +} + // String implements fmt.Stringer interface. -func (g *Group) String(w io.Writer) { - fmt.Fprintf(w, "inputs:%s", strconv.Itoa(int(g.groupID))) +func (g *Group) String(w util.StrBufferWriter) { + w.WriteString(fmt.Sprintf("GID:%d", int(g.groupID))) +} + +// ForEachGE traverse the inside group expression with f call on them each. +func (g *Group) ForEachGE(f func(ge *GroupExpression) bool) { + var next bool + for elem := g.logicalExpressions.Front(); elem != nil; elem = elem.Next() { + expr := elem.Value.(*GroupExpression) + next = f(expr) + if !next { + break + } + } } // NewGroup creates a new Group with given logical prop. diff --git a/pkg/planner/cascades/memo/group_and_expr_test.go b/pkg/planner/cascades/memo/group_and_expr_test.go index bc3f0b8d32608..1f3d6b1d07e1e 100644 --- a/pkg/planner/cascades/memo/group_and_expr_test.go +++ b/pkg/planner/cascades/memo/group_and_expr_test.go @@ -31,16 +31,17 @@ func TestGroupHashEquals(t *testing.T) { a.Hash64(hasher1) b.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) - require.True(t, a.Equals(b)) require.True(t, a.Equals(&b)) - + require.True(t, (&a).Equals(&b)) + require.False(t, a.Equals(b)) + require.False(t, (&a).Equals(b)) // change the id. b.groupID = 2 hasher2.Reset() b.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) - require.False(t, a.Equals(b)) require.False(t, a.Equals(&b)) + require.False(t, (&a).Equals(&b)) } func TestGroupExpressionHashEquals(t *testing.T) { @@ -51,18 +52,18 @@ func TestGroupExpressionHashEquals(t *testing.T) { a := GroupExpression{ group: &Group{groupID: 3}, Inputs: []*Group{child1, child2}, - logicalPlan: &logicalop.LogicalProjection{Exprs: []expression.Expression{expression.NewOne()}}, + LogicalPlan: &logicalop.LogicalProjection{Exprs: []expression.Expression{expression.NewOne()}}, } b := GroupExpression{ // root group should change the hash. group: &Group{groupID: 4}, Inputs: []*Group{child1, child2}, - logicalPlan: &logicalop.LogicalProjection{Exprs: []expression.Expression{expression.NewOne()}}, + LogicalPlan: &logicalop.LogicalProjection{Exprs: []expression.Expression{expression.NewOne()}}, } a.Hash64(hasher1) b.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) - require.True(t, a.Equals(b)) + require.False(t, a.Equals(b)) require.True(t, a.Equals(&b)) // change the children order, like join commutative. diff --git a/pkg/planner/cascades/memo/group_expr.go b/pkg/planner/cascades/memo/group_expr.go index 306ed221e23db..5135bdc4c53c1 100644 --- a/pkg/planner/cascades/memo/group_expr.go +++ b/pkg/planner/cascades/memo/group_expr.go @@ -15,11 +15,13 @@ package memo import ( - "io" - + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/expression" base2 "github.com/pingcap/tidb/pkg/planner/cascades/base" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/util" "github.com/pingcap/tidb/pkg/planner/core/base" - "github.com/pingcap/tidb/pkg/planner/pattern" + "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/util/intest" ) @@ -28,44 +30,40 @@ import ( // coupling between Group and GroupExpression is the key to the success of the memory compact // of representing a forest. type GroupExpression struct { + // LogicalPlan is internal logical expression stands for this groupExpr. + // Define it in the header element can make GE as Logical Plan implementor. + base.LogicalPlan + // group is the Group that this GroupExpression belongs to. group *Group // inputs stores the Groups that this GroupExpression based on. Inputs []*Group - // logicalPlan is internal logical expression stands for this groupExpr. - logicalPlan base.LogicalPlan - // hash64 is the unique fingerprint of the GroupExpression. hash64 uint64 } -// GetLogicalPlan returns the logical plan of the GroupExpression. -func (e *GroupExpression) GetLogicalPlan() base.LogicalPlan { - return e.logicalPlan -} - // GetGroup returns the Group that this GroupExpression belongs to. func (e *GroupExpression) GetGroup() *Group { return e.group } // String implements the fmt.Stringer interface. -func (e *GroupExpression) String(w io.Writer) { - e.GetLogicalPlan().ExplainID() - _, _ = w.Write([]byte("GE:" + e.GetLogicalPlan().ExplainID().String() + "{")) +func (e *GroupExpression) String(w util.StrBufferWriter) { + e.LogicalPlan.ExplainID() + w.WriteString("GE:" + e.LogicalPlan.ExplainID().String() + "{") for i, input := range e.Inputs { if i != 0 { - _, _ = w.Write([]byte(", ")) + w.WriteString(", ") } input.String(w) } - _, _ = w.Write([]byte("}")) + w.WriteString("}") } -// Sum64 returns the cached hash64 of the GroupExpression. -func (e *GroupExpression) Sum64() uint64 { +// GetHash64 returns the cached hash64 of the GroupExpression. +func (e *GroupExpression) GetHash64() uint64 { intest.Assert(e.hash64 != 0, "hash64 should not be 0") return e.hash64 } @@ -73,7 +71,7 @@ func (e *GroupExpression) Sum64() uint64 { // Hash64 implements the Hash64 interface. func (e *GroupExpression) Hash64(h base2.Hasher) { // logical plan hash. - e.logicalPlan.Hash64(h) + e.LogicalPlan.Hash64(h) // children group hash. for _, child := range e.Inputs { child.Hash64(h) @@ -82,27 +80,25 @@ func (e *GroupExpression) Hash64(h base2.Hasher) { // Equals implements the Equals interface. func (e *GroupExpression) Equals(other any) bool { - if other == nil { + e2, ok := other.(*GroupExpression) + if !ok { return false } - var e2 *GroupExpression - switch x := other.(type) { - case *GroupExpression: - e2 = x - case GroupExpression: - e2 = &x - default: + if e == nil { + return e2 == nil + } + if e2 == nil { return false } if len(e.Inputs) != len(e2.Inputs) { return false } - if pattern.GetOperand(e.logicalPlan) != pattern.GetOperand(e2.logicalPlan) { + if pattern.GetOperand(e.LogicalPlan) != pattern.GetOperand(e2.LogicalPlan) { return false } // current logical operator meta cmp, logical plan don't care logicalPlan's children. // when we convert logicalPlan to GroupExpression, we will set children to nil. - if !e.logicalPlan.Equals(e2.logicalPlan) { + if !e.LogicalPlan.Equals(e2.LogicalPlan) { return false } // if one of the children is different, then the two GroupExpressions are different. @@ -119,7 +115,7 @@ func NewGroupExpression(lp base.LogicalPlan, inputs []*Group) *GroupExpression { return &GroupExpression{ group: nil, Inputs: inputs, - logicalPlan: lp, + LogicalPlan: lp, hash64: 0, } } @@ -129,3 +125,44 @@ func (e *GroupExpression) Init(h base2.Hasher) { e.Hash64(h) e.hash64 = h.Sum64() } + +// DeriveLogicalProp derive the new group's logical property from a specific GE. +// DeriveLogicalProp is not called with recursive, because we only examine and +// init new group from bottom-up, so we can sure that this new group's children +// has already gotten its logical prop. +func (e *GroupExpression) DeriveLogicalProp() (err error) { + if e.GetGroup().HasLogicalProperty() { + return nil + } + childStats := make([]*property.StatsInfo, 0, len(e.Inputs)) + childSchema := make([]*expression.Schema, 0, len(e.Inputs)) + for _, childG := range e.Inputs { + childGProp := childG.GetLogicalProperty() + childStats = append(childStats, childGProp.Stats) + childSchema = append(childSchema, childGProp.Schema) + } + e.GetGroup().SetLogicalProperty(property.NewLogicalProp()) + // currently the schemaProducer side logical op is still useful for group schema. + // just add this mock for a mocked logical-plan which is with the id less than 0. + // todo: functional dependency + tmpSchema := e.LogicalPlan.Schema() + tmpStats := e.LogicalPlan.StatsInfo() + // only for those new created logical op from XForm, we should rebuild their stats; + // in memo init phase, all logical ops has maintained their stats already, just use them. + if tmpStats == nil { + skipDeriveStats := false + failpoint.Inject("MockPlanSkipMemoDeriveStats", func(val failpoint.Value) { + skipDeriveStats = val.(bool) + }) + if !skipDeriveStats { + // here can only derive the basic stats from bottom up, we can't pass any colGroups required by parents. + tmpStats, err = e.LogicalPlan.DeriveStats(childStats, tmpSchema, childSchema, nil) + if err != nil { + return err + } + } + } + e.GetGroup().GetLogicalProperty().Schema = tmpSchema + e.GetGroup().GetLogicalProperty().Stats = tmpStats + return nil +} diff --git a/pkg/planner/cascades/memo/memo.go b/pkg/planner/cascades/memo/memo.go index f6b0438f02e41..c5c51ab3ffedd 100644 --- a/pkg/planner/cascades/memo/memo.go +++ b/pkg/planner/cascades/memo/memo.go @@ -19,17 +19,13 @@ import ( base2 "github.com/pingcap/tidb/pkg/planner/cascades/base" "github.com/pingcap/tidb/pkg/planner/core/base" - "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/util/intest" ) // Memo is the main structure of the memo package. type Memo struct { - // ctx is the context of the memo. - sCtx sessionctx.Context - // groupIDGen is the incremental group id for internal usage. - groupIDGen GroupIDGenerator + groupIDGen *GroupIDGenerator // rootGroup is the root group of the memo. rootGroup *Group @@ -48,10 +44,9 @@ type Memo struct { } // NewMemo creates a new memo. -func NewMemo(ctx sessionctx.Context) *Memo { +func NewMemo() *Memo { return &Memo{ - sCtx: ctx, - groupIDGen: GroupIDGenerator{id: 0}, + groupIDGen: &GroupIDGenerator{id: 0}, groups: list.New(), groupID2Group: make(map[GroupID]*list.Element), hasher: base2.NewHashEqualer(), @@ -59,73 +54,122 @@ func NewMemo(ctx sessionctx.Context) *Memo { } // GetHasher gets a hasher from the memo that ready to use. -func (m *Memo) GetHasher() base2.Hasher { - m.hasher.Reset() - return m.hasher +func (mm *Memo) GetHasher() base2.Hasher { + mm.hasher.Reset() + return mm.hasher } -// CopyIn copies a logical plan into the memo with format as GroupExpression. -func (m *Memo) CopyIn(target *Group, lp base.LogicalPlan) *GroupExpression { +// CopyIn copies a MemoExpression representation into the memo with format as GroupExpression inside. +// The generic logical forest inside memo is represented as memo group expression tree, while for entering +// and re-feeding the memo, we use the memoExpression as the currency: +// +// entering(init memo) +// +// lp ┌──────────┐ +// / \ │ memo: │ +// lp lp --copyIN-> │ G(ge) │ +// / \ │ / \ │ +// ... ... │ G G │ +// └──────────┘ +// +// re-feeding (intake XForm output) +// +// lp ┌──────────┐ +// / \ │ memo: │ +// GE lp --copyIN-> │ G(ge) │ +// | │ / \ │ +// GE │ G G │ +// └──────────┘ +// +// the bare lp means the new created logical op or that whose child has changed which invalidate it's original +// old belonged group, make it back to bare-lp for re-inserting again in copyIn. +func (mm *Memo) CopyIn(target *Group, lp base.LogicalPlan) (*GroupExpression, error) { // Group the children first. childGroups := make([]*Group, 0, len(lp.Children())) for _, child := range lp.Children() { - // todo: child.getGroupExpression.GetGroup directly - groupExpr := m.CopyIn(nil, child) - group := groupExpr.group - intest.Assert(group != nil) - intest.Assert(group != target) - childGroups = append(childGroups, group) + var currentChildG *Group + if ge, ok := child.(*GroupExpression); ok { + // which means it's the earliest unchanged GroupExpression from rule XForm. + currentChildG = ge.GetGroup() + } else { + // which means it's a new/changed logical op, downward to get its input group ids to complete it. + ge, err := mm.CopyIn(nil, child) + if err != nil { + return nil, err + } + currentChildG = ge.GetGroup() + } + intest.Assert(currentChildG != nil) + intest.Assert(currentChildG != target) + childGroups = append(childGroups, currentChildG) } - - hasher := m.GetHasher() + hasher := mm.GetHasher() groupExpr := NewGroupExpression(lp, childGroups) groupExpr.Init(hasher) - m.insertGroupExpression(groupExpr, target) - // todo: new group need to derive the logical property. - return groupExpr + if mm.InsertGroupExpression(groupExpr, target) && target == nil { + // derive logical property for new group. + err := groupExpr.DeriveLogicalProp() + if err != nil { + return nil, err + } + } + return groupExpr, nil } // GetGroups gets all groups in the memo. -func (m *Memo) GetGroups() *list.List { - return m.groups +func (mm *Memo) GetGroups() *list.List { + return mm.groups } // GetGroupID2Group gets the map from group id to group. -func (m *Memo) GetGroupID2Group() map[GroupID]*list.Element { - return m.groupID2Group +func (mm *Memo) GetGroupID2Group() map[GroupID]*list.Element { + return mm.groupID2Group } // GetRootGroup gets the root group of the memo. -func (m *Memo) GetRootGroup() *Group { - return m.rootGroup +func (mm *Memo) GetRootGroup() *Group { + return mm.rootGroup } +// InsertGroupExpression insert ge into a target group. // @bool indicates whether the groupExpr is inserted to a new group. -func (m *Memo) insertGroupExpression(groupExpr *GroupExpression, target *Group) bool { +func (mm *Memo) InsertGroupExpression(groupExpr *GroupExpression, target *Group) bool { // for group merge, here groupExpr is the new groupExpr with undetermined belonged group. // we need to use groupExpr hash to find whether there is same groupExpr existed before. // if existed and the existed groupExpr.Group is not same with target, we should merge them up. // todo: merge group if target == nil { - target = m.NewGroup() - m.groups.PushBack(target) - m.groupID2Group[target.groupID] = m.groups.Back() + target = mm.NewGroup() + mm.groups.PushBack(target) + mm.groupID2Group[target.groupID] = mm.groups.Back() } target.Insert(groupExpr) return true } // NewGroup creates a new group. -func (m *Memo) NewGroup() *Group { +func (mm *Memo) NewGroup() *Group { group := NewGroup(nil) - group.groupID = m.groupIDGen.NextGroupID() + group.groupID = mm.groupIDGen.NextGroupID() return group } // Init initializes the memo with a logical plan, converting logical plan tree format into group tree. -func (m *Memo) Init(plan base.LogicalPlan) *GroupExpression { - intest.Assert(m.groups.Len() == 0) - gE := m.CopyIn(nil, plan) - m.rootGroup = gE.GetGroup() +func (mm *Memo) Init(plan base.LogicalPlan) *GroupExpression { + intest.Assert(mm.groups.Len() == 0) + gE, _ := mm.CopyIn(nil, plan) + mm.rootGroup = gE.GetGroup() return gE } + +// ForEachGroup traverse the inside group expression with f call on them each. +func (mm *Memo) ForEachGroup(f func(g *Group) bool) { + var next bool + for elem := mm.GetGroups().Front(); elem != nil; elem = elem.Next() { + expr := elem.Value.(*Group) + next = f(expr) + if !next { + break + } + } +} diff --git a/pkg/planner/cascades/memo/memo_expr.go b/pkg/planner/cascades/memo/memo_expr.go deleted file mode 100644 index e35dce358ea19..0000000000000 --- a/pkg/planner/cascades/memo/memo_expr.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2024 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 memo - -import ( - "github.com/pingcap/tidb/pkg/planner/core/base" -) - -// MemoExpression is a unified representation of logical and group expression. -// 1: when stepping into memo optimization, we may convert a logical plan tree into a memoExpr, -// -// so each node of them is simply an LP. -// -// 2: when XForm is called from a specific rule, substitution happened, the output may be a mixture -// -// of logical plan and group expression. -// -// # Thus, memoExpr is responsible for representing both of them, leveraging the unified portal of -// -// MemoExpression managing memo group generation and hashing functionality. -// -//revive:disable:exported -type MemoExpression struct { - LP base.LogicalPlan - - GE *GroupExpression - - Inputs []*MemoExpression -} - -// IsLogicalPlan checks whether this me is a logical plan. -func (me *MemoExpression) IsLogicalPlan() bool { - return me.LP != nil && me.GE == nil -} - -// IsGroupExpression checks whether this me is a group expression. -func (me *MemoExpression) IsGroupExpression() bool { - return me.LP == nil && me.GE != nil -} - -// NewMemoExpressionFromPlan init a memeExpression with a logical plan. -func NewMemoExpressionFromPlan(plan base.LogicalPlan) *MemoExpression { - return &MemoExpression{ - LP: plan, - } -} - -// NewMemoExpressionFromGroupExpression inits a memoExpression with an existed group expression. -func NewMemoExpressionFromGroupExpression(ge *GroupExpression) *MemoExpression { - return &MemoExpression{ - GE: ge, - } -} - -// NewMemoExpressionFromPlanAndInputs inits a memoExpression with mixed logical plan as current node, -// and certain memoExpressions as its input. -func NewMemoExpressionFromPlanAndInputs(plan base.LogicalPlan, inputs []*MemoExpression) *MemoExpression { - return &MemoExpression{ - LP: plan, - Inputs: inputs, - } -} diff --git a/pkg/planner/cascades/memo/memo_test.go b/pkg/planner/cascades/memo/memo_test.go index 38018780197e3..29b1416a4a09e 100644 --- a/pkg/planner/cascades/memo/memo_test.go +++ b/pkg/planner/cascades/memo/memo_test.go @@ -17,26 +17,31 @@ package memo import ( "testing" - plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/stretchr/testify/require" ) func TestMemo(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() t1 := logicalop.DataSource{}.Init(ctx, 0) t2 := logicalop.DataSource{}.Init(ctx, 0) join := logicalop.LogicalJoin{}.Init(ctx, 0) join.SetChildren(t1, t2) - memo := NewMemo(ctx) - memo.Init(join) - require.Equal(t, 3, memo.groups.Len()) - require.Equal(t, 3, len(memo.groupID2Group)) + mm := NewMemo() + mm.Init(join) + require.Equal(t, 3, mm.GetGroups().Len()) + require.Equal(t, 3, len(mm.GetGroupID2Group())) // iter memo.groups to assert group ids. cnt := 1 - for e := memo.groups.Front(); e != nil; e = e.Next() { + for e := mm.GetGroups().Front(); e != nil; e = e.Next() { group := e.Value.(*Group) require.NotNil(t, group) require.Equal(t, GroupID(cnt), group.groupID) @@ -45,35 +50,40 @@ func TestMemo(t *testing.T) { } func TestInsertGE(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() t1 := logicalop.DataSource{}.Init(ctx, 0) t2 := logicalop.DataSource{}.Init(ctx, 0) join := logicalop.LogicalJoin{}.Init(ctx, 0) join.SetChildren(t1, t2) - memo := NewMemo(ctx) - memo.Init(join) - require.Equal(t, 3, memo.groups.Len()) - require.Equal(t, 3, len(memo.groupID2Group)) + mm := NewMemo() + mm.Init(join) + require.Equal(t, 3, mm.GetGroups().Len()) + require.Equal(t, 3, len(mm.GetGroupID2Group())) // prepare a new group expression with join's group as its children. limit := logicalop.LogicalLimit{}.Init(ctx, 0) - hasher := memo.GetHasher() - groupExpr := NewGroupExpression(limit, []*Group{memo.rootGroup}) + limit.SetID(-4) + hasher := mm.GetHasher() + groupExpr := NewGroupExpression(limit, []*Group{mm.GetRootGroup()}) groupExpr.Init(hasher) // Insert a new group with a new expression. - memo.insertGroupExpression(groupExpr, nil) - require.Equal(t, 4, memo.groups.Len()) - require.Equal(t, 4, len(memo.groupID2Group)) + mm.InsertGroupExpression(groupExpr, nil) + require.Equal(t, 4, mm.GetGroups().Len()) + require.Equal(t, 4, len(mm.GetGroupID2Group())) // iter memo.groups to assert group ids. cnt := 1 - for e := memo.groups.Front(); e != nil; e = e.Next() { + for e := mm.GetGroups().Front(); e != nil; e = e.Next() { group := e.Value.(*Group) require.NotNil(t, group) - require.Equal(t, GroupID(cnt), group.groupID) + require.Equal(t, GroupID(cnt), group.GetGroupID()) cnt++ } - require.Equal(t, memo.groups.Back().Value.(*Group).groupID, GroupID(cnt-1)) + require.Equal(t, mm.GetGroups().Back().Value.(*Group).GetGroupID(), GroupID(cnt-1)) } diff --git a/pkg/planner/cascades/BUILD.bazel b/pkg/planner/cascades/old/BUILD.bazel similarity index 89% rename from pkg/planner/cascades/BUILD.bazel rename to pkg/planner/cascades/old/BUILD.bazel index 115b5a3cfe87f..4517a92b162c5 100644 --- a/pkg/planner/cascades/BUILD.bazel +++ b/pkg/planner/cascades/old/BUILD.bazel @@ -1,7 +1,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( - name = "cascades", + name = "old", srcs = [ "enforcer_rules.go", "implementation_rules.go", @@ -9,7 +9,7 @@ go_library( "stringer.go", "transformation_rules.go", ], - importpath = "github.com/pingcap/tidb/pkg/planner/cascades", + importpath = "github.com/pingcap/tidb/pkg/planner/cascades/old", visibility = ["//visibility:public"], deps = [ "//pkg/expression", @@ -17,13 +17,13 @@ go_library( "//pkg/kv", "//pkg/parser/ast", "//pkg/parser/mysql", + "//pkg/planner/cascades/pattern", "//pkg/planner/core", "//pkg/planner/core/base", "//pkg/planner/core/operator/logicalop", "//pkg/planner/core/rule/util", "//pkg/planner/implementation", "//pkg/planner/memo", - "//pkg/planner/pattern", "//pkg/planner/planctx", "//pkg/planner/property", "//pkg/planner/util", @@ -37,7 +37,7 @@ go_library( ) go_test( - name = "cascades_test", + name = "old_test", timeout = "short", srcs = [ "enforcer_rules_test.go", @@ -47,7 +47,7 @@ go_test( "transformation_rules_test.go", ], data = glob(["testdata/**"]), - embed = [":cascades"], + embed = [":old"], flaky = True, shard_count = 25, deps = [ @@ -56,12 +56,12 @@ go_test( "//pkg/infoschema", "//pkg/meta/model", "//pkg/parser", + "//pkg/planner/cascades/pattern", "//pkg/planner/core", "//pkg/planner/core/base", "//pkg/planner/core/operator/logicalop", "//pkg/planner/core/resolve", "//pkg/planner/memo", - "//pkg/planner/pattern", "//pkg/planner/property", "//pkg/testkit/testdata", "//pkg/testkit/testsetup", diff --git a/pkg/planner/cascades/enforcer_rules.go b/pkg/planner/cascades/old/enforcer_rules.go similarity index 97% rename from pkg/planner/cascades/enforcer_rules.go rename to pkg/planner/cascades/old/enforcer_rules.go index ba2c6363b5187..5b354b54f6314 100644 --- a/pkg/planner/cascades/enforcer_rules.go +++ b/pkg/planner/cascades/old/enforcer_rules.go @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "math" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/implementation" "github.com/pingcap/tidb/pkg/planner/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/planner/util" ) diff --git a/pkg/planner/cascades/enforcer_rules_test.go b/pkg/planner/cascades/old/enforcer_rules_test.go similarity index 99% rename from pkg/planner/cascades/enforcer_rules_test.go rename to pkg/planner/cascades/old/enforcer_rules_test.go index a2d40b6141ca4..f9d93a013cf8f 100644 --- a/pkg/planner/cascades/enforcer_rules_test.go +++ b/pkg/planner/cascades/old/enforcer_rules_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "testing" diff --git a/pkg/planner/cascades/implementation_rules.go b/pkg/planner/cascades/old/implementation_rules.go similarity index 99% rename from pkg/planner/cascades/implementation_rules.go rename to pkg/planner/cascades/old/implementation_rules.go index 467cbcea228eb..661debcb08ec2 100644 --- a/pkg/planner/cascades/implementation_rules.go +++ b/pkg/planner/cascades/old/implementation_rules.go @@ -12,17 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "math" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" impl "github.com/pingcap/tidb/pkg/planner/implementation" "github.com/pingcap/tidb/pkg/planner/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" ) diff --git a/pkg/planner/cascades/main_test.go b/pkg/planner/cascades/old/main_test.go similarity index 99% rename from pkg/planner/cascades/main_test.go rename to pkg/planner/cascades/old/main_test.go index 0bc1b0bff6ca9..60e5c1c6aa955 100644 --- a/pkg/planner/cascades/main_test.go +++ b/pkg/planner/cascades/old/main_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "flag" diff --git a/pkg/planner/cascades/optimize.go b/pkg/planner/cascades/old/optimize.go similarity index 99% rename from pkg/planner/cascades/optimize.go rename to pkg/planner/cascades/old/optimize.go index 3b318d85740fc..a96514d539e33 100644 --- a/pkg/planner/cascades/optimize.go +++ b/pkg/planner/cascades/old/optimize.go @@ -12,16 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "container/list" "math" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" ) diff --git a/pkg/planner/cascades/optimize_test.go b/pkg/planner/cascades/old/optimize_test.go similarity index 99% rename from pkg/planner/cascades/optimize_test.go rename to pkg/planner/cascades/old/optimize_test.go index d646171f7ef70..53d8f2041922e 100644 --- a/pkg/planner/cascades/optimize_test.go +++ b/pkg/planner/cascades/old/optimize_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "context" @@ -24,12 +24,12 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" plannercore "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/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/pingcap/tidb/pkg/planner/property" "github.com/stretchr/testify/require" ) diff --git a/pkg/planner/cascades/stringer.go b/pkg/planner/cascades/old/stringer.go similarity index 96% rename from pkg/planner/cascades/stringer.go rename to pkg/planner/cascades/old/stringer.go index ef5f48f4c808d..b26d82dbb0011 100644 --- a/pkg/planner/cascades/stringer.go +++ b/pkg/planner/cascades/old/stringer.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "bytes" @@ -74,9 +74,9 @@ func groupToString(ctx expression.EvalContext, g *memo.Group, idMap map[*memo.Gr groupLine := bytes.NewBufferString("") fmt.Fprintf(groupLine, "Group#%d Schema:[%s]", idMap[g], strings.Join(colStrs, ",")) - if len(g.Prop.Schema.Keys) > 0 { - ukStrs := make([]string, 0, len(schema.Keys)) - for _, key := range schema.Keys { + if len(g.Prop.Schema.PKOrUK) > 0 { + ukStrs := make([]string, 0, len(schema.PKOrUK)) + for _, key := range schema.PKOrUK { ukColStrs := make([]string, 0, len(key)) for _, col := range key { ukColStrs = append(ukColStrs, col.StringWithCtx(ctx, errors.RedactLogDisable)) diff --git a/pkg/planner/cascades/stringer_test.go b/pkg/planner/cascades/old/stringer_test.go similarity index 97% rename from pkg/planner/cascades/stringer_test.go rename to pkg/planner/cascades/old/stringer_test.go index 092d3606c6921..a50cce28e3e22 100644 --- a/pkg/planner/cascades/stringer_test.go +++ b/pkg/planner/cascades/old/stringer_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "context" @@ -22,11 +22,11 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/resolve" "github.com/pingcap/tidb/pkg/planner/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/pingcap/tidb/pkg/testkit/testdata" "github.com/stretchr/testify/require" ) diff --git a/pkg/planner/cascades/testdata/stringer_suite_in.json b/pkg/planner/cascades/old/testdata/stringer_suite_in.json similarity index 100% rename from pkg/planner/cascades/testdata/stringer_suite_in.json rename to pkg/planner/cascades/old/testdata/stringer_suite_in.json diff --git a/pkg/planner/cascades/testdata/stringer_suite_out.json b/pkg/planner/cascades/old/testdata/stringer_suite_out.json similarity index 100% rename from pkg/planner/cascades/testdata/stringer_suite_out.json rename to pkg/planner/cascades/old/testdata/stringer_suite_out.json diff --git a/pkg/planner/cascades/testdata/transformation_rules_suite_in.json b/pkg/planner/cascades/old/testdata/transformation_rules_suite_in.json similarity index 100% rename from pkg/planner/cascades/testdata/transformation_rules_suite_in.json rename to pkg/planner/cascades/old/testdata/transformation_rules_suite_in.json diff --git a/pkg/planner/cascades/testdata/transformation_rules_suite_out.json b/pkg/planner/cascades/old/testdata/transformation_rules_suite_out.json similarity index 100% rename from pkg/planner/cascades/testdata/transformation_rules_suite_out.json rename to pkg/planner/cascades/old/testdata/transformation_rules_suite_out.json diff --git a/pkg/planner/cascades/transformation_rules.go b/pkg/planner/cascades/old/transformation_rules.go similarity index 99% rename from pkg/planner/cascades/transformation_rules.go rename to pkg/planner/cascades/old/transformation_rules.go index 5fec45b01a216..99c3c8472c579 100644 --- a/pkg/planner/cascades/transformation_rules.go +++ b/pkg/planner/cascades/old/transformation_rules.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "math" @@ -22,12 +22,12 @@ import ( "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/pattern" plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" ruleutil "github.com/pingcap/tidb/pkg/planner/core/rule/util" "github.com/pingcap/tidb/pkg/planner/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/pingcap/tidb/pkg/planner/planctx" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/planner/util/coreusage" @@ -1904,7 +1904,7 @@ func (*outerJoinEliminator) prepareForEliminateOuterJoin(joinExpr *memo.GroupExp func (*outerJoinEliminator) isInnerJoinKeysContainUniqueKey(innerGroup *memo.Group, joinKeys *expression.Schema) (bool, error) { // builds UniqueKey info of innerGroup. innerGroup.BuildKeyInfo() - for _, keyInfo := range innerGroup.Prop.Schema.Keys { + for _, keyInfo := range innerGroup.Prop.Schema.PKOrUK { joinKeysContainKeyInfo := true for _, col := range keyInfo { if !joinKeys.Contains(col) { @@ -2191,7 +2191,7 @@ func (*TransformAggToProj) Match(expr *memo.ExprIter) bool { childGroup := expr.GetExpr().Children[0] childGroup.BuildKeyInfo() schemaByGroupby := expression.NewSchema(agg.GetGroupByCols()...) - for _, key := range childGroup.Prop.Schema.Keys { + for _, key := range childGroup.Prop.Schema.PKOrUK { if schemaByGroupby.ColumnsIndices(key) != nil { return true } diff --git a/pkg/planner/cascades/transformation_rules_test.go b/pkg/planner/cascades/old/transformation_rules_test.go similarity index 99% rename from pkg/planner/cascades/transformation_rules_test.go rename to pkg/planner/cascades/old/transformation_rules_test.go index 36ee47625635f..e772ecdf31d33 100644 --- a/pkg/planner/cascades/transformation_rules_test.go +++ b/pkg/planner/cascades/old/transformation_rules_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cascades +package old import ( "context" @@ -22,11 +22,11 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/resolve" "github.com/pingcap/tidb/pkg/planner/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/pingcap/tidb/pkg/testkit/testdata" "github.com/stretchr/testify/require" ) diff --git a/pkg/planner/pattern/BUILD.bazel b/pkg/planner/cascades/pattern/BUILD.bazel similarity index 89% rename from pkg/planner/pattern/BUILD.bazel rename to pkg/planner/cascades/pattern/BUILD.bazel index 1d61f4eb9bb0b..be14e143fac99 100644 --- a/pkg/planner/pattern/BUILD.bazel +++ b/pkg/planner/cascades/pattern/BUILD.bazel @@ -6,7 +6,7 @@ go_library( "engine.go", "pattern.go", ], - importpath = "github.com/pingcap/tidb/pkg/planner/pattern", + importpath = "github.com/pingcap/tidb/pkg/planner/cascades/pattern", visibility = ["//visibility:public"], deps = [ "//pkg/planner/core/base", diff --git a/pkg/planner/pattern/engine.go b/pkg/planner/cascades/pattern/engine.go similarity index 100% rename from pkg/planner/pattern/engine.go rename to pkg/planner/cascades/pattern/engine.go diff --git a/pkg/planner/pattern/engine_test.go b/pkg/planner/cascades/pattern/engine_test.go similarity index 100% rename from pkg/planner/pattern/engine_test.go rename to pkg/planner/cascades/pattern/engine_test.go diff --git a/pkg/planner/pattern/pattern.go b/pkg/planner/cascades/pattern/pattern.go similarity index 100% rename from pkg/planner/pattern/pattern.go rename to pkg/planner/cascades/pattern/pattern.go diff --git a/pkg/planner/pattern/pattern_test.go b/pkg/planner/cascades/pattern/pattern_test.go similarity index 100% rename from pkg/planner/pattern/pattern_test.go rename to pkg/planner/cascades/pattern/pattern_test.go diff --git a/pkg/planner/cascades/rule/BUILD.bazel b/pkg/planner/cascades/rule/BUILD.bazel index 8b90027972215..3b03895534728 100644 --- a/pkg/planner/cascades/rule/BUILD.bazel +++ b/pkg/planner/cascades/rule/BUILD.bazel @@ -11,8 +11,9 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/planner/cascades/memo", - "//pkg/planner/pattern", - "//pkg/sessionctx", + "//pkg/planner/cascades/pattern", + "//pkg/planner/cascades/util", + "//pkg/planner/core/base", ], ) @@ -26,9 +27,11 @@ go_test( deps = [ "//pkg/parser/model", "//pkg/planner/cascades/memo", - "//pkg/planner/core", + "//pkg/planner/cascades/pattern", + "//pkg/planner/cascades/util", "//pkg/planner/core/operator/logicalop", - "//pkg/planner/pattern", + "//pkg/util/mock", + "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", ], ) diff --git a/pkg/planner/cascades/rule/binder.go b/pkg/planner/cascades/rule/binder.go index cbdf02628dc49..7c8051520a83e 100644 --- a/pkg/planner/cascades/rule/binder.go +++ b/pkg/planner/cascades/rule/binder.go @@ -16,11 +16,11 @@ package rule import ( "container/list" - "fmt" - "io" "github.com/pingcap/tidb/pkg/planner/cascades/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/util" + "github.com/pingcap/tidb/pkg/planner/core/base" ) // Document @@ -125,12 +125,6 @@ import ( // match group expression, and Subs is the children field holding the matched children group expression, and it's a recursive // definition. While binder itself is just like a caller, a status saving and driving procedure. -// GroupExprHolder is dynamic placeholder for *list.element subtree holding which comes from binder process. -type GroupExprHolder struct { - Cur *memo.GroupExpression - Subs []*GroupExprHolder -} - // Binder is leveled status structure used to bind the logical subtree with special given pattern. type Binder struct { // p is the pattern specified by the rule. @@ -143,11 +137,11 @@ type Binder struct { // value, which is used to tell iterator where to start the next iteration. stackInfo []*list.Element - // expr is the current matched expression dynamically decided during the binder process. - holder *GroupExprHolder + // holder is the current matched expression dynamically decided during the binder process. + holder base.LogicalPlan - // w is only for test stack print usage. - w io.Writer + // bsw is only for test stack print usage. + bsw util.StrBufferWriter } // NewBinder creates a new Binder. @@ -159,7 +153,7 @@ func NewBinder(p *pattern.Pattern, gE *memo.GroupExpression) *Binder { // empty stack info, means the toppest loop. // pre-set nil is for later alignment with the traceID indexing. stackInfo: []*list.Element{}, - holder: &GroupExprHolder{Cur: gE}, + holder: gE, } } @@ -167,7 +161,7 @@ func match(p *pattern.Pattern, gE *memo.GroupExpression) bool { if p.Operand == pattern.OperandAny { return true } - return pattern.GetOperand(gE.GetLogicalPlan()).Match(p.Operand) + return pattern.GetOperand(gE.LogicalPlan).Match(p.Operand) } // Next tries to find the next matched group expression from the Binder structure. @@ -204,7 +198,7 @@ func match(p *pattern.Pattern, gE *memo.GroupExpression) bool { // pinned G1, then iterate G2's equivalent expression to find the matched Join(e2) like we say, next we got // a concrete expression: Join(G1, Join(G3, G4)), then we can apply the join associativity rule to transform // the expression to Join(Join(G1, G3), G4) or other forms. -func (b *Binder) Next() bool { +func (b *Binder) Next() base.LogicalPlan { var ok bool for { // when non-first time loop here, we should reset traceID back to -1. @@ -217,19 +211,25 @@ func (b *Binder) Next() bool { b.stackInfo[continueGroup] = continueGroupElement.Next() } ok = b.dfsMatch(b.p, b.holder) - if b.w != nil { - b.printStackInfo(b.w) + if b.bsw != nil { + b.printStackInfo(b.bsw) } if ok || len(b.stackInfo) == 0 { break } } - return ok + if ok { + return b.holder + } + return nil } // dfsMatch tries to match the pattern with the group expression and input groups recursively. -func (b *Binder) dfsMatch(p *pattern.Pattern, parentSub *GroupExprHolder) bool { - gE := parentSub.Cur +// currently the LogicalPlan interface ref can point to concrete logical operator or group expression. +// Note: the setChild function impl only affect logicalOp's and GE-embedded logicalOp's children setting, +// not the group expression generic child group inputs. +func (b *Binder) dfsMatch(p *pattern.Pattern, parentHolder base.LogicalPlan) bool { + gE := parentHolder.(*memo.GroupExpression) // quick return for nil group expression, which may come from the upper pickGroupExpression exhaustion. if gE == nil { return false @@ -247,22 +247,19 @@ func (b *Binder) dfsMatch(p *pattern.Pattern, parentSub *GroupExprHolder) bool { if len(p.Children) != len(gE.Inputs) { return false } - // since different group expression may have different children len, we need to make sure the Subs - // is long enough to hold all the children group expression. - if len(parentSub.Subs) < len(p.Children) { - parentSub.Subs = append(parentSub.Subs, make([]*GroupExprHolder, len(p.Children)-len(parentSub.Subs))...) + // since different group expression may have different children len, we need to make sure the parentHolder + // is long enough to hold all the children group expression, for later index-ref usage. + if len(parentHolder.Children()) < len(p.Children) { + parentHolder.SetChildren(append(parentHolder.Children(), make([]base.LogicalPlan, len(p.Children)-len(parentHolder.Children()))...)...) } for i, childPattern := range p.Children { // we ensure that pattern len is equal to input child groups len. childGroup := gE.Inputs[i] b.traceIn(childPattern, childGroup) // rebound the dynamic placeholder no matter whether it is CHANGED or NOT or NIL. - if parentSub.Subs[i] == nil { - parentSub.Subs[i] = &GroupExprHolder{} - } - parentSub.Subs[i].Cur = b.pickGroupExpression(childPattern, childGroup) + parentHolder.SetChild(i, b.pickGroupExpression(childPattern, childGroup)) // we can sure that childPattern and element in Subs[i] is match when arrive here, recursive for child. - if !b.dfsMatch(childPattern, parentSub.Subs[i]) { + if !b.dfsMatch(childPattern, parentHolder.Children()[i]) { return false } } @@ -299,19 +296,19 @@ func (b *Binder) traceIn(p *pattern.Pattern, g *memo.Group) { } } -func (b *Binder) printStackInfo(w io.Writer) { +func (b *Binder) printStackInfo(w util.StrBufferWriter) { for i, one := range b.stackInfo { if i != 0 { - fmt.Fprintf(w, " -> ") + w.WriteString(" -> ") } one.Value.(*memo.GroupExpression).String(w) } if len(b.stackInfo) != 0 { - fmt.Fprintf(w, "\n") + w.WriteString("\n") } } // GetHolder returns the current group expression stored in dynamic placeholder element field. -func (b *Binder) GetHolder() *GroupExprHolder { +func (b *Binder) GetHolder() base.LogicalPlan { return b.holder } diff --git a/pkg/planner/cascades/rule/binder_test.go b/pkg/planner/cascades/rule/binder_test.go index 5fd1ebec168e7..49fbac0f4d9b7 100644 --- a/pkg/planner/cascades/rule/binder_test.go +++ b/pkg/planner/cascades/rule/binder_test.go @@ -15,26 +15,31 @@ package rule import ( - "bufio" "bytes" "testing" + "github.com/pingcap/failpoint" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/planner/cascades/memo" - plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/util" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" - "github.com/pingcap/tidb/pkg/planner/pattern" + "github.com/pingcap/tidb/pkg/util/mock" "github.com/stretchr/testify/require" ) func TestBinderSuccess(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() t1 := logicalop.DataSource{}.Init(ctx, 0) t2 := logicalop.DataSource{}.Init(ctx, 0) join := logicalop.LogicalJoin{}.Init(ctx, 0) join.SetChildren(t1, t2) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() mm.Init(join) require.Equal(t, 3, mm.GetGroups().Len()) require.Equal(t, 3, len(mm.GetGroupID2Group())) @@ -54,20 +59,25 @@ func TestBinderSuccess(t *testing.T) { // bind the pattern to the memo. rootGE := mm.GetRootGroup().GetLogicalExpressions().Back().Value.(*memo.GroupExpression) binder := NewBinder(pa, rootGE) - require.True(t, binder.Next()) - require.True(t, binder.holder.Cur.GetLogicalPlan() == join) - require.True(t, binder.holder.Subs[0].Cur.GetLogicalPlan() == t1) - require.True(t, binder.holder.Subs[1].Cur.GetLogicalPlan() == t2) + holder := binder.Next() + require.NotNil(t, holder) + require.True(t, holder.(*memo.GroupExpression).LogicalPlan == join) + require.True(t, holder.Children()[0].(*memo.GroupExpression).LogicalPlan == t1) + require.True(t, holder.Children()[1].(*memo.GroupExpression).LogicalPlan == t2) } func TestBinderFail(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() t1 := logicalop.DataSource{}.Init(ctx, 0) t2 := logicalop.DataSource{}.Init(ctx, 0) join := logicalop.LogicalJoin{}.Init(ctx, 0) join.SetChildren(t1, t2) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() mm.Init(join) require.Equal(t, 3, mm.GetGroups().Len()) require.Equal(t, 3, len(mm.GetGroupID2Group())) @@ -80,9 +90,10 @@ func TestBinderFail(t *testing.T) { rootGE := mm.GetRootGroup().GetLogicalExpressions().Back().Value.(*memo.GroupExpression) binder := NewBinder(pa, rootGE) b := bytes.Buffer{} - buf := bufio.NewWriter(&b) - binder.w = buf - require.False(t, binder.Next()) + buf := util.NewStrBuffer(&b) + binder.bsw = buf + holder := binder.Next() + require.Nil(t, holder) buf.Flush() require.Equal(t, b.String(), "GE:DataSource_1{}\n") @@ -97,33 +108,39 @@ func TestBinderFail(t *testing.T) { pa.SetChildren(p2) binder = NewBinder(pa, rootGE) b.Reset() - buf = bufio.NewWriter(&b) - binder.w = buf - require.False(t, binder.Next()) + buf = util.NewStrBuffer(&b) + binder.bsw = buf + holder = binder.Next() + require.Nil(t, holder) buf.Flush() require.Equal(t, b.String(), "") // renew memo - mm = memo.NewMemo(ctx) + mm = memo.NewMemo() mm.Init(p1) rootGE = mm.GetRootGroup().GetLogicalExpressions().Back().Value.(*memo.GroupExpression) binder = NewBinder(pa, rootGE) b.Reset() - buf = bufio.NewWriter(&b) - binder.w = buf - require.False(t, binder.Next()) + buf = util.NewStrBuffer(&b) + binder.bsw = buf + holder = binder.Next() + require.Nil(t, holder) buf.Flush() - require.Equal(t, b.String(), "GE:Limit_4{inputs:1}\n") + require.Equal(t, b.String(), "GE:Limit_4{GID:1}\n") } func TestBinderTopNode(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() t1 := logicalop.DataSource{}.Init(ctx, 0) t2 := logicalop.DataSource{}.Init(ctx, 0) join := logicalop.LogicalJoin{}.Init(ctx, 0) join.SetChildren(t1, t2) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() mm.Init(join) require.Equal(t, 3, mm.GetGroups().Len()) require.Equal(t, 3, len(mm.GetGroupID2Group())) @@ -131,27 +148,37 @@ func TestBinderTopNode(t *testing.T) { // single level pattern, no children. pa := pattern.NewPattern(pattern.OperandJoin, pattern.EngineAll) binder := NewBinder(pa, mm.GetRootGroup().GetLogicalExpressions().Back().Value.(*memo.GroupExpression)) - require.True(t, binder.Next()) - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) + holder := binder.Next() + require.NotNil(t, holder) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.(*memo.GroupExpression).LogicalPlan)) } func TestBinderOneNode(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() join := logicalop.LogicalJoin{}.Init(ctx, 0) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() mm.Init(join) require.Equal(t, 1, mm.GetGroups().Len()) require.Equal(t, 1, len(mm.GetGroupID2Group())) pa := pattern.NewPattern(pattern.OperandJoin, pattern.EngineAll) binder := NewBinder(pa, mm.GetRootGroup().GetLogicalExpressions().Back().Value.(*memo.GroupExpression)) - require.True(t, binder.Next()) - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) + holder := binder.Next() + require.NotNil(t, holder) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) } func TestBinderSubTreeMatch(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() t1 := logicalop.DataSource{}.Init(ctx, 0) t2 := logicalop.DataSource{}.Init(ctx, 0) join1 := logicalop.LogicalJoin{}.Init(ctx, 0) @@ -165,7 +192,7 @@ func TestBinderSubTreeMatch(t *testing.T) { join3 := logicalop.LogicalJoin{}.Init(ctx, 0) join3.SetChildren(join1, join2) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() mm.Init(join3) require.Equal(t, 7, mm.GetGroups().Len()) require.Equal(t, 7, len(mm.GetGroupID2Group())) @@ -176,22 +203,29 @@ func TestBinderSubTreeMatch(t *testing.T) { // bind the pattern to the memo. rootGE := mm.GetRootGroup().GetLogicalExpressions().Back().Value.(*memo.GroupExpression) binder := NewBinder(pa, rootGE) - require.True(t, binder.Next()) - require.True(t, binder.holder.Cur.GetLogicalPlan() == join3) - require.True(t, binder.holder.Subs[0].Cur.GetLogicalPlan() == join1) - require.True(t, binder.holder.Subs[1].Cur.GetLogicalPlan() == join2) - require.False(t, binder.Next()) + holder := binder.Next() + require.NotNil(t, holder) + require.True(t, holder.(*memo.GroupExpression).LogicalPlan == join3) + require.True(t, holder.Children()[0].(*memo.GroupExpression).LogicalPlan == join1) + require.True(t, holder.Children()[1].(*memo.GroupExpression).LogicalPlan == join2) + holder = binder.Next() + require.Nil(t, holder) pa2 := pattern.NewPattern(pattern.OperandJoin, pattern.EngineAll) pa2.SetChildren(pattern.NewPattern(pattern.OperandDataSource, pattern.EngineAll), pattern.NewPattern(pattern.OperandDataSource, pattern.EngineAll)) binder = NewBinder(pa2, rootGE) // we couldn't bind the pattern to the subtree of join3, because the root group expression is pinned. // the top-down iteration across all the tree nodes is the responsibility of the caller. - require.False(t, binder.Next()) + holder = binder.Next() + require.Nil(t, holder) } func TestBinderMultiNext(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() asT1 := pmodel.NewCIStr("t1") asT2 := pmodel.NewCIStr("t2") t1 := logicalop.DataSource{TableAsName: &asT1}.Init(ctx, 0) @@ -204,7 +238,7 @@ func TestBinderMultiNext(t *testing.T) { t3 := logicalop.DataSource{TableAsName: &asT3}.Init(ctx, 0) t4 := logicalop.DataSource{TableAsName: &asT4}.Init(ctx, 0) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() gE := mm.Init(join1) // which means t1 and t3 are equivalent class. @@ -219,52 +253,56 @@ func TestBinderMultiNext(t *testing.T) { pa.SetChildren(pattern.NewPattern(pattern.OperandDataSource, pattern.EngineAll), pattern.NewPattern(pattern.OperandDataSource, pattern.EngineAll)) binder := NewBinder(pa, gE) b := bytes.Buffer{} - buf := bufio.NewWriter(&b) - binder.w = buf + buf := util.NewStrBuffer(&b) + binder.bsw = buf - require.True(t, binder.Next()) + holder := binder.Next() + require.NotNil(t, holder) // G1 // / \ // G2{t1,t3} G3{t2,t4} // ▴ ▴ - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[0].Cur.GetLogicalPlan())) - require.Equal(t, "t1", binder.holder.Subs[0].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[1].Cur.GetLogicalPlan())) - require.Equal(t, "t2", binder.holder.Subs[1].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - - require.True(t, binder.Next()) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[0].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t1", holder.Children()[0].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[1].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t2", holder.Children()[1].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + + holder = binder.Next() + require.NotNil(t, holder) // G1 // / \ // G2{t1,t3} G3{t2,t4} // ▴ ▴ - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[0].Cur.GetLogicalPlan())) - require.Equal(t, "t1", binder.holder.Subs[0].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[1].Cur.GetLogicalPlan())) - require.Equal(t, "t4", binder.holder.Subs[1].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - - require.True(t, binder.Next()) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[0].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t1", holder.Children()[0].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[1].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t4", holder.Children()[1].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + + holder = binder.Next() + require.NotNil(t, holder) // G1 // / \ // G2{t1,t3} G3{t2,t4} // ▴ ▴ - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[0].Cur.GetLogicalPlan())) - require.Equal(t, "t3", binder.holder.Subs[0].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[1].Cur.GetLogicalPlan())) - require.Equal(t, "t2", binder.holder.Subs[1].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - - require.True(t, binder.Next()) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[0].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t3", holder.Children()[0].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[1].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t2", holder.Children()[1].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + + holder = binder.Next() + require.NotNil(t, holder) // G1 // / \ // G2{t1,t3} G3{t2,t4} // ▴ ▴ - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[0].Cur.GetLogicalPlan())) - require.Equal(t, "t3", binder.holder.Subs[0].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[1].Cur.GetLogicalPlan())) - require.Equal(t, "t4", binder.holder.Subs[1].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[0].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t3", holder.Children()[0].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[1].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t4", holder.Children()[1].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) buf.Flush() // every time when next call done, the save stack info should be next iteration starting point. @@ -284,7 +322,11 @@ func TestBinderMultiNext(t *testing.T) { } func TestBinderAny(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() asT1 := pmodel.NewCIStr("t1") asT2 := pmodel.NewCIStr("t2") t1 := logicalop.DataSource{TableAsName: &asT1}.Init(ctx, 0) @@ -297,7 +339,7 @@ func TestBinderAny(t *testing.T) { t3 := logicalop.DataSource{TableAsName: &asT3}.Init(ctx, 0) t4 := logicalop.DataSource{TableAsName: &asT4}.Init(ctx, 0) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() gE := mm.Init(join1) // which means t1 and t3 are equivalent class. @@ -312,32 +354,35 @@ func TestBinderAny(t *testing.T) { pa.SetChildren(pattern.NewPattern(pattern.OperandDataSource, pattern.EngineAll), pattern.NewPattern(pattern.OperandAny, pattern.EngineAll)) binder := NewBinder(pa, gE) b := bytes.Buffer{} - buf := bufio.NewWriter(&b) - binder.w = buf + buf := util.NewStrBuffer(&b) + binder.bsw = buf - require.True(t, binder.Next()) + holder := binder.Next() + require.NotNil(t, holder) // G1 // / \ // G2{t1,t3} G3{t2,t4} // ▴ ▴ - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[0].Cur.GetLogicalPlan())) - require.Equal(t, "t1", binder.holder.Subs[0].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[1].Cur.GetLogicalPlan())) - require.Equal(t, "t2", binder.holder.Subs[1].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - - require.True(t, binder.Next()) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[0].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t1", holder.Children()[0].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[1].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t2", holder.Children()[1].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + + holder = binder.Next() + require.NotNil(t, holder) // G1 // / \ // G2{t1,t3} G3{t2,t4} // ▴ ▴ - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[0].Cur.GetLogicalPlan())) - require.Equal(t, "t3", binder.holder.Subs[0].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[1].Cur.GetLogicalPlan())) - require.Equal(t, "t2", binder.holder.Subs[1].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[0].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t3", holder.Children()[0].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[1].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t2", holder.Children()[1].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) - require.False(t, binder.Next()) + holder = binder.Next() + require.Nil(t, holder) buf.Flush() // every time when next call done, the save stack info should be next iteration starting point. @@ -364,7 +409,11 @@ func TestBinderAny(t *testing.T) { } func TestBinderMultiAny(t *testing.T) { - ctx := plannercore.MockContext() + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats", `return(true)`)) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/planner/cascades/memo/MockPlanSkipMemoDeriveStats")) + }() + ctx := mock.NewContext() asT1 := pmodel.NewCIStr("t1") asT2 := pmodel.NewCIStr("t2") t1 := logicalop.DataSource{TableAsName: &asT1}.Init(ctx, 0) @@ -377,7 +426,7 @@ func TestBinderMultiAny(t *testing.T) { t3 := logicalop.DataSource{TableAsName: &asT3}.Init(ctx, 0) t4 := logicalop.DataSource{TableAsName: &asT4}.Init(ctx, 0) - mm := memo.NewMemo(ctx) + mm := memo.NewMemo() gE := mm.Init(join1) // which means t1 and t3 are equivalent class. @@ -393,21 +442,23 @@ func TestBinderMultiAny(t *testing.T) { pa.SetChildren(pattern.NewPattern(pattern.OperandAny, pattern.EngineAll), pattern.NewPattern(pattern.OperandAny, pattern.EngineAll)) binder := NewBinder(pa, gE) b := bytes.Buffer{} - buf := bufio.NewWriter(&b) - binder.w = buf + buf := util.NewStrBuffer(&b) + binder.bsw = buf - require.True(t, binder.Next()) + holder := binder.Next() + require.NotNil(t, holder) // G1 // / \ // G2{t1,t3} G3{t2,t4} // ▴ ▴ - require.Equal(t, pattern.OperandJoin, pattern.GetOperand(binder.holder.Cur.GetLogicalPlan())) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[0].Cur.GetLogicalPlan())) - require.Equal(t, "t1", binder.holder.Subs[0].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(binder.holder.Subs[1].Cur.GetLogicalPlan())) - require.Equal(t, "t2", binder.holder.Subs[1].Cur.GetLogicalPlan().(*logicalop.DataSource).TableAsName.L) - - require.False(t, binder.Next()) + require.Equal(t, pattern.OperandJoin, pattern.GetOperand(holder.(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[0].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t1", holder.Children()[0].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + require.Equal(t, pattern.OperandDataSource, pattern.GetOperand(holder.Children()[1].(*memo.GroupExpression).LogicalPlan)) + require.Equal(t, "t2", holder.Children()[1].(*memo.GroupExpression).LogicalPlan.(*logicalop.DataSource).TableAsName.L) + + holder = binder.Next() + require.Nil(t, holder) buf.Flush() // state1: diff --git a/pkg/planner/cascades/rule/join/BUILD.bazel b/pkg/planner/cascades/rule/join/BUILD.bazel index 7590bcd8d34c8..33af831986388 100644 --- a/pkg/planner/cascades/rule/join/BUILD.bazel +++ b/pkg/planner/cascades/rule/join/BUILD.bazel @@ -6,9 +6,8 @@ go_library( importpath = "github.com/pingcap/tidb/pkg/planner/cascades/rule/join", visibility = ["//visibility:public"], deps = [ - "//pkg/planner/cascades/memo", + "//pkg/planner/cascades/pattern", "//pkg/planner/cascades/rule", - "//pkg/planner/pattern", - "//pkg/sessionctx", + "//pkg/planner/core/base", ], ) diff --git a/pkg/planner/cascades/rule/join/join_to_apply.go b/pkg/planner/cascades/rule/join/join_to_apply.go index 258550f9e409d..e27f85a49e2db 100644 --- a/pkg/planner/cascades/rule/join/join_to_apply.go +++ b/pkg/planner/cascades/rule/join/join_to_apply.go @@ -15,12 +15,13 @@ package join import ( - "github.com/pingcap/tidb/pkg/planner/cascades/memo" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" "github.com/pingcap/tidb/pkg/planner/cascades/rule" - "github.com/pingcap/tidb/pkg/planner/pattern" - "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/planner/core/base" ) +var _ rule.Rule = &XFJoinToApply{} + // XFJoinToApply is a type of rule that aims to convert a join into apply mode, // allowing runtime scalar attributes to be passed to the apply's probe side, // thereby enhancing the likelihood of better index scans. @@ -38,12 +39,12 @@ func NewJoinToApply() *XFJoinToApply { } // Match implements the Rule interface. -func (*XFJoinToApply) Match(_ *rule.GroupExprHolder, _ sessionctx.Context) bool { +func (*XFJoinToApply) Match(_ base.LogicalPlan) bool { return true } // XForm implements thr Rule interface. -func (*XFJoinToApply) XForm(_ *rule.GroupExprHolder, _ sessionctx.Context) ([]*memo.GroupExpression, error) { - // Check whether the join can be converted to apply. +func (*XFJoinToApply) XForm(_ base.LogicalPlan) ([]base.LogicalPlan, error) { + // todo: Check whether the join can be converted to apply. return nil, nil } diff --git a/pkg/planner/cascades/rule/rule.go b/pkg/planner/cascades/rule/rule.go index 2735ef9ecb8c2..e84c2e2b88760 100644 --- a/pkg/planner/cascades/rule/rule.go +++ b/pkg/planner/cascades/rule/rule.go @@ -15,29 +15,35 @@ package rule import ( - "github.com/pingcap/tidb/pkg/planner/cascades/memo" - "github.com/pingcap/tidb/pkg/planner/pattern" - "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/util" + "github.com/pingcap/tidb/pkg/planner/core/base" ) var _ Rule = &BaseRule{} // Rule regular the common rule interface for the memo optimization. type Rule interface { + // ID return the id of this rule. + ID() uint + // String implements the fmt.Stringer interface, used for rule tracing process. - String() string + String(writer util.StrBufferWriter) // Pattern return the initialized pattern of a specific rule when it created. Pattern() *pattern.Pattern + // PreCheck check the admission of the group expression output from binder. + PreCheck(base.LogicalPlan) bool + // Match checks whether the GroupExpr satisfies all the requirements of the specific rule. // The pattern only identifies the operator type, some transformation rules also need // detailed information for certain plan operators to decide whether it is applicable. - Match(holder *GroupExprHolder, sctx sessionctx.Context) bool + Match(base.LogicalPlan) bool // XForm does the real work of the optimization rule. The returned group expressions list // indicates the new GroupExprs generated by the transformation rule. - XForm(holder *GroupExprHolder, sctx sessionctx.Context) ([]*memo.GroupExpression, error) + XForm(_ base.LogicalPlan) ([]base.LogicalPlan, error) } // BaseRule is the abstract parent class of rule. @@ -54,9 +60,15 @@ func NewBaseRule(tp ruleType, pattern *pattern.Pattern) *BaseRule { } } +// ID returns the basic ordinal this rule enum type. +func (*BaseRule) ID() uint { + // impl it in your own rule. + return 0 +} + // String implements Rule interface -func (r *BaseRule) String() string { - return r.tp.String() +func (r *BaseRule) String(writer util.StrBufferWriter) { + writer.WriteString(r.tp.String()) } // Pattern implements Rule interface. @@ -64,12 +76,17 @@ func (r *BaseRule) Pattern() *pattern.Pattern { return r.pattern } +// PreCheck implements the Rule interface. +func (*BaseRule) PreCheck(_ base.LogicalPlan) bool { + return true +} + // Match implements Rule interface. -func (*BaseRule) Match(_ *GroupExprHolder, _ sessionctx.Context) bool { +func (*BaseRule) Match(_ base.LogicalPlan) bool { return true } // XForm implements Rule interface. -func (*BaseRule) XForm(_ *GroupExprHolder, _ sessionctx.Context) ([]*memo.GroupExpression, error) { +func (*BaseRule) XForm(_ base.LogicalPlan) ([]base.LogicalPlan, error) { return nil, nil } diff --git a/pkg/planner/cascades/util/BUILD.bazel b/pkg/planner/cascades/util/BUILD.bazel new file mode 100644 index 0000000000000..6462699304cf8 --- /dev/null +++ b/pkg/planner/cascades/util/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "util", + srcs = ["string_writer.go"], + importpath = "github.com/pingcap/tidb/pkg/planner/cascades/util", + visibility = ["//visibility:public"], + deps = ["//pkg/util/intest"], +) diff --git a/pkg/planner/cascades/util/string_writer.go b/pkg/planner/cascades/util/string_writer.go new file mode 100644 index 0000000000000..5d05e5baaf8fa --- /dev/null +++ b/pkg/planner/cascades/util/string_writer.go @@ -0,0 +1,52 @@ +// Copyright 2024 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 ( + "bufio" + "io" + + "github.com/pingcap/tidb/pkg/util/intest" +) + +// StrBufferWriter is interface facilitate quick writing string regardless of error handling and written len. +type StrBufferWriter interface { + WriteString(s string) + Flush() +} + +// StrBuffer is a basic wrapper bufio.Writer while override its WriteString func. +type StrBuffer struct { + bio *bufio.Writer +} + +// NewStrBuffer new a defined buffed string writer with passed io.writer. +func NewStrBuffer(w io.Writer) StrBufferWriter { + return &StrBuffer{ + bio: bufio.NewWriter(w), + } +} + +// WriteString implements IBufStrWriter +func (sw *StrBuffer) WriteString(s string) { + _, err := sw.bio.WriteString(s) + intest.Assert(err == nil, "buffer-io WriteString should be no error in test") +} + +// Flush implements IBufStrWriter +func (sw *StrBuffer) Flush() { + err := sw.bio.Flush() + intest.Assert(err == nil, "buffer-io Flush should be no error in test") +} diff --git a/pkg/planner/core/BUILD.bazel b/pkg/planner/core/BUILD.bazel index dc158bb1b93d8..417addad48f56 100644 --- a/pkg/planner/core/BUILD.bazel +++ b/pkg/planner/core/BUILD.bazel @@ -40,6 +40,7 @@ go_library( "plan_cache_utils.go", "plan_cacheable_checker.go", "plan_clone_generated.go", + "plan_clone_utils.go", "plan_cost_detail.go", "plan_cost_ver1.go", "plan_cost_ver2.go", @@ -195,6 +196,7 @@ go_library( "//pkg/util/tiflashcompute", "//pkg/util/tracing", "@com_github_bits_and_blooms_bitset//:bitset", + "@com_github_docker_go_units//:go-units", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_kvproto//pkg/coprocessor", @@ -324,6 +326,8 @@ go_test( "//pkg/util/ranger", "//pkg/util/stmtsummary", "//pkg/util/tracing", + "//tests/realtikvtest", + "@com_github_docker_go_units//:go-units", "@com_github_golang_snappy//:snappy", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", diff --git a/pkg/planner/core/casetest/BUILD.bazel b/pkg/planner/core/casetest/BUILD.bazel index 65d11c6afd454..bdfed3c28d0a0 100644 --- a/pkg/planner/core/casetest/BUILD.bazel +++ b/pkg/planner/core/casetest/BUILD.bazel @@ -12,7 +12,7 @@ go_test( ], data = glob(["testdata/**"]), flaky = True, - shard_count = 28, + shard_count = 29, deps = [ "//pkg/domain", "//pkg/errno", diff --git a/pkg/planner/core/casetest/cascades/BUILD.bazel b/pkg/planner/core/casetest/cascades/BUILD.bazel new file mode 100644 index 0000000000000..03afd3005333c --- /dev/null +++ b/pkg/planner/core/casetest/cascades/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "cascades_test", + timeout = "short", + srcs = [ + "main_test.go", + "memo_test.go", + ], + data = glob(["testdata/**"]), + flaky = True, + deps = [ + "//pkg/parser", + "//pkg/planner/cascades/memo", + "//pkg/planner/cascades/util", + "//pkg/planner/core", + "//pkg/planner/core/base", + "//pkg/planner/core/resolve", + "//pkg/testkit", + "//pkg/testkit/testdata", + "//pkg/testkit/testmain", + "//pkg/testkit/testsetup", + "//pkg/util/hint", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/pkg/planner/core/casetest/cascades/main_test.go b/pkg/planner/core/casetest/cascades/main_test.go new file mode 100644 index 0000000000000..0f14a5abcfe3d --- /dev/null +++ b/pkg/planner/core/casetest/cascades/main_test.go @@ -0,0 +1,53 @@ +// Copyright 2020 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 cascades + +import ( + "flag" + "testing" + + "github.com/pingcap/tidb/pkg/testkit/testdata" + "github.com/pingcap/tidb/pkg/testkit/testmain" + "github.com/pingcap/tidb/pkg/testkit/testsetup" + "go.uber.org/goleak" +) + +var testDataMap = make(testdata.BookKeeper) + +func TestMain(m *testing.M) { + testsetup.SetupForCommonTest() + flag.Parse() + testDataMap.LoadTestSuiteData("testdata", "cascades_suite") + 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"), + } + + callback := func(i int) int { + testDataMap.GenerateOutputIfNeeded() + return i + } + + goleak.VerifyTestMain(testmain.WrapTestingM(m, callback), opts...) +} + +func GetCascadesSuiteData() testdata.TestData { + return testDataMap["cascades_suite"] +} diff --git a/pkg/planner/core/casetest/cascades/memo_test.go b/pkg/planner/core/casetest/cascades/memo_test.go new file mode 100644 index 0000000000000..dae0149f20db5 --- /dev/null +++ b/pkg/planner/core/casetest/cascades/memo_test.go @@ -0,0 +1,121 @@ +// Copyright 2024 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 cascades + +import ( + "bytes" + "context" + "fmt" + "testing" + + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/planner/cascades/memo" + "github.com/pingcap/tidb/pkg/planner/cascades/util" + plannercore "github.com/pingcap/tidb/pkg/planner/core" + "github.com/pingcap/tidb/pkg/planner/core/base" + "github.com/pingcap/tidb/pkg/planner/core/resolve" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/testkit/testdata" + "github.com/pingcap/tidb/pkg/util/hint" + "github.com/stretchr/testify/require" +) + +func TestDeriveStats(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 not null, b int not null, key(a,b))") + tk.MustExec("insert into t1 values(1,1),(1,2),(2,1),(2,2),(1,1)") + tk.MustExec("create table t2(a int not null, b int not null, key(a,b))") + tk.MustExec("insert into t2 values(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3),(1,1)") + tk.MustExec("analyze table t1") + tk.MustExec("analyze table t2") + + ctx := context.Background() + p := parser.New() + var input []string + var output []struct { + SQL string + Str []string + } + statsSuiteData := GetCascadesSuiteData() + statsSuiteData.LoadTestCases(t, &input, &output) + for i, tt := range input { + stmt, err := p.ParseOneStmt(tt, "", "") + require.NoError(t, err, tt) + ret := &plannercore.PreprocessorReturn{} + nodeW := resolve.NewNodeW(stmt) + err = plannercore.Preprocess(context.Background(), tk.Session(), nodeW, plannercore.WithPreprocessorReturn(ret)) + require.NoError(t, err) + tk.Session().GetSessionVars().PlanColumnID.Store(0) + builder, _ := plannercore.NewPlanBuilder().Init(tk.Session().GetPlanCtx(), ret.InfoSchema, hint.NewQBHintHandler(nil)) + p, err := builder.Build(ctx, nodeW) + require.NoError(t, err, tt) + p, err = plannercore.LogicalOptimizeTest(ctx, builder.GetOptFlag(), p.(base.LogicalPlan)) + require.NoError(t, err, tt) + lp := p.(base.LogicalPlan) + _, err = plannercore.RecursiveDeriveStats4Test(lp) + require.NoError(t, err, tt) + // after stats derive is done, which means the up-down propagation of group ndv is done, in bottom-up building phase + // of memo, we don't have to expect the upper operator's group cols passing down anymore. + mm := memo.NewMemo() + mm.Init(lp) + // check the stats state in memo group. + b := &bytes.Buffer{} + sb := util.NewStrBuffer(b) + var strs []string + mm.ForEachGroup(func(g *memo.Group) bool { + b.Reset() + // record group + g.String(sb) + sb.WriteString(", ") + // record first ge + g.ForEachGE(func(ge *memo.GroupExpression) bool { + ge.String(sb) + return false + }) + sb.WriteString(", ") + // record group stats + logicProp := g.GetLogicalProperty() + if logicProp == nil { + sb.WriteString("logic prop:nil") + } else { + sb.WriteString("logic prop:{") + if logicProp.Stats == nil { + sb.WriteString("stats:nil,") + } else { + statsStr := fmt.Sprintf("count %v, ColNDVs %v, GroupNDVs %v", logicProp.Stats.RowCount, logicProp.Stats.ColNDVs, logicProp.Stats.GroupNDVs) + sb.WriteString("stats:{" + statsStr + "}") + } + sb.WriteString(", ") + if logicProp.Schema == nil { + sb.WriteString("schema:nil") + } else { + sb.WriteString("schema:{" + logicProp.Schema.String() + "}") + } + sb.WriteString("}") + } + sb.Flush() + strs = append(strs, b.String()) + return true + }) + testdata.OnRecord(func() { + output[i].SQL = tt + output[i].Str = strs + }) + require.Equal(t, output[i].Str, strs, "case i "+tt) + } +} diff --git a/pkg/planner/core/casetest/cascades/testdata/cascades_suite_in.json b/pkg/planner/core/casetest/cascades/testdata/cascades_suite_in.json new file mode 100644 index 0000000000000..b87d5e655a16e --- /dev/null +++ b/pkg/planner/core/casetest/cascades/testdata/cascades_suite_in.json @@ -0,0 +1,57 @@ +[ + { + "name": "TestDeriveStats", + "cases": [ + // DataSource -> Aggregation. + "select count(1) from t1 group by a, b", + // DataSource -> Join. + "select * from t1, t2 where t1.a = t2.a and t1.b = t2.b", + // DataSource(Range) -> Aggregation. + "select count(1) from t1 where a > 0 group by a, b", + // DataSource(Selection) -> Aggregation. + "select count(1) from t1 where b > 0 group by a, b", + // DataSource -> Selection -> Aggregation. Change `cos` to another function if it can be pushed down to copr later. + "select count(1) from t1 where cos(a) > 0 group by a, b", + // DataSource -> Projection -> Aggregation. + "select count(c3) from (select a as c1, b as c2, a+1 as c3 from t1) as tmp group by c2, c1", + // DataSource -> Projection -> Aggregation. + "select count(c3) from (select a+b as c1, b as c2, a+1 as c3 from t1) as tmp group by c2, c1", + // DataSource -> Apply(LeftOuterJoin) -> Aggregation. + "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", + // DataSource -> Apply(InnerJoin) -> Aggregation. + "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b > (select t2.b from t2 where t2.a = t1.a)) tmp group by tmp.a, tmp.b", + // DataSource -> Apply(LeftOuterSemiJoin) -> Aggregation. + "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", + // DataSource -> Apply(AntiLeftOuterSemiJoin) -> Aggregation. + "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", + // DataSource -> Apply(SemiJoin) -> Aggregation. + "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b in (select t2.b from t2 where t2.a = t1.a limit 3)) tmp group by tmp.a, tmp.b", + // DataSource -> Apply(AntiSemiJoin) -> Aggregation. + "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b not in (select t2.b from t2 where t2.a = t1.a limit 3)) tmp group by tmp.a, tmp.b", + // DataSource -> InnerJoin -> Aggregation. + "select count(1) from t1, t2 where t1.a = t2.a group by t1.a, t1.b", + // DataSource -> LeftOuterJoin -> Aggregation. + "select count(1) from t1 left join t2 on t1.a = t2.a group by t1.a, t1.b", + // DataSource -> LeftOuterJoin -> Aggregation. + "select count(1) from t1 left join t2 on t1.a = t2.a group by t2.a, t2.b", + // DataSource -> RightOuterJoin -> Aggregation. + "select count(1) from t1 right join t2 on t1.a = t2.a group by t1.a, t1.b", + // DataSource -> RightOuterJoin -> Aggregation. + "select count(1) from t1 right join t2 on t1.a = t2.a group by t2.a, t2.b", + // DataSource -> LeftOuterSemiJoin -> Aggregation. + "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", + // DataSource -> AntiLeftOuterSemiJoin -> Aggregation. + "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", + // DataSource -> SemiJoin -> Aggregation. + "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b in (select t2.b from t2 where t2.a > t1.a)) tmp group by tmp.a, tmp.b", + // DataSource -> AntiSemiJoin -> Aggregation. + "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b not in (select t2.b from t2 where t2.a > t1.a)) tmp group by tmp.a, tmp.b", + // DataSource -> Aggregation -> Join. + "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", + // DataSource -> Limit -> Aggregation. + "select count(1) from (select t1.a as a, t1.b as b from t1 limit 3) tmp group by tmp.a, tmp.b", + // DataSource -> Window -> Aggregation. + "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" + ] + } +] diff --git a/pkg/planner/core/casetest/cascades/testdata/cascades_suite_out.json b/pkg/planner/core/casetest/cascades/testdata/cascades_suite_out.json new file mode 100644 index 0000000000000..d463d11b9f522 --- /dev/null +++ b/pkg/planner/core/casetest/cascades/testdata/cascades_suite_out.json @@ -0,0 +1,249 @@ +[ + { + "Name": "TestDeriveStats", + "Cases": [ + { + "SQL": "select count(1) from t1 group by a, b", + "Str": [ + "GID:1, GE:DataSource_1{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Aggregation_2{GID:1}, logic prop:{stats:{count 4, ColNDVs map[4:4], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Projection_3{GID:2}, logic prop:{stats:{count 4, ColNDVs map[4:4], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select * from t1, t2 where t1.a = t2.a and t1.b = t2.b", + "Str": [ + "GID:1, GE:DataSource_4{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_5{}, logic prop:{stats:{count 10, ColNDVs map[4:3 5:3], GroupNDVs [{[4 5] 9}]}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_9{GID:1, GID:2}, logic prop:{stats:{count 5.555555555555555, ColNDVs map[1:2 2:2 4:3 5:3], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Projection_8{GID:3}, logic prop:{stats:{count 5.555555555555555, ColNDVs map[1:2 2:2 4:3 5:3], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1 where a > 0 group by a, b", + "Str": [ + "GID:1, GE:DataSource_10{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Aggregation_12{GID:1}, logic prop:{stats:{count 4, ColNDVs map[4:4], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Projection_13{GID:2}, logic prop:{stats:{count 4, ColNDVs map[4:4], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1 where b > 0 group by a, b", + "Str": [ + "GID:1, GE:DataSource_14{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Aggregation_16{GID:1}, logic prop:{stats:{count 4, ColNDVs map[4:4], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Projection_17{GID:2}, logic prop:{stats:{count 4, ColNDVs map[4:4], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1 where cos(a) > 0 group by a, b", + "Str": [ + "GID:1, GE:DataSource_18{}, logic prop:{stats:{count 4, ColNDVs map[1:1.6 2:1.6], GroupNDVs [{[1 2] 3.2}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Aggregation_20{GID:1}, logic prop:{stats:{count 3.2, ColNDVs map[4:3.2], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Projection_21{GID:2}, logic prop:{stats:{count 3.2, ColNDVs map[4:3.2], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(c3) from (select a as c1, b as c2, a+1 as c3 from t1) as tmp group by c2, c1", + "Str": [ + "GID:1, GE:DataSource_22{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Aggregation_24{GID:1}, logic prop:{stats:{count 4, ColNDVs map[5:4], GroupNDVs []}, schema:{Column: [Column#5] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Projection_25{GID:2}, logic prop:{stats:{count 4, ColNDVs map[5:4], GroupNDVs []}, schema:{Column: [Column#5] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(c3) from (select a+b as c1, b as c2, a+1 as c3 from t1) as tmp group by c2, c1", + "Str": [ + "GID:1, GE:DataSource_26{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Aggregation_28{GID:1}, logic prop:{stats:{count 2, ColNDVs map[6:2], GroupNDVs []}, schema:{Column: [Column#6] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Projection_29{GID:2}, logic prop:{stats:{count 2, ColNDVs map[6:2], GroupNDVs []}, schema:{Column: [Column#6] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_30{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_33{}, logic prop:{stats:{count 3.333333333333333, ColNDVs map[7:1 8:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:MaxOneRow_36{GID:2}, logic prop:{stats:{count 1, ColNDVs map[7:1 8:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Apply_37{GID:1, GID:3}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 7:5 8:5], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Aggregation_38{GID:4}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}", + "GID:6, GE:Projection_39{GID:5}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b > (select t2.b from t2 where t2.a = t1.a)) tmp group by tmp.a, tmp.b", + "Str": [ + "GID:1, GE:DataSource_40{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_42{}, logic prop:{stats:{count 3.333333333333333, ColNDVs map[4:1 5:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:MaxOneRow_45{GID:2}, logic prop:{stats:{count 1, ColNDVs map[4:1 5:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Selection_50{GID:3}, logic prop:{stats:{count 0.8, ColNDVs map[4:0.8 5:0.8], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Apply_46{GID:1, GID:4}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 4:5 5:5], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:6, GE:Aggregation_48{GID:5}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:7, GE:Projection_49{GID:6}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_51{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_54{}, logic prop:{stats:{count 3.333333333333333, ColNDVs map[7:1 8:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Limit_62{GID:2}, logic prop:{stats:{count 3, ColNDVs map[7:1 8:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Apply_58{GID:1, GID:3}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 10:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b,Column#10] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Aggregation_59{GID:4}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}", + "GID:6, GE:Projection_60{GID:5}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_63{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_66{}, logic prop:{stats:{count 3.333333333333333, ColNDVs map[7:1 8:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Limit_74{GID:2}, logic prop:{stats:{count 3, ColNDVs map[7:1 8:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Apply_70{GID:1, GID:3}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 10:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b,Column#10] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Aggregation_71{GID:4}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}", + "GID:6, GE:Projection_72{GID:5}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b in (select t2.b from t2 where t2.a = t1.a limit 3)) tmp group by tmp.a, tmp.b", + "Str": [ + "GID:1, GE:DataSource_75{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_77{}, logic prop:{stats:{count 3.333333333333333, ColNDVs map[4:1 5:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Limit_86{GID:2}, logic prop:{stats:{count 3, ColNDVs map[4:1 5:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Apply_81{GID:1, GID:3}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Aggregation_83{GID:4}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:6, GE:Projection_84{GID:5}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b not in (select t2.b from t2 where t2.a = t1.a limit 3)) tmp group by tmp.a, tmp.b", + "Str": [ + "GID:1, GE:DataSource_87{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_89{}, logic prop:{stats:{count 3.333333333333333, ColNDVs map[4:1 5:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Limit_98{GID:2}, logic prop:{stats:{count 3, ColNDVs map[4:1 5:1], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Apply_93{GID:1, GID:3}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Aggregation_95{GID:4}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:6, GE:Projection_96{GID:5}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1, t2 where t1.a = t2.a group by t1.a, t1.b", + "Str": [ + "GID:1, GE:DataSource_99{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_100{}, logic prop:{stats:{count 10, ColNDVs map[4:3], GroupNDVs []}, schema:{Column: [test.t2.a] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_105{GID:1, GID:2}, logic prop:{stats:{count 16.666666666666668, ColNDVs map[1:2 2:2 4:3], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_103{GID:3}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_104{GID:4}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1 left join t2 on t1.a = t2.a group by t1.a, t1.b", + "Str": [ + "GID:1, GE:DataSource_106{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_107{}, logic prop:{stats:{count 10, ColNDVs map[4:3], GroupNDVs []}, schema:{Column: [test.t2.a] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_111{GID:1, GID:2}, logic prop:{stats:{count 16.666666666666668, ColNDVs map[1:2 2:2 4:3], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_109{GID:3}, logic prop:{stats:{count 4, ColNDVs map[7:4], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_110{GID:4}, logic prop:{stats:{count 4, ColNDVs map[7:4], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1 left join t2 on t1.a = t2.a group by t2.a, t2.b", + "Str": [ + "GID:1, GE:DataSource_112{}, logic prop:{stats:{count 5, ColNDVs map[1:2], GroupNDVs []}, schema:{Column: [test.t1.a] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_113{}, logic prop:{stats:{count 10, ColNDVs map[4:3 5:3], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_117{GID:1, GID:2}, logic prop:{stats:{count 16.666666666666668, ColNDVs map[1:2 4:3 5:3], GroupNDVs []}, schema:{Column: [test.t1.a,test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_115{GID:3}, logic prop:{stats:{count 3, ColNDVs map[7:3], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_116{GID:4}, logic prop:{stats:{count 3, ColNDVs map[7:3], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1 right join t2 on t1.a = t2.a group by t1.a, t1.b", + "Str": [ + "GID:1, GE:DataSource_118{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_119{}, logic prop:{stats:{count 10, ColNDVs map[4:3], GroupNDVs []}, schema:{Column: [test.t2.a] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_123{GID:1, GID:2}, logic prop:{stats:{count 16.666666666666668, ColNDVs map[1:2 2:2 4:3], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_121{GID:3}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_122{GID:4}, logic prop:{stats:{count 2, ColNDVs map[7:2], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from t1 right join t2 on t1.a = t2.a group by t2.a, t2.b", + "Str": [ + "GID:1, GE:DataSource_124{}, logic prop:{stats:{count 5, ColNDVs map[1:2], GroupNDVs []}, schema:{Column: [test.t1.a] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_125{}, logic prop:{stats:{count 10, ColNDVs map[4:3 5:3], GroupNDVs [{[4 5] 9}]}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_129{GID:1, GID:2}, logic prop:{stats:{count 16.666666666666668, ColNDVs map[1:2 4:3 5:3], GroupNDVs [{[4 5] 9}]}, schema:{Column: [test.t1.a,test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_127{GID:3}, logic prop:{stats:{count 9, ColNDVs map[7:9], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_128{GID:4}, logic prop:{stats:{count 9, ColNDVs map[7:9], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_130{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_133{}, logic prop:{stats:{count 10, ColNDVs map[7:3 8:3], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_136{GID:1, GID:2}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 10:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b,Column#10] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_137{GID:3}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_138{GID:4}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_139{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_142{}, logic prop:{stats:{count 10, ColNDVs map[7:3 8:3], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_145{GID:1, GID:2}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 10:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b,Column#10] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_146{GID:3}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_147{GID:4}, logic prop:{stats:{count 4, ColNDVs map[11:4], GroupNDVs []}, schema:{Column: [Column#11] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b in (select t2.b from t2 where t2.a > t1.a)) tmp group by tmp.a, tmp.b", + "Str": [ + "GID:1, GE:DataSource_148{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_150{}, logic prop:{stats:{count 10, ColNDVs map[4:3 5:3], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_153{GID:1, GID:2}, logic prop:{stats:{count 4, ColNDVs map[1:1.6 2:1.6], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_155{GID:3}, logic prop:{stats:{count 1.6, ColNDVs map[7:1.6], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_156{GID:4}, logic prop:{stats:{count 1.6, ColNDVs map[7:1.6], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "SQL": "select count(1) from (select t1.a as a, t1.b as b from t1 where t1.b not in (select t2.b from t2 where t2.a > t1.a)) tmp group by tmp.a, tmp.b", + "Str": [ + "GID:1, GE:DataSource_157{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_159{}, logic prop:{stats:{count 10, ColNDVs map[4:3 5:3], GroupNDVs []}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Join_162{GID:1, GID:2}, logic prop:{stats:{count 4, ColNDVs map[1:1.6 2:1.6], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Aggregation_164{GID:3}, logic prop:{stats:{count 1.6, ColNDVs map[7:1.6], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_165{GID:4}, logic prop:{stats:{count 1.6, ColNDVs map[7:1.6], GroupNDVs []}, schema:{Column: [Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_166{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:DataSource_167{}, logic prop:{stats:{count 10, ColNDVs map[4:3 5:3], GroupNDVs [{[4 5] 9}]}, schema:{Column: [test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Aggregation_168{GID:2}, logic prop:{stats:{count 9, ColNDVs map[4:9 5:9 7:9], GroupNDVs [{[4 5] 9}]}, schema:{Column: [Column#7,test.t2.a,test.t2.b] PKOrUK: [[test.t2.a,test.t2.b]] NullableUK: []}}", + "GID:4, GE:Join_172{GID:1, GID:3}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 4:5 5:5 7:5], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b,Column#7,test.t2.a,test.t2.b] PKOrUK: [] NullableUK: []}}", + "GID:5, GE:Projection_171{GID:4}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 4:5 5:5 7:5], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b,test.t2.a,test.t2.b,Column#7] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_173{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Limit_179{GID:1}, logic prop:{stats:{count 3, ColNDVs map[1:2 2:2], GroupNDVs []}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Aggregation_176{GID:2}, logic prop:{stats:{count 2, ColNDVs map[4:2], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Projection_177{GID:3}, logic prop:{stats:{count 2, ColNDVs map[4:2], GroupNDVs []}, schema:{Column: [Column#4] PKOrUK: [] NullableUK: []}}" + ] + }, + { + "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", + "Str": [ + "GID:1, GE:DataSource_180{}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b] PKOrUK: [] NullableUK: []}}", + "GID:2, GE:Window_183{GID:1}, logic prop:{stats:{count 5, ColNDVs map[1:2 2:2 5:5], GroupNDVs [{[1 2] 4}]}, schema:{Column: [test.t1.a,test.t1.b,Column#5] PKOrUK: [] NullableUK: []}}", + "GID:3, GE:Aggregation_185{GID:2}, logic prop:{stats:{count 4, ColNDVs map[6:4], GroupNDVs []}, schema:{Column: [Column#6] PKOrUK: [] NullableUK: []}}", + "GID:4, GE:Projection_186{GID:3}, logic prop:{stats:{count 4, ColNDVs map[6:4], GroupNDVs []}, schema:{Column: [Column#6] PKOrUK: [] NullableUK: []}}" + ] + } + ] + } +] diff --git a/pkg/planner/core/casetest/cbotest/BUILD.bazel b/pkg/planner/core/casetest/cbotest/BUILD.bazel index cd8e47357b17a..3bd8ef10f6d32 100644 --- a/pkg/planner/core/casetest/cbotest/BUILD.bazel +++ b/pkg/planner/core/casetest/cbotest/BUILD.bazel @@ -22,7 +22,7 @@ go_test( "//pkg/session", "//pkg/sessionctx/variable", "//pkg/statistics", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/testkit", "//pkg/testkit/testdata", "//pkg/testkit/testmain", diff --git a/pkg/planner/core/casetest/cbotest/cbo_test.go b/pkg/planner/core/casetest/cbotest/cbo_test.go index 9e43d42fe7448..e80f13898a3ac 100644 --- a/pkg/planner/core/casetest/cbotest/cbo_test.go +++ b/pkg/planner/core/casetest/cbotest/cbo_test.go @@ -32,7 +32,7 @@ import ( "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testdata" "github.com/stretchr/testify/require" 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 41838a6310fd7..a74d16649a4c0 100644 --- a/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_out.json +++ b/pkg/planner/core/casetest/cbotest/testdata/analyze_suite_out.json @@ -160,7 +160,7 @@ ], "Plan": [ "Limit 1.00 root offset:0, count:1", - "└─MergeJoin 1.00 root left outer semi join, left key:test.t.a, right key:test.t.b", + "└─MergeJoin 1.00 root left outer semi join, left side:TopN, left key:test.t.a, right key:test.t.b", " ├─IndexReader(Build) 25.00 root index:IndexFullScan", " │ └─IndexFullScan 25.00 cop[tikv] table:t2, index:idx_bc(b, c) keep order:true", " └─TopN(Probe) 1.00 root test.t.a, offset:0, count:1", @@ -380,7 +380,7 @@ "Cases": [ [ "Projection 10.00 root Column#22", - "└─Apply 10.00 root CARTESIAN left outer semi join, other cond:eq(test.t.c, Column#21)", + "└─Apply 10.00 root CARTESIAN left outer semi join, left side:IndexReader, other cond:eq(test.t.c, Column#21)", " ├─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", @@ -394,7 +394,7 @@ ], [ "Projection 10.00 root Column#13", - "└─Apply 10.00 root CARTESIAN left outer join", + "└─Apply 10.00 root CARTESIAN left outer join, left side:IndexReader", " ├─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 ", 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 e1c111054aa02..c173504285016 100644 --- a/pkg/planner/core/casetest/dag/testdata/plan_suite_out.json +++ b/pkg/planner/core/casetest/dag/testdata/plan_suite_out.json @@ -48,7 +48,7 @@ }, { "SQL": "select c from t order by t.a limit 1", - "Best": "IndexReader(Index(t.c_d_e)[[NULL,+inf]]->TopN([test.t.a],0,1))->TopN([test.t.a],0,1)->Projection" + "Best": "TableReader(Table(t)->Limit)->Limit->Projection" }, { "SQL": "select c from t order by t.a + t.b limit 1", @@ -165,7 +165,7 @@ }, { "SQL": "select * from t t1 join t t2 on t1.b = t2.a order by t1.a", - "Best": "LeftHashJoin{TableReader(Table(t))->TableReader(Table(t))}(test.t.b,test.t.a)->Sort" + "Best": "IndexJoin{TableReader(Table(t))->TableReader(Table(t))}(test.t.b,test.t.a)" }, { "SQL": "select * from t t1 join t t2 on t1.b = t2.a order by t1.a limit 1", @@ -508,7 +508,7 @@ }, { "SQL": "select a from t union all (select c from t) order by a limit 1", - "Best": "UnionAll{IndexReader(Index(t.f)[[NULL,+inf]]->TopN([test.t.a],0,1))->TopN([test.t.a],0,1)->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#25],0,1)" } ] }, 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..78a454b88e336 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 @@ -623,7 +623,7 @@ "└─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)", - " └─HashJoin_46 10000.00 mpp[tiflash] left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin_46 10000.00 mpp[tiflash] left outer semi join, left side:TableFullScan_24, 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", " │ └─TableFullScan_25 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -638,7 +638,7 @@ "└─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)", - " └─HashJoin_46 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin_46 10000.00 mpp[tiflash] anti left outer semi join, left side:TableFullScan_24, 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", " │ └─TableFullScan_25 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -649,7 +649,7 @@ { "SQL": "explain select a from t where t.a not in (select a from s where t.a<1); -- 9. non left join has left conditions", "Plan": [ - "MergeJoin_10 8000.00 root anti semi join, left key:test.t.a, right key:test.s.a, left cond:lt(test.t.a, 1)", + "MergeJoin_10 8000.00 root anti semi join, left side:TableReader_23, left key:test.t.a, right key:test.s.a, left cond:lt(test.t.a, 1)", "├─TableReader_26(Build) 10000.00 root data:TableFullScan_25", "│ └─TableFullScan_25 10000.00 cop[tikv] table:s keep order:true, stats:pseudo", "└─TableReader_23(Probe) 10000.00 root data:TableFullScan_22", @@ -1556,7 +1556,7 @@ "Plan": [ "TableReader_29 8000.00 root MppVersion: 2, data:ExchangeSender_28", "└─ExchangeSender_28 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_27 8000.00 mpp[tiflash] Null-aware anti semi join, equal:[eq(test.t.a, test.s.a)]", + " └─HashJoin_27 8000.00 mpp[tiflash] Null-aware anti semi join, left side:TableFullScan_11, equal:[eq(test.t.a, test.s.a)]", " ├─ExchangeReceiver_14(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_12 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", @@ -1569,7 +1569,7 @@ "Plan": [ "TableReader_30 8000.00 root MppVersion: 2, data:ExchangeSender_29", "└─ExchangeSender_29 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_28 8000.00 mpp[tiflash] Null-aware anti semi join, equal:[eq(test.t.a, test.s.a)], other cond:gt(test.t.c, test.s.c)", + " └─HashJoin_28 8000.00 mpp[tiflash] Null-aware anti semi join, left side:TableFullScan_12, equal:[eq(test.t.a, test.s.a)], other cond:gt(test.t.c, test.s.c)", " ├─ExchangeReceiver_15(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_14 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_13 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", @@ -1582,7 +1582,7 @@ "Plan": [ "TableReader_29 8000.00 root MppVersion: 2, data:ExchangeSender_28", "└─ExchangeSender_28 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_27 8000.00 mpp[tiflash] Null-aware anti semi join, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)]", + " └─HashJoin_27 8000.00 mpp[tiflash] Null-aware anti semi join, left side:TableFullScan_11, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)]", " ├─ExchangeReceiver_14(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_12 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", @@ -1595,7 +1595,7 @@ "Plan": [ "TableReader_30 8000.00 root MppVersion: 2, data:ExchangeSender_29", "└─ExchangeSender_29 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_28 8000.00 mpp[tiflash] Null-aware anti semi join, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)], other cond:lt(test.t.c, test.s.c)", + " └─HashJoin_28 8000.00 mpp[tiflash] Null-aware anti semi join, left side:TableFullScan_12, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)], other cond:lt(test.t.c, test.s.c)", " ├─ExchangeReceiver_15(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_14 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_13 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", @@ -1608,7 +1608,7 @@ "Plan": [ "TableReader_29 10000.00 root MppVersion: 2, data:ExchangeSender_28", "└─ExchangeSender_28 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_27 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.s.a)]", + " └─HashJoin_27 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan_11, equal:[eq(test.t.a, test.s.a)]", " ├─ExchangeReceiver_14(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_12 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", @@ -1621,7 +1621,7 @@ "Plan": [ "TableReader_30 10000.00 root MppVersion: 2, data:ExchangeSender_29", "└─ExchangeSender_29 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_28 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.s.a)], other cond:gt(test.t.c, test.s.c)", + " └─HashJoin_28 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan_12, equal:[eq(test.t.a, test.s.a)], other cond:gt(test.t.c, test.s.c)", " ├─ExchangeReceiver_15(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_14 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_13 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", @@ -1634,7 +1634,7 @@ "Plan": [ "TableReader_29 10000.00 root MppVersion: 2, data:ExchangeSender_28", "└─ExchangeSender_28 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_27 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)]", + " └─HashJoin_27 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan_11, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)]", " ├─ExchangeReceiver_14(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_12 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", @@ -1647,7 +1647,7 @@ "Plan": [ "TableReader_30 10000.00 root MppVersion: 2, data:ExchangeSender_29", "└─ExchangeSender_29 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_28 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)], other cond:lt(test.t.c, test.s.c)", + " └─HashJoin_28 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan_12, equal:[eq(test.t.a, test.s.a) eq(test.t.b, test.s.b)], other cond:lt(test.t.c, test.s.c)", " ├─ExchangeReceiver_15(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender_14 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan_13 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo", 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 a82d04cf149fb..70ebc16d86c26 100644 --- a/pkg/planner/core/casetest/hint/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/hint/testdata/integration_suite_out.json @@ -1179,7 +1179,7 @@ "└─HashJoin 15609.38 root inner join, equal:[eq(test.t2.a, test.t1.a)]", " ├─TableReader(Build) 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(test.t2.b, test.t3.b)]", + " └─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t2.b, test.t3.b)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", @@ -1196,7 +1196,7 @@ "└─HashJoin 15609.38 root inner join, equal:[eq(test.t2.a, test.t1.a)]", " ├─TableReader(Build) 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(test.t2.b, test.t3.b)]", + " └─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t2.b, test.t3.b)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", @@ -1210,7 +1210,7 @@ "SQL": "explain format = 'brief' select /*+ leading(t3), merge_join(t1) */ * from t1 right join t2 on t1.a = t2.a join t3 on t2.b = t3.b;", "Plan": [ "Projection 15609.38 root test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t3.a, test.t3.b", - "└─MergeJoin 15609.38 root right outer join, left key:test.t1.a, right key:test.t2.a", + "└─MergeJoin 15609.38 root right outer join, left side:Sort, left key:test.t1.a, right key:test.t2.a", " ├─Sort(Build) 10000.00 root test.t1.a", " │ └─TableReader 10000.00 root data:TableFullScan", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -1228,7 +1228,7 @@ { "SQL": "explain format = 'brief' select /*+ leading(t2), merge_join(t2) */ * from t1 right join t2 on t1.a = t2.a join t3 on t2.b = t3.b;", "Plan": [ - "HashJoin 15609.38 root right outer join, equal:[eq(test.t1.a, test.t2.a)]", + "HashJoin 15609.38 root right outer join, left side:TableReader, equal:[eq(test.t1.a, test.t2.a)]", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", "└─MergeJoin(Probe) 12487.50 root inner join, left key:test.t2.b, right key:test.t3.b", @@ -1485,7 +1485,7 @@ { "SQL": "explain format = 'brief' SELECT /*+ leading(t2@sel_2), merge_join(t) */ * FROM t join t1 on t.a = t1.a WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.b = t1.b);", "Plan": [ - "HashJoin 9990.00 root semi join, equal:[eq(test.t1.b, test.t2.b)]", + "HashJoin 9990.00 root semi join, left side:Projection, equal:[eq(test.t1.b, test.t2.b)]", "├─IndexReader(Build) 9990.00 root index:IndexFullScan", "│ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:false, stats:pseudo", "└─Projection(Probe) 12487.50 root test.t.a, test.t.b, test.t1.a, test.t1.b", @@ -1505,7 +1505,7 @@ { "SQL": "explain format = 'brief' SELECT /*+ leading(t1), inl_join(t1) */ * FROM t join t1 on t.a = t1.a WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.b = t1.b);", "Plan": [ - "HashJoin 9990.00 root semi join, equal:[eq(test.t1.b, test.t2.b)]", + "HashJoin 9990.00 root semi join, left side:Projection, equal:[eq(test.t1.b, test.t2.b)]", "├─IndexReader(Build) 9990.00 root index:IndexFullScan", "│ └─IndexFullScan 9990.00 cop[tikv] table:t2, index:idx_b(b) keep order:false, stats:pseudo", "└─Projection(Probe) 12487.50 root test.t.a, test.t.b, test.t1.a, test.t1.b", diff --git a/pkg/planner/core/casetest/index/index_test.go b/pkg/planner/core/casetest/index/index_test.go index 0a96d84fdd81a..d336e302a7b17 100644 --- a/pkg/planner/core/casetest/index/index_test.go +++ b/pkg/planner/core/casetest/index/index_test.go @@ -165,6 +165,8 @@ func TestRangeIntersection(t *testing.T) { tk.MustExec("use test") tk.MustExec(`set @@tidb_opt_fix_control = "54337:ON"`) tk.MustExec("create table t1 (a1 int, b1 int, c1 int, key pkx (a1,b1));") + + tk.MustExec("create table t_inlist_test(a1 int,b1 int,c1 varbinary(767) DEFAULT NULL, KEY twoColIndex (a1,b1));") tk.MustExec("insert into t1 values (1,1,1);") tk.MustExec("insert into t1 values (null,1,1);") tk.MustExec("insert into t1 values (1,null,1);") diff --git a/pkg/planner/core/casetest/index/testdata/index_range_in.json b/pkg/planner/core/casetest/index/testdata/index_range_in.json index f9bfecf10fdf6..06dc3c1c45282 100644 --- a/pkg/planner/core/casetest/index/testdata/index_range_in.json +++ b/pkg/planner/core/casetest/index/testdata/index_range_in.json @@ -44,6 +44,10 @@ "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');", "SELECT /*+ USE_INDEX(t,PK) */ a FROM tnull WHERE a IN (42) OR (a IS TRUE AND a IS NULL);", "SELECT id7 FROM tkey_string WHERE id7 > 'large' AND id7 < 'x-small';", + // IN list and range intersection + "SELECT 1 FROM t_inlist_test FORCE INDEX (twoColIndex) WHERE a1 IN (44, 70, 76) AND (a1 > 70 OR (a1 = 70 AND b1 > 41));", + "SELECT 1 FROM t_inlist_test FORCE INDEX (twoColIndex) WHERE a1 IN (44,45) AND (a1 > 70 OR (a1 = 70 AND b1 > 41));", + "SELECT 1 FROM t_inlist_test FORCE INDEX (twoColIndex) WHERE a1 IN (70, 73, 76) AND (a1 > 70 OR (a1 = 70 AND b1 > 41));", // Empty intersections. "select count(*) from t1 where (a1, b1) > (1, 10) and (a1, b1) < (0, 20)", "select count(*) from t1 where (a1, b1) > (1, 10) and (a1, b1) < (2, 20) and b1 <5", 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 e6848cd0bbe1b..87c0a4db8c383 100644 --- a/pkg/planner/core/casetest/index/testdata/index_range_out.json +++ b/pkg/planner/core/casetest/index/testdata/index_range_out.json @@ -387,6 +387,32 @@ "x-large" ] }, + { + "SQL": "SELECT 1 FROM t_inlist_test FORCE INDEX (twoColIndex) WHERE a1 IN (44, 70, 76) AND (a1 > 70 OR (a1 = 70 AND b1 > 41));", + "Plan": [ + "Projection 43.33 root 1->Column#5", + "└─IndexReader 54.17 root index:IndexRangeScan", + " └─IndexRangeScan 54.17 cop[tikv] table:t_inlist_test, index:twoColIndex(a1, b1) range:(70 41,70 +inf], [76,76], keep order:false, stats:pseudo" + ], + "Result": null + }, + { + "SQL": "SELECT 1 FROM t_inlist_test FORCE INDEX (twoColIndex) WHERE a1 IN (44,45) AND (a1 > 70 OR (a1 = 70 AND b1 > 41));", + "Plan": [ + "Projection 6.71 root 1->Column#5", + "└─TableDual 6.71 root rows:0" + ], + "Result": null + }, + { + "SQL": "SELECT 1 FROM t_inlist_test FORCE INDEX (twoColIndex) WHERE a1 IN (70, 73, 76) AND (a1 > 70 OR (a1 = 70 AND b1 > 41));", + "Plan": [ + "Projection 53.33 root 1->Column#5", + "└─IndexReader 53.33 root index:IndexRangeScan", + " └─IndexRangeScan 53.33 cop[tikv] table:t_inlist_test, index:twoColIndex(a1, b1) range:(70 41,70 +inf], [73,73], [76,76], keep order:false, stats:pseudo" + ], + "Result": null + }, { "SQL": "select count(*) from t1 where (a1, b1) > (1, 10) and (a1, b1) < (0, 20)", "Plan": [ diff --git a/pkg/planner/core/casetest/instanceplancache/BUILD.bazel b/pkg/planner/core/casetest/instanceplancache/BUILD.bazel index 0a36b03a618b8..68187888e0af2 100644 --- a/pkg/planner/core/casetest/instanceplancache/BUILD.bazel +++ b/pkg/planner/core/casetest/instanceplancache/BUILD.bazel @@ -12,9 +12,11 @@ go_test( "others_test.go", ], flaky = True, - shard_count = 28, + shard_count = 40, deps = [ + "//pkg/domain", "//pkg/parser/auth", + "//pkg/planner/core", "//pkg/testkit", "//pkg/util", "@com_github_stretchr_testify//require", diff --git a/pkg/planner/core/casetest/instanceplancache/concurrency_test.go b/pkg/planner/core/casetest/instanceplancache/concurrency_test.go index b5b8917ae1751..e6bbe6531c0ec 100644 --- a/pkg/planner/core/casetest/instanceplancache/concurrency_test.go +++ b/pkg/planner/core/casetest/instanceplancache/concurrency_test.go @@ -17,6 +17,7 @@ package instanceplancache import ( "fmt" "math/rand" + "sort" "strings" "sync" "testing" @@ -187,10 +188,13 @@ 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) + 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 +202,8 @@ 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) + 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 +226,8 @@ func TestInstancePlanCacheConcurrencySysbench(t *testing.T) { } } genDelete := func() *testStmt { - id := rand.Intn(maxID) + id := txnLeastID + rand.Intn(maxID-txnLeastID+1) + 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 +244,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 { @@ -266,11 +273,149 @@ func TestInstancePlanCacheConcurrencySysbench(t *testing.T) { testWithWorkers(TKs, stmts) } +func TestInstancePlanCacheIndexLookup(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec(`use test`) + tk.MustExec(`create table t1 (a int, b int)`) + tk.MustExec(`create table t2 (a int, key(a))`) + for i := 0; i < 100; i++ { + tk.MustExec(fmt.Sprintf("insert into t1 values (%v, %v)", i, i)) + tk.MustExec(fmt.Sprintf("insert into t2 values (%v)", i)) + } + + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + tki := testkit.NewTestKit(t, store) + tki.MustExec(`use test`) + tki.MustExec(`prepare st from 'select /*+ tidb_inlj(t2) */ t2.a from t1, t2 where t1.a=t2.a and t1.b=?'`) + for k := 0; k < 100; k++ { + v := rand.Intn(100) + tki.MustExec("set @v = ?", v) + tki.MustQuery("execute st using @v").Check(testkit.Rows(fmt.Sprintf("%v", v))) + } + }() + } + wg.Wait() +} + +func TestInstancePlanCacheTableIndexScan(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, primary key(a), key(b))`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + for i := 0; i < 100; i++ { + tk.MustExec(fmt.Sprintf("insert into t values (%v, %v)", i, i)) + } + + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + tki := testkit.NewTestKit(t, store) + tki.MustExec(`use test`) + + for k := 0; k < 100; k++ { + if rand.Intn(2) == 0 { // table scan + tki.MustExec(`prepare st from 'select a from t use index(primary) where a>=? and a<=?'`) + } else { // index scan + tki.MustExec(`prepare st from 'select b from t use index(b) where b>=? and b<=?'`) + } + v1, v2 := rand.Intn(50), rand.Intn(50)+50 + expected := make([]string, 0, v2-v1) + for v := v1; v <= v2; v++ { + expected = append(expected, fmt.Sprintf("%v", v)) + } + sort.Strings(expected) + + tki.MustExec(`set @v1 = ?, @v2 = ?`, v1, v2) + tki.MustQuery("execute st using @v1, @v2").Sort().Check(testkit.Rows(expected...)) + } + }() + } + wg.Wait() +} + +func TestInstancePlanCacheConcurrencyPointPartitioning(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(a)) partition by hash(a) partitions 10`) + tk.MustExec(`create table t2 (a int, primary key(a)) partition by range(a) ( + partition p0 values less than (10), + partition p1 values less than (20), + partition p2 values less than (30), + partition p3 values less than (40), + partition p4 values less than (50), + partition p5 values less than (60), + partition p6 values less than (70), + partition p7 values less than (80), + partition p8 values less than (90), + partition p9 values less than (100))`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + for i := 0; i < 100; i++ { + tk.MustExec(fmt.Sprintf("insert into t1 values (%v)", i)) + tk.MustExec(fmt.Sprintf("insert into t2 values (%v)", i)) + } + + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + tki := testkit.NewTestKit(t, store) + tki.MustExec(`use test`) + for k := 0; k < 100; k++ { + tName := fmt.Sprintf("t%v", rand.Intn(2)+1) + tki.MustExec(fmt.Sprintf("prepare st from 'select * from %v where a=?'", tName)) + a := rand.Intn(100) + tki.MustExec("set @a = ?", a) + tki.MustQuery("execute st using @a").Check(testkit.Rows(fmt.Sprintf("%v", a))) + } + }() + } + wg.Wait() +} + +func TestInstancePlanCacheConcurrencyPointMultipleColPKNoTxn(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, primary key(a, b))`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + for i := 0; i < 100; i++ { + tk.MustExec(fmt.Sprintf("insert into t values (%v, %v)", i, i)) + } + + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + tki := testkit.NewTestKit(t, store) + tki.MustExec(`use test`) + tki.MustExec(`prepare st from 'select * from t where a=? and b=?'`) + for k := 0; k < 100; k++ { + a := rand.Intn(100) + tki.MustExec("set @a = ?, @b = ?", a, a) + tki.MustQuery("execute st using @a, @b").Check(testkit.Rows(fmt.Sprintf("%v %v", a, a))) + } + }() + } + wg.Wait() +} + func TestInstancePlanCacheConcurrencyPointNoTxn(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, primary key(a))`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) for i := 0; i < 100; i++ { tk.MustExec(fmt.Sprintf("insert into t values (%v, %v)", i, i)) } @@ -293,6 +438,39 @@ func TestInstancePlanCacheConcurrencyPointNoTxn(t *testing.T) { wg.Wait() } +func TestInstancePlanCacheConcurrencyBatchPointNoTxn(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, primary key(a))`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + for i := 0; i < 100; i++ { + tk.MustExec(fmt.Sprintf("insert into t values (%v, %v)", i, i)) + } + + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + tki := testkit.NewTestKit(t, store) + tki.MustExec(`use test`) + tki.MustExec(`prepare st from 'select a from t where a in (?, ?)'`) + for k := 0; k < 100; k++ { + a1, a2 := rand.Intn(50), 50+rand.Intn(50) + tki.MustExec("set @a1 = ?, @a2 = ?", a1, a2) + v1, v2 := fmt.Sprintf("%v", a1), fmt.Sprintf("%v", a2) + if v1 > v2 { + v1, v2 = v2, v1 + } + tki.MustQuery("execute st using @a1, @a2").Sort().Check( + testkit.Rows(v1, v2)) + } + }() + } + wg.Wait() +} + func TestInstancePlanCacheConcurrencyPoint(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -351,6 +529,66 @@ func TestInstancePlanCacheConcurrencyPoint(t *testing.T) { testWithWorkers(TKs, stmts) } +func TestInstancePlanCacheConcurrencyPartitioning(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec(`use test`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + tk.MustExec(`create table t (a int) partition by range (a) ( + partition p0 values less than (10), + partition p1 values less than (20), + partition p2 values less than (30), + partition p3 values less than (40), + partition p4 values less than (50), + partition p5 values less than (60), + partition p6 values less than (70), + partition p7 values less than (80), + partition p8 values less than (90), + partition p9 values less than (100))`) + for i := 0; i < 100; i++ { + tk.MustExec(fmt.Sprintf("insert into t values (%v)", i)) + } + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + tki := testkit.NewTestKit(t, store) + tki.MustExec(`use test`) + + for k := 0; k < 100; k++ { + switch rand.Intn(3) { + case 0: // point get + tki.MustExec(`prepare st from 'select * from t where a=?'`) + v := rand.Intn(100) + tki.MustExec("set @v = ?", v) + tki.MustQuery("execute st using @v").Check(testkit.Rows(fmt.Sprintf("%v", v))) + case 1: // batch get + tki.MustExec(`prepare st from 'select * from t where a in (?, ?)'`) + v1, v2 := rand.Intn(50), 50+rand.Intn(50) + tki.MustExec("set @v1 = ?, @v2 = ?", v1, v2) + v1s, v2s := fmt.Sprintf("%v", v1), fmt.Sprintf("%v", v2) + if v1s > v2s { + v1s, v2s = v2s, v1s + } + tki.MustQuery("execute st using @v1, @v2").Sort().Check(testkit.Rows(v1s, v2s)) + case 2: // range scan + tki.MustExec(`prepare st from 'select * from t where a between ? and ?'`) + v1, v2 := rand.Intn(50), 50+rand.Intn(50) + tki.MustExec("set @v1 = ?, @v2 = ?", v1, v2) + expected := make([]string, 0, v2-v1+1) + for v := v1; v <= v2; v++ { + expected = append(expected, fmt.Sprintf("%v", v)) + } + sort.Strings(expected) + tki.MustQuery("execute st using @v1, @v2").Sort().Check(testkit.Rows(expected...)) + } + } + }() + } + wg.Wait() +} + func TestInstancePlanCacheConcurrencyComp(t *testing.T) { // cases from https://github.com/PingCAP-QE/qa/tree/master/comp/yy/plan-cache store := testkit.CreateMockStore(t) diff --git a/pkg/planner/core/casetest/instanceplancache/dml_test.go b/pkg/planner/core/casetest/instanceplancache/dml_test.go index 09367c25cc3bf..4bc0ca1bc67f2 100644 --- a/pkg/planner/core/casetest/instanceplancache/dml_test.go +++ b/pkg/planner/core/casetest/instanceplancache/dml_test.go @@ -309,3 +309,139 @@ func TestInstancePlanCacheDMLBasic(t *testing.T) { checkResult() } } + +func TestInstancePlanCacheUpdateSpecifiedPartition(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + tk.MustExec(`create table t1 (a int, b int) partition by range (a) ( + partition p0 values less than (10), + partition p1 values less than (20), + partition p2 values less than (30), + partition p3 values less than (40))`) + tk.MustExec(`create table t2 (a int, b int) partition by range (a) ( + partition p0 values less than (10), + partition p1 values less than (20), + partition p2 values less than (30), + partition p3 values less than (40))`) + for i := 0; i < 40; i++ { + tk.MustExec(fmt.Sprintf("insert into t1 values (%d, %d)", i, i)) + tk.MustExec(fmt.Sprintf("insert into t2 values (%d, %d)", i, i)) + } + tk.MustExec(`set @v=1`) + for i := 0; i < 100; i++ { + pIdx := rand.Intn(5) + if pIdx < 4 { // update a specified partition + tk.MustExec(fmt.Sprintf(`prepare st from 'update t1 partition(p%v) set b = b + ?'`, pIdx)) + tk.MustExec(`execute st using @v`) + tk.MustExec(`execute st using @v`) + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) // can hit the cache + tk.MustExec(fmt.Sprintf(`update t2 partition(p%v) set b = b + 2`, pIdx)) + } else { // no specified partition + tk.MustExec(`prepare st from 'update t1 set b = b + ?'`) + tk.MustExec(`execute st using @v`) + tk.MustExec(`execute st using @v`) + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) // can hit the cache + tk.MustExec(`update t2 set b = b + 2`) + } + tk.MustQuery(`select * from t1`).Sort().Check(tk.MustQuery(`select * from t2`).Sort().Rows()) + } +} + +func TestInstancePlanCacheDMLPartitioning(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + tk.MustExec(`create table t1 (a int, b int) partition by range (a) ( + partition p0 values less than (10), + partition p1 values less than (20), + partition p2 values less than (30), + partition p3 values less than (40))`) + tk.MustExec(`create table t2 (a int, b int) partition by hash(a) partitions 4`) + tk.MustExec(`create table t3 (a int, b int) partition by list columns (a) ( + partition p0 values in (0, 1, 2), + partition p1 values in (3, 4, 5), + partition p2 values in (6, 7, 8), + partition p3 values in (9, 10, 11))`) + + for _, tbl := range []string{"t1", "t2", "t3"} { + // insert + tk.MustExec(fmt.Sprintf("prepare st from 'insert into %v values (?, ?)'", tbl)) + tk.MustExec("set @a = 1, @b = 2") + tk.MustExec("execute st using @a, @b") + tk.MustExec("execute st using @b, @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'insert into %v (a, b) values (?, ?)'", tbl)) + tk.MustExec("set @a = 1, @b = 2") + tk.MustExec("execute st using @a, @b") + tk.MustExec("execute st using @b, @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + // delete + tk.MustExec(fmt.Sprintf("prepare st from 'delete from %v'", tbl)) + tk.MustExec("execute st") + tk.MustExec("execute st") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'delete from %v where a = ?'", tbl)) + tk.MustExec("set @a = 1") + tk.MustExec("execute st using @a") + tk.MustExec("execute st using @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'delete from %v where a = ? and b = ?'", tbl)) + tk.MustExec("set @a = 1, @b = 2") + tk.MustExec("execute st using @a, @b") + tk.MustExec("execute st using @b, @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + // update + tk.MustExec(fmt.Sprintf("prepare st from 'update %v set b = 1'", tbl)) + tk.MustExec("execute st") + tk.MustExec("execute st") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'update %v set b = 1 where a = ?'", tbl)) + tk.MustExec("set @a = 1") + tk.MustExec("execute st using @a") + tk.MustExec("execute st using @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'update %v set b = 1 where a = ? and b = ?'", tbl)) + tk.MustExec("set @a = 1, @b = 2") + tk.MustExec("execute st using @a, @b") + tk.MustExec("execute st using @b, @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'update %v partition(p0) set b = 1'", tbl)) + tk.MustExec("execute st") + tk.MustExec("execute st") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'update %v partition(p0, p1) set b = 1'", tbl)) + tk.MustExec("execute st") + tk.MustExec("execute st") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'update %v partition(p0, p1, p2) set b = 1'", tbl)) + tk.MustExec("execute st") + tk.MustExec("execute st") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + // replace + tk.MustExec(fmt.Sprintf("prepare st from 'replace into %v values (?, ?)'", tbl)) + tk.MustExec("set @a = 1, @b = 2") + tk.MustExec("execute st using @a, @b") + tk.MustExec("execute st using @b, @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + + tk.MustExec(fmt.Sprintf("prepare st from 'replace into %v (a, b) values (?, ?)'", tbl)) + tk.MustExec("set @a = 1, @b = 2") + tk.MustExec("execute st using @a, @b") + tk.MustExec("execute st using @b, @a") + tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) + } +} diff --git a/pkg/planner/core/casetest/instanceplancache/others_test.go b/pkg/planner/core/casetest/instanceplancache/others_test.go index f6ffe4c7065a8..7188560287d33 100644 --- a/pkg/planner/core/casetest/instanceplancache/others_test.go +++ b/pkg/planner/core/casetest/instanceplancache/others_test.go @@ -16,16 +16,32 @@ package instanceplancache import ( "fmt" + "sort" "strings" "testing" "time" + "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/parser/auth" + plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" ) +func TestInstancePlanCacheMinSize(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExecToErr("set global tidb_instance_plan_cache_max_size=0") + tk.MustExecToErr("set global tidb_instance_plan_cache_max_size=1") + tk.MustExecToErr("set global tidb_instance_plan_cache_max_size=101KiB") + tk.MustExecToErr("set global tidb_instance_plan_cache_max_size=10001KiB") + tk.MustExecToErr("set global tidb_instance_plan_cache_max_size=99MiB") + tk.MustExec("set global tidb_instance_plan_cache_max_size=100MiB") + tk.MustExec("set global tidb_instance_plan_cache_max_size=101MiB") + tk.MustExec("set global tidb_instance_plan_cache_max_size=2000000KiB") +} + func TestInstancePlanCacheVars(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) @@ -45,8 +61,8 @@ func TestInstancePlanCacheVars(t *testing.T) { tk.MustExecToErr(`set global tidb_instance_plan_cache_max_size=-1`) tk.MustExecToErr(`set global tidb_instance_plan_cache_max_size=-1111111111111`) tk.MustExecToErr(`set global tidb_instance_plan_cache_max_size=dslfj`) - tk.MustExec(`set global tidb_instance_plan_cache_max_size=123456`) - tk.MustQuery(`select @@tidb_instance_plan_cache_max_size`).Check(testkit.Rows("123456")) + tk.MustExec(`set global tidb_instance_plan_cache_max_size=1234560000`) + tk.MustQuery(`select @@tidb_instance_plan_cache_max_size`).Check(testkit.Rows("1234560000")) tk.MustExec(`set global tidb_instance_plan_cache_reserved_percentage=-1`) tk.MustQuery(`show warnings`).Check(testkit.Rows(`Warning 1292 Truncated incorrect tidb_instance_plan_cache_reserved_percentage value: '-1'`)) tk.MustExec(`set global tidb_instance_plan_cache_reserved_percentage=1.1100`) @@ -487,3 +503,137 @@ func TestInstancePlanCachePlan(t *testing.T) { tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) } } + +func TestInstancePlanCacheMetaInfo(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + require.NoError(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil, nil)) + tk.MustExec(`use test`) + tk.MustExec(`create table t (a int, b int, key(a))`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + tk.MustExec(`set @a=1, @b=2`) + + tk.MustExec(`prepare st from "select a from t where a1`) + tk.MustExec(`prepare st from "select a from t where a=? and b>?"`) + tk.MustExec(`execute st using @a, @b`) + tk.MustExec(`prepare st from "insert into t values (?, 1)"`) + tk.MustExec(`execute st using @a`) + tk.MustExec(`prepare st from "delete from t where a=?"`) + tk.MustExec(`execute st using @a`) + + sctx := tk.Session() + values := domain.GetDomain(sctx).GetInstancePlanCache().All() + require.Len(t, values, 4) + sort.Slice(values, func(i, j int) bool { + return values[i].(*plannercore.PlanCacheValue).SQLDigest < + values[j].(*plannercore.PlanCacheValue).SQLDigest + }) + v0 := values[0].(*plannercore.PlanCacheValue) + v1 := values[1].(*plannercore.PlanCacheValue) + v2 := values[2].(*plannercore.PlanCacheValue) + v3 := values[3].(*plannercore.PlanCacheValue) + + require.True(t, v0.SQLDigest != "") // not empty + require.Equal(t, "insert into t values (?, 1)", v0.SQLText) + require.Equal(t, "Insert", v0.StmtType) + require.Equal(t, "root", v0.ParseUser) + require.Equal(t, "", v0.Binding) + require.True(t, v0.OptimizerEnvHash != "") // not empty + require.Equal(t, "1", v0.ParseValues) + + require.True(t, v1.SQLDigest != "") // not empty + require.Equal(t, "select a from t where a?", v3.SQLText) + require.Equal(t, "Select", v3.StmtType) + require.Equal(t, "root", v3.ParseUser) + require.Equal(t, "SELECT /*+ use_index(`t` `a`)*/ `a` FROM `test`.`t` WHERE `a` = 1 AND `b` > 1", v3.Binding) + require.True(t, v3.OptimizerEnvHash != "") // not empty + require.Equal(t, "(1, 2)", v3.ParseValues) +} + +func TestInstancePlanCacheRuntimeInfo(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, key(a))`) + tk.MustExec(`insert into t values (1, 1)`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + tk.MustExec(`set @a=1, @b=2`) + + tk.MustExec(`prepare st1 from "select a from t where a<=?"`) + tk.MustExec(`execute st1 using @a`) + tk.MustExec(`execute st1 using @a`) + tk.MustExec(`execute st1 using @a`) + tk.MustExec(`execute st1 using @a`) + tk.MustExec(`prepare st2 from "select a from t where a=? and b=?"`) + tk.MustExec(`execute st2 using @a, @b`) + tk.MustExec(`execute st2 using @a, @b`) + + sctx := tk.Session() + values := domain.GetDomain(sctx).GetInstancePlanCache().All() + require.Len(t, values, 2) + sort.Slice(values, func(i, j int) bool { + return values[i].(*plannercore.PlanCacheValue).SQLDigest < + values[j].(*plannercore.PlanCacheValue).SQLDigest + }) + v0 := values[0].(*plannercore.PlanCacheValue) + v1 := values[1].(*plannercore.PlanCacheValue) + + require.Equal(t, v0.SQLText, "select a from t where a<=?") + exec, _, _, sumLat, _ := v0.RuntimeInfo() + require.Equal(t, int(exec), 4) + require.True(t, sumLat != 0) + + require.Equal(t, v1.SQLText, "select a from t where a=? and b=?") + exec, _, _, sumLat, _ = v1.RuntimeInfo() + require.Equal(t, int(exec), 2) + require.True(t, sumLat != 0) + + tk.MustExec(`execute st1 using @a`) + exec, _, _, _, _ = v0.RuntimeInfo() + require.Equal(t, int(exec), 5) +} + +func TestInstancePlanCacheView(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + require.NoError(t, tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "%"}, nil, nil, nil)) + tk.MustExec(`use test`) + tk.MustExec(`create table t (a int, b int, key(a))`) + tk.MustExec(`set global tidb_enable_instance_plan_cache=1`) + tk.MustExec(`set @a=1, @b=2`) + + tk.MustExec(`prepare st1 from "select a from t where a<=?"`) + tk.MustExec(`prepare st2 from "select a from t where a=? and b=?"`) + tk.MustExec(`execute st1 using @a`) + tk.MustExec(`execute st1 using @a`) + tk.MustExec(`execute st2 using @a, @b`) + tk.MustExec(`execute st2 using @a, @b`) + + tk.MustQuery(`select sql_text, stmt_type, parse_user, parse_values, executions from information_schema.tidb_plan_cache order by sql_text`).Check( + testkit.Rows("select a from t where a<=? Select root 1 2", + "select a from t where a=? and b=? Select root (1, 2) 2")) + + tk.MustExec(`execute st1 using @a`) + tk.MustExec(`execute st2 using @a, @b`) + tk.MustQuery(`select sql_text, stmt_type, parse_user, parse_values, executions from information_schema.tidb_plan_cache order by sql_text`).Check( + testkit.Rows("select a from t where a<=? Select root 1 3", + "select a from t where a=? and b=? Select root (1, 2) 3")) +} 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..c03fc744e2c1d 100644 --- a/pkg/planner/core/casetest/mpp/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/mpp/testdata/integration_suite_out.json @@ -69,7 +69,7 @@ "└─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", - " └─HashJoin 8.00 mpp[tiflash] left outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", + " └─HashJoin 8.00 mpp[tiflash] left outer join, left side:TableFullScan, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.d1_t.d1_k))", @@ -84,7 +84,7 @@ "└─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", - " └─HashJoin 8.00 mpp[tiflash] right outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", + " └─HashJoin 8.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", " ├─ExchangeReceiver(Build) 8.00 mpp[tiflash] ", " │ └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 8.00 mpp[tiflash] not(isnull(test.fact_t.d1_k))", @@ -115,7 +115,7 @@ "└─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", - " └─HashJoin 8.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)]", + " └─HashJoin 8.00 mpp[tiflash] left outer join, left side:TableFullScan, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], left cond:[gt(test.fact_t.col1, 10)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.d1_t.d1_k))", @@ -130,7 +130,7 @@ "└─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", - " └─HashJoin 8.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)", + " └─HashJoin 8.00 mpp[tiflash] left outer join, left side:TableFullScan, 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) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.d1_t.d1_k)), not(isnull(test.d1_t.value))", @@ -145,7 +145,7 @@ "└─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", - " └─HashJoin 8.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)", + " └─HashJoin 8.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], right cond:gt(test.d1_t.value, 10)", " ├─ExchangeReceiver(Build) 8.00 mpp[tiflash] ", " │ └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 8.00 mpp[tiflash] not(isnull(test.fact_t.d1_k))", @@ -160,7 +160,7 @@ "└─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", - " └─HashJoin 8.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)", + " └─HashJoin 8.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, 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) 8.00 mpp[tiflash] ", " │ └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 8.00 mpp[tiflash] not(isnull(test.fact_t.col1)), not(isnull(test.fact_t.d1_k))", @@ -174,7 +174,7 @@ "StreamAgg 1.00 root funcs:count(1)->Column#12", "└─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)]", + " └─HashJoin 6.40 mpp[tiflash] semi join, left side:Selection, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.d1_t.d1_k))", @@ -190,7 +190,7 @@ "└─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", - " └─HashJoin 6.40 mpp[tiflash] semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", + " └─HashJoin 6.40 mpp[tiflash] semi join, left side:Selection, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.d1_t.d1_k)), not(isnull(test.d1_t.value))", @@ -226,7 +226,7 @@ "└─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", - " └─HashJoin 6.40 mpp[tiflash] semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", + " └─HashJoin 6.40 mpp[tiflash] semi join, left side:Selection, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.d1_t.d1_k)), not(isnull(test.d1_t.value))", @@ -241,7 +241,7 @@ "StreamAgg 1.00 root funcs:count(1)->Column#12", "└─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)]", + " └─HashJoin 6.40 mpp[tiflash] anti semi join, left side:TableFullScan, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 2.00 mpp[tiflash] table:d1_t keep order:false", @@ -255,7 +255,7 @@ "└─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", - " └─HashJoin 6.40 mpp[tiflash] anti semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", + " └─HashJoin 6.40 mpp[tiflash] anti semi join, left side:TableFullScan, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 2.00 mpp[tiflash] table:d1_t keep order:false", @@ -285,7 +285,7 @@ "└─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", - " └─HashJoin 16.00 mpp[tiflash] CARTESIAN left outer join, other cond:gt(test.fact_t.d1_k, test.d1_t.d1_k)", + " └─HashJoin 16.00 mpp[tiflash] CARTESIAN left outer join, left side:TableFullScan, other cond:gt(test.fact_t.d1_k, test.d1_t.d1_k)", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.d1_t.d1_k))", @@ -300,7 +300,7 @@ "└─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", - " └─HashJoin 16.00 mpp[tiflash] CARTESIAN right outer join, other cond:gt(test.fact_t.d1_k, test.d1_t.d1_k)", + " └─HashJoin 16.00 mpp[tiflash] CARTESIAN right outer join, left side:ExchangeReceiver, other cond:gt(test.fact_t.d1_k, test.d1_t.d1_k)", " ├─ExchangeReceiver(Build) 8.00 mpp[tiflash] ", " │ └─ExchangeSender 8.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 8.00 mpp[tiflash] not(isnull(test.fact_t.d1_k))", @@ -314,7 +314,7 @@ "StreamAgg 1.00 root funcs:count(1)->Column#11", "└─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)]", + " └─HashJoin 6.40 mpp[tiflash] Null-aware anti semi join, left side:TableFullScan, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 2.00 mpp[tiflash] table:d1_t keep order:false", @@ -333,7 +333,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 10000.00 mpp[tiflash] left outer semi join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -348,7 +348,7 @@ "└─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)", - " └─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)", + " └─HashJoin 10000.00 mpp[tiflash] left outer semi join, left side:TableFullScan, 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", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -363,7 +363,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -378,7 +378,7 @@ "└─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)", - " └─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)", + " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, left side:TableFullScan, 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", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -393,7 +393,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.b, test.t.a)", + " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:TableFullScan, other cond:eq(test.t.b, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -408,7 +408,7 @@ "└─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)", - " └─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)", + " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:TableFullScan, 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", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -423,7 +423,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.a)]", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan, equal:[eq(test.t.b, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -438,7 +438,7 @@ "└─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)", - " └─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)", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan, 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", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -452,11 +452,11 @@ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", - " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 10000.00 mpp[tiflash] anti left outer semi join, left side:HashJoin, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] left outer semi join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -470,11 +470,11 @@ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", - " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.t.b)]", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:HashJoin, equal:[eq(test.t.a, test.t.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.a, test.t.b)", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:TableFullScan, other cond:eq(test.t.a, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -488,11 +488,11 @@ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", - " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.a)]", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:HashJoin, equal:[eq(test.t.b, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.b, test.t.a)", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:TableFullScan, other cond:eq(test.t.b, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -506,11 +506,11 @@ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 10000.00 mpp[tiflash] Column#13, Column#17", - " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.b)]", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:HashJoin, equal:[eq(test.t.b, test.t.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.b, test.t.b)", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:TableFullScan, other cond:eq(test.t.b, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -523,35 +523,35 @@ "Plan": [ "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.b)]", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:HashJoin, equal:[eq(test.t.b, test.t.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.b, test.t.a)]", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:HashJoin, equal:[eq(test.t.b, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.t.b)]", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:HashJoin, equal:[eq(test.t.a, test.t.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] anti left outer semi join, left side:HashJoin, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.b, test.t.b)", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:HashJoin, other cond:eq(test.t.b, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.b, test.t.a)", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:HashJoin, other cond:eq(test.t.b, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.a, test.t.b)", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:HashJoin, other cond:eq(test.t.a, test.t.b)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", - " └─HashJoin(Probe) 10000.00 mpp[tiflash] left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin(Probe) 10000.00 mpp[tiflash] left outer semi join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -571,7 +571,7 @@ "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.a.id", - " └─HashJoin 2.00 mpp[tiflash] left outer join, equal:[eq(test.a.id, test.b.id)]", + " └─HashJoin 2.00 mpp[tiflash] left outer join, left side:TableFullScan, equal:[eq(test.a.id, test.b.id)]", " ├─ExchangeReceiver(Build) 3.00 mpp[tiflash] ", " │ └─ExchangeSender 3.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 3.00 mpp[tiflash] not(isnull(test.b.id))", @@ -586,7 +586,7 @@ "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.b.id", - " └─HashJoin 2.00 mpp[tiflash] right outer join, equal:[eq(test.b.id, test.a.id)]", + " └─HashJoin 2.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.b.id, test.a.id)]", " ├─ExchangeReceiver(Build) 3.00 mpp[tiflash] ", " │ └─ExchangeSender 3.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 3.00 mpp[tiflash] not(isnull(test.b.id))", @@ -606,7 +606,7 @@ "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.a.id", - " └─HashJoin 2.00 mpp[tiflash] left outer join, equal:[eq(test.a.id, test.b.id)]", + " └─HashJoin 2.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.a.id, test.b.id)]", " ├─ExchangeReceiver(Build) 3.00 mpp[tiflash] ", " │ └─ExchangeSender 3.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.b.id, collate: binary]", " │ └─Selection 3.00 mpp[tiflash] not(isnull(test.b.id))", @@ -622,7 +622,7 @@ "StreamAgg 1.00 root funcs:count(1)->Column#7", "└─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)]", + " └─HashJoin 2.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.b.id, test.a.id)]", " ├─ExchangeReceiver(Build) 3.00 mpp[tiflash] ", " │ └─ExchangeSender 3.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.b.id, collate: binary]", " │ └─Selection 3.00 mpp[tiflash] not(isnull(test.b.id))", @@ -644,7 +644,7 @@ "└─TableReader 2.00 root MppVersion: 2, data:ExchangeSender", " └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 2.00 mpp[tiflash] test.a.id", - " └─HashJoin 2.00 mpp[tiflash] left outer join, equal:[eq(test.a.id, test.b.id)]", + " └─HashJoin 2.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.a.id, test.b.id)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.a.id, collate: binary]", " │ └─TableFullScan 2.00 mpp[tiflash] table:a keep order:false", @@ -660,7 +660,7 @@ "StreamAgg 1.00 root funcs:count(1)->Column#7", "└─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)]", + " └─HashJoin 2.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.b.id, test.a.id)]", " ├─ExchangeReceiver(Build) 2.00 mpp[tiflash] ", " │ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.a.id, collate: binary]", " │ └─TableFullScan 2.00 mpp[tiflash] table:a keep order:false", @@ -785,7 +785,7 @@ " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", " └─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)]", + " └─HashJoin 32.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, 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]", " │ └─Selection 4.00 mpp[tiflash] not(isnull(test.d1_t.d1_k))", @@ -802,7 +802,7 @@ "└─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", - " └─HashJoin 32.00 mpp[tiflash] right outer join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)]", + " └─HashJoin 32.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, 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]", " │ └─TableFullScan 4.00 mpp[tiflash] table:d1_t keep order:false", @@ -839,7 +839,7 @@ " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", " └─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)]", + " └─HashJoin 32.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, 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] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", " │ └─Selection 4.00 mpp[tiflash] not(isnull(test.d1_t.d1_k))", @@ -864,7 +864,7 @@ " └─Projection(Probe) 102.40 mpp[tiflash] test.fact_t.d1_k", " └─Selection 102.40 mpp[tiflash] gt(case(isnull(test.fact_t.col1), plus(test.fact_t.col1, 5), 10), 5)", " └─Projection 128.00 mpp[tiflash] test.fact_t.col1, test.fact_t.d1_k, test.fact_t.col1", - " └─HashJoin 128.00 mpp[tiflash] right outer join, equal:[eq(test.fact_t.d1_k, test.fact_t.d1_k)]", + " └─HashJoin 128.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.fact_t.d1_k, test.fact_t.d1_k)]", " ├─ExchangeReceiver(Build) 16.00 mpp[tiflash] ", " │ └─ExchangeSender 16.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.fact_t.d1_k, collate: binary]", " │ └─Selection 16.00 mpp[tiflash] not(isnull(test.fact_t.d1_k))", @@ -883,7 +883,7 @@ " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", " └─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)", + " └─HashJoin 32.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, 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] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", " │ └─Selection 4.00 mpp[tiflash] not(isnull(test.d1_t.d1_k)), not(isnull(test.d1_t.value))", @@ -901,7 +901,7 @@ " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", " └─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)", + " └─HashJoin 32.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, 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] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", " │ └─TableFullScan 4.00 mpp[tiflash] table:d1_t keep order:false", @@ -919,7 +919,7 @@ " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#12", " └─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)", + " └─HashJoin 32.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, 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] ", " │ └─ExchangeSender 4.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.d1_t.d1_k, collate: binary]", " │ └─TableFullScan 4.00 mpp[tiflash] table:d1_t keep order:false", @@ -935,7 +935,7 @@ "StreamAgg 1.00 root funcs:count(1)->Column#12", "└─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)]", + " └─HashJoin 12.80 mpp[tiflash] semi join, left side:ExchangeReceiver, 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]", " │ └─Selection 4.00 mpp[tiflash] not(isnull(test.d1_t.d1_k))", @@ -953,7 +953,7 @@ "└─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", - " └─HashJoin 12.80 mpp[tiflash] semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", + " └─HashJoin 12.80 mpp[tiflash] semi join, left side:ExchangeReceiver, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", " ├─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]", " │ └─Selection 4.00 mpp[tiflash] not(isnull(test.d1_t.d1_k)), not(isnull(test.d1_t.value))", @@ -970,7 +970,7 @@ "StreamAgg 1.00 root funcs:count(1)->Column#12", "└─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)]", + " └─HashJoin 12.80 mpp[tiflash] anti semi join, left side:ExchangeReceiver, 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]", " │ └─TableFullScan 4.00 mpp[tiflash] table:d1_t keep order:false", @@ -986,7 +986,7 @@ "└─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", - " └─HashJoin 12.80 mpp[tiflash] anti semi join, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", + " └─HashJoin 12.80 mpp[tiflash] anti semi join, left side:ExchangeReceiver, equal:[eq(test.fact_t.d1_k, test.d1_t.d1_k)], other cond:gt(test.d1_t.value, test.fact_t.col1)", " ├─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]", " │ └─TableFullScan 4.00 mpp[tiflash] table:d1_t keep order:false", @@ -1007,14 +1007,14 @@ "└─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", - " └─HashJoin 1.00 mpp[tiflash] left outer join, equal:[eq(test.t3.v1, test.t1.v1) eq(test.t3.v2, test.t1.v2)]", + " └─HashJoin 1.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, 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", " │ └─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 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)]", + " └─HashJoin 2.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, 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]", " │ └─Selection 2.00 mpp[tiflash] not(isnull(test.t1.v1)), not(isnull(test.t1.v2))", @@ -1037,7 +1037,7 @@ " └─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", " └─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)]", + " └─HashJoin 2.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, 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", @@ -1058,7 +1058,7 @@ " └─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", - " └─HashJoin 1.00 mpp[tiflash] left outer join, equal:[eq(test.t3.v1, test.t2.v1) eq(test.t3.v2, test.t2.v2)]", + " └─HashJoin 1.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t3.v1, test.t2.v1) eq(test.t3.v2, test.t2.v2)]", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t3.v1, collate: binary], [name: test.t3.v2, collate: binary]", " │ └─TableFullScan 1.00 mpp[tiflash] table:t3 keep order:false", @@ -1088,7 +1088,7 @@ { "SQL": "explain format = 'brief' select * from table_1 a left join table_1 b on a.id = b.id and dayofmonth(a.datetime_col) > 100", "Plan": [ - "HashJoin 2.00 root left outer join, equal:[eq(test.table_1.id, test.table_1.id)], left cond:[gt(dayofmonth(test.table_1.datetime_col), 100)]", + "HashJoin 2.00 root left outer join, left side:TableReader, equal:[eq(test.table_1.id, test.table_1.id)], left cond:[gt(dayofmonth(test.table_1.datetime_col), 100)]", "├─TableReader(Build) 2.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", "│ └─TableFullScan 2.00 mpp[tiflash] table:b keep order:false", @@ -1100,7 +1100,7 @@ { "SQL": "explain format = 'brief' select * from table_1 a right join table_1 b on a.id = b.id and dayofmonth(b.datetime_col) > 100", "Plan": [ - "HashJoin 2.00 root right outer join, equal:[eq(test.table_1.id, test.table_1.id)], right cond:gt(dayofmonth(test.table_1.datetime_col), 100)", + "HashJoin 2.00 root right outer join, left side:TableReader, equal:[eq(test.table_1.id, test.table_1.id)], right cond:gt(dayofmonth(test.table_1.datetime_col), 100)", "├─TableReader(Build) 2.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", "│ └─TableFullScan 2.00 mpp[tiflash] table:a keep order:false", @@ -1382,7 +1382,7 @@ "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, left side:TableFullScan, equal:[eq(test.t.id, Column#9)]", " ├─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", @@ -1396,7 +1396,7 @@ "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, left side:ExchangeReceiver, equal:[eq(test.t.id, Column#9)]", " ├─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))", @@ -1427,7 +1427,7 @@ "Plan": [ "TableReader 7992.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 7992.00 mpp[tiflash] semi join, equal:[eq(test.t.id, test.t.id)]", + " └─HashJoin 7992.00 mpp[tiflash] semi join, left side:Selection, equal:[eq(test.t.id, test.t.id)]", " ├─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))", @@ -1441,7 +1441,7 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 8000.00 mpp[tiflash] anti semi join, equal:[eq(test.t.id, test.t.id)]", + " └─HashJoin 8000.00 mpp[tiflash] anti semi join, left side:TableFullScan, equal:[eq(test.t.id, test.t.id)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -1688,7 +1688,7 @@ "TableReader 7984.01 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7984.01 mpp[tiflash] ExchangeType: PassThrough", " └─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)]", + " └─HashJoin 7984.01 mpp[tiflash] semi join, left side:ExchangeReceiver, 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", @@ -1707,7 +1707,7 @@ "TableReader 19492.21 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 19492.21 mpp[tiflash] ExchangeType: PassThrough", " └─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)]", + " └─HashJoin 19492.21 mpp[tiflash] right outer join, left side:Projection, 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", @@ -1769,7 +1769,7 @@ "Plan": [ "TableReader 7992.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 7992.00 mpp[tiflash] semi join, equal:[eq(test.tt.b1, test.t.c3)]", + " └─HashJoin 7992.00 mpp[tiflash] semi join, left side:ExchangeReceiver, equal:[eq(test.tt.b1, test.t.c3)]", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] ", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c3, collate: binary]", " │ └─Projection 8000.00 mpp[tiflash] test.t.c3", @@ -1791,7 +1791,7 @@ "Plan": [ "TableReader 7992.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 7992.00 mpp[tiflash] semi join, equal:[eq(test.tt.b1, test.t.c3)], stream_count: 8", + " └─HashJoin 7992.00 mpp[tiflash] semi join, left side:ExchangeReceiver, equal:[eq(test.tt.b1, test.t.c3)], stream_count: 8", " ├─ExchangeReceiver(Build) 8000.00 mpp[tiflash] stream_count: 8", " │ └─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c3, collate: binary], stream_count: 8", " │ └─Projection 8000.00 mpp[tiflash] test.t.c3", @@ -2219,7 +2219,7 @@ " └─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", - " └─HashJoin 10000.00 mpp[tiflash] left outer join, equal:[eq(test.t.id, test.t.id) eq(test.t.value, test.t.value)]", + " └─HashJoin 10000.00 mpp[tiflash] left outer join, left side:ExchangeReceiver, 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", " │ └─ExchangeReceiver 7984.01 mpp[tiflash] ", diff --git a/pkg/planner/core/casetest/partition/integration_partition_test.go b/pkg/planner/core/casetest/partition/integration_partition_test.go index 706baf88f4188..8436d1788301b 100644 --- a/pkg/planner/core/casetest/partition/integration_partition_test.go +++ b/pkg/planner/core/casetest/partition/integration_partition_test.go @@ -34,16 +34,18 @@ func TestListPartitionPruning(t *testing.T) { tk.MustExec("create database list_partition_pruning") tk.MustExec("use list_partition_pruning") tk.MustExec("drop table if exists tlist") - tk.MustExec(`create table tlist (a int) partition by list (a) ( + tk.MustExec(`create table tlist (a int, b int) partition by list (a) ( partition p0 values in (0, 1, 2), partition p1 values in (3, 4, 5), partition p2 values in (6, 7, 8), - partition p3 values in (9, 10, 11))`) - tk.MustExec(`create table tcollist (a int) partition by list columns(a) ( + partition p3 values in (9, 10, 11), + partition p4 values in (-1))`) + tk.MustExec(`create table tcollist (a int, b int) partition by list columns(a) ( partition p0 values in (0, 1, 2), partition p1 values in (3, 4, 5), partition p2 values in (6, 7, 8), - partition p3 values in (9, 10, 11))`) + partition p3 values in (9, 10, 11), + partition p4 values in (-1))`) tk.MustExec(`analyze table tlist`) tk.MustExec(`analyze table tcollist`) diff --git a/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_in.json b/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_in.json index c45821aa50e67..7fe00b8fc0a50 100644 --- a/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_in.json +++ b/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_in.json @@ -53,7 +53,12 @@ "explain format = 'brief' replace tlist select * from tlist where a in (2)", "explain format = 'brief' replace tlist select * from tlist where a in (0, 5)", "explain format = 'brief' replace tcollist select * from tcollist where a in (2)", - "explain format = 'brief' replace tcollist select * from tcollist where a in (0, 5)" + "explain format = 'brief' replace tcollist select * from tcollist where a in (0, 5)", + // for non partition column + "explain format = 'brief' select * from tlist where b > 0", + "explain format = 'brief' select * from tcollist where b > 0", + "explain format = 'brief' select * from tlist where b < 0", + "explain format = 'brief' select * from tcollist where b < 0" ] }, { diff --git a/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_out.json b/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_out.json index fbdb4ea477f96..5677735c6cd88 100644 --- a/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_out.json +++ b/pkg/planner/core/casetest/partition/testdata/integration_partition_suite_out.json @@ -91,27 +91,35 @@ { "SQL": "explain format = 'brief' select * from tlist where a not in (0, 1, 2, 3, 4, 5, 6, 7, 8)", "DynamicPlan": [ - "TableReader 3583.33 root partition:p3 data:Selection", + "TableReader 3583.33 root partition:p3,p4 data:Selection", "└─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tlist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", " └─TableFullScan 10000.00 cop[tikv] table:tlist keep order:false, stats:pseudo" ], "StaticPlan": [ - "TableReader 3583.33 root data:Selection", - "└─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tlist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", - " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p3 keep order:false, stats:pseudo" + "PartitionUnion 7166.67 root ", + "├─TableReader 3583.33 root data:Selection", + "│ └─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tlist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p3 keep order:false, stats:pseudo", + "└─TableReader 3583.33 root data:Selection", + " └─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tlist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", + " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p4 keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select * from tcollist where a not in (0, 1, 2, 3, 4, 5, 6, 7, 8)", "DynamicPlan": [ - "TableReader 3583.33 root partition:p3 data:Selection", + "TableReader 3583.33 root partition:p3,p4 data:Selection", "└─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tcollist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", " └─TableFullScan 10000.00 cop[tikv] table:tcollist keep order:false, stats:pseudo" ], "StaticPlan": [ - "TableReader 3583.33 root data:Selection", - "└─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tcollist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", - " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p3 keep order:false, stats:pseudo" + "PartitionUnion 7166.67 root ", + "├─TableReader 3583.33 root data:Selection", + "│ └─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tcollist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p3 keep order:false, stats:pseudo", + "└─TableReader 3583.33 root data:Selection", + " └─Selection 3583.33 cop[tikv] not(in(list_partition_pruning.tcollist.a, 0, 1, 2, 3, 4, 5, 6, 7, 8))", + " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p4 keep order:false, stats:pseudo" ] }, { @@ -151,41 +159,47 @@ { "SQL": "explain format = 'brief' select * from tlist where a <= 6", "DynamicPlan": [ - "TableReader 3323.33 root partition:p0,p1,p2 data:Selection", + "TableReader 3323.33 root partition:p0,p1,p2,p4 data:Selection", "└─Selection 3323.33 cop[tikv] le(list_partition_pruning.tlist.a, 6)", " └─TableFullScan 10000.00 cop[tikv] table:tlist keep order:false, stats:pseudo" ], "StaticPlan": [ - "PartitionUnion 9970.00 root ", + "PartitionUnion 13293.33 root ", "├─TableReader 3323.33 root data:Selection", "│ └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tlist.a, 6)", "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p0 keep order:false, stats:pseudo", "├─TableReader 3323.33 root data:Selection", "│ └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tlist.a, 6)", "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tlist.a, 6)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p2 keep order:false, stats:pseudo", "└─TableReader 3323.33 root data:Selection", " └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tlist.a, 6)", - " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p2 keep order:false, stats:pseudo" + " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p4 keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select * from tcollist where a <= 6", "DynamicPlan": [ - "TableReader 3323.33 root partition:p0,p1,p2 data:Selection", + "TableReader 3323.33 root partition:p0,p1,p2,p4 data:Selection", "└─Selection 3323.33 cop[tikv] le(list_partition_pruning.tcollist.a, 6)", " └─TableFullScan 10000.00 cop[tikv] table:tcollist keep order:false, stats:pseudo" ], "StaticPlan": [ - "PartitionUnion 9970.00 root ", + "PartitionUnion 13293.33 root ", "├─TableReader 3323.33 root data:Selection", "│ └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tcollist.a, 6)", "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p0 keep order:false, stats:pseudo", "├─TableReader 3323.33 root data:Selection", "│ └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tcollist.a, 6)", "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tcollist.a, 6)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p2 keep order:false, stats:pseudo", "└─TableReader 3323.33 root data:Selection", " └─Selection 3323.33 cop[tikv] le(list_partition_pruning.tcollist.a, 6)", - " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p2 keep order:false, stats:pseudo" + " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p4 keep order:false, stats:pseudo" ] }, { @@ -217,35 +231,41 @@ { "SQL": "explain format = 'brief' select * from tlist where a < 6", "DynamicPlan": [ - "TableReader 3323.33 root partition:p0,p1 data:Selection", + "TableReader 3323.33 root partition:p0,p1,p4 data:Selection", "└─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.a, 6)", " └─TableFullScan 10000.00 cop[tikv] table:tlist keep order:false, stats:pseudo" ], "StaticPlan": [ - "PartitionUnion 6646.67 root ", + "PartitionUnion 9970.00 root ", "├─TableReader 3323.33 root data:Selection", "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.a, 6)", "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p0 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.a, 6)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo", "└─TableReader 3323.33 root data:Selection", " └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.a, 6)", - " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo" + " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p4 keep order:false, stats:pseudo" ] }, { "SQL": "explain format = 'brief' select * from tcollist where a < 6", "DynamicPlan": [ - "TableReader 3323.33 root partition:p0,p1 data:Selection", + "TableReader 3323.33 root partition:p0,p1,p4 data:Selection", "└─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.a, 6)", " └─TableFullScan 10000.00 cop[tikv] table:tcollist keep order:false, stats:pseudo" ], "StaticPlan": [ - "PartitionUnion 6646.67 root ", + "PartitionUnion 9970.00 root ", "├─TableReader 3323.33 root data:Selection", "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.a, 6)", "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p0 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.a, 6)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo", "└─TableReader 3323.33 root data:Selection", " └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.a, 6)", - " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo" + " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p4 keep order:false, stats:pseudo" ] }, { @@ -659,6 +679,110 @@ " └─Selection 20.00 cop[tikv] in(list_partition_pruning.tcollist.a, 0, 5)", " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo" ] + }, + { + "SQL": "explain format = 'brief' select * from tlist where b > 0", + "DynamicPlan": [ + "TableReader 3333.33 root partition:all data:Selection", + "└─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tlist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tlist keep order:false, stats:pseudo" + ], + "StaticPlan": [ + "PartitionUnion 16666.67 root ", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p0 keep order:false, stats:pseudo", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p2 keep order:false, stats:pseudo", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p3 keep order:false, stats:pseudo", + "└─TableReader 3333.33 root data:Selection", + " └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tlist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p4 keep order:false, stats:pseudo" + ] + }, + { + "SQL": "explain format = 'brief' select * from tcollist where b > 0", + "DynamicPlan": [ + "TableReader 3333.33 root partition:all data:Selection", + "└─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tcollist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tcollist keep order:false, stats:pseudo" + ], + "StaticPlan": [ + "PartitionUnion 16666.67 root ", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p0 keep order:false, stats:pseudo", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p2 keep order:false, stats:pseudo", + "├─TableReader 3333.33 root data:Selection", + "│ └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p3 keep order:false, stats:pseudo", + "└─TableReader 3333.33 root data:Selection", + " └─Selection 3333.33 cop[tikv] gt(list_partition_pruning.tcollist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p4 keep order:false, stats:pseudo" + ] + }, + { + "SQL": "explain format = 'brief' select * from tlist where b < 0", + "DynamicPlan": [ + "TableReader 3323.33 root partition:all data:Selection", + "└─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tlist keep order:false, stats:pseudo" + ], + "StaticPlan": [ + "PartitionUnion 16616.67 root ", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p0 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p1 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p2 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p3 keep order:false, stats:pseudo", + "└─TableReader 3323.33 root data:Selection", + " └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tlist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tlist, partition:p4 keep order:false, stats:pseudo" + ] + }, + { + "SQL": "explain format = 'brief' select * from tcollist where b < 0", + "DynamicPlan": [ + "TableReader 3323.33 root partition:all data:Selection", + "└─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tcollist keep order:false, stats:pseudo" + ], + "StaticPlan": [ + "PartitionUnion 16616.67 root ", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p0 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p1 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p2 keep order:false, stats:pseudo", + "├─TableReader 3323.33 root data:Selection", + "│ └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.b, 0)", + "│ └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p3 keep order:false, stats:pseudo", + "└─TableReader 3323.33 root data:Selection", + " └─Selection 3323.33 cop[tikv] lt(list_partition_pruning.tcollist.b, 0)", + " └─TableFullScan 10000.00 cop[tikv] table:tcollist, partition:p4 keep order:false, stats:pseudo" + ] } ] }, 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 8ab9807f5a9f2..4ee0330d587f6 100644 --- a/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json +++ b/pkg/planner/core/casetest/physicalplantest/testdata/plan_suite_out.json @@ -872,7 +872,7 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -886,7 +886,7 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -902,7 +902,7 @@ "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.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -916,7 +916,7 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -933,7 +933,7 @@ "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.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -955,7 +955,7 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -971,7 +971,7 @@ "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.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -987,7 +987,7 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 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:t1 keep order:false, stats:pseudo", @@ -1003,7 +1003,7 @@ "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.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 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:t2 keep order:false, stats:pseudo", @@ -1024,7 +1024,7 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -1040,7 +1040,7 @@ "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.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.a))", @@ -1056,7 +1056,7 @@ "Plan": [ "TableReader 12487.50 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 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:t1 keep order:false, stats:pseudo", @@ -1072,7 +1072,7 @@ "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.a, test.t.a)]", + " └─HashJoin 12487.50 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 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:t2 keep order:false, stats:pseudo", @@ -1090,7 +1090,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.a, test.t.a)", + " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:TableFullScan, other cond:eq(test.t.a, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", @@ -1107,7 +1107,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", @@ -1126,7 +1126,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, other cond:eq(test.t.a, test.t.a)", + " └─HashJoin 10000.00 mpp[tiflash] CARTESIAN left outer semi join, left side:TableFullScan, other cond:eq(test.t.a, test.t.a)", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", @@ -1145,7 +1145,7 @@ "└─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)", - " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, equal:[eq(test.t.a, test.t.a)]", + " └─HashJoin 10000.00 mpp[tiflash] Null-aware anti left outer semi join, left side:TableFullScan, equal:[eq(test.t.a, test.t.a)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", @@ -1579,7 +1579,7 @@ "Plan": [ "TableReader_36 0.80 root MppVersion: 2, data:ExchangeSender_35", "└─ExchangeSender_35 0.80 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_34 0.80 mpp[tiflash] semi join, equal:[eq(test.t1.a, test.t2.b)]", + " └─HashJoin_34 0.80 mpp[tiflash] semi join, left side:Selection_13, equal:[eq(test.t1.a, test.t2.b)]", " ├─ExchangeReceiver_17(Build) 8.00 mpp[tiflash] ", " │ └─ExchangeSender_16 8.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection_15 8.00 mpp[tiflash] not(isnull(test.t2.b))", @@ -1609,7 +1609,7 @@ "Plan": [ "TableReader_38 0.80 root MppVersion: 2, data:ExchangeSender_37", "└─ExchangeSender_37 0.80 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_36 0.80 mpp[tiflash] semi join, equal:[eq(test.t1.a, test.t2.b)]", + " └─HashJoin_36 0.80 mpp[tiflash] semi join, left side:ExchangeReceiver_15, equal:[eq(test.t1.a, test.t2.b)]", " ├─ExchangeReceiver_15(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender_14 1.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.a, collate: binary]", " │ └─Selection_13 1.00 mpp[tiflash] not(isnull(test.t1.a))", @@ -1636,7 +1636,7 @@ "Plan": [ "TableReader_32 3.00 root MppVersion: 2, data:ExchangeSender_31", "└─ExchangeSender_31 3.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_30 3.00 mpp[tiflash] right outer join, equal:[eq(test.t1.a, test.t2.b)], other cond:lt(test.t1.c, test.t2.d)", + " └─HashJoin_30 3.00 mpp[tiflash] right outer join, left side:ExchangeReceiver_14, equal:[eq(test.t1.a, test.t2.b)], other cond:lt(test.t1.c, test.t2.d)", " ├─ExchangeReceiver_14(Build) 5.00 mpp[tiflash] ", " │ └─ExchangeSender_13 5.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection_12 5.00 mpp[tiflash] not(isnull(test.t1.a)), not(isnull(test.t1.c))", @@ -1665,7 +1665,7 @@ "Plan": [ "TableReader_34 3.00 root MppVersion: 2, data:ExchangeSender_33", "└─ExchangeSender_33 3.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin_32 3.00 mpp[tiflash] right outer join, equal:[eq(test.t1.a, test.t2.b)], other cond:lt(test.t1.c, test.t2.d)", + " └─HashJoin_32 3.00 mpp[tiflash] right outer join, left side:ExchangeReceiver_14, equal:[eq(test.t1.a, test.t2.b)], other cond:lt(test.t1.c, test.t2.d)", " ├─ExchangeReceiver_17(Build) 3.00 mpp[tiflash] ", " │ └─ExchangeSender_16 3.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─TableFullScan_15 3.00 mpp[tiflash] table:t2 keep order:false", @@ -1684,7 +1684,7 @@ { "SQL": "select /*+ inl_join(t1@sel_2) */ a, (select b from t1 where t1.a = t2.b) from t2;", "Plan": [ - "IndexJoin 12500.00 root left outer join, inner:TableReader, outer key:test.t2.b, inner key:test.t1.a, equal cond:eq(test.t2.b, test.t1.a)", + "IndexJoin 12500.00 root left outer join, inner:TableReader, left side:TableReader, outer key:test.t2.b, inner key:test.t1.a, equal cond:eq(test.t2.b, test.t1.a)", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", "└─TableReader(Probe) 10000.00 root data:TableRangeScan", @@ -1695,7 +1695,7 @@ { "SQL": "select /*+ inl_join(t2) */ a, (select b from t1 where t1.a = t2.b) from t2;", "Plan": [ - "HashJoin 12500.00 root left outer join, equal:[eq(test.t2.b, test.t1.a)]", + "HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.a)]", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", "└─TableReader(Probe) 10000.00 root data:TableFullScan", @@ -2257,11 +2257,11 @@ "Cases": [ { "SQL": "select max(a) from t;", - "Best": "IndexReader(Index(t.f)[[NULL,+inf]]->TopN([test.t.a true],0,1))->TopN([test.t.a true],0,1)->StreamAgg" + "Best": "TableReader(Table(t)->Limit)->Limit->StreamAgg" }, { "SQL": "select min(a) from t;", - "Best": "IndexReader(Index(t.f)[[NULL,+inf]]->TopN([test.t.a],0,1))->TopN([test.t.a],0,1)->StreamAgg" + "Best": "TableReader(Table(t)->Limit)->Limit->StreamAgg" }, { "SQL": "select min(c_str) from t;", @@ -2277,7 +2277,7 @@ }, { "SQL": "select max(a), min(a) from t;", - "Best": "LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]]->TopN([test.t.a true],0,1))->TopN([test.t.a true],0,1)->StreamAgg->IndexReader(Index(t.f)[[NULL,+inf]]->TopN([test.t.a],0,1))->TopN([test.t.a],0,1)->StreamAgg}" + "Best": "LeftHashJoin{TableReader(Table(t)->Limit)->Limit->StreamAgg->TableReader(Table(t)->Limit)->Limit->StreamAgg}" }, { "SQL": "select max(a), min(a) from t where a > 10", @@ -2289,7 +2289,7 @@ }, { "SQL": "select max(a), max(c), min(f) from t", - "Best": "LeftHashJoin{LeftHashJoin{IndexReader(Index(t.f)[[NULL,+inf]]->TopN([test.t.a true],0,1))->TopN([test.t.a true],0,1)->StreamAgg->IndexReader(Index(t.c_d_e)[[NULL,+inf]]->Limit)->Limit->StreamAgg}->IndexReader(Index(t.f)[[NULL,+inf]]->Limit)->Limit->StreamAgg}" + "Best": "LeftHashJoin{LeftHashJoin{TableReader(Table(t)->Limit)->Limit->StreamAgg->IndexReader(Index(t.c_d_e)[[NULL,+inf]]->Limit)->Limit->StreamAgg}->IndexReader(Index(t.f)[[NULL,+inf]]->Limit)->Limit->StreamAgg}" }, { "SQL": "select max(a), max(b) from t", @@ -3230,7 +3230,7 @@ { "SQL": "select exists(select /*+ SEMI_JOIN_REWRITE() */ * from t t1 where t1.a=t.a) from t", "Plan": [ - "HashJoin 10000.00 root left outer semi join, equal:[eq(test.t.a, test.t.a)]", + "HashJoin 10000.00 root left outer semi join, left side:TableReader, equal:[eq(test.t.a, test.t.a)]", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", "└─TableReader(Probe) 10000.00 root data:TableFullScan", @@ -3241,7 +3241,7 @@ { "SQL": "select * from t where exists (select /*+ SEMI_JOIN_REWRITE() */ 1 from t t1 where t1.a > t.a)", "Plan": [ - "HashJoin 7992.00 root CARTESIAN semi join, other cond:gt(test.t.a, test.t.a)", + "HashJoin 7992.00 root CARTESIAN semi join, left side:TableReader, other cond:gt(test.t.a, test.t.a)", "├─TableReader(Build) 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", diff --git a/pkg/planner/core/casetest/plan_test.go b/pkg/planner/core/casetest/plan_test.go index 27a6e2d24c533..6e7478a8661f1 100644 --- a/pkg/planner/core/casetest/plan_test.go +++ b/pkg/planner/core/casetest/plan_test.go @@ -334,6 +334,32 @@ func TestHandleEQAll(t *testing.T) { tk.MustQuery("select c2 from t2 where (c2 = all (select /*+ use_INDEX(t2, i1) */ c2 from t2))").Check(testkit.Rows()) } +func TestOuterJoinElimination(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec(`create table t1 (a int, b int, c int)`) + tk.MustExec(`create table t2 (a int, b int, c int)`) + tk.MustExec(`create table t2_k (a int, b int, c int, key(a))`) + tk.MustExec(`create table t2_uk (a int, b int, c int, unique key(a))`) + tk.MustExec(`create table t2_nnuk (a int not null, b int, c int, unique key(a))`) + tk.MustExec(`create table t2_pk (a int, b int, c int, primary key(a))`) + + // only when t2.a has unique attribute, we can eliminate the outer join. + // nullable unique index is not allowed to trigger the outer join elinimation. + tk.MustHavePlan("select count(*) from t1 left join t2 on t1.a = t2.a", "Join") + tk.MustHavePlan("select count(*) from t1 left join t2_k on t1.a = t2_k.a", "Join") + tk.MustHavePlan("select count(*) from t1 left join t2_uk on t1.a = t2_uk.a", "Join") + tk.MustNotHavePlan("select count(*) from t1 left join t2_nnuk on t1.a = t2_nnuk.a", "Join") + tk.MustNotHavePlan("select count(*) from t1 left join t2_pk on t1.a = t2_pk.a", "Join") + + tk.MustHavePlan("select count(*) from t1 left join t2 on t1.a = t2.a group by t1.a", "Join") + tk.MustHavePlan("select count(*) from t1 left join t2_k on t1.a = t2_k.a group by t1.a", "Join") + tk.MustHavePlan("select count(*) from t1 left join t2_uk on t1.a = t2_uk.a group by t1.a", "Join") + tk.MustNotHavePlan("select count(*) from t1 left join t2_nnuk on t1.a = t2_nnuk.a group by t1.a", "Join") + tk.MustNotHavePlan("select count(*) from t1 left join t2_pk on t1.a = t2_pk.a group by t1.a", "Join") +} + func TestCTEErrNotSupportedYet(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) diff --git a/pkg/planner/core/casetest/planstats/BUILD.bazel b/pkg/planner/core/casetest/planstats/BUILD.bazel index 373c23ef265ab..2244bb71edf61 100644 --- a/pkg/planner/core/casetest/planstats/BUILD.bazel +++ b/pkg/planner/core/casetest/planstats/BUILD.bazel @@ -25,7 +25,6 @@ go_test( "//pkg/sessionctx/stmtctx", "//pkg/statistics", "//pkg/statistics/handle/types", - "//pkg/table", "//pkg/testkit", "//pkg/testkit/testdata", "//pkg/testkit/testmain", diff --git a/pkg/planner/core/casetest/planstats/plan_stats_test.go b/pkg/planner/core/casetest/planstats/plan_stats_test.go index ea42c5de98b19..66945d644b08b 100644 --- a/pkg/planner/core/casetest/planstats/plan_stats_test.go +++ b/pkg/planner/core/casetest/planstats/plan_stats_test.go @@ -36,7 +36,6 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/types" - "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testdata" "github.com/stretchr/testify/require" @@ -78,7 +77,7 @@ func TestPlanStatsLoad(t *testing.T) { switch pp := p.(type) { case *plannercore.PhysicalTableReader: stats := pp.StatsInfo().HistColl - require.Equal(t, 0, countFullStats(stats, tableInfo.Columns[1].ID)) + require.Equal(t, -1, countFullStats(stats, tableInfo.Columns[1].ID)) require.Greater(t, countFullStats(stats, tableInfo.Columns[2].ID), 0) default: t.Error("unexpected plan:", pp) @@ -391,12 +390,12 @@ func TestCollectDependingVirtualCols(t *testing.T) { is := dom.InfoSchema() tableNames := []string{"t", "t1"} tblName2TblID := make(map[string]int64) - tblID2Tbl := make(map[int64]table.Table) + tblID2Tbl := make(map[int64]*model.TableInfo) for _, tblName := range tableNames { tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr(tblName)) require.NoError(t, err) tblName2TblID[tblName] = tbl.Meta().ID - tblID2Tbl[tbl.Meta().ID] = tbl + tblID2Tbl[tbl.Meta().ID] = tbl.Meta() } var input []struct { @@ -417,9 +416,9 @@ func TestCollectDependingVirtualCols(t *testing.T) { require.NotNil(t, tbl) neededItems := make([]model.StatsLoadItem, 0, len(testCase.InputColNames)) for _, colName := range testCase.InputColNames { - col := tbl.Meta().FindPublicColumnByName(colName) + col := tbl.FindPublicColumnByName(colName) require.NotNil(t, col) - neededItems = append(neededItems, model.StatsLoadItem{TableItemID: model.TableItemID{TableID: tbl.Meta().ID, ID: col.ID}, FullLoad: true}) + neededItems = append(neededItems, model.StatsLoadItem{TableItemID: model.TableItemID{TableID: tbl.ID, ID: col.ID}, FullLoad: true}) } // call the function @@ -428,7 +427,7 @@ func TestCollectDependingVirtualCols(t *testing.T) { // record and check the output cols := make([]string, 0, len(res)) for _, tblColID := range res { - colName := tbl.Meta().FindColumnNameByID(tblColID.ID) + colName := tbl.FindColumnNameByID(tblColID.ID) require.NotEmpty(t, colName) cols = append(cols, colName) } @@ -484,5 +483,6 @@ func TestPartialStatsInExplain(t *testing.T) { output[i].Result = testdata.ConvertRowsToStrings(tk.MustQuery(sql).Rows()) }) tk.MustQuery(sql).Check(testkit.Rows(output[i].Result...)) + require.NoError(t, dom.StatsHandle().LoadNeededHistograms(dom.InfoSchema())) } } diff --git a/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_in.json b/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_in.json index c337e47bdd266..fb5062be299d5 100644 --- a/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_in.json +++ b/pkg/planner/core/casetest/planstats/testdata/plan_stats_suite_in.json @@ -67,6 +67,8 @@ "name": "TestPartialStatsInExplain", "cases": [ "explain format = brief select * from tp where b = 10", + "explain format = brief select * from tp where b = 10", + "explain format = brief select * from t join tp where tp.a = 10 and t.b = tp.c", "explain format = brief select * from t join tp where tp.a = 10 and t.b = tp.c", "explain format = brief select * from t join tp partition (p0) join t2 where t.a < 10 and t.b = tp.c and t2.a > 10 and t2.a = tp.c" ] 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 238825df0e8a3..d2d4b06a17e7a 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 @@ -108,9 +108,31 @@ { "Query": "explain format = brief select * from tp where b = 10", "Result": [ - "TableReader 0.01 root partition:all data:Selection", - "└─Selection 0.01 cop[tikv] eq(test.tp.b, 10)", - " └─TableFullScan 6.00 cop[tikv] table:tp keep order:false, stats:partial[b:allEvicted]" + "TableReader 4.80 root partition:all data:Selection", + "└─Selection 4.80 cop[tikv] eq(test.tp.b, 10)", + " └─TableFullScan 6.00 cop[tikv] table:tp keep order:false, stats:partial[ic:unInitialized, b:unInitialized]" + ] + }, + { + "Query": "explain format = brief select * from tp where b = 10", + "Result": [ + "TableReader 1.00 root partition:all data:Selection", + "└─Selection 1.00 cop[tikv] eq(test.tp.b, 10)", + " └─TableFullScan 6.00 cop[tikv] table:tp keep order:false" + ] + }, + { + "Query": "explain format = brief select * from t join tp where tp.a = 10 and t.b = tp.c", + "Result": [ + "Projection 1.00 root test.t.a, test.t.b, test.t.c, test.tp.a, test.tp.b, test.tp.c", + "└─IndexJoin 1.00 root inner join, inner:IndexLookUp, outer key:test.tp.c, inner key:test.t.b, equal cond:eq(test.tp.c, test.t.b)", + " ├─TableReader(Build) 1.00 root partition:p1 data:Selection", + " │ └─Selection 1.00 cop[tikv] eq(test.tp.a, 10), not(isnull(test.tp.c))", + " │ └─TableFullScan 6.00 cop[tikv] table:tp keep order:false, stats:partial[c:allEvicted]", + " └─IndexLookUp(Probe) 1.00 root ", + " ├─Selection(Build) 1.00 cop[tikv] not(isnull(test.t.b))", + " │ └─IndexRangeScan 1.00 cop[tikv] table:t, index:idx(b) range: decided by [eq(test.t.b, test.tp.c)], keep order:false, stats:partial[idx:allEvicted, a:allEvicted, b:allEvicted]", + " └─TableRowIDScan(Probe) 1.00 cop[tikv] table:t keep order:false, stats:partial[idx:allEvicted, a:allEvicted, b:allEvicted]" ] }, { @@ -123,23 +145,22 @@ " │ └─TableFullScan 6.00 cop[tikv] table:tp keep order:false, stats:partial[c:allEvicted]", " └─TableReader(Probe) 3.00 root data:Selection", " └─Selection 3.00 cop[tikv] not(isnull(test.t.b))", - " └─TableFullScan 3.00 cop[tikv] table:t keep order:false, stats:partial[idx:allEvicted, a:allEvicted, b:allEvicted]" + " └─TableFullScan 3.00 cop[tikv] table:t keep order:false" ] }, { "Query": "explain format = brief select * from t join tp partition (p0) join t2 where t.a < 10 and t.b = tp.c and t2.a > 10 and t2.a = tp.c", "Result": [ - "HashJoin 0.33 root inner join, equal:[eq(test.tp.c, test.t2.a)]", + "HashJoin 1.00 root inner join, equal:[eq(test.tp.c, test.t2.a)]", "├─TableReader(Build) 1.00 root data:TableRangeScan", "│ └─TableRangeScan 1.00 cop[tikv] table:t2 range:(10,+inf], keep order:false, stats:partial[a:allEvicted]", - "└─IndexJoin(Probe) 0.33 root inner join, inner:IndexLookUp, outer key:test.t.b, inner key:test.tp.c, equal cond:eq(test.t.b, test.tp.c)", - " ├─TableReader(Build) 0.33 root data:Selection", - " │ └─Selection 0.33 cop[tikv] gt(test.t.b, 10), not(isnull(test.t.b))", - " │ └─TableRangeScan 1.00 cop[tikv] table:t range:[-inf,10), keep order:false, stats:partial[idx:allEvicted, a:allEvicted, b:allEvicted]", - " └─IndexLookUp(Probe) 0.33 root partition:p0 ", - " ├─Selection(Build) 0.33 cop[tikv] gt(test.tp.c, 10), not(isnull(test.tp.c))", - " │ └─IndexRangeScan 0.50 cop[tikv] table:tp, index:ic(c) range: decided by [eq(test.tp.c, test.t.b)], keep order:false, stats:partial[c:allEvicted]", - " └─TableRowIDScan(Probe) 0.33 cop[tikv] table:tp keep order:false, stats:partial[c:allEvicted]" + "└─HashJoin(Probe) 1.00 root inner join, equal:[eq(test.t.b, test.tp.c)]", + " ├─TableReader(Build) 1.00 root data:Selection", + " │ └─Selection 1.00 cop[tikv] gt(test.t.b, 10), not(isnull(test.t.b))", + " │ └─TableRangeScan 3.00 cop[tikv] table:t range:[-inf,10), keep order:false", + " └─TableReader(Probe) 4.00 root partition:p0 data:Selection", + " └─Selection 4.00 cop[tikv] gt(test.tp.c, 10), not(isnull(test.tp.c))", + " └─TableFullScan 6.00 cop[tikv] table:tp keep order:false, stats:partial[c:allEvicted]" ] } ] @@ -153,7 +174,7 @@ "Projection 1.60 root plus(test.t.d, 1)->Column#12, 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" + " └─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..822a8948b9c41 100644 --- a/pkg/planner/core/casetest/pushdown/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/pushdown/testdata/integration_suite_out.json @@ -187,7 +187,7 @@ { "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, left side:TableReader, equal:[eq(test.t.id, Column#25)]", "├─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", @@ -201,7 +201,7 @@ { "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, left side:TableReader, equal:[eq(test.t.id, Column#25)]", "├─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", @@ -234,7 +234,7 @@ "Plan": [ "TableReader 7992.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 7992.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 7992.00 mpp[tiflash] semi join, equal:[eq(test.t.id, test.t.id)]", + " └─HashJoin 7992.00 mpp[tiflash] semi join, left side:Selection, equal:[eq(test.t.id, test.t.id)]", " ├─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))", @@ -248,7 +248,7 @@ "Plan": [ "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 8000.00 mpp[tiflash] anti semi join, equal:[eq(test.t.id, test.t.id)]", + " └─HashJoin 8000.00 mpp[tiflash] anti semi join, left side:TableFullScan, equal:[eq(test.t.id, test.t.id)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo", @@ -357,7 +357,7 @@ { "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)]", + "HashJoin 10000.00 root left outer join, left side:TableReader, equal:[eq(test.t.id, Column#9)]", "├─Projection(Build) 8000.00 root minus(test.t.id, 2)->Column#9", "│ └─TableReader 8000.00 root data:Selection", "│ └─Selection 8000.00 cop[tiflash] not(isnull(minus(test.t.id, 2)))", @@ -369,7 +369,7 @@ { "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)]", + "HashJoin 12487.50 root right outer join, left side:TableReader, equal:[eq(test.t.id, Column#9)]", "├─Projection(Build) 10000.00 root minus(test.t.id, 2)->Column#9", "│ └─TableReader 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tiflash] table:t keep order:false, stats:pseudo", @@ -396,7 +396,7 @@ { "SQL": "desc format = 'brief' select A.id from t as A where exists (select 1 from t where t.id=A.id)", "Plan": [ - "HashJoin 7992.00 root semi join, equal:[eq(test.t.id, test.t.id)]", + "HashJoin 7992.00 root semi join, left side:TableReader, equal:[eq(test.t.id, test.t.id)]", "├─TableReader(Build) 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tiflash] not(isnull(test.t.id))", "│ └─TableFullScan 10000.00 cop[tiflash] table:t pushed down filter:empty, keep order:false, stats:pseudo", @@ -408,7 +408,7 @@ { "SQL": "desc format = 'brief' select A.id from t as A where not exists (select 1 from t where t.id=A.id)", "Plan": [ - "HashJoin 8000.00 root anti semi join, equal:[eq(test.t.id, test.t.id)]", + "HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(test.t.id, test.t.id)]", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tiflash] table:t keep order:false, stats:pseudo", "└─TableReader(Probe) 10000.00 root data:TableFullScan", @@ -488,7 +488,7 @@ { "SQL": "explain format = 'brief' select * from table_1 a left join table_1 b on a.id = b.id and dayofmonth(a.datetime_col) > 100", "Plan": [ - "HashJoin 2.00 root left outer join, equal:[eq(test.table_1.id, test.table_1.id)], left cond:[gt(dayofmonth(test.table_1.datetime_col), 100)]", + "HashJoin 2.00 root left outer join, left side:TableReader, equal:[eq(test.table_1.id, test.table_1.id)], left cond:[gt(dayofmonth(test.table_1.datetime_col), 100)]", "├─TableReader(Build) 2.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", "│ └─TableFullScan 2.00 mpp[tiflash] table:b keep order:false", @@ -500,7 +500,7 @@ { "SQL": "explain format = 'brief' select * from table_1 a right join table_1 b on a.id = b.id and dayofmonth(b.datetime_col) > 100", "Plan": [ - "HashJoin 2.00 root right outer join, equal:[eq(test.table_1.id, test.table_1.id)], right cond:gt(dayofmonth(test.table_1.datetime_col), 100)", + "HashJoin 2.00 root right outer join, left side:TableReader, equal:[eq(test.table_1.id, test.table_1.id)], right cond:gt(dayofmonth(test.table_1.datetime_col), 100)", "├─TableReader(Build) 2.00 root MppVersion: 2, data:ExchangeSender", "│ └─ExchangeSender 2.00 mpp[tiflash] ExchangeType: PassThrough", "│ └─TableFullScan 2.00 mpp[tiflash] table:a keep order:false", diff --git a/pkg/planner/core/casetest/rule/BUILD.bazel b/pkg/planner/core/casetest/rule/BUILD.bazel index 5b835e1e47429..cbfdd9963b37c 100644 --- a/pkg/planner/core/casetest/rule/BUILD.bazel +++ b/pkg/planner/core/casetest/rule/BUILD.bazel @@ -13,7 +13,7 @@ go_test( ], data = glob(["testdata/**"]), flaky = True, - shard_count = 7, + shard_count = 8, deps = [ "//pkg/domain", "//pkg/expression", diff --git a/pkg/planner/core/casetest/rule/rule_outer2inner_test.go b/pkg/planner/core/casetest/rule/rule_outer2inner_test.go index 308dfa24790af..11a9b9e4d9c43 100644 --- a/pkg/planner/core/casetest/rule/rule_outer2inner_test.go +++ b/pkg/planner/core/casetest/rule/rule_outer2inner_test.go @@ -45,7 +45,36 @@ func TestOuter2Inner(t *testing.T) { Plan []string } suiteData := GetOuter2InnerSuiteData() - suiteData.LoadTestCases(t, &input, &output) + suiteData.LoadTestCasesByName("TestOuter2Inner", t, &input, &output) + for i, sql := range input { + plan := tk.MustQuery("explain format = 'brief' " + sql) + testdata.OnRecord(func() { + output[i].SQL = sql + output[i].Plan = testdata.ConvertRowsToStrings(plan.Rows()) + }) + plan.Check(testkit.Rows(output[i].Plan...)) + } +} + +// can not add this test case to TestOuter2Inner because the collation_connection is different +func TestOuter2InnerIssue55886(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t1") + tk.MustExec("drop table if exists t2") + tk.MustExec("create table t1(c_foveoe text, c_jbb text, c_cz text not null)") + tk.MustExec("create table t2(c_g7eofzlxn int)") + tk.MustExec("set collation_connection = 'latin1_bin'") + + var input Input + var output []struct { + SQL string + Plan []string + } + suiteData := GetOuter2InnerSuiteData() + suiteData.LoadTestCasesByName("TestOuter2InnerIssue55886", t, &input, &output) for i, sql := range input { plan := tk.MustQuery("explain format = 'brief' " + sql) testdata.OnRecord(func() { diff --git a/pkg/planner/core/casetest/rule/testdata/join_reorder_suite_out.json b/pkg/planner/core/casetest/rule/testdata/join_reorder_suite_out.json index 8d708b18dc310..8e5f643824fb8 100644 --- a/pkg/planner/core/casetest/rule/testdata/join_reorder_suite_out.json +++ b/pkg/planner/core/casetest/rule/testdata/join_reorder_suite_out.json @@ -96,7 +96,7 @@ " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 root left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin(Probe) 15593.77 root left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -116,7 +116,7 @@ "SQL": "select /*+ leading(t2, t3) */ * from t4 join t on t4.a=t.a left join t1 on t.a = t1.a join t2 on t.b = t2.b join t3 on t2.b=t3.b;", "Plan": [ "Projection 24365.26 root test.t4.a, test.t4.b, test.t.a, test.t.b, test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t3.a, test.t3.b", - "└─HashJoin 24365.26 root left outer join, equal:[eq(test.t.a, test.t1.a)]", + "└─HashJoin 24365.26 root left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -150,7 +150,7 @@ " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 root left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin(Probe) 15593.77 root left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -178,7 +178,7 @@ " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 root left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin(Probe) 15593.77 root left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -198,7 +198,7 @@ "SQL": "select /*+ leading(t3, t2, t) */ * from t4 join t on t4.a=t.a left join t1 on t.a = t1.a join t2 on t.b = t2.b join t3 on t2.b=t3.b;", "Plan": [ "Projection 24365.26 root test.t4.a, test.t4.b, test.t.a, test.t.b, test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t3.a, test.t3.b", - "└─HashJoin 24365.26 root left outer join, equal:[eq(test.t.a, test.t1.a)]", + "└─HashJoin 24365.26 root left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -223,10 +223,10 @@ { "SQL": "select /*+ leading(t3) */ * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b;", "Plan": [ - "HashJoin 15609.38 root left outer join, equal:[eq(test.t2.b, test.t1.b)]", + "HashJoin 15609.38 root left outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", "├─TableReader(Build) 10000.00 root partition:all data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(test.t1.a, test.t3.a)]", + "└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a, test.t3.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", @@ -239,10 +239,10 @@ { "SQL": "select /*+ leading(t2, t1, t3) */ * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b;", "Plan": [ - "HashJoin 15609.38 root left outer join, equal:[eq(test.t2.b, test.t1.b)]", + "HashJoin 15609.38 root left outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", "├─TableReader(Build) 10000.00 root partition:all data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(test.t1.a, test.t3.a)]", + "└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a, test.t3.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", @@ -258,7 +258,7 @@ { "SQL": "select /*+ leading(t2, t3) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b;", "Plan": [ - "HashJoin 19492.21 root left outer join, equal:[eq(test.t2.b, test.t1.b)]", + "HashJoin 19492.21 root left outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", "├─TableReader(Build) 10000.00 root partition:all data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", "└─HashJoin(Probe) 15593.77 root inner join, equal:[eq(test.t3.b, test.t4.b)]", @@ -281,7 +281,7 @@ { "SQL": "select /*+ leading(t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b;", "Plan": [ - "HashJoin 19492.21 root left outer join, equal:[eq(test.t2.b, test.t1.b)]", + "HashJoin 19492.21 root left outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", "├─TableReader(Build) 10000.00 root partition:all data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", "└─Projection(Probe) 15593.77 root test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b", @@ -303,7 +303,7 @@ "SQL": "select /*+ leading(t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b;", "Plan": [ "Projection 30426.12 root test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b, test.t5.a, test.t5.b, test.t6.a, test.t6.b", - "└─HashJoin 30426.12 root left outer join, equal:[eq(test.t2.b, test.t1.b)]", + "└─HashJoin 30426.12 root left outer join, left side:HashJoin, equal:[eq(test.t2.b, test.t1.b)]", " ├─Projection(Build) 15593.77 root test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b", " │ └─HashJoin 15593.77 root inner join, equal:[eq(test.t3.a, test.t1.a)]", " │ ├─TableReader(Build) 9980.01 root partition:all data:Selection", @@ -334,7 +334,7 @@ "SQL": "select /*+ leading(t3, t4) leading(t5, t6) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b;", "Plan": [ "Projection 30426.12 root test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b, test.t5.a, test.t5.b, test.t6.a, test.t6.b", - "└─HashJoin 30426.12 root left outer join, equal:[eq(test.t2.b, test.t1.b)]", + "└─HashJoin 30426.12 root left outer join, left side:HashJoin, equal:[eq(test.t2.b, test.t1.b)]", " ├─HashJoin(Build) 15593.77 root inner join, equal:[eq(test.t3.b, test.t4.b)]", " │ ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ │ └─Selection 9990.00 cop[tikv] not(isnull(test.t4.b))", @@ -366,7 +366,7 @@ "SQL": "select /*+ leading(t5, t6, t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b;", "Plan": [ "Projection 30426.12 root test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b, test.t5.a, test.t5.b, test.t6.a, test.t6.b", - "└─HashJoin 30426.12 root left outer join, equal:[eq(test.t2.b, test.t1.b)]", + "└─HashJoin 30426.12 root left outer join, left side:HashJoin, equal:[eq(test.t2.b, test.t1.b)]", " ├─HashJoin(Build) 15593.77 root inner join, equal:[eq(test.t3.b, test.t4.b)]", " │ ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ │ └─Selection 9990.00 cop[tikv] not(isnull(test.t4.b))", @@ -398,7 +398,7 @@ { "SQL": "select /*+ leading(t1, t2) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b;", "Plan": [ - "HashJoin 24389.65 root right outer join, equal:[eq(test.t.a, test.t1.a)]", + "HashJoin 24389.65 root right outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", "├─HashJoin(Build) 12487.50 root inner join, equal:[eq(test.t4.a, test.t.a)]", "│ ├─TableReader(Build) 9990.00 root partition:all data:Selection", "│ │ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", @@ -424,7 +424,7 @@ "SQL": "select /*+ leading(t2, t3) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b;", "Plan": [ "Projection 24389.65 root test.t4.a, test.t4.b, test.t.a, test.t.b, test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t3.a, test.t3.b", - "└─HashJoin 24389.65 root right outer join, equal:[eq(test.t.a, test.t1.a)]", + "└─HashJoin 24389.65 root right outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─HashJoin(Build) 12487.50 root inner join, equal:[eq(test.t4.a, test.t.a)]", " │ ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ │ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", @@ -449,7 +449,7 @@ { "SQL": "select /*+ leading(t1, t3) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b;", "Plan": [ - "HashJoin 24389.65 root right outer join, equal:[eq(test.t.a, test.t1.a)]", + "HashJoin 24389.65 root right outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", "├─HashJoin(Build) 12487.50 root inner join, equal:[eq(test.t4.a, test.t.a)]", "│ ├─TableReader(Build) 9990.00 root partition:all data:Selection", "│ │ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", @@ -476,11 +476,11 @@ { "SQL": "select /*+ leading(t3) */ * from t2 right join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b;", "Plan": [ - "HashJoin 15593.77 root right outer join, equal:[eq(test.t2.b, test.t1.b)]", + "HashJoin 15593.77 root right outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", "├─TableReader(Build) 9990.00 root partition:all data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(test.t1.a, test.t3.a)]", + "└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a, test.t3.a)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.a))", " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", @@ -492,11 +492,11 @@ { "SQL": "select /*+ leading(t2, t1, t3) */ * from t2 right join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b;", "Plan": [ - "HashJoin 15593.77 root left outer join, equal:[eq(test.t1.a, test.t3.a)]", + "HashJoin 15593.77 root left outer join, left side:HashJoin, equal:[eq(test.t1.a, test.t3.a)]", "├─TableReader(Build) 9990.00 root partition:all data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.a))", "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(test.t2.b, test.t1.b)]", + "└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -513,7 +513,7 @@ " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t4.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 root right outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin(Probe) 15593.77 root right outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -533,7 +533,7 @@ "SQL": "select /*+ leading(t3, t4) */ * from t2 right join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b;", "Plan": [ "Projection 19492.21 root test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b", - "└─HashJoin 19492.21 root right outer join, equal:[eq(test.t2.b, test.t1.b)]", + "└─HashJoin 19492.21 root right outer join, left side:TableReader, equal:[eq(test.t2.b, test.t1.b)]", " ├─TableReader(Build) 9990.00 root partition:all data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -706,7 +706,7 @@ { "SQL": "select * from t1 left join t2 on t1.b=t2.b", "Plan": [ - "MergeJoin 12487.50 root left outer join, left key:test.t1.b, right key:test.t2.b", + "MergeJoin 12487.50 root left outer join, left side:Sort, left key:test.t1.b, right key:test.t2.b", "├─Sort(Build) 9990.00 root test.t2.b", "│ └─TableReader 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.b))", @@ -720,7 +720,7 @@ { "SQL": "select * from t1 left join t2 on t1.a=t2.a", "Plan": [ - "IndexHashJoin 12487.50 root left outer join, inner:IndexLookUp, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a)", + "IndexHashJoin 12487.50 root left outer join, inner:IndexLookUp, left side:TableReader, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a)", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", "└─IndexLookUp(Probe) 12487.50 root ", @@ -733,7 +733,7 @@ { "SQL": "select * from t1 right join t2 on t1.b=t2.b", "Plan": [ - "MergeJoin 12487.50 root right outer join, left key:test.t1.b, right key:test.t2.b", + "MergeJoin 12487.50 root right outer join, left side:Sort, left key:test.t1.b, right key:test.t2.b", "├─Sort(Build) 9990.00 root test.t1.b", "│ └─TableReader 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.b))", @@ -747,7 +747,7 @@ { "SQL": "select * from t1 right join t2 on t1.a=t2.a", "Plan": [ - "IndexHashJoin 12487.50 root right outer join, inner:IndexLookUp, outer key:test.t2.a, inner key:test.t1.a, equal cond:eq(test.t2.a, test.t1.a)", + "IndexHashJoin 12487.50 root right outer join, inner:IndexLookUp, left side:IndexLookUp, outer key:test.t2.a, inner key:test.t1.a, equal cond:eq(test.t2.a, test.t1.a)", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", "└─IndexLookUp(Probe) 12487.50 root ", @@ -929,7 +929,7 @@ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin(Probe) 15593.77 mpp[tiflash] left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.a))", @@ -952,7 +952,7 @@ "TableReader 24365.26 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 24365.26 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 24365.26 mpp[tiflash] test.t4.a, test.t4.b, test.t.a, test.t.b, test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t3.a, test.t3.b", - " └─HashJoin 24365.26 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin 24365.26 mpp[tiflash] left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.a))", @@ -993,7 +993,7 @@ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin(Probe) 15593.77 mpp[tiflash] left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.a))", @@ -1026,7 +1026,7 @@ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin(Probe) 15593.77 mpp[tiflash] left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.a))", @@ -1049,7 +1049,7 @@ "TableReader 24365.26 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 24365.26 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 24365.26 mpp[tiflash] test.t4.a, test.t4.b, test.t.a, test.t.b, test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t3.a, test.t3.b", - " └─HashJoin 24365.26 mpp[tiflash] left outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin 24365.26 mpp[tiflash] left outer join, left side:HashJoin, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.a))", @@ -1079,13 +1079,13 @@ "Plan": [ "TableReader 15609.38 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 15609.38 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 15609.38 mpp[tiflash] left outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 15609.38 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 12487.50 mpp[tiflash] ", " └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.b, collate: binary]", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t1.a, test.t3.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:Selection, equal:[eq(test.t1.a, test.t3.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t3.a))", @@ -1100,13 +1100,13 @@ "Plan": [ "TableReader 15609.38 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 15609.38 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 15609.38 mpp[tiflash] left outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 15609.38 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", " └─ExchangeReceiver(Probe) 12487.50 mpp[tiflash] ", " └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t1.b, collate: binary]", - " └─HashJoin 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t1.a, test.t3.a)]", + " └─HashJoin 12487.50 mpp[tiflash] left outer join, left side:Selection, equal:[eq(test.t1.a, test.t3.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t3.a))", @@ -1124,7 +1124,7 @@ "Plan": [ "TableReader 19492.21 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 19492.21 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 19492.21 mpp[tiflash] left outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 19492.21 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", @@ -1153,7 +1153,7 @@ "Plan": [ "TableReader 19492.21 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 19492.21 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 19492.21 mpp[tiflash] left outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 19492.21 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ", " │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo", @@ -1181,7 +1181,7 @@ "TableReader 30426.12 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 30426.12 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 30426.12 mpp[tiflash] test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b, test.t5.a, test.t5.b, test.t6.a, test.t6.b", - " └─HashJoin 30426.12 mpp[tiflash] left outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 30426.12 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 15593.77 mpp[tiflash] ", " │ └─ExchangeSender 15593.77 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─HashJoin 15593.77 mpp[tiflash] inner join, equal:[eq(test.t5.b, test.t6.b)]", @@ -1220,7 +1220,7 @@ "TableReader 30426.12 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 30426.12 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 30426.12 mpp[tiflash] test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b, test.t5.a, test.t5.b, test.t6.a, test.t6.b", - " └─HashJoin 30426.12 mpp[tiflash] left outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 30426.12 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 15593.77 mpp[tiflash] ", " │ └─ExchangeSender 15593.77 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─HashJoin 15593.77 mpp[tiflash] inner join, equal:[eq(test.t5.b, test.t6.b)]", @@ -1260,7 +1260,7 @@ "TableReader 30426.12 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 30426.12 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 30426.12 mpp[tiflash] test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b, test.t5.a, test.t5.b, test.t6.a, test.t6.b", - " └─HashJoin 30426.12 mpp[tiflash] left outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 30426.12 mpp[tiflash] left outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 15593.77 mpp[tiflash] ", " │ └─ExchangeSender 15593.77 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t2.b, collate: binary]", " │ └─HashJoin 15593.77 mpp[tiflash] inner join, equal:[eq(test.t5.b, test.t6.b)]", @@ -1300,7 +1300,7 @@ "Plan": [ "TableReader 24389.65 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 24389.65 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 24389.65 mpp[tiflash] right outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin 24389.65 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 12487.50 mpp[tiflash] ", " │ └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t4.a, test.t.a)]", @@ -1333,7 +1333,7 @@ "TableReader 24389.65 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 24389.65 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 24389.65 mpp[tiflash] test.t4.a, test.t4.b, test.t.a, test.t.b, test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t3.a, test.t3.b", - " └─HashJoin 24389.65 mpp[tiflash] right outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin 24389.65 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 12487.50 mpp[tiflash] ", " │ └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t4.a, test.t.a)]", @@ -1365,7 +1365,7 @@ "Plan": [ "TableReader 24389.65 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 24389.65 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 24389.65 mpp[tiflash] right outer join, equal:[eq(test.t.a, test.t1.a)]", + " └─HashJoin 24389.65 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t.a, test.t1.a)]", " ├─ExchangeReceiver(Build) 12487.50 mpp[tiflash] ", " │ └─ExchangeSender 12487.50 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.a, collate: binary]", " │ └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t4.a, test.t.a)]", @@ -1399,12 +1399,12 @@ "Plan": [ "TableReader 15593.77 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 15593.77 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 15593.77 mpp[tiflash] right outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 15593.77 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.b))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12487.50 mpp[tiflash] left outer join, equal:[eq(test.t1.a, test.t3.a)]", + " └─HashJoin(Probe) 12487.50 mpp[tiflash] left outer join, left side:TableFullScan, equal:[eq(test.t1.a, test.t3.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t3.a))", @@ -1418,12 +1418,12 @@ "Plan": [ "TableReader 15593.77 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 15593.77 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 15593.77 mpp[tiflash] left outer join, equal:[eq(test.t1.a, test.t3.a)]", + " └─HashJoin 15593.77 mpp[tiflash] left outer join, left side:HashJoin, equal:[eq(test.t1.a, test.t3.a)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t3.a))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t3 pushed down filter:empty, keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12487.50 mpp[tiflash] right outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin(Probe) 12487.50 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.b))", @@ -1443,7 +1443,7 @@ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t4.b))", " │ └─TableFullScan 10000.00 mpp[tiflash] table:t4 pushed down filter:empty, keep order:false, stats:pseudo", - " └─HashJoin(Probe) 15593.77 mpp[tiflash] right outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin(Probe) 15593.77 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.b))", @@ -1466,7 +1466,7 @@ "TableReader 19492.21 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 19492.21 mpp[tiflash] ExchangeType: PassThrough", " └─Projection 19492.21 mpp[tiflash] test.t2.a, test.t2.b, test.t1.a, test.t1.b, test.t3.a, test.t3.b, test.t4.a, test.t4.b", - " └─HashJoin 19492.21 mpp[tiflash] right outer join, equal:[eq(test.t2.b, test.t1.b)]", + " └─HashJoin 19492.21 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t2.b, test.t1.b)]", " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] ", " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.b))", diff --git a/pkg/planner/core/casetest/rule/testdata/outer2inner_in.json b/pkg/planner/core/casetest/rule/testdata/outer2inner_in.json index 7fa43e89adbfa..b5dc08965563d 100644 --- a/pkg/planner/core/casetest/rule/testdata/outer2inner_in.json +++ b/pkg/planner/core/casetest/rule/testdata/outer2inner_in.json @@ -46,8 +46,13 @@ "select * from t0 left outer join t11 on a0=a1 where '5' not in (t0.b0, t11.b1)", "select * from t0 left outer join t11 on a0=a1 where '1' in (t0.b0, t11.b1)", "select * from t0 left outer join t11 on a0=a1 where t0.b0 in ('5', t11.b1) -- some = in the in list is not null filtering", - "select * from t0 left outer join t11 on a0=a1 where '5' in (t0.b0, t11.b1) -- some = in the in list is not null filtering", - "select * from t1 left outer join t2 on a1=a2 where not (b2 is NOT NULL AND c2 = 5) -- NOT case " + "select * from t0 left outer join t11 on a0=a1 where '5' in (t0.b0, t11.b1) -- some = in the in list is not null filtering" + ] + }, + { + "name": "TestOuter2InnerIssue55886", + "cases": [ + "with cte_0 AS (select 1 as c1, case when ref_0.c_jbb then inet6_aton(ref_0.c_foveoe) else ref_4.c_cz end as c5 from t1 as ref_0 join (t1 as ref_4 right outer join t2 as ref_5 on ref_5.c_g7eofzlxn != 1)), cte_4 as (select 1 as c1 from t2) select ref_34.c1 as c5 from cte_0 as ref_34 where exists (select 1 from cte_4 as ref_35 where ref_34.c1 <= case when ref_34.c5 then cast(1 as char) else ref_34.c5 end)" ] } ] diff --git a/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json b/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json index f55028ad56bb0..250987b66f4e4 100644 --- a/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json +++ b/pkg/planner/core/casetest/rule/testdata/outer2inner_out.json @@ -174,7 +174,7 @@ { "SQL": "select * from t1 ta left outer join (t1 tb left outer join t1 tc on tb.b1 = tc.b1) on ta.a1=tc.a1; -- nested join. On clause is null filtering on tc.", "Plan": [ - "HashJoin 15593.77 root left outer join, equal:[eq(test.t1.a1, test.t1.a1)]", + "HashJoin 15593.77 root left outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t1.a1)]", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", "└─Projection(Probe) 12475.01 root test.t1.a1, test.t1.b1, test.t1.c1, test.t1.a1, test.t1.b1, test.t1.c1", @@ -245,7 +245,7 @@ { "SQL": "select * from t1 right join t2 on a1=a2 where exists (select 1 from t3 where b1=b3) -- semi join is null filtering on the outer join", "Plan": [ - "HashJoin 9980.01 root semi join, equal:[eq(test.t1.b1, test.t3.b3)]", + "HashJoin 9980.01 root semi join, left side:HashJoin, equal:[eq(test.t1.b1, test.t3.b3)]", "├─TableReader(Build) 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.b3))", "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", @@ -283,7 +283,7 @@ "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(Build) 4175.00 root left outer join, equal:[eq(test.d.col_blob_key, test.dd.col_blob_key)]", + " ├─HashJoin(Build) 4175.00 root left outer join, left side:TableReader, 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\"))", " │ │ └─TableFullScan 10000.00 cop[tikv] table:alias1 keep order:false, stats:pseudo", @@ -319,7 +319,7 @@ { "SQL": "select * from dd as outr1 WHERE outr1.col_blob IN (SELECT DISTINCT innr1.col_blob_key AS y FROM d AS innrcte left outer join dd AS innr1 ON innr1.pk = innrcte.col_date WHERE outr1.col_int_key > 6)", "Plan": [ - "Apply 9990.00 root semi join, equal:[eq(test.dd.col_blob, test.dd.col_blob_key)]", + "Apply 9990.00 root semi join, left side:TableReader, equal:[eq(test.dd.col_blob, test.dd.col_blob_key)]", "├─TableReader(Build) 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.dd.col_blob))", "│ └─TableFullScan 10000.00 cop[tikv] table:outr1 keep order:false, stats:pseudo", @@ -351,7 +351,7 @@ "SQL": "select * from t1 left outer join t2 on a1=a2 where b2 is null -- negative case with single predicate which is not null filtering", "Plan": [ "Selection 9990.00 root isnull(test.t2.b2)", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t2.a2)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a2))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -363,7 +363,7 @@ "SQL": "select * from t1 left outer join t2 on a1=a2 where c2 = 5 OR b2 is null -- negative case with A OR B (A is null filtering and B is not)", "Plan": [ "Selection 9990.00 root or(eq(test.t2.c2, 5), isnull(test.t2.b2))", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t2.a2)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a2))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -375,7 +375,7 @@ "SQL": "select * from t1 left outer join t2 on a1=a2 where not(b2 is not null) -- nested 'not' negative case", "Plan": [ "Selection 9990.00 root not(not(isnull(test.t2.b2)))", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t2.a2)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a2))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -387,7 +387,7 @@ "SQL": "select * from t1 left outer join t2 on a1=a2 where not(not(b2 is null)) -- nested 'not' negative case", "Plan": [ "Selection 9990.00 root not(not(isnull(test.t2.b2)))", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t2.a2)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a2))", " │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -398,7 +398,7 @@ { "SQL": "select * from t1 left outer join t2 on a1=a2 where b1 is not null -- negative case with condition on outer table.", "Plan": [ - "HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", + "HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t2.a2)]", "├─TableReader(Build) 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a2))", "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", @@ -411,7 +411,7 @@ "SQL": "select * from t2 left outer join t1 on a1=a2 where coalesce(b1,2) = 2; -- true condition for b1=NULL", "Plan": [ "Selection 9990.00 root eq(coalesce(test.t1.b1, 2), 2)", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t2.a2, test.t1.a1)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t2.a2, test.t1.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -423,7 +423,7 @@ "SQL": "select * from t2 left outer join t1 on a1=a2 where true OR b1 = 5; -- negative case with OR and one branch is TRUE", "Plan": [ "Selection 9990.00 root or(1, eq(test.t1.b1, 5))", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t2.a2, test.t1.a1)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t2.a2, test.t1.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -434,7 +434,7 @@ { "SQL": "select * from t3 as t1 left join t3 as t2 on t1.c3 = t2.c3 where t1.b3 != NULL -- negative case with self join", "Plan": [ - "HashJoin 0.00 root left outer join, equal:[eq(test.t3.c3, test.t3.c3)]", + "HashJoin 0.00 root left outer join, left side:TableReader, equal:[eq(test.t3.c3, test.t3.c3)]", "├─TableReader(Build) 0.00 root data:Selection", "│ └─Selection 0.00 cop[tikv] ne(test.t3.b3, NULL)", "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -446,10 +446,10 @@ { "SQL": "select * from (t1 left outer join t2 on a1=a2) left outer join t3 on a2=a3 and b2 = 5 -- negative case. inner side is not a join", "Plan": [ - "HashJoin 15609.38 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", + "HashJoin 15609.38 root left outer join, left side:TableReader, 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", - "└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(test.t2.a2, test.t3.a3)], left cond:[eq(test.t2.b2, 5)]", + "└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t2.a2, test.t3.a3)], left cond:[eq(test.t2.b2, 5)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.a3))", " │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", @@ -462,11 +462,11 @@ "SQL": "select * from t1 ta right outer join (t1 tb right outer join t1 tc on tb.b1 = tc.b1) on ta.a1=tc.a1; -- negative case. inner side is not a join", "Plan": [ "Projection 15593.77 root test.t1.a1, test.t1.b1, test.t1.c1, test.t1.a1, test.t1.b1, test.t1.c1, test.t1.a1, test.t1.b1, test.t1.c1", - "└─HashJoin 15593.77 root right outer join, equal:[eq(test.t1.b1, test.t1.b1)]", + "└─HashJoin 15593.77 root right outer join, left side:TableReader, equal:[eq(test.t1.b1, test.t1.b1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.b1))", " │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo", - " └─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(test.t1.a1, test.t1.a1)]", + " └─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t1.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo", @@ -478,8 +478,8 @@ "SQL": "select * from t1 ta right outer join (t1 tb right outer join t1 tc on tb.b1 = tc.b1) on ta.a1=tc.a1 where tc.a1 > 5; -- negative case. inner side is not a join and WHERE clause on outer table", "Plan": [ "Projection 5208.33 root test.t1.a1, test.t1.b1, test.t1.c1, test.t1.a1, test.t1.b1, test.t1.c1, test.t1.a1, test.t1.b1, test.t1.c1", - "└─HashJoin 5208.33 root right outer join, equal:[eq(test.t1.b1, test.t1.b1)]", - " ├─HashJoin(Build) 4166.67 root right outer join, equal:[eq(test.t1.a1, test.t1.a1)]", + "└─HashJoin 5208.33 root right outer join, left side:TableReader, equal:[eq(test.t1.b1, test.t1.b1)]", + " ├─HashJoin(Build) 4166.67 root right outer join, left side:TableReader, equal:[eq(test.t1.a1, test.t1.a1)]", " │ ├─TableReader(Build) 3333.33 root data:Selection", " │ │ └─Selection 3333.33 cop[tikv] gt(test.t1.a1, 5)", " │ │ └─TableFullScan 10000.00 cop[tikv] table:tc keep order:false, stats:pseudo", @@ -498,7 +498,7 @@ "├─TableReader(Build) 9990.00 root data:Selection", "│ └─Selection 9990.00 cop[tikv] not(isnull(test.t3.b3))", "│ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(test.t2.a2, test.t1.a1)]", + "└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t2.a2, test.t1.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", @@ -511,7 +511,7 @@ "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)", + "└─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(test.t1.c1, Column#13)", " ├─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", @@ -524,10 +524,10 @@ { "SQL": "SELECT * FROM ti LEFT JOIN (SELECT i FROM ti WHERE FALSE) AS d1 ON ti.i = d1.i WHERE NOT EXISTS (SELECT 1 FROM ti AS inner_t1 WHERE i = d1.i) -- anti semi join", "Plan": [ - "HashJoin 8000.00 root anti semi join, equal:[eq(test.ti.i, test.ti.i)]", + "HashJoin 8000.00 root anti semi join, left side:HashJoin, equal:[eq(test.ti.i, test.ti.i)]", "├─TableReader(Build) 10000.00 root data:TableFullScan", "│ └─TableFullScan 10000.00 cop[tikv] table:inner_t1 keep order:false, stats:pseudo", - "└─HashJoin(Probe) 10000.00 root left outer join, equal:[eq(test.ti.i, test.ti.i)]", + "└─HashJoin(Probe) 10000.00 root left outer join, left side:TableReader, equal:[eq(test.ti.i, test.ti.i)]", " ├─Selection(Build) 0.00 root not(isnull(test.ti.i))", " │ └─TableDual 0.00 root rows:0", " └─TableReader(Probe) 10000.00 root data:TableFullScan", @@ -539,7 +539,7 @@ "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))", - " └─HashJoin 10000.00 root left outer join, equal:[eq(test.t1.a1, test.t2.a2) eq(test.t1.b1, test.t2.b2)]", + " └─HashJoin 10000.00 root left outer join, left side:TableReader, 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", " │ └─TableReader 7984.01 root data:HashAgg", " │ └─HashAgg 7984.01 cop[tikv] group by:test.t2.a2, test.t2.b2, funcs:count(1)->Column#11", @@ -555,7 +555,7 @@ "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", " └─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)]", + " └─HashJoin 12487.50 root left outer join, left side:TableReader, 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", " └─TableReader(Probe) 9990.00 root data:Selection", @@ -569,7 +569,7 @@ "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", - " └─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", + " └─HashJoin 12487.50 root left outer join, left side:TableReader, 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", " └─TableReader(Probe) 9990.00 root data:Selection", @@ -581,7 +581,7 @@ "SQL": "select * from t0 left outer join t11 on a0=a1 where t0.b0 in (t0.b0, t11.b1)", "Plan": [ "Selection 9990.00 root in(test.t0.b0, test.t0.b0, test.t11.b1)", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t0.a0, test.t11.a1)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t0.a0, test.t11.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t11.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo", @@ -593,7 +593,7 @@ "SQL": "select * from t0 left outer join t11 on a0=a1 where '5' not in (t0.b0, t11.b1)", "Plan": [ "Selection 9990.00 root not(in(\"5\", test.t0.b0, test.t11.b1))", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t0.a0, test.t11.a1)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t0.a0, test.t11.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t11.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo", @@ -605,7 +605,7 @@ "SQL": "select * from t0 left outer join t11 on a0=a1 where '1' in (t0.b0, t11.b1)", "Plan": [ "Selection 9990.00 root in(\"1\", test.t0.b0, test.t11.b1)", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t0.a0, test.t11.a1)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t0.a0, test.t11.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t11.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo", @@ -617,7 +617,7 @@ "SQL": "select * from t0 left outer join t11 on a0=a1 where t0.b0 in ('5', t11.b1) -- some = in the in list is not null filtering", "Plan": [ "Selection 9990.00 root in(test.t0.b0, \"5\", test.t11.b1)", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t0.a0, test.t11.a1)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t0.a0, test.t11.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t11.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo", @@ -629,24 +629,34 @@ "SQL": "select * from t0 left outer join t11 on a0=a1 where '5' in (t0.b0, t11.b1) -- some = in the in list is not null filtering", "Plan": [ "Selection 9990.00 root in(\"5\", test.t0.b0, test.t11.b1)", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t0.a0, test.t11.a1)]", + "└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(test.t0.a0, test.t11.a1)]", " ├─TableReader(Build) 9990.00 root data:Selection", " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t11.a1))", " │ └─TableFullScan 10000.00 cop[tikv] table:t11 keep order:false, stats:pseudo", " └─TableReader(Probe) 10000.00 root data:TableFullScan", " └─TableFullScan 10000.00 cop[tikv] table:t0 keep order:false, stats:pseudo" ] - }, + } + ] + }, + { + "Name": "TestOuter2InnerIssue55886", + "Cases": [ { - "SQL": "select * from t1 left outer join t2 on a1=a2 where not (b2 is NOT NULL AND c2 = 5) -- NOT case ", + "SQL": "with cte_0 AS (select 1 as c1, case when ref_0.c_jbb then inet6_aton(ref_0.c_foveoe) else ref_4.c_cz end as c5 from t1 as ref_0 join (t1 as ref_4 right outer join t2 as ref_5 on ref_5.c_g7eofzlxn != 1)), cte_4 as (select 1 as c1 from t2) select ref_34.c1 as c5 from cte_0 as ref_34 where exists (select 1 from cte_4 as ref_35 where ref_34.c1 <= case when ref_34.c5 then cast(1 as char) else ref_34.c5 end)", "Plan": [ - "Selection 9990.00 root not(and(not(isnull(test.t2.b2)), eq(test.t2.c2, 5)))", - "└─HashJoin 12487.50 root left outer join, equal:[eq(test.t1.a1, test.t2.a2)]", - " ├─TableReader(Build) 9990.00 root data:Selection", - " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t2.a2))", - " │ └─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" + "HashJoin 800000000000.00 root CARTESIAN semi join, left side:Projection", + "├─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", + " └─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", + " └─HashJoin(Probe) 100000000.00 root CARTESIAN right outer join, left side:TableReader, right cond:ne(test.t2.c_g7eofzlxn, 1)", + " ├─TableReader(Build) 10000.00 root data:TableFullScan", + " │ └─TableFullScan 10000.00 cop[tikv] table:ref_5 keep order:false, stats:pseudo", + " └─TableReader(Probe) 10000.00 root data:TableFullScan", + " └─TableFullScan 10000.00 cop[tikv] table:ref_4 keep order:false, stats:pseudo" ] } ] diff --git a/pkg/planner/core/casetest/testdata/integration_suite_out.json b/pkg/planner/core/casetest/testdata/integration_suite_out.json index c90d518f16176..79112bdc68452 100644 --- a/pkg/planner/core/casetest/testdata/integration_suite_out.json +++ b/pkg/planner/core/casetest/testdata/integration_suite_out.json @@ -165,7 +165,7 @@ { "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", + "HashJoin_17 3.00 32781.07 root CARTESIAN left outer semi join, left side:IndexReader_21", "├─Selection_22(Build) 0.80 31149.25 root eq(2, Column#18)", "│ └─StreamAgg_29 1.00 31099.35 root funcs:count(1)->Column#18", "│ └─TableReader_41 3.00 30949.65 root MppVersion: 2, data:ExchangeSender_40", diff --git a/pkg/planner/core/casetest/testdata/plan_normalized_suite_out.json b/pkg/planner/core/casetest/testdata/plan_normalized_suite_out.json index 7be4636f8f444..ca791936bef5a 100644 --- a/pkg/planner/core/casetest/testdata/plan_normalized_suite_out.json +++ b/pkg/planner/core/casetest/testdata/plan_normalized_suite_out.json @@ -55,7 +55,7 @@ "SQL": "select * from t1 where t1.b > 1 and t1.a in (select sum(t2.b) from t2 where t2.a=t1.a and t2.b is not null)", "Plan": [ " Projection root test.t1.a, test.t1.b, test.t1.c", - " └─Apply root semi join, equal:eq(?, ?)", + " └─Apply root semi join, left side:Projection, equal:eq(?, ?)", " ├─Projection root cast(test.t1.a, decimal(10,0) BINARY), test.t1.a, test.t1.b, test.t1.c", " │ └─TableReader root ", " │ └─Selection cop gt(test.t1.b, ?)", @@ -428,8 +428,8 @@ "Plan": [ " TableReader root ", " └─ExchangeSender cop[tiflash] ", - " └─Selection cop[tiflash] gt(test.t1.a, ?)", - " └─TableFullScan cop[tiflash] table:t1, range:[?,?], pushed down filter:gt(test.t1.b, ?), gt(test.t1.c, ?), keep order:false" + " └─Selection cop[tiflash] gt(test.t1.c, ?)", + " └─TableFullScan cop[tiflash] table:t1, range:[?,?], pushed down filter:gt(test.t1.a, ?), gt(test.t1.b, ?), keep order:false" ] }, { @@ -463,8 +463,8 @@ "Plan": [ " TableReader root ", " └─ExchangeSender cop[tiflash] ", - " └─Selection cop[tiflash] gt(test.t1.b, ?), gt(test.t1.c, ?), or(gt(test.t1.a, ?), lt(test.t1.b, ?))", - " └─TableFullScan cop[tiflash] table:t1, range:[?,?], pushed down filter:gt(test.t1.a, ?), keep order:false" + " └─Selection cop[tiflash] gt(test.t1.a, ?), gt(test.t1.c, ?), or(gt(test.t1.a, ?), lt(test.t1.b, ?))", + " └─TableFullScan cop[tiflash] table:t1, range:[?,?], pushed down filter:gt(test.t1.b, ?), keep order:false" ] }, { diff --git a/pkg/planner/core/casetest/testdata/stats_suite_out.json b/pkg/planner/core/casetest/testdata/stats_suite_out.json index 2fbeb61141204..683fd4d919612 100644 --- a/pkg/planner/core/casetest/testdata/stats_suite_out.json +++ b/pkg/planner/core/casetest/testdata/stats_suite_out.json @@ -181,7 +181,7 @@ "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", - " └─Apply 4.00 root CARTESIAN left outer join", + " └─Apply 4.00 root CARTESIAN left outer join, left side:IndexReader", " ├─IndexReader(Build) 4.00 root index:IndexFullScan", " │ └─IndexFullScan 4.00 cop[tikv] table:t1, index:a(a, b) keep order:true", " └─MaxOneRow(Probe) 4.00 root ", @@ -193,7 +193,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", - "└─Apply 4.00 root left outer semi join, equal:[eq(test.t1.b, test.t2.b)]", + "└─Apply 4.00 root left outer semi join, left side:IndexReader, 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", " └─Limit(Probe) 12.00 root offset:0, count:3", @@ -206,7 +206,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", - "└─Apply 4.00 root anti left outer semi join, equal:[eq(test.t1.b, test.t2.b)]", + "└─Apply 4.00 root anti left outer semi join, left side:IndexReader, 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", " └─Limit(Probe) 12.00 root offset:0, count:3", @@ -219,7 +219,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", - "└─MergeJoin 12.00 root left outer join, left key:test.t1.a, right key:test.t2.a", + "└─MergeJoin 12.00 root left outer join, left side:IndexReader, 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", " └─IndexReader(Probe) 4.00 root index:IndexFullScan", @@ -230,7 +230,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", - "└─MergeJoin 12.00 root right outer join, left key:test.t1.a, right key:test.t2.a", + "└─MergeJoin 12.00 root right outer join, left side:IndexReader, 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", " └─IndexReader(Probe) 9.00 root index:IndexFullScan", @@ -241,7 +241,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", - "└─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)", + "└─HashJoin 4.00 root left outer semi join, left side:IndexReader, 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", " └─IndexReader(Probe) 4.00 root index:IndexFullScan", @@ -252,7 +252,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", - "└─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)", + "└─HashJoin 4.00 root anti left outer semi join, left side:IndexReader, 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", " └─IndexReader(Probe) 4.00 root index:IndexFullScan", @@ -263,7 +263,7 @@ "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", - "└─MergeJoin 4.00 root left outer join, left key:test.t1.a, test.t1.b, right key:test.t2.a, test.t2.b", + "└─MergeJoin 4.00 root left outer join, left side:IndexReader, 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", " │ └─IndexReader 9.00 root index:IndexFullScan", " │ └─IndexFullScan 9.00 cop[tikv] table:t2, index:a(a, b) keep order:true", diff --git a/pkg/planner/core/casetest/vectorsearch/BUILD.bazel b/pkg/planner/core/casetest/vectorsearch/BUILD.bazel index 35815a7250a08..ca2f66ab0a98c 100644 --- a/pkg/planner/core/casetest/vectorsearch/BUILD.bazel +++ b/pkg/planner/core/casetest/vectorsearch/BUILD.bazel @@ -9,21 +9,25 @@ go_test( ], data = glob(["testdata/**"]), flaky = True, - shard_count = 4, + shard_count = 5, deps = [ "//pkg/config", "//pkg/domain", "//pkg/domain/infosync", "//pkg/meta/model", "//pkg/parser/model", + "//pkg/planner", "//pkg/planner/core", "//pkg/planner/core/base", + "//pkg/planner/core/resolve", + "//pkg/session", "//pkg/store/mockstore", "//pkg/testkit", "//pkg/testkit/testdata", "//pkg/testkit/testfailpoint", "//pkg/testkit/testmain", "//pkg/testkit/testsetup", + "//pkg/types", "//pkg/util/plancodec", "@com_github_pingcap_tipb//go-tipb", "@com_github_stretchr_testify//require", 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 7794dc615d9fe..aabb45980d0fe 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 @@ -5,61 +5,60 @@ { "SQL": "explain format = 'brief' select * from t1;", "Plan": [ - "TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + "TableReader 49152.00 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 49152.00 mpp[tiflash] ExchangeType: PassThrough", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, { "SQL": "explain format = 'brief' select * from t1 where a<1;", "Plan": [ - "TableReader 3323.33 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 3323.33 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 3323.33 mpp[tiflash] lt(test.t1.a, 1)", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" + "TableReader 16334.85 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 16334.85 mpp[tiflash] ExchangeType: PassThrough", + " └─TableFullScan 16334.85 mpp[tiflash] table:t1 pushed down filter:lt(test.t1.a, 1), keep order:false, stats:pseudo" ], "Warn": null }, { "SQL": "explain format = 'brief' select * from t1 where vec = '[1,1,1]'", "Plan": [ - "TableReader 10.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 10.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TableFullScan 10.00 mpp[tiflash] table:t1 pushed down filter:eq(test.t1.vec, [1,1,1]), keep order:false, stats:pseudo" + "TableReader 49.15 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 49.15 mpp[tiflash] ExchangeType: PassThrough", + " └─TableFullScan 49.15 mpp[tiflash] table:t1 pushed down filter:eq(test.t1.vec, [1,1,1]), keep order:false, stats:pseudo" ], "Warn": null }, { "SQL": "explain format = 'brief' select * from t1 where vec_cosine_distance(vec, '[1,1,1]') < 0.1", "Plan": [ - "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Selection 8000.00 mpp[tiflash] lt(vec_cosine_distance(test.t1.vec, [1,1,1]), 0.1)", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" + "TableReader 39321.60 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 39321.60 mpp[tiflash] ExchangeType: PassThrough", + " └─Selection 39321.60 mpp[tiflash] lt(vec_cosine_distance(test.t1.vec, [1,1,1]), 0.1)", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ], "Warn": null }, { "SQL": "explain format = 'brief' select vec_cosine_distance(vec, '[1,1,1]') as dis from t1 having dis < 0.1", "Plan": [ - "TableReader 8000.00 root MppVersion: 2, data:ExchangeSender", - "└─ExchangeSender 8000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 8000.00 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", - " └─Selection 8000.00 mpp[tiflash] lt(vec_cosine_distance(test.t1.vec, [1,1,1]), 0.1)", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" + "TableReader 39321.60 root MppVersion: 2, data:ExchangeSender", + "└─ExchangeSender 39321.60 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 39321.60 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─Selection 39321.60 mpp[tiflash] lt(vec_cosine_distance(test.t1.vec, [1,1,1]), 0.1)", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo" ], "Warn": null }, { "SQL": "explain format = 'brief' select * from t1 order by vec_cosine_distance(vec, '[1,1,1]')", "Plan": [ - "Projection 10000.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", - "└─Sort 10000.00 root Column#7", - " └─Projection 10000.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", - " └─TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + "Projection 49152.00 root test.t1.vec, test.t1.a, test.t1.b, test.t1.c, test.t1.d", + "└─Sort 49152.00 root Column#7", + " └─Projection 49152.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", + " └─TableReader 49152.00 root MppVersion: 2, data:ExchangeSender", + " └─ExchangeSender 49152.00 mpp[tiflash] ExchangeType: PassThrough", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -103,8 +102,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -118,8 +117,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -133,8 +132,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -148,8 +147,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -163,8 +162,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -178,8 +177,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -193,8 +192,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -208,8 +207,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -223,8 +222,8 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -238,19 +237,19 @@ " └─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 10000.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", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + " └─Projection 49152.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", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, { "SQL": "explain format = 'brief' select vec_cosine_distance(vec, '[1,1,1]') as d from t1 order by d", "Plan": [ - "Sort 10000.00 root Column#7", - "└─TableReader 10000.00 root MppVersion: 2, data:ExchangeSender", - " └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: PassThrough", - " └─Projection 10000.00 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", - " └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" + "Sort 49152.00 root Column#7", + "└─TableReader 49152.00 root MppVersion: 2, data:ExchangeSender", + " └─ExchangeSender 49152.00 mpp[tiflash] ExchangeType: PassThrough", + " └─Projection 49152.00 mpp[tiflash] vec_cosine_distance(test.t1.vec, [1,1,1])->Column#7", + " └─TableFullScan 49152.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ], "Warn": null }, @@ -296,8 +295,8 @@ " └─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 10.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", - " └─TableFullScan 10.00 mpp[tiflash] table:t1 pushed down filter:eq(test.t1.a, 0), keep order:false, stats:pseudo" + " └─Projection 49.15 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", + " └─TableFullScan 49.15 mpp[tiflash] table:t1 pushed down filter:eq(test.t1.a, 0), keep order:false, stats:pseudo" ], "Warn": null } diff --git a/pkg/planner/core/casetest/vectorsearch/vector_index_test.go b/pkg/planner/core/casetest/vectorsearch/vector_index_test.go index 0329332a12de2..aed89b570593c 100644 --- a/pkg/planner/core/casetest/vectorsearch/vector_index_test.go +++ b/pkg/planner/core/casetest/vectorsearch/vector_index_test.go @@ -24,12 +24,16 @@ import ( "github.com/pingcap/tidb/pkg/domain/infosync" "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" + "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/resolve" + "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/testdata" "github.com/pingcap/tidb/pkg/testkit/testfailpoint" + "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/plancodec" "github.com/pingcap/tipb/go-tipb" "github.com/stretchr/testify/require" @@ -83,6 +87,8 @@ func TestTiFlashANNIndex(t *testing.T) { } dom := domain.GetDomain(tk.Session()) testkit.SetTiFlashReplica(t, dom, "test", "t1") + handle := dom.StatsHandle() + require.NoError(t, handle.HandleDDLEvent(<-handle.DDLEventCh())) tk.MustExec("analyze table t1") tk.MustExec("set @@tidb_isolation_read_engines = 'tiflash'") @@ -244,3 +250,67 @@ func TestANNInexWithSimpleCBO(t *testing.T) { testkit.SetTiFlashReplica(t, dom, "test", "t1") tk.MustUseIndex("select * from t1 order by vec_cosine_distance(vec, '[1,1,1]') limit 1", "vector_index") } + +func TestANNIndexWithNonIntClusteredPk(t *testing.T) { + store := testkit.CreateMockStoreWithSchemaLease(t, 1*time.Second, mockstore.WithMockTiFlash(2)) + + tk := testkit.NewTestKit(t, store) + + tiflash := infosync.NewMockTiFlash() + infosync.SetMockTiFlash(tiflash) + defer func() { + tiflash.Lock() + tiflash.StatusServer.Close() + tiflash.Unlock() + }() + + testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/ddl/MockCheckVectorIndexProcess", `return(1)`) + + tk.MustExec("use test") + tk.MustExec("drop table if exists t1") + tk.MustExec(` + create table t1 ( + vec vector(3), + a int, + b int, + c vector(3), + d vector, + primary key (a, b) + ) + `) + tk.MustExec("alter table t1 set tiflash replica 1;") + tk.MustExec("alter table t1 add vector index ((vec_cosine_distance(vec))) USING HNSW;") + tk.MustExec("insert into t1 values ('[1,1,1]', 1, 1, '[1,1,1]', '[1,1,1]')") + dom := domain.GetDomain(tk.Session()) + testkit.SetTiFlashReplica(t, dom, "test", "t1") + sctx := tk.Session() + stmts, err := session.Parse(sctx, "select * from t1 use index(vector_index) order by vec_cosine_distance(vec, '[1,1,1]') limit 1") + require.NoError(t, err) + require.Len(t, stmts, 1) + stmt := stmts[0] + ret := &core.PreprocessorReturn{} + nodeW := resolve.NewNodeW(stmt) + err = core.Preprocess(context.Background(), sctx, nodeW, core.WithPreprocessorReturn(ret)) + require.NoError(t, err) + var finalPlanTree base.Plan + finalPlanTree, _, err = planner.Optimize(context.Background(), sctx, nodeW, ret.InfoSchema) + require.NoError(t, err) + physicalTree, ok := finalPlanTree.(base.PhysicalPlan) + require.True(t, ok) + // Find the PhysicalTableReader node. + tableReader := physicalTree + for ; len(tableReader.Children()) > 0; tableReader = tableReader.Children()[0] { + } + castedTableReader, ok := tableReader.(*core.PhysicalTableReader) + require.True(t, ok) + tableScan, err := castedTableReader.GetTableScan() + require.NoError(t, err) + // Check that it has the extra vector index information. + require.NotNil(t, tableScan.AnnIndexExtra) + require.Len(t, tableScan.Ranges, 1) + // Check that it's full scan. + require.Equal(t, "[-inf,+inf]", tableScan.Ranges[0].String()) + // Check that the -inf and +inf are the correct types. + require.Equal(t, types.KindMinNotNull, tableScan.Ranges[0].LowVal[0].Kind()) + require.Equal(t, types.KindMaxValue, tableScan.Ranges[0].HighVal[0].Kind()) +} diff --git a/pkg/planner/core/collect_column_stats_usage.go b/pkg/planner/core/collect_column_stats_usage.go index 65cc49911854a..c00fb270aec26 100644 --- a/pkg/planner/core/collect_column_stats_usage.go +++ b/pkg/planner/core/collect_column_stats_usage.go @@ -15,42 +15,34 @@ package core import ( - "github.com/pingcap/failpoint" - "github.com/pingcap/tidb/pkg/domain" "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/mysql" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" - "github.com/pingcap/tidb/pkg/sessionctx/variable" - "github.com/pingcap/tidb/pkg/statistics/asyncload" "github.com/pingcap/tidb/pkg/util/filter" "github.com/pingcap/tidb/pkg/util/intset" - "golang.org/x/exp/maps" -) - -const ( - collectHistNeededColumns uint64 = 1 << iota ) // columnStatsUsageCollector collects predicate columns and/or histogram-needed columns from logical plan. // Predicate columns are the columns whose statistics are utilized when making query plans, which usually occur in where conditions, join conditions and so on. // Histogram-needed columns are the columns whose histograms are utilized when making query plans, which usually occur in the conditions pushed down to DataSource. // The set of histogram-needed columns is the subset of that of predicate columns. +// TODO: The collected predicate columns will be used to decide whether to load statistics for the columns. And we need some special handling for partition table +// when the prune mode is static. We can remove such handling when the static partition pruning is totally deprecated. type columnStatsUsageCollector struct { - // collectMode indicates whether to collect predicate columns and/or histogram-needed columns - collectMode uint64 + // histNeeded indicates whether to collect histogram-needed columns. + // TODO: It's used for the special handling for partition table when the prune mode is static. We can remove such handling when the static partition pruning is totally deprecated. + histNeeded bool // predicateCols records predicate columns. - predicateCols map[model.TableItemID]struct{} + // The bool value indicates whether we need a full stats for it. + // If its value is false, we just need the least meta info(like NDV) of the column in this SQL. + predicateCols map[model.TableItemID]bool // colMap maps expression.Column.UniqueID to the table columns whose statistics may be utilized to calculate statistics of the column. // It is used for collecting predicate columns. // For example, in `select count(distinct a, b) as e from t`, the count of column `e` is calculated as `max(ndv(t.a), ndv(t.b))` if // we don't know `ndv(t.a, t.b)`(see (*LogicalAggregation).DeriveStats and getColsNDV for details). So when calculating the statistics // of column `e`, we may use the statistics of column `t.a` and `t.b`. colMap map[int64]map[model.TableItemID]struct{} - // histNeededCols records histogram-needed columns. The value field of the map indicates that whether we need to load the full stats of the time or not. - histNeededCols map[model.TableItemID]bool // cols is used to store columns collected from expressions and saves some allocation. cols []*expression.Column @@ -62,21 +54,23 @@ type columnStatsUsageCollector struct { collectVisitedTable bool // visitedtbls indicates the visited table visitedtbls map[int64]struct{} + + // tblID2PartitionIDs is used for tables with static pruning mode. + // Note that we've no longer suggested to use static pruning mode. + tblID2PartitionIDs map[int64][]int64 } -func newColumnStatsUsageCollector(collectMode uint64, enabledPlanCapture bool) *columnStatsUsageCollector { +func newColumnStatsUsageCollector(histNeeded bool, enabledPlanCapture bool) *columnStatsUsageCollector { set := intset.NewFastIntSet() collector := &columnStatsUsageCollector{ - collectMode: collectMode, + histNeeded: histNeeded, // Pre-allocate a slice to reduce allocation, 8 doesn't have special meaning. - cols: make([]*expression.Column, 0, 8), - visitedPhysTblIDs: &set, + cols: make([]*expression.Column, 0, 8), + visitedPhysTblIDs: &set, + tblID2PartitionIDs: make(map[int64][]int64), } - collector.predicateCols = make(map[model.TableItemID]struct{}) + collector.predicateCols = make(map[model.TableItemID]bool) collector.colMap = make(map[int64]map[model.TableItemID]struct{}) - if collectMode&collectHistNeededColumns != 0 { - collector.histNeededCols = make(map[model.TableItemID]bool) - } if enabledPlanCapture { collector.collectVisitedTable = true collector.visitedtbls = map[int64]struct{}{} @@ -84,21 +78,30 @@ func newColumnStatsUsageCollector(collectMode uint64, enabledPlanCapture bool) * return collector } -func (c *columnStatsUsageCollector) addPredicateColumn(col *expression.Column) { +func (c *columnStatsUsageCollector) addPredicateColumn(col *expression.Column, needFullStats bool) { tblColIDs, ok := c.colMap[col.UniqueID] if !ok { // It may happen if some leaf of logical plan is LogicalMemTable/LogicalShow/LogicalShowDDLJobs. return } for tblColID := range tblColIDs { - c.predicateCols[tblColID] = struct{}{} + fullLoad, found := c.predicateCols[tblColID] + // It's already marked as full stats. Skip it. + if fullLoad { + continue + } + // If it's found and marked as meta stats, and the passed mark this time is also meta stats. Skip it. + if found && !fullLoad && !needFullStats { + continue + } + c.predicateCols[tblColID] = needFullStats } } -func (c *columnStatsUsageCollector) addPredicateColumnsFromExpressions(list []expression.Expression) { +func (c *columnStatsUsageCollector) addPredicateColumnsFromExpressions(list []expression.Expression, needFullStats bool) { cols := expression.ExtractColumnsAndCorColumnsFromExpressions(c.cols[:0], list) for _, col := range cols { - c.addPredicateColumn(col) + c.addPredicateColumn(col, needFullStats) } } @@ -133,12 +136,16 @@ func (c *columnStatsUsageCollector) collectPredicateColumnsForDataSource(ds *log if c.collectVisitedTable { c.visitedtbls[tblID] = struct{}{} } + c.visitedPhysTblIDs.Insert(int(tblID)) + if tblID != ds.PhysicalTableID && c.histNeeded { + c.tblID2PartitionIDs[tblID] = append(c.tblID2PartitionIDs[tblID], ds.PhysicalTableID) + } for _, col := range ds.Schema().Columns { tblColID := model.TableItemID{TableID: tblID, ID: col.ID, IsIndex: false} c.colMap[col.UniqueID] = map[model.TableItemID]struct{}{tblColID: {}} } // We should use `PushedDownConds` here. `AllConds` is used for partition pruning, which doesn't need stats. - c.addPredicateColumnsFromExpressions(ds.PushedDownConds) + c.addPredicateColumnsFromExpressions(ds.PushedDownConds, true) } func (c *columnStatsUsageCollector) collectPredicateColumnsForJoin(p *logicalop.LogicalJoin) { @@ -157,7 +164,8 @@ func (c *columnStatsUsageCollector) collectPredicateColumnsForJoin(p *logicalop. for _, cond := range p.OtherConditions { exprs = append(exprs, cond) } - c.addPredicateColumnsFromExpressions(exprs) + // Currently, join predicates only need meta info like NDV. + c.addPredicateColumnsFromExpressions(exprs, false) } func (c *columnStatsUsageCollector) collectPredicateColumnsForUnionAll(p *logicalop.LogicalUnionAll) { @@ -176,62 +184,6 @@ func (c *columnStatsUsageCollector) collectPredicateColumnsForUnionAll(p *logica } } -func (c *columnStatsUsageCollector) addHistNeededColumns(ds *logicalop.DataSource) { - c.visitedPhysTblIDs.Insert(int(ds.PhysicalTableID)) - if c.collectMode&collectHistNeededColumns == 0 { - return - } - if c.collectVisitedTable { - tblID := ds.TableInfo.ID - c.visitedtbls[tblID] = struct{}{} - } - stats := domain.GetDomain(ds.SCtx()).StatsHandle() - tblStats := stats.GetPartitionStats(ds.TableInfo, ds.PhysicalTableID) - skipPseudoCheckForTest := false - failpoint.Inject("disablePseudoCheck", func() { - skipPseudoCheckForTest = true - }) - // Since we can not get the stats tbl, this table is not analyzed. So we don't need to consider load stats. - if tblStats.Pseudo && !skipPseudoCheckForTest { - return - } - columns := expression.ExtractColumnsFromExpressions(c.cols[:0], ds.PushedDownConds, nil) - - colIDSet := intset.NewFastIntSet() - - for _, col := range columns { - // If the column is plan-generated one, Skip it. - // TODO: we may need to consider the ExtraHandle. - if col.ID < 0 { - continue - } - // Don't need to load stats for vector type currently. - if col.RetType.GetType() == mysql.TypeTiDBVectorFloat32 { - continue - } - tblColID := model.TableItemID{TableID: ds.PhysicalTableID, ID: col.ID, IsIndex: false} - colIDSet.Insert(int(col.ID)) - c.histNeededCols[tblColID] = true - } - for _, column := range ds.TableInfo.Columns { - // If the column is plan-generated one, Skip it. - // TODO: we may need to consider the ExtraHandle. - if column.ID < 0 { - continue - } - // Don't need to load stats for vector type currently. - if column.FieldType.GetType() == mysql.TypeTiDBVectorFloat32 { - continue - } - if !column.Hidden { - tblColID := model.TableItemID{TableID: ds.PhysicalTableID, ID: column.ID, IsIndex: false} - if _, ok := c.histNeededCols[tblColID]; !ok { - c.histNeededCols[tblColID] = false - } - } - } -} - func (c *columnStatsUsageCollector) collectFromPlan(lp base.LogicalPlan) { for _, child := range lp.Children() { c.collectFromPlan(child) @@ -241,10 +193,10 @@ func (c *columnStatsUsageCollector) collectFromPlan(lp base.LogicalPlan) { c.collectPredicateColumnsForDataSource(x) case *logicalop.LogicalIndexScan: c.collectPredicateColumnsForDataSource(x.Source) - c.addPredicateColumnsFromExpressions(x.AccessConds) + c.addPredicateColumnsFromExpressions(x.AccessConds, true) case *logicalop.LogicalTableScan: c.collectPredicateColumnsForDataSource(x.Source) - c.addPredicateColumnsFromExpressions(x.AccessConds) + c.addPredicateColumnsFromExpressions(x.AccessConds, true) case *logicalop.LogicalProjection: // Schema change from children to self. schema := x.Schema() @@ -254,10 +206,10 @@ func (c *columnStatsUsageCollector) collectFromPlan(lp base.LogicalPlan) { case *logicalop.LogicalSelection: // Though the conditions in LogicalSelection are complex conditions which cannot be pushed down to DataSource, we still // regard statistics of the columns in the conditions as needed. - c.addPredicateColumnsFromExpressions(x.Conditions) + c.addPredicateColumnsFromExpressions(x.Conditions, false) case *logicalop.LogicalAggregation: // Just assume statistics of all the columns in GroupByItems are needed. - c.addPredicateColumnsFromExpressions(x.GroupByItems) + c.addPredicateColumnsFromExpressions(x.GroupByItems, false) // Schema change from children to self. schema := x.Schema() for i, aggFunc := range x.AggFuncs { @@ -267,7 +219,7 @@ func (c *columnStatsUsageCollector) collectFromPlan(lp base.LogicalPlan) { // Statistics of the columns in LogicalWindow.PartitionBy are used in optimizeByShuffle4Window. // We don't use statistics of the columns in LogicalWindow.OrderBy currently. for _, item := range x.PartitionBy { - c.addPredicateColumn(item.Col) + c.addPredicateColumn(item.Col, false) } // Schema change from children to self. windowColumns := x.GetWindowResultColumns() @@ -282,17 +234,17 @@ func (c *columnStatsUsageCollector) collectFromPlan(lp base.LogicalPlan) { // Correlated columns can be found in LogicalApply.Children()[0].Schema(). Since we already visit LogicalApply.Children()[0], // correlated columns must have existed in columnStatsUsageCollector.colMap. for _, corCols := range x.CorCols { - c.addPredicateColumn(&corCols.Column) + c.addPredicateColumn(&corCols.Column, false) } case *logicalop.LogicalSort: // Assume statistics of all the columns in ByItems are needed. for _, item := range x.ByItems { - c.addPredicateColumnsFromExpressions([]expression.Expression{item.Expr}) + c.addPredicateColumnsFromExpressions([]expression.Expression{item.Expr}, false) } case *logicalop.LogicalTopN: // Assume statistics of all the columns in ByItems are needed. for _, item := range x.ByItems { - c.addPredicateColumnsFromExpressions([]expression.Expression{item.Expr}) + c.addPredicateColumnsFromExpressions([]expression.Expression{item.Expr}, false) } case *logicalop.LogicalUnionAll: c.collectPredicateColumnsForUnionAll(x) @@ -323,7 +275,7 @@ func (c *columnStatsUsageCollector) collectFromPlan(lp base.LogicalPlan) { // statistics of all the columns are needed. if x.Cte.IsDistinct { for _, col := range columns { - c.addPredicateColumn(col) + c.addPredicateColumn(col, false) } } case *logicalop.LogicalCTETable: @@ -332,128 +284,24 @@ func (c *columnStatsUsageCollector) collectFromPlan(lp base.LogicalPlan) { c.updateColMap(col, []*expression.Column{x.SeedSchema.Columns[i]}) } } - // Histogram-needed columns are the columns which occur in the conditions pushed down to DataSource. - // We don't consider LogicalCTE because seedLogicalPlan and recursiveLogicalPlan haven't got logical optimization - // yet(seedLogicalPlan and recursiveLogicalPlan are optimized in DeriveStats phase). Without logical optimization, - // there is no condition pushed down to DataSource so no histogram-needed column can be collected. - // - // Since c.visitedPhysTblIDs is also collected here and needs to be collected even collectHistNeededColumns is not set, - // so we do the c.collectMode check in addHistNeededColumns() after collecting c.visitedPhysTblIDs. - switch x := lp.(type) { - case *logicalop.DataSource: - c.addHistNeededColumns(x) - case *logicalop.LogicalIndexScan: - c.addHistNeededColumns(x.Source) - case *logicalop.LogicalTableScan: - c.addHistNeededColumns(x.Source) - } } // CollectColumnStatsUsage collects column stats usage from logical plan. // predicate indicates whether to collect predicate columns and histNeeded indicates whether to collect histogram-needed columns. // The predicate columns are always collected while the histNeeded columns are depending on whether we use sync load. // First return value: predicate columns -// Second return value: histogram-needed columns (nil if histNeeded is false) -// Third return value: ds.PhysicalTableID from all DataSource (always collected) +// Second return value: the visited table IDs(For partition table, we only record its global meta ID. The meta ID of each partition will be recorded in tblID2PartitionIDs) +// Third return value: the visited partition IDs. Used for static partition pruning. +// TODO: remove the third return value when the static partition pruning is totally deprecated. func CollectColumnStatsUsage(lp base.LogicalPlan, histNeeded bool) ( - []model.TableItemID, - []model.StatsLoadItem, + map[model.TableItemID]bool, *intset.FastIntSet, + map[int64][]int64, ) { - var mode uint64 - if histNeeded { - mode |= collectHistNeededColumns - } - collector := newColumnStatsUsageCollector(mode, lp.SCtx().GetSessionVars().IsPlanReplayerCaptureEnabled()) + collector := newColumnStatsUsageCollector(histNeeded, lp.SCtx().GetSessionVars().IsPlanReplayerCaptureEnabled()) collector.collectFromPlan(lp) if collector.collectVisitedTable { recordTableRuntimeStats(lp.SCtx(), collector.visitedtbls) } - itemSet2slice := func(set map[model.TableItemID]bool) []model.StatsLoadItem { - ret := make([]model.StatsLoadItem, 0, len(set)) - for item, fullLoad := range set { - ret = append(ret, model.StatsLoadItem{TableItemID: item, FullLoad: fullLoad}) - } - return ret - } - is := lp.SCtx().GetInfoSchema().(infoschema.InfoSchema) - statsHandle := domain.GetDomain(lp.SCtx()).StatsHandle() - physTblIDsWithNeededCols := intset.NewFastIntSet() - for neededCol, fullLoad := range collector.histNeededCols { - if !fullLoad { - continue - } - physTblIDsWithNeededCols.Insert(int(neededCol.TableID)) - } - collector.visitedPhysTblIDs.ForEach(func(physicalTblID int) { - // 1. collect table metadata - tbl, _ := infoschema.FindTableByTblOrPartID(is, int64(physicalTblID)) - if tbl == nil { - return - } - - // 2. handle extra sync/async stats loading for the determinate mode - - // If we visited a table without getting any columns need stats (likely because there are no pushed down - // predicates), and we are in the determinate mode, we need to make sure we are able to get the "analyze row - // count" in getStatsTable(), which means any column/index stats are available. - if lp.SCtx().GetSessionVars().GetOptObjective() != variable.OptObjectiveDeterminate || - // If we already collected some columns that need trigger sync laoding on this table, we don't need to - // additionally do anything for determinate mode. - physTblIDsWithNeededCols.Has(physicalTblID) || - statsHandle == nil { - return - } - tblStats := statsHandle.GetTableStats(tbl.Meta()) - if tblStats == nil || tblStats.Pseudo { - return - } - var colToTriggerLoad *model.TableItemID - for _, col := range tbl.Cols() { - if col.State != model.StatePublic || (col.IsGenerated() && !col.GeneratedStored) || !tblStats.ColAndIdxExistenceMap.HasAnalyzed(col.ID, false) { - continue - } - if colStats := tblStats.GetCol(col.ID); colStats != nil { - // If any stats are already full loaded, we don't need to trigger stats loading on this table. - if colStats.IsFullLoad() { - colToTriggerLoad = nil - break - } - } - // Choose the first column we meet to trigger stats loading. - if colToTriggerLoad == nil { - colToTriggerLoad = &model.TableItemID{TableID: int64(physicalTblID), ID: col.ID, IsIndex: false} - } - } - if colToTriggerLoad == nil { - return - } - for _, idx := range tbl.Indices() { - if idx.Meta().State != model.StatePublic || idx.Meta().MVIndex { - continue - } - // If any stats are already full loaded, we don't need to trigger stats loading on this table. - if idxStats := tblStats.GetIdx(idx.Meta().ID); idxStats != nil && idxStats.IsFullLoad() { - colToTriggerLoad = nil - break - } - } - if colToTriggerLoad == nil { - return - } - if histNeeded { - collector.histNeededCols[*colToTriggerLoad] = true - } else { - asyncload.AsyncLoadHistogramNeededItems.Insert(*colToTriggerLoad, true) - } - }) - var ( - predicateCols []model.TableItemID - histNeededCols []model.StatsLoadItem - ) - predicateCols = maps.Keys(collector.predicateCols) - if histNeeded { - histNeededCols = itemSet2slice(collector.histNeededCols) - } - return predicateCols, histNeededCols, collector.visitedPhysTblIDs + return collector.predicateCols, collector.visitedPhysTblIDs, collector.tblID2PartitionIDs } diff --git a/pkg/planner/core/collect_column_stats_usage_test.go b/pkg/planner/core/collect_column_stats_usage_test.go index 92802c0dfbb3c..95442ff609413 100644 --- a/pkg/planner/core/collect_column_stats_usage_test.go +++ b/pkg/planner/core/collect_column_stats_usage_test.go @@ -31,36 +31,33 @@ import ( "github.com/stretchr/testify/require" ) -func getColumnName(t *testing.T, is infoschema.InfoSchema, tblColID model.TableItemID, comment string) string { - var tblInfo *model.TableInfo - var prefix string - if tbl, ok := is.TableByID(context.Background(), tblColID.TableID); ok { - tblInfo = tbl.Meta() - prefix = tblInfo.Name.L + "." - } else { - db, exists := is.SchemaByName(pmodel.NewCIStr("test")) - require.True(t, exists, comment) - tblInfos, err := is.SchemaTableInfos(context.Background(), db.Name) - require.NoError(t, err) - for _, tbl := range tblInfos { - pi := tbl.GetPartitionInfo() - if pi == nil { - continue - } - for _, def := range pi.Definitions { - if def.ID == tblColID.TableID { - tblInfo = tbl - prefix = tbl.Name.L + "." + def.Name.L + "." - break - } - } - if tblInfo != nil { - break +func getTblInfoByPhyID(t *testing.T, is infoschema.InfoSchema, physicalTblID int64) (*model.TableInfo, string) { + if tbl, ok := is.TableByID(context.Background(), physicalTblID); ok { + tblInfo := tbl.Meta() + return tblInfo, tblInfo.Name.L + } + db, exists := is.SchemaByName(pmodel.NewCIStr("test")) + require.True(t, exists) + tblInfos, err := is.SchemaTableInfos(context.Background(), db.Name) + require.NoError(t, err) + for _, tbl := range tblInfos { + pi := tbl.GetPartitionInfo() + if pi == nil { + continue + } + for _, def := range pi.Definitions { + if def.ID == physicalTblID { + return tbl, tbl.Name.L + "." + def.Name.L } } - - require.NotNil(t, tblInfo, comment) } + require.Fail(t, "table not found, physical ID: %d", physicalTblID) + return nil, "" +} + +func getColumnName(t *testing.T, is infoschema.InfoSchema, tblColID model.TableItemID, comment string) string { + tblInfo, prefix := getTblInfoByPhyID(t, is, tblColID.TableID) + prefix += "." var colName string for _, col := range tblInfo.Columns { @@ -83,10 +80,9 @@ func getStatsLoadItem(t *testing.T, is infoschema.InfoSchema, item model.StatsLo } func checkColumnStatsUsageForPredicates(t *testing.T, is infoschema.InfoSchema, lp base.LogicalPlan, expected []string, comment string) { - var tblColIDs []model.TableItemID - tblColIDs, _, _ = CollectColumnStatsUsage(lp, false) + tblColIDs, _, _ := CollectColumnStatsUsage(lp, false) cols := make([]string, 0, len(tblColIDs)) - for _, tblColID := range tblColIDs { + for tblColID := range tblColIDs { col := getColumnName(t, is, tblColID, comment) cols = append(cols, col) } @@ -94,16 +90,35 @@ func checkColumnStatsUsageForPredicates(t *testing.T, is infoschema.InfoSchema, require.Equal(t, expected, cols, comment) } -func checkColumnStatsUsageForStatsLoad(t *testing.T, is infoschema.InfoSchema, lp base.LogicalPlan, expected []string, comment string) { - var loadItems []model.StatsLoadItem - _, loadItems, _ = CollectColumnStatsUsage(lp, true) +func checkColumnStatsUsageForStatsLoad(t *testing.T, is infoschema.InfoSchema, lp base.LogicalPlan, expectedCols []string, expectedParts map[string][]string, comment string) { + predicateCols, _, expandedPartitions := CollectColumnStatsUsage(lp, true) + loadItems := make([]model.StatsLoadItem, 0, len(predicateCols)) + for tblColID, fullLoad := range predicateCols { + loadItems = append(loadItems, model.StatsLoadItem{TableItemID: tblColID, FullLoad: fullLoad}) + } cols := make([]string, 0, len(loadItems)) for _, item := range loadItems { col := getStatsLoadItem(t, is, item, comment) cols = append(cols, col) } sort.Strings(cols) - require.Equal(t, expected, cols, comment+", we get %v", cols) + require.Equal(t, expectedCols, cols, comment+", we get %v", cols) + if len(expectedParts) == 0 { + require.Empty(t, expandedPartitions, comment) + return + } + expanded := make(map[string][]string, len(expandedPartitions)) + for tblID, partIDs := range expandedPartitions { + _, tblName := getTblInfoByPhyID(t, is, tblID) + parts := make([]string, 0, len(partIDs)) + for _, partID := range partIDs { + _, partName := getTblInfoByPhyID(t, is, partID) + parts = append(parts, partName) + } + sort.Strings(parts) + expanded[tblName] = parts + } + require.Equal(t, expectedParts, expanded, comment) } func TestSkipSystemTables(t *testing.T) { @@ -325,54 +340,56 @@ func TestCollectPredicateColumns(t *testing.T) { func TestCollectHistNeededColumns(t *testing.T) { failpoint.Enable("github.com/pingcap/tidb/pkg/planner/core/forceDynamicPrune", `return(true)`) defer failpoint.Disable("github.com/pingcap/tidb/pkg/planner/core/forceDynamicPrune") - failpoint.Enable("github.com/pingcap/tidb/pkg/planner/core/disablePseudoCheck", `return(true)`) - defer failpoint.Disable("github.com/pingcap/tidb/pkg/planner/core/disablePseudoCheck") tests := []struct { - pruneMode string - sql string - res []string + pruneMode string + sql string + res []string + expandedParts map[string][]string }{ { sql: "select * from t where a > 2", - res: []string{"t.a full", "t.b meta", "t.c meta", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta"}, + res: []string{"t.a full"}, }, { sql: "select * from t where b in (2, 5) or c = 5", - res: []string{"t.a meta", "t.b full", "t.c full", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta"}, + res: []string{"t.b full", "t.c full"}, }, { sql: "select * from t where a + b > 1", - res: []string{"t.a full", "t.b full", "t.c meta", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta"}, + res: []string{"t.a full", "t.b full"}, }, { sql: "select b, count(a) from t where b > 1 group by b having count(a) > 2", - res: []string{"t.a meta", "t.b full", "t.c meta", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta"}, + res: []string{"t.a meta", "t.b full"}, }, { sql: "select * from t as x join t2 as y on x.b + y.b > 2 and x.c > 1 and y.a < 1", - res: []string{"t.a meta", "t.b meta", "t.c full", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta", "t2.a full", "t2.b meta", "t2.c meta"}, + res: []string{"t.b meta", "t.c full", "t2.a full", "t2.b meta"}, }, { sql: "select * from t2 where t2.b > all(select b from t where t.c > 2)", - res: []string{"t.a meta", "t.b meta", "t.c full", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta", "t2.a meta", "t2.b meta", "t2.c meta"}, + res: []string{"t.b meta", "t.c full", "t2.b meta"}, }, { sql: "select * from t2 where t2.b > any(select b from t where t.c > 2)", - res: []string{"t.a meta", "t.b meta", "t.c full", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta", "t2.a meta", "t2.b meta", "t2.c meta"}, + res: []string{"t.b meta", "t.c full", "t2.b meta"}, }, { sql: "select * from t2 where t2.b in (select b from t where t.c > 2)", - res: []string{"t.a meta", "t.b meta", "t.c full", "t.c_str meta", "t.d meta", "t.d_str meta", "t.e meta", "t.e_str meta", "t.f meta", "t.g meta", "t.h meta", "t.i_date meta", "t2.a meta", "t2.b meta", "t2.c meta"}, + res: []string{"t.b meta", "t.c full", "t2.b meta"}, }, { pruneMode: "static", sql: "select * from pt1 where ptn < 20 and b > 1", - res: []string{"pt1.p1.a meta", "pt1.p1.b full", "pt1.p1.c meta", "pt1.p1.c_str meta", "pt1.p1.d meta", "pt1.p1.d_str meta", "pt1.p1.e meta", "pt1.p1.e_str meta", "pt1.p1.f meta", "pt1.p1.g meta", "pt1.p1.h meta", "pt1.p1.i_date meta", "pt1.p1.ptn full", "pt1.p2.a meta", "pt1.p2.b full", "pt1.p2.c meta", "pt1.p2.c_str meta", "pt1.p2.d meta", "pt1.p2.d_str meta", "pt1.p2.e meta", "pt1.p2.e_str meta", "pt1.p2.f meta", "pt1.p2.g meta", "pt1.p2.h meta", "pt1.p2.i_date meta", "pt1.p2.ptn full"}, + res: []string{"pt1.b full", "pt1.ptn full"}, + expandedParts: map[string][]string{ + "pt1": {"pt1.p1", "pt1.p2"}, + }, }, { pruneMode: "dynamic", sql: "select * from pt1 where ptn < 20 and b > 1", - res: []string{"pt1.a meta", "pt1.b full", "pt1.c meta", "pt1.c_str meta", "pt1.d meta", "pt1.d_str meta", "pt1.e meta", "pt1.e_str meta", "pt1.f meta", "pt1.g meta", "pt1.h meta", "pt1.i_date meta", "pt1.ptn full"}, + res: []string{"pt1.b full", "pt1.ptn full"}, }, } @@ -405,6 +422,6 @@ func TestCollectHistNeededColumns(t *testing.T) { flags &= ^(rule.FlagJoinReOrder | rule.FlagPruneColumnsAgain) lp, err = logicalOptimize(ctx, flags, lp) require.NoError(t, err, comment) - checkColumnStatsUsageForStatsLoad(t, s.is, lp, tt.res, comment) + checkColumnStatsUsageForStatsLoad(t, s.is, lp, tt.res, tt.expandedParts, comment) } } diff --git a/pkg/planner/core/common_plans.go b/pkg/planner/core/common_plans.go index 6eb41644eff77..888f9677e94d8 100644 --- a/pkg/planner/core/common_plans.go +++ b/pkg/planner/core/common_plans.go @@ -148,6 +148,35 @@ type ResumeDDLJobs struct { JobIDs []int64 } +const ( + // AlterDDLJobThread alter reorg worker count + AlterDDLJobThread = "thread" + // AlterDDLJobBatchSize alter reorg batch size + AlterDDLJobBatchSize = "batch_size" + // AlterDDLJobMaxWriteSpeed alter reorg max write speed + AlterDDLJobMaxWriteSpeed = "max_write_speed" +) + +var allowedAlterDDLJobParams = map[string]struct{}{ + AlterDDLJobThread: {}, + AlterDDLJobBatchSize: {}, + AlterDDLJobMaxWriteSpeed: {}, +} + +// AlterDDLJobOpt represents alter ddl job option. +type AlterDDLJobOpt struct { + Name string + Value expression.Expression +} + +// AlterDDLJob is the plan of admin alter ddl job +type AlterDDLJob struct { + baseSchemaProducer + + JobID int64 + Options []*AlterDDLJobOpt +} + // ReloadExprPushdownBlacklist reloads the data from expr_pushdown_blacklist table. type ReloadExprPushdownBlacklist struct { baseSchemaProducer @@ -351,10 +380,9 @@ type InsertGeneratedColumns struct { OnDuplicates []*expression.Assignment } -// Copy clones InsertGeneratedColumns. -func (i InsertGeneratedColumns) Copy() InsertGeneratedColumns { +func (i InsertGeneratedColumns) cloneForPlanCache() InsertGeneratedColumns { return InsertGeneratedColumns{ - Exprs: util.CloneExpressions(i.Exprs), + Exprs: cloneExpressionsForPlanCache(i.Exprs, nil), OnDuplicates: util.CloneAssignments(i.OnDuplicates), } } @@ -468,7 +496,7 @@ type Update struct { // Used when partition sets are given. // e.g. update t partition(p0) set a = 1; - PartitionedTable []table.PartitionedTable `plan-cache-clone:"must-nil"` + PartitionedTable []table.PartitionedTable `plan-cache-clone:"shallow"` // tblID2Table stores related tables' info of this Update statement. tblID2Table map[int64]table.Table `plan-cache-clone:"shallow"` @@ -562,6 +590,7 @@ type AnalyzeColumnsTask struct { HandleCols util.HandleCols CommonHandleInfo *model.IndexInfo ColsInfo []*model.ColumnInfo + SkipColsInfo []*model.ColumnInfo TblInfo *model.TableInfo Indexes []*model.IndexInfo AnalyzeInfo @@ -667,6 +696,14 @@ type PlanReplayer struct { PlanDigest string } +// Traffic represents a traffic plan. +type Traffic struct { + baseSchemaProducer + OpType ast.TrafficOpType + Options []*ast.TrafficOption + Dir string +} + // SplitRegion represents a split regions plan. type SplitRegion struct { baseSchemaProducer @@ -809,6 +846,9 @@ func GetExplainRowsForPlan(plan base.Plan) (rows [][]string) { Format: types.ExplainFormatROW, Analyze: false, } + if plan != nil { + explain.SetSCtx(plan.SCtx()) + } if err := explain.RenderResult(); err != nil { return rows } diff --git a/pkg/planner/core/exhaust_physical_plans.go b/pkg/planner/core/exhaust_physical_plans.go index 53bb77be932ae..6d82be3a4dd27 100644 --- a/pkg/planner/core/exhaust_physical_plans.go +++ b/pkg/planner/core/exhaust_physical_plans.go @@ -2189,7 +2189,7 @@ func getPhysTopN(lt *logicalop.LogicalTopN, prop *property.PhysicalProperty) []b if len(lt.ByItems) != 1 { return ret } - vs := expression.ExtractVectorHelper(lt.ByItems[0].Expr) + vs := expression.InterpretVectorSearchExpr(lt.ByItems[0].Expr) if vs == nil { return ret } @@ -2211,7 +2211,7 @@ func getPhysTopN(lt *logicalop.LogicalTopN, prop *property.PhysicalProperty) []b ExpectedCnt: math.MaxFloat64, CTEProducerStatus: prop.CTEProducerStatus, } - resultProp.VectorProp.VectorHelper = vs + resultProp.VectorProp.VSInfo = vs resultProp.VectorProp.TopK = uint32(lt.Count + lt.Offset) topN := PhysicalTopN{ ByItems: lt.ByItems, diff --git a/pkg/planner/core/explain.go b/pkg/planner/core/explain.go index 5e2b118943d47..191d09f61caee 100644 --- a/pkg/planner/core/explain.go +++ b/pkg/planner/core/explain.go @@ -27,6 +27,7 @@ import ( "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/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" @@ -572,13 +573,15 @@ func (p *PhysicalIndexJoin) explainInfo(normalized bool, isIndexMergeJoin bool) exprCtx := p.SCtx().GetExprCtx() evalCtx := exprCtx.GetEvalCtx() - buffer := bytes.NewBufferString(p.JoinType.String()) + buffer := new(strings.Builder) + buffer.WriteString(p.JoinType.String()) buffer.WriteString(", inner:") if normalized { buffer.WriteString(p.Children()[p.InnerChildIdx].TP()) } else { buffer.WriteString(p.Children()[p.InnerChildIdx].ExplainID().String()) } + explainJoinLeftSide(buffer, p.JoinType.IsInnerJoin(), normalized, p.Children()[0]) if len(p.OuterJoinKeys) > 0 { buffer.WriteString(", outer key:") buffer.Write(expression.ExplainColumnList(evalCtx, p.OuterJoinKeys)) @@ -654,7 +657,7 @@ func (p *PhysicalHashJoin) explainInfo(normalized bool) string { } buffer.WriteString(p.JoinType.String()) - + explainJoinLeftSide(buffer, p.JoinType.IsInnerJoin(), normalized, p.Children()[0]) evalCtx := p.SCtx().GetExprCtx().GetEvalCtx() if len(p.EqualConditions) > 0 { if normalized { @@ -726,6 +729,17 @@ func (p *PhysicalHashJoin) explainInfo(normalized bool) string { return buffer.String() } +func explainJoinLeftSide(buffer *strings.Builder, isInnerJoin bool, normalized bool, leftSide base.PhysicalPlan) { + if !isInnerJoin { + buffer.WriteString(", left side:") + if normalized { + buffer.WriteString(leftSide.TP()) + } else { + buffer.WriteString(leftSide.ExplainID().String()) + } + } +} + // ExplainInfo implements Plan interface. func (p *PhysicalMergeJoin) ExplainInfo() string { return p.explainInfo(false) @@ -740,7 +754,9 @@ func (p *PhysicalMergeJoin) explainInfo(normalized bool) string { } evalCtx := p.SCtx().GetExprCtx().GetEvalCtx() - buffer := bytes.NewBufferString(p.JoinType.String()) + buffer := new(strings.Builder) + buffer.WriteString(p.JoinType.String()) + explainJoinLeftSide(buffer, p.JoinType.IsInnerJoin(), normalized, p.Children()[0]) if len(p.LeftJoinKeys) > 0 { fmt.Fprintf(buffer, ", left key:%s", expression.ExplainColumnList(evalCtx, p.LeftJoinKeys)) diff --git a/pkg/planner/core/expression_rewriter.go b/pkg/planner/core/expression_rewriter.go index 8024d545cc614..42306c205d43c 100644 --- a/pkg/planner/core/expression_rewriter.go +++ b/pkg/planner/core/expression_rewriter.go @@ -1103,9 +1103,9 @@ func (er *expressionRewriter) handleExistSubquery(ctx context.Context, planCtx * return v, true } if (row != nil && !v.Not) || (row == nil && v.Not) { - er.ctxStackAppend(expression.NewOne(), types.EmptyName) + er.ctxStackAppend(expression.NewSignedOne(), types.EmptyName) } else { - er.ctxStackAppend(expression.NewZero(), types.EmptyName) + er.ctxStackAppend(expression.NewSignedZero(), types.EmptyName) } } return v, true diff --git a/pkg/planner/core/find_best_task.go b/pkg/planner/core/find_best_task.go index c6beb7f89b830..4edb2305dd24a 100644 --- a/pkg/planner/core/find_best_task.go +++ b/pkg/planner/core/find_best_task.go @@ -263,7 +263,7 @@ func iteratePhysicalPlan4BaseLogical( ) ([]base.Task, int64, []int64, error) { // Find best child tasks firstly. childTasks = childTasks[:0] - // The curCntPlan records the number of possible plans for pp + // The curCntPlan records the number of possible plans for selfPhysicalPlan curCntPlan := int64(1) for j, child := range p.Children() { childProp := selfPhysicalPlan.GetChildReqProps(j) @@ -297,7 +297,7 @@ func iterateChildPlan4LogicalSequence( ) ([]base.Task, int64, []int64, error) { // Find best child tasks firstly. childTasks = childTasks[:0] - // The curCntPlan records the number of possible plans for pp + // The curCntPlan records the number of possible plans for selfPhysicalPlan curCntPlan := int64(1) lastIdx := p.ChildLen() - 1 for j := 0; j < lastIdx; j++ { @@ -761,6 +761,19 @@ func compareCandidates(sctx base.PlanContext, prop *property.PhysicalProperty, l } func isMatchProp(ds *logicalop.DataSource, path *util.AccessPath, prop *property.PhysicalProperty) bool { + if prop.VectorProp.VSInfo != nil && path.Index != nil && path.Index.VectorInfo != nil { + if path.Index == nil || path.Index.VectorInfo == nil { + return false + } + if ds.TableInfo.Columns[path.Index.Columns[0].Offset].ID != prop.VectorProp.Column.ID { + return false + } + + if model.IndexableFnNameToDistanceMetric[prop.VectorProp.DistanceFnName.L] != path.Index.VectorInfo.DistanceMetric { + return false + } + return true + } var isMatchProp bool if path.IsIntHandlePath { pkCol := ds.GetPKIsHandleCol() @@ -808,19 +821,6 @@ func isMatchProp(ds *logicalop.DataSource, path *util.AccessPath, prop *property } } } - if prop.VectorProp.VectorHelper != nil && path.Index.VectorInfo != nil { - if path.Index == nil || path.Index.VectorInfo == nil { - return false - } - if ds.TableInfo.Columns[path.Index.Columns[0].Offset].ID != prop.VectorProp.Column.ID { - return false - } - - if model.IndexableFnNameToDistanceMetric[prop.VectorProp.DistanceFnName.L] != path.Index.VectorInfo.DistanceMetric { - return false - } - return true - } return isMatchProp } @@ -1172,13 +1172,15 @@ func skylinePruning(ds *logicalop.DataSource, prop *property.PhysicalProperty) [ } } - preferRange := ds.SCtx().GetSessionVars().GetAllowPreferRangeScan() && (ds.TableStats.HistColl.Pseudo || ds.TableStats.RowCount < 1) // If we've forced an index merge - we want to keep these plans preferMerge := len(ds.IndexMergeHints) > 0 || fixcontrol.GetBoolWithDefault( ds.SCtx().GetSessionVars().GetOptimizerFixControlMap(), fixcontrol.Fix52869, false, ) + // tidb_opt_prefer_range_scan is the master switch to control index preferencing + preferRange := ds.SCtx().GetSessionVars().GetAllowPreferRangeScan() && + (preferMerge || (ds.TableStats.HistColl.Pseudo || ds.TableStats.RowCount < 1)) if preferRange && len(candidates) > 1 { // If a candidate path is TiFlash-path or forced-path or MV index, we just keep them. For other candidate paths, if there exists // any range scan path, we remove full scan paths and keep range scan paths. @@ -1197,9 +1199,8 @@ func skylinePruning(ds *logicalop.DataSource, prop *property.PhysicalProperty) [ } if !ranger.HasFullRange(c.path.Ranges, unsignedIntHandle) { // Preference plans with equals/IN predicates or where there is more filtering in the index than against the table - equalPlan := c.path.EqCondCount > 0 || c.path.EqOrInCondCount > 0 - indexFilters := len(c.path.TableFilters) < len(c.path.IndexFilters) - if preferMerge || (((equalPlan || indexFilters) && prop.IsSortItemEmpty()) || c.isMatchProp) { + indexFilters := c.path.EqCondCount > 0 || c.path.EqOrInCondCount > 0 || len(c.path.TableFilters) < len(c.path.IndexFilters) + if preferMerge || (indexFilters && (prop.IsSortItemEmpty() || c.isMatchProp)) { preferredPaths = append(preferredPaths, c) hasRangeScanPath = true } @@ -2266,6 +2267,7 @@ func (is *PhysicalIndexScan) addSelectionConditionForGlobalIndex(p *logicalop.Da return nil, err } needNot := false + // TODO: Move all this into PartitionPruning or the PartitionProcessor! pInfo := p.TableInfo.GetPartitionInfo() if len(idxArr) == 1 && idxArr[0] == FullRange { // Filter away partitions that may exists in Global Index, @@ -2680,7 +2682,6 @@ func convertToPointGet(ds *logicalop.DataSource, prop *property.PhysicalProperty accessCnt := math.Min(candidate.path.CountAfterAccess, float64(1)) pointGetPlan := PointGetPlan{ - ctx: ds.SCtx(), AccessConditions: candidate.path.AccessConds, schema: ds.Schema().Clone(), dbName: ds.DBName.L, @@ -2910,7 +2911,7 @@ func getOriginalPhysicalTableScan(ds *logicalop.DataSource, prop *property.Physi if usedStats != nil && usedStats.GetUsedInfo(ts.physicalTableID) != nil { ts.usedStatsInfo = usedStats.GetUsedInfo(ts.physicalTableID) } - if isMatchProp && prop.VectorProp.VectorHelper == nil { + if isMatchProp && prop.VectorProp.VSInfo == nil { ts.Desc = prop.SortItems[0].Desc ts.KeepOrder = true } diff --git a/pkg/planner/core/generator/hash64_equals/BUILD.bazel b/pkg/planner/core/generator/hash64_equals/BUILD.bazel index a2272a9d322b5..f259bb8eec12e 100644 --- a/pkg/planner/core/generator/hash64_equals/BUILD.bazel +++ b/pkg/planner/core/generator/hash64_equals/BUILD.bazel @@ -6,6 +6,7 @@ go_library( importpath = "github.com/pingcap/tidb/pkg/planner/core/generator/hash64_equals", visibility = ["//visibility:private"], deps = [ + "//pkg/parser/types", "//pkg/planner/cascades/base", "//pkg/planner/core/operator/logicalop", ], diff --git a/pkg/planner/core/generator/hash64_equals/hash64_equals_generator.go b/pkg/planner/core/generator/hash64_equals/hash64_equals_generator.go index 714491d91f3cd..824ad9ba441dd 100644 --- a/pkg/planner/core/generator/hash64_equals/hash64_equals_generator.go +++ b/pkg/planner/core/generator/hash64_equals/hash64_equals_generator.go @@ -23,6 +23,7 @@ import ( "reflect" "strings" + "github.com/pingcap/tidb/pkg/parser/types" "github.com/pingcap/tidb/pkg/planner/cascades/base" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" ) @@ -35,7 +36,12 @@ import ( // If a field is tagged with `hash64-equals`, then it will be computed in hash64 and equals func. // If a field is not tagged, then it will be skipped. func GenHash64Equals4LogicalOps() ([]byte, error) { - var structures = []any{logicalop.LogicalJoin{}, logicalop.LogicalAggregation{}, logicalop.LogicalApply{}, logicalop.LogicalExpand{}} + var structures = []any{logicalop.LogicalJoin{}, logicalop.LogicalAggregation{}, logicalop.LogicalApply{}, + logicalop.LogicalExpand{}, logicalop.LogicalLimit{}, logicalop.LogicalMaxOneRow{}, logicalop.DataSource{}, + logicalop.LogicalMemTable{}, logicalop.LogicalUnionAll{}, logicalop.LogicalPartitionUnionAll{}, logicalop.LogicalProjection{}, + logicalop.LogicalSelection{}, logicalop.LogicalSequence{}, logicalop.LogicalShow{}, logicalop.LogicalShowDDLJobs{}, + logicalop.LogicalSort{}, logicalop.LogicalTableDual{}, logicalop.LogicalTopN{}, logicalop.LogicalUnionScan{}, logicalop.LogicalWindow{}, + } c := new(cc) c.write(codeGenHash64EqualsPrefix) for _, s := range structures { @@ -48,7 +54,14 @@ func GenHash64Equals4LogicalOps() ([]byte, error) { return c.format() } +// IHashEquals is the interface for hash64 and equals inside parser pkg. +type IHashEquals interface { + Hash64(h types.IHasher) + Equals(other any) bool +} + var hashEqualsType = reflect.TypeOf((*base.HashEquals)(nil)).Elem() +var iHashEqualsType = reflect.TypeOf((*IHashEquals)(nil)).Elem() func genHash64EqualsForLogicalOps(x any) ([]byte, error) { c := new(cc) @@ -77,18 +90,24 @@ func genHash64EqualsForLogicalOps(x any) ([]byte, error) { // for Equals function. c.write("// Equals implements the Hash64Equals interface, only receive *%v pointer.", vType.Name()) c.write("func (op *%v) Equals(other any) bool {", vType.Name()) - c.write("if other == nil { return false }") c.write("op2, ok := other.(*%v)", vType.Name()) c.write("if !ok { return false }") + c.write("if op == nil { return op2 == nil }") + c.write("if op2 == nil { return false }") + hasValidField := false for i := 0; i < vType.NumField(); i++ { f := vType.Field(i) if !isHash64EqualsField(f) { continue } + hasValidField = true leftCallName := "op." + vType.Field(i).Name rightCallName := "op2." + vType.Field(i).Name c.EqualsElement(f.Type, leftCallName, rightCallName, "i") } + if !hasValidField { + c.write("_ = op2") + } c.write("return true") c.write("}") return c.format() @@ -104,6 +123,38 @@ func logicalOpName2PlanCodecString(name string) string { return "plancodec.TypeApply" case "LogicalExpand": return "plancodec.TypeExpand" + case "LogicalLimit": + return "plancodec.TypeLimit" + case "LogicalMaxOneRow": + return "plancodec.TypeMaxOneRow" + case "DataSource": + return "plancodec.TypeDataSource" + case "LogicalMemTable": + return "plancodec.TypeMemTableScan" + case "LogicalUnionAll": + return "plancodec.TypeUnion" + case "LogicalPartitionUnionAll": + return "plancodec.TypePartitionUnion" + case "LogicalProjection": + return "plancodec.TypeProj" + case "LogicalSelection": + return "plancodec.TypeSel" + case "LogicalSequence": + return "plancodec.TypeSequence" + case "LogicalShow": + return "plancodec.TypeShow" + case "LogicalShowDDLJobs": + return "plancodec.TypeShowDDLJobs" + case "LogicalSort": + return "plancodec.TypeSort" + case "LogicalTableDual": + return "plancodec.TypeDual" + case "LogicalTopN": + return "plancodec.TypeTopN" + case "LogicalUnionScan": + return "plancodec.TypeUnionScan" + case "LogicalWindow": + return "plancodec.TypeWindow" default: return "" } @@ -117,7 +168,7 @@ func isHash64EqualsField(fType reflect.StructField) bool { func (c *cc) EqualsElement(fType reflect.Type, lhs, rhs string, i string) { switch fType.Kind() { case reflect.Slice: - c.write("if len(%v) != len(%v) { return false }", lhs, rhs) + c.write("if (%v == nil && %v != nil) || (%v != nil && %v == nil) || len(%v) != len(%v) { return false }", lhs, rhs, lhs, rhs, lhs, rhs) itemName := "one" if strings.HasPrefix(lhs, "one") { itemName = lhs + "e" @@ -139,7 +190,8 @@ func (c *cc) EqualsElement(fType reflect.Type, lhs, rhs string, i string) { reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64: c.write("if %v != %v {return false}", lhs, rhs) default: - if fType.Implements(hashEqualsType) || reflect.PtrTo(fType).Implements(hashEqualsType) { + if fType.Implements(hashEqualsType) || fType.Implements(iHashEqualsType) || + reflect.PtrTo(fType).Implements(hashEqualsType) || reflect.PtrTo(fType).Implements(iHashEqualsType) { if fType.Kind() == reflect.Struct { rhs = "&" + rhs } @@ -173,7 +225,8 @@ func (c *cc) Hash64Element(fType reflect.Type, callName string) { case reflect.Float32, reflect.Float64: c.write("h.HashFloat64(float64(%v))", callName) default: - if fType.Implements(hashEqualsType) || reflect.PtrTo(fType).Implements(hashEqualsType) { + if fType.Implements(hashEqualsType) || fType.Implements(iHashEqualsType) || + reflect.PtrTo(fType).Implements(hashEqualsType) || reflect.PtrTo(fType).Implements(iHashEqualsType) { c.write("%v.Hash64(h)", callName) } else { panic("doesn't support element type" + fType.Kind().String()) diff --git a/pkg/planner/core/generator/plan_cache/plan_clone_generator.go b/pkg/planner/core/generator/plan_cache/plan_clone_generator.go index 21b0eddd92274..8d0f13de3aa54 100644 --- a/pkg/planner/core/generator/plan_cache/plan_clone_generator.go +++ b/pkg/planner/core/generator/plan_cache/plan_clone_generator.go @@ -101,12 +101,14 @@ func genPlanCloneForPlanCache(x any) ([]byte, error) { c.write(`basePlan, baseOK := op.%v.CloneForPlanCacheWithSelf(newCtx, cloned) if !baseOK {return nil, false} cloned.%v = *basePlan`, fieldName, fieldName) - case "baseimpl.Plan", "core.baseSchemaProducer": + case "baseimpl.Plan": c.write("cloned.%v = *op.%v.CloneWithNewCtx(newCtx)", f.Name, f.Name) + case "core.baseSchemaProducer": + c.write("cloned.%v = *op.%v.cloneForPlanCache(newCtx)", f.Name, f.Name) case "[]expression.Expression", "[]*expression.Column", "[]*expression.Constant", "[]*expression.ScalarFunction": structureName := strings.Split(f.Type.String(), ".")[1] + "s" - c.write("cloned.%v = clone%vForPlanCache(op.%v)", f.Name, structureName, f.Name) + c.write("cloned.%v = clone%vForPlanCache(op.%v, nil)", f.Name, structureName, f.Name) case "[][]*expression.Constant", "[][]expression.Expression": structureName := strings.Split(f.Type.String(), ".")[1] c.write("cloned.%v = clone%v2DForPlanCache(op.%v)", f.Name, structureName, f.Name) @@ -123,18 +125,22 @@ func genPlanCloneForPlanCache(x any) ([]byte, error) { c.write("if op.%v != nil {", f.Name) c.write("cloned.%v = op.%v.Clone(newCtx.GetSessionVars().StmtCtx)", f.Name, f.Name) c.write("}") - case "*core.PhysPlanPartInfo", "*core.PushedDownLimit", "*expression.Schema": + case "*core.PushedDownLimit": c.write("cloned.%v = op.%v.Clone()", f.Name, f.Name) + case "*core.PhysPlanPartInfo", "*core.ColWithCmpFuncManager", "core.InsertGeneratedColumns": + c.write("cloned.%v = op.%v.cloneForPlanCache()", f.Name, f.Name) case "kv.Handle": c.write("if op.%v != nil {", f.Name) c.write("cloned.%v = op.%v.Copy()", f.Name, f.Name) c.write("}") - case "*core.ColWithCmpFuncManager", "core.InsertGeneratedColumns": - c.write("cloned.%v = op.%v.Copy()", f.Name, f.Name) case "*expression.Column", "*expression.Constant": c.write("if op.%v != nil {", f.Name) + c.write("if op.%v.SafeToShareAcrossSession() {", f.Name) + c.write("cloned.%v = op.%v", f.Name, f.Name) + c.write("} else {") c.write("cloned.%v = op.%v.Clone().(%v)", f.Name, f.Name, f.Type.String()) c.write("}") + c.write("}") case "core.PhysicalIndexJoin": c.write("inlj, ok := op.%v.CloneForPlanCache(newCtx)", f.Name) c.write("if !ok {return nil, false}") @@ -233,144 +239,6 @@ import ( "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/util" ) - -func clonePhysicalPlansForPlanCache(newCtx base.PlanContext, plans []base.PhysicalPlan) ([]base.PhysicalPlan, bool) { - clonedPlans := make([]base.PhysicalPlan, len(plans)) - for i, plan := range plans { - cloned, ok := plan.CloneForPlanCache(newCtx) - if !ok { - return nil, false - } - clonedPlans[i] = cloned.(base.PhysicalPlan) - } - return clonedPlans, true -} - -func cloneExpressionsForPlanCache(exprs []expression.Expression) []expression.Expression { - if exprs == nil { - return nil - } - allSafe := true - for _, e := range exprs { - if !e.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return exprs - } - cloned := make([]expression.Expression, 0, len(exprs)) - for _, e := range exprs { - if e.SafeToShareAcrossSession() { - cloned = append(cloned, e) - } else { - cloned = append(cloned, e.Clone()) - } - } - return cloned -} - -func cloneExpression2DForPlanCache(exprs [][]expression.Expression) [][]expression.Expression { - if exprs == nil { - return nil - } - cloned := make([][]expression.Expression, 0, len(exprs)) - for _, e := range exprs { - cloned = append(cloned, cloneExpressionsForPlanCache(e)) - } - return cloned -} - -func cloneScalarFunctionsForPlanCache(scalarFuncs []*expression.ScalarFunction) []*expression.ScalarFunction { - if scalarFuncs == nil { - return nil - } - allSafe := true - for _, f := range scalarFuncs { - if !f.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return scalarFuncs - } - cloned := make([]*expression.ScalarFunction, 0, len(scalarFuncs)) - for _, f := range scalarFuncs { - if f.SafeToShareAcrossSession() { - cloned = append(cloned, f) - } else { - cloned = append(cloned, f.Clone().(*expression.ScalarFunction)) - } - } - return cloned -} - -func cloneColumnsForPlanCache(cols []*expression.Column) []*expression.Column { - if cols == nil { - return nil - } - allSafe := true - for _, c := range cols { - if !c.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return cols - } - cloned := make([]*expression.Column, 0, len(cols)) - for _, c := range cols { - if c == nil { - cloned = append(cloned, nil) - continue - } - if c.SafeToShareAcrossSession() { - cloned = append(cloned, c) - } else { - cloned = append(cloned, c.Clone().(*expression.Column)) - } - } - return cloned -} - -func cloneConstantsForPlanCache(constants []*expression.Constant) []*expression.Constant { - if constants == nil { - return nil - } - allSafe := true - for _, c := range constants { - if !c.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return constants - } - cloned := make([]*expression.Constant, 0, len(constants)) - for _, c := range constants { - if c.SafeToShareAcrossSession() { - cloned = append(cloned, c) - } else { - cloned = append(cloned, c.Clone().(*expression.Constant)) - } - } - return cloned -} - -func cloneConstant2DForPlanCache(constants [][]*expression.Constant) [][]*expression.Constant { - if constants == nil { - return nil - } - cloned := make([][]*expression.Constant, 0, len(constants)) - for _, c := range constants { - cloned = append(cloned, cloneConstantsForPlanCache(c)) - } - return cloned -} ` func main() { diff --git a/pkg/planner/core/index_join_path.go b/pkg/planner/core/index_join_path.go index 1d68250c27959..a389668f11cb6 100644 --- a/pkg/planner/core/index_join_path.go +++ b/pkg/planner/core/index_join_path.go @@ -636,27 +636,29 @@ type ColWithCmpFuncManager struct { OpType []string opArg []expression.Expression TmpConstant []*expression.Constant - affectedColSchema *expression.Schema - compareFuncs []chunk.CompareFunc + affectedColSchema *expression.Schema `plan-cache-clone:"shallow"` + compareFuncs []chunk.CompareFunc `plan-cache-clone:"shallow"` } -// Copy clones the ColWithCmpFuncManager. -func (cwc *ColWithCmpFuncManager) Copy() *ColWithCmpFuncManager { +func (cwc *ColWithCmpFuncManager) cloneForPlanCache() *ColWithCmpFuncManager { if cwc == nil { return nil } cloned := new(ColWithCmpFuncManager) if cwc.TargetCol != nil { - cloned.TargetCol = cwc.TargetCol.Clone().(*expression.Column) + if cwc.TargetCol.SafeToShareAcrossSession() { + cloned.TargetCol = cwc.TargetCol + } else { + cloned.TargetCol = cwc.TargetCol.Clone().(*expression.Column) + } } cloned.colLength = cwc.colLength cloned.OpType = make([]string, len(cwc.OpType)) copy(cloned.OpType, cwc.OpType) - cloned.opArg = util.CloneExpressions(cwc.opArg) - cloned.TmpConstant = util.CloneConstants(cwc.TmpConstant) - cloned.affectedColSchema = cwc.affectedColSchema.Clone() - cloned.compareFuncs = make([]chunk.CompareFunc, len(cwc.compareFuncs)) - copy(cloned.compareFuncs, cwc.compareFuncs) + cloned.opArg = cloneExpressionsForPlanCache(cwc.opArg, nil) + cloned.TmpConstant = cloneConstantsForPlanCache(cwc.TmpConstant, nil) + cloned.affectedColSchema = cwc.affectedColSchema + cloned.compareFuncs = cwc.compareFuncs return cloned } diff --git a/pkg/planner/core/integration_test.go b/pkg/planner/core/integration_test.go index 4002325148e25..38837cc33b38e 100644 --- a/pkg/planner/core/integration_test.go +++ b/pkg/planner/core/integration_test.go @@ -309,7 +309,7 @@ func TestBitColumnPushDown(t *testing.T) { tk.MustQuery(sql).Check(testkit.Rows("A")) tk.MustQuery(fmt.Sprintf("explain analyze %s", sql)).CheckAt([]int{0, 3, 6}, rows) - rows[1][2] = `eq(cast(test.t1.a, var_string(1)), "A")` + rows[1][2] = `eq(cast(from_binary(cast(test.t1.a, binary(1))), var_string(1)), "A")` sql = "select a from t1 where cast(a as char)='A'" tk.MustQuery(sql).Check(testkit.Rows("A")) tk.MustQuery(fmt.Sprintf("explain analyze %s", sql)).CheckAt([]int{0, 3, 6}, rows) @@ -317,7 +317,7 @@ func TestBitColumnPushDown(t *testing.T) { tk.MustExec("insert into mysql.expr_pushdown_blacklist values('bit', 'tikv','');") tk.MustExec("admin reload expr_pushdown_blacklist;") rows = [][]any{ - {"Selection_5", "root", `eq(cast(test.t1.a, var_string(1)), "A")`}, + {"Selection_5", "root", `eq(cast(from_binary(cast(test.t1.a, binary(1))), var_string(1)), "A")`}, {"└─TableReader_7", "root", "data:TableFullScan_6"}, {" └─TableFullScan_6", "cop[tikv]", "keep order:false, stats:pseudo"}, } diff --git a/pkg/planner/core/issuetest/BUILD.bazel b/pkg/planner/core/issuetest/BUILD.bazel index e12f14bea8454..2fa7a2e123983 100644 --- a/pkg/planner/core/issuetest/BUILD.bazel +++ b/pkg/planner/core/issuetest/BUILD.bazel @@ -10,7 +10,7 @@ go_test( data = glob(["testdata/**"]), flaky = True, race = "on", - shard_count = 3, + shard_count = 4, deps = [ "//pkg/parser", "//pkg/planner", diff --git a/pkg/planner/core/issuetest/planner_issue_test.go b/pkg/planner/core/issuetest/planner_issue_test.go index 0474e03f97543..fda17d6cfce17 100644 --- a/pkg/planner/core/issuetest/planner_issue_test.go +++ b/pkg/planner/core/issuetest/planner_issue_test.go @@ -119,3 +119,18 @@ func TestIssue54535(t *testing.T) { tk.MustQuery("select /*+ inl_join(tmp) */ * from t1 inner join (select col_1, group_concat(col_2) from t2 group by col_1) tmp on t1.col_1 = tmp.col_1;").Check(testkit.Rows()) tk.MustQuery("select /*+ inl_join(tmp) */ * from t1 inner join (select col_1, group_concat(distinct col_2 order by col_2) from t2 group by col_1) tmp on t1.col_1 = tmp.col_1;").Check(testkit.Rows()) } + +func TestIssue53175(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(`set @@sql_mode = default`) + tk.MustQuery(`select @@sql_mode REGEXP 'ONLY_FULL_GROUP_BY'`).Check(testkit.Rows("1")) + tk.MustContainErrMsg(`select * from t group by null`, "[planner:1055]Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.t.a' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by") + tk.MustExec(`create view v as select * from t group by null`) + tk.MustContainErrMsg(`select * from v`, "[planner:1055]Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.t.a' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by") + tk.MustExec(`set @@sql_mode = ''`) + tk.MustQuery(`select * from t group by null`) + tk.MustQuery(`select * from v`) +} diff --git a/pkg/planner/core/logical_plan_builder.go b/pkg/planner/core/logical_plan_builder.go index 67d6ffd5cf1ed..0f6651e5baeab 100644 --- a/pkg/planner/core/logical_plan_builder.go +++ b/pkg/planner/core/logical_plan_builder.go @@ -1554,7 +1554,8 @@ func unionJoinFieldType(a, b *types.FieldType) *types.FieldType { resultTp.SetFlenUnderLimit(max(a.GetFlen()-a.GetDecimal(), b.GetFlen()-b.GetDecimal()) + resultTp.GetDecimal()) } types.TryToFixFlenOfDatetime(resultTp) - if resultTp.EvalType() != types.ETInt && (a.EvalType() == types.ETInt || b.EvalType() == types.ETInt) && resultTp.GetFlen() < mysql.MaxIntWidth { + if resultTp.EvalType() != types.ETInt && (a.EvalType() == types.ETInt || b.EvalType() == types.ETInt) && + (resultTp.GetFlen() < mysql.MaxIntWidth && resultTp.GetFlen() != types.UnspecifiedLength) { resultTp.SetFlen(mysql.MaxIntWidth) } expression.SetBinFlagOrBinStr(b, resultTp) @@ -2939,11 +2940,19 @@ func (b *PlanBuilder) tblInfoFromCol(from ast.ResultSetNode, name *types.FieldNa for _, field := range tableList { if field.Name.L == name.TblName.L { tnW := b.resolveCtx.GetTableName(field) - // when the Select is inside a view, it's not pre-processed, tnW is nil. if tnW != nil { return tnW.TableInfo } - return nil + // when the Select is inside a view, it's not pre-processed, tnW is nil. + if b.isCreateView { + // Ignore during create + return nil + } + tblInfo, err := b.is.TableInfoByName(name.DBName, name.TblName) + if err != nil { + return nil + } + return tblInfo } } return nil @@ -4833,7 +4842,7 @@ func (b *PlanBuilder) buildMemTable(_ context.Context, dbName pmodel.CIStr, tabl p.Extractor = &TableStorageStatsExtractor{} case infoschema.TableTiFlashTables, infoschema.TableTiFlashSegments, infoschema.TableTiFlashIndexes: p.Extractor = &TiFlashSystemTableExtractor{} - case infoschema.TableStatementsSummary, infoschema.TableStatementsSummaryHistory: + case infoschema.TableStatementsSummary, infoschema.TableStatementsSummaryHistory, infoschema.TableTiDBStatementsStats: p.Extractor = &StatementsSummaryExtractor{} case infoschema.TableTiKVRegionPeers: p.Extractor = &TikvRegionPeersExtractor{} @@ -4991,6 +5000,7 @@ func (b *PlanBuilder) BuildDataSourceFromView(ctx context.Context, dbName pmodel terror.ErrorNotEqual(err, plannererrors.ErrNotSupportedYet) { err = plannererrors.ErrViewInvalid.GenWithStackByArgs(dbName.O, tableInfo.Name.O) } + failpoint.Inject("BuildDataSourceFailed", func() {}) return nil, err } pm := privilege.GetPrivilegeManager(b.ctx) @@ -5003,7 +5013,7 @@ func (b *PlanBuilder) BuildDataSourceFromView(ctx context.Context, dbName pmodel if tableInfo.View.Security == pmodel.SecurityDefiner { if pm != nil { for _, v := range b.visitInfo { - if !pm.RequestVerificationWithUser(v.db, v.table, v.column, v.privilege, tableInfo.View.Definer) { + if !pm.RequestVerificationWithUser(ctx, v.db, v.table, v.column, v.privilege, tableInfo.View.Definer) { return nil, plannererrors.ErrViewInvalid.GenWithStackByArgs(dbName.O, tableInfo.Name.O) } } @@ -5493,7 +5503,10 @@ func (b *PlanBuilder) buildUpdate(ctx context.Context, update *ast.UpdateStmt) ( if dbName == "" { dbName = b.ctx.GetSessionVars().CurrentDB } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, dbName, t.Name.L, "", nil) + // Avoid adding CTE table to the SELECT privilege list, maybe we have better way to do this? + if _, ok := b.nameMapCTE[t.Name.L]; !ok { + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, dbName, t.Name.L, "", nil) + } } oldSchemaLen := p.Schema().Len() @@ -7347,7 +7360,9 @@ func (b *PlanBuilder) adjustCTEPlanOutputName(p base.LogicalPlan, def *ast.Commo outPutNames := p.OutputNames() for _, name := range outPutNames { name.TblName = def.Name - name.DBName = pmodel.NewCIStr(b.ctx.GetSessionVars().CurrentDB) + if name.DBName.String() == "" { + name.DBName = pmodel.NewCIStr(b.ctx.GetSessionVars().CurrentDB) + } } if len(def.ColNameList) > 0 { if len(def.ColNameList) != len(p.OutputNames()) { @@ -7395,12 +7410,12 @@ func (b *PlanBuilder) genCTETableNameForError() string { func (b *PlanBuilder) buildWith(ctx context.Context, w *ast.WithClause) ([]*cteInfo, error) { // Check CTE name must be unique. - nameMap := make(map[string]struct{}) + b.nameMapCTE = make(map[string]struct{}) for _, cte := range w.CTEs { - if _, ok := nameMap[cte.Name.L]; ok { + if _, ok := b.nameMapCTE[cte.Name.L]; ok { return nil, plannererrors.ErrNonUniqTable } - nameMap[cte.Name.L] = struct{}{} + b.nameMapCTE[cte.Name.L] = struct{}{} } ctes := make([]*cteInfo, 0, len(w.CTEs)) for _, cte := range w.CTEs { diff --git a/pkg/planner/core/logical_plans_test.go b/pkg/planner/core/logical_plans_test.go index 938bc799aa2a5..b10abfd47fd49 100644 --- a/pkg/planner/core/logical_plans_test.go +++ b/pkg/planner/core/logical_plans_test.go @@ -1048,21 +1048,21 @@ func TestValidate(t *testing.T) { func checkUniqueKeys(p base.LogicalPlan, t *testing.T, ans map[int][][]string, sql string) { ectx := p.SCtx().GetExprCtx().GetEvalCtx() testdata.OnRecord(func() { - ans[p.ID()] = make([][]string, len(p.Schema().Keys)) + ans[p.ID()] = make([][]string, len(p.Schema().PKOrUK)) }) keyList, ok := ans[p.ID()] require.True(t, ok, fmt.Sprintf("for %s, %v not found", sql, p.ID())) - require.Equal(t, len(keyList), len(p.Schema().Keys), fmt.Sprintf("for %s, %v, the number of key doesn't match, the schema is %s", sql, p.ID(), p.Schema())) + require.Equal(t, len(keyList), len(p.Schema().PKOrUK), fmt.Sprintf("for %s, %v, the number of key doesn't match, the schema is %s", sql, p.ID(), p.Schema())) for i := range keyList { testdata.OnRecord(func() { - keyList[i] = make([]string, len(p.Schema().Keys[i])) + keyList[i] = make([]string, len(p.Schema().PKOrUK[i])) }) - require.Equal(t, len(keyList[i]), len(p.Schema().Keys[i]), fmt.Sprintf("for %s, %v %v, the number of column doesn't match", sql, p.ID(), keyList[i])) + require.Equal(t, len(keyList[i]), len(p.Schema().PKOrUK[i]), fmt.Sprintf("for %s, %v %v, the number of column doesn't match", sql, p.ID(), keyList[i])) for j := range keyList[i] { testdata.OnRecord(func() { - keyList[i][j] = p.Schema().Keys[i][j].StringWithCtx(ectx, errors.RedactLogDisable) + keyList[i][j] = p.Schema().PKOrUK[i][j].StringWithCtx(ectx, errors.RedactLogDisable) }) - require.Equal(t, keyList[i][j], p.Schema().Keys[i][j].StringWithCtx(ectx, errors.RedactLogDisable), fmt.Sprintf("for %s, %v %v, column dosen't match", sql, p.ID(), keyList[i])) + require.Equal(t, keyList[i][j], p.Schema().PKOrUK[i][j].StringWithCtx(ectx, errors.RedactLogDisable), fmt.Sprintf("for %s, %v %v, column dosen't match", sql, p.ID(), keyList[i])) } } testdata.OnRecord(func() { @@ -2020,7 +2020,7 @@ func TestSkylinePruning(t *testing.T) { }, { sql: "select * from pt2_global_index where b > 1 order by b", - result: "b_global,b_c_global", + result: "PRIMARY_KEY,b_global,b_c_global", }, { sql: "select b from pt2_global_index where b > 1 order by b", diff --git a/pkg/planner/core/memtable_infoschema_extractor.go b/pkg/planner/core/memtable_infoschema_extractor.go index 26079d2f553c6..c527dde9683d2 100644 --- a/pkg/planner/core/memtable_infoschema_extractor.go +++ b/pkg/planner/core/memtable_infoschema_extractor.go @@ -33,7 +33,10 @@ import ( "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/collate" + "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/set" + "go.uber.org/zap" "golang.org/x/exp/maps" ) @@ -110,16 +113,29 @@ func (e *InfoSchemaBaseExtractor) GetBase() *InfoSchemaBaseExtractor { return e } -// ListSchemas lists related schemas from predicate. +// ListSchemas lists all schemas from predicate. If no schema is specified, it lists +// all schemas in the storage. func (e *InfoSchemaBaseExtractor) ListSchemas(is infoschema.InfoSchema) []pmodel.CIStr { - ec := e.extractableColumns - schemas := e.getSchemaObjectNames(ec.schema) - if len(schemas) == 0 { + extractedSchemas, unspecified := e.listPredicateSchemas(is) + if unspecified { ret := is.AllSchemaNames() slices.SortFunc(ret, func(a, b pmodel.CIStr) int { return strings.Compare(a.L, b.L) }) - return filterSchemaObjectByRegexp(e, ec.schema, ret, extractStrCIStr) + return filterSchemaObjectByRegexp(e, e.extractableColumns.schema, ret, extractStrCIStr) + } + return extractedSchemas +} + +// listPredicateSchemas lists all schemas specified in predicates. +// If no schema is specified in predicates, return `unspecified` as true. +func (e *InfoSchemaBaseExtractor) listPredicateSchemas( + is infoschema.InfoSchema, +) (schemas []pmodel.CIStr, unspecified bool) { + ec := e.extractableColumns + schemas = e.getSchemaObjectNames(ec.schema) + if len(schemas) == 0 { + return nil, true } ret := schemas[:0] for _, s := range schemas { @@ -127,7 +143,7 @@ func (e *InfoSchemaBaseExtractor) ListSchemas(is infoschema.InfoSchema) []pmodel ret = append(ret, n.Name) } } - return filterSchemaObjectByRegexp(e, ec.schema, ret, extractStrCIStr) + return filterSchemaObjectByRegexp(e, ec.schema, ret, extractStrCIStr), false } // ListSchemasAndTables lists related tables and their corresponding schemas from predicate. @@ -137,7 +153,6 @@ func (e *InfoSchemaBaseExtractor) ListSchemasAndTables( is infoschema.InfoSchema, ) ([]pmodel.CIStr, []*model.TableInfo, error) { ec := e.extractableColumns - schemas := e.ListSchemas(is) var tableNames []pmodel.CIStr if ec.table != "" { tableNames = e.getSchemaObjectNames(ec.table) @@ -150,7 +165,7 @@ func (e *InfoSchemaBaseExtractor) ListSchemasAndTables( findTablesByID(is, tableIDs, tableNames, tableMap) tableSlice := maps.Values(tableMap) tableSlice = filterSchemaObjectByRegexp(e, ec.table, tableSlice, extractStrTableInfo) - return findSchemasForTables(ctx, is, schemas, tableSlice) + return findSchemasForTables(e, is, tableSlice) } } if ec.partitionID != "" { @@ -160,13 +175,15 @@ func (e *InfoSchemaBaseExtractor) ListSchemasAndTables( findTablesByPartID(is, partIDs, tableNames, tableMap) tableSlice := maps.Values(tableMap) tableSlice = filterSchemaObjectByRegexp(e, ec.table, tableSlice, extractStrTableInfo) - return findSchemasForTables(ctx, is, schemas, tableSlice) + return findSchemasForTables(e, is, tableSlice) } } if len(tableNames) > 0 { tableNames = filterSchemaObjectByRegexp(e, ec.table, tableNames, extractStrCIStr) + schemas := e.ListSchemas(is) return findTableAndSchemaByName(ctx, is, schemas, tableNames) } + schemas := e.ListSchemas(is) return listTablesForEachSchema(ctx, e, is, schemas) } @@ -260,8 +277,17 @@ func (e *InfoSchemaBaseExtractor) filter(colName string, val string) bool { return true } } + + toLower := false + if e.extractLowerString != nil { + toLower = e.extractLowerString[colName] + } + predVals, ok := e.ColPredicates[colName] if ok && len(predVals) > 0 { + if toLower { + return !predVals.Exist(strings.ToLower(val)) + } fn, ok := e.pushedDownFuncs[colName] if ok { return !predVals.Exist(fn(val)) @@ -698,6 +724,9 @@ func listTablesForEachSchema( if err != nil { return nil, nil, errors.Trace(err) } + if ctx.Err() != nil { + return nil, nil, errors.Trace(err) + } tables = filterSchemaObjectByRegexp(e, ec.table, tables, extractStrTableInfo) for _, t := range tables { schemaSlice = append(schemaSlice, s) @@ -711,23 +740,28 @@ func listTablesForEachSchema( // returns a schema slice and a table slice that has the same length. // Note that input arg "tableSlice" will be changed in place. func findSchemasForTables( - ctx context.Context, + e *InfoSchemaBaseExtractor, is infoschema.InfoSchema, - schemas []pmodel.CIStr, tableSlice []*model.TableInfo, ) ([]pmodel.CIStr, []*model.TableInfo, error) { + schemas, unspecified := e.listPredicateSchemas(is) schemaSlice := make([]pmodel.CIStr, 0, len(tableSlice)) for i, tbl := range tableSlice { + dbInfo, ok := is.SchemaByID(tbl.DBID) + intest.Assert(ok) + if !ok { + logutil.BgLogger().Warn("schema not found for table info", + zap.Int64("tableID", tbl.ID), zap.Int64("dbID", tbl.DBID)) + continue + } + if unspecified { // all schemas should be included. + schemaSlice = append(schemaSlice, dbInfo.Name) + continue + } + found := false for _, s := range schemas { - isTbl, err := is.TableByName(ctx, s, tbl.Name) - if err != nil { - if terror.ErrorEqual(err, infoschema.ErrTableNotExists) { - continue - } - return nil, nil, errors.Trace(err) - } - if isTbl.Meta().ID == tbl.ID { + if s.L == dbInfo.Name.L { schemaSlice = append(schemaSlice, s) found = true break diff --git a/pkg/planner/core/memtable_predicate_extractor.go b/pkg/planner/core/memtable_predicate_extractor.go index 77ef307c506e4..875add8daf950 100644 --- a/pkg/planner/core/memtable_predicate_extractor.go +++ b/pkg/planner/core/memtable_predicate_extractor.go @@ -51,6 +51,9 @@ import ( type extractHelper struct { enableScalarPushDown bool pushedDownFuncs map[string]func(string) string + + // Store whether the extracted strings for a specific column are converted to lower case + extractLowerString map[string]bool } func (extractHelper) extractColInConsExpr(ctx base.PlanContext, extractCols map[int64]*types.FieldName, expr *expression.ScalarFunction) (string, []types.Datum) { @@ -342,6 +345,11 @@ func (helper *extractHelper) extractCol( break } } + + if helper.extractLowerString == nil { + helper.extractLowerString = make(map[string]bool) + } + helper.extractLowerString[extractColName] = valueToLower return } diff --git a/pkg/planner/core/metrics/metrics.go b/pkg/planner/core/metrics/metrics.go index 806adbab50b93..23138ae065788 100644 --- a/pkg/planner/core/metrics/metrics.go +++ b/pkg/planner/core/metrics/metrics.go @@ -35,6 +35,7 @@ var ( instancePlanCacheInstanceNumEvict prometheus.Gauge sessionPlanCacheLookupDuration prometheus.Observer instancePlanCacheLookupDuration prometheus.Observer + instancePlanCacheCloneDuration prometheus.Observer ) func init() { @@ -58,6 +59,7 @@ func InitMetricsVars() { instancePlanCacheInstanceNumEvict = metrics.PlanCacheInstancePlanNumCounter.WithLabelValues(" instance-plan-cache-last-evict") sessionPlanCacheLookupDuration = metrics.PlanCacheProcessDuration.WithLabelValues(" session-plan-cache-lookup") instancePlanCacheLookupDuration = metrics.PlanCacheProcessDuration.WithLabelValues(" instance-plan-cache-lookup") + instancePlanCacheCloneDuration = metrics.PlanCacheProcessDuration.WithLabelValues(" instance-plan-cache-clone") } // GetPlanCacheHitCounter get different plan cache hit counter @@ -97,6 +99,11 @@ func GetPlanCacheInstanceMemoryUsage(instancePlanCache bool) prometheus.Gauge { return sessionPlanCacheInstanceMemoryUsage } +// GetPlanCacheCloneDuration get different plan cache clone duration. +func GetPlanCacheCloneDuration() prometheus.Observer { + return instancePlanCacheCloneDuration +} + // GetPlanCacheLookupDuration get different plan cache lookup duration. func GetPlanCacheLookupDuration(instancePlanCache bool) prometheus.Observer { if instancePlanCache { diff --git a/pkg/planner/core/operator/logicalop/base_logical_plan.go b/pkg/planner/core/operator/logicalop/base_logical_plan.go index 4e533b4f0e61f..2c6739066716d 100644 --- a/pkg/planner/core/operator/logicalop/base_logical_plan.go +++ b/pkg/planner/core/operator/logicalop/base_logical_plan.go @@ -56,13 +56,21 @@ type BaseLogicalPlan struct { // Hash64 implements HashEquals.<0th> interface. func (p *BaseLogicalPlan) Hash64(h base2.Hasher) { - intest.Assert(false, "Hash64 should not be called directly") + _, ok1 := p.self.(*LogicalSequence) + _, ok2 := p.self.(*LogicalMaxOneRow) + if !ok1 && !ok2 { + intest.Assert(false, "Hash64 should not be called directly") + } h.HashInt(p.ID()) } // Equals implements HashEquals.<1st> interface. func (p *BaseLogicalPlan) Equals(other any) bool { - intest.Assert(false, "Equals should not be called directly") + _, ok1 := p.self.(*LogicalSequence) + _, ok2 := p.self.(*LogicalMaxOneRow) + if !ok1 && !ok2 { + intest.Assert(false, "Equals should not be called directly") + } if other == nil { return false } diff --git a/pkg/planner/core/operator/logicalop/hash64_equals_generated.go b/pkg/planner/core/operator/logicalop/hash64_equals_generated.go index 65a551921e762..74056cc19b3c7 100644 --- a/pkg/planner/core/operator/logicalop/hash64_equals_generated.go +++ b/pkg/planner/core/operator/logicalop/hash64_equals_generated.go @@ -24,6 +24,7 @@ import ( // Hash64 implements the Hash64Equals interface. func (op *LogicalJoin) Hash64(h base.Hasher) { h.HashString(plancodec.TypeJoin) + op.LogicalSchemaProducer.Hash64(h) h.HashInt64(int64(op.JoinType)) if op.EqualConditions == nil { h.HashByte(base.NilFlag) @@ -74,17 +75,23 @@ func (op *LogicalJoin) Hash64(h base.Hasher) { // Equals implements the Hash64Equals interface, only receive *LogicalJoin pointer. func (op *LogicalJoin) Equals(other any) bool { - if other == nil { - return false - } op2, ok := other.(*LogicalJoin) if !ok { return false } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } if op.JoinType != op2.JoinType { return false } - if len(op.EqualConditions) != len(op2.EqualConditions) { + if (op.EqualConditions == nil && op2.EqualConditions != nil) || (op.EqualConditions != nil && op2.EqualConditions == nil) || len(op.EqualConditions) != len(op2.EqualConditions) { return false } for i, one := range op.EqualConditions { @@ -92,7 +99,7 @@ func (op *LogicalJoin) Equals(other any) bool { return false } } - if len(op.NAEQConditions) != len(op2.NAEQConditions) { + if (op.NAEQConditions == nil && op2.NAEQConditions != nil) || (op.NAEQConditions != nil && op2.NAEQConditions == nil) || len(op.NAEQConditions) != len(op2.NAEQConditions) { return false } for i, one := range op.NAEQConditions { @@ -100,7 +107,7 @@ func (op *LogicalJoin) Equals(other any) bool { return false } } - if len(op.LeftConditions) != len(op2.LeftConditions) { + if (op.LeftConditions == nil && op2.LeftConditions != nil) || (op.LeftConditions != nil && op2.LeftConditions == nil) || len(op.LeftConditions) != len(op2.LeftConditions) { return false } for i, one := range op.LeftConditions { @@ -108,7 +115,7 @@ func (op *LogicalJoin) Equals(other any) bool { return false } } - if len(op.RightConditions) != len(op2.RightConditions) { + if (op.RightConditions == nil && op2.RightConditions != nil) || (op.RightConditions != nil && op2.RightConditions == nil) || len(op.RightConditions) != len(op2.RightConditions) { return false } for i, one := range op.RightConditions { @@ -116,7 +123,7 @@ func (op *LogicalJoin) Equals(other any) bool { return false } } - if len(op.OtherConditions) != len(op2.OtherConditions) { + if (op.OtherConditions == nil && op2.OtherConditions != nil) || (op.OtherConditions != nil && op2.OtherConditions == nil) || len(op.OtherConditions) != len(op2.OtherConditions) { return false } for i, one := range op.OtherConditions { @@ -130,6 +137,7 @@ func (op *LogicalJoin) Equals(other any) bool { // Hash64 implements the Hash64Equals interface. func (op *LogicalAggregation) Hash64(h base.Hasher) { h.HashString(plancodec.TypeAgg) + op.LogicalSchemaProducer.Hash64(h) if op.AggFuncs == nil { h.HashByte(base.NilFlag) } else { @@ -164,14 +172,20 @@ func (op *LogicalAggregation) Hash64(h base.Hasher) { // Equals implements the Hash64Equals interface, only receive *LogicalAggregation pointer. func (op *LogicalAggregation) Equals(other any) bool { - if other == nil { - return false - } op2, ok := other.(*LogicalAggregation) if !ok { return false } - if len(op.AggFuncs) != len(op2.AggFuncs) { + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if (op.AggFuncs == nil && op2.AggFuncs != nil) || (op.AggFuncs != nil && op2.AggFuncs == nil) || len(op.AggFuncs) != len(op2.AggFuncs) { return false } for i, one := range op.AggFuncs { @@ -179,7 +193,7 @@ func (op *LogicalAggregation) Equals(other any) bool { return false } } - if len(op.GroupByItems) != len(op2.GroupByItems) { + if (op.GroupByItems == nil && op2.GroupByItems != nil) || (op.GroupByItems != nil && op2.GroupByItems == nil) || len(op.GroupByItems) != len(op2.GroupByItems) { return false } for i, one := range op.GroupByItems { @@ -187,11 +201,11 @@ func (op *LogicalAggregation) Equals(other any) bool { return false } } - if len(op.PossibleProperties) != len(op2.PossibleProperties) { + if (op.PossibleProperties == nil && op2.PossibleProperties != nil) || (op.PossibleProperties != nil && op2.PossibleProperties == nil) || len(op.PossibleProperties) != len(op2.PossibleProperties) { return false } for i, one := range op.PossibleProperties { - if len(one) != len(op2.PossibleProperties[i]) { + if (one == nil && op2.PossibleProperties[i] != nil) || (one != nil && op2.PossibleProperties[i] == nil) || len(one) != len(op2.PossibleProperties[i]) { return false } for ii, onee := range one { @@ -221,17 +235,20 @@ func (op *LogicalApply) Hash64(h base.Hasher) { // Equals implements the Hash64Equals interface, only receive *LogicalApply pointer. func (op *LogicalApply) Equals(other any) bool { - if other == nil { - return false - } op2, ok := other.(*LogicalApply) if !ok { return false } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } if !op.LogicalJoin.Equals(&op2.LogicalJoin) { return false } - if len(op.CorCols) != len(op2.CorCols) { + if (op.CorCols == nil && op2.CorCols != nil) || (op.CorCols != nil && op2.CorCols == nil) || len(op.CorCols) != len(op2.CorCols) { return false } for i, one := range op.CorCols { @@ -248,6 +265,7 @@ func (op *LogicalApply) Equals(other any) bool { // Hash64 implements the Hash64Equals interface. func (op *LogicalExpand) Hash64(h base.Hasher) { h.HashString(plancodec.TypeExpand) + op.LogicalSchemaProducer.Hash64(h) if op.DistinctGroupByCol == nil { h.HashByte(base.NilFlag) } else { @@ -310,14 +328,20 @@ func (op *LogicalExpand) Hash64(h base.Hasher) { // Equals implements the Hash64Equals interface, only receive *LogicalExpand pointer. func (op *LogicalExpand) Equals(other any) bool { - if other == nil { - return false - } op2, ok := other.(*LogicalExpand) if !ok { return false } - if len(op.DistinctGroupByCol) != len(op2.DistinctGroupByCol) { + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if (op.DistinctGroupByCol == nil && op2.DistinctGroupByCol != nil) || (op.DistinctGroupByCol != nil && op2.DistinctGroupByCol == nil) || len(op.DistinctGroupByCol) != len(op2.DistinctGroupByCol) { return false } for i, one := range op.DistinctGroupByCol { @@ -325,7 +349,7 @@ func (op *LogicalExpand) Equals(other any) bool { return false } } - if len(op.DistinctGbyExprs) != len(op2.DistinctGbyExprs) { + if (op.DistinctGbyExprs == nil && op2.DistinctGbyExprs != nil) || (op.DistinctGbyExprs != nil && op2.DistinctGbyExprs == nil) || len(op.DistinctGbyExprs) != len(op2.DistinctGbyExprs) { return false } for i, one := range op.DistinctGbyExprs { @@ -336,15 +360,15 @@ func (op *LogicalExpand) Equals(other any) bool { if op.DistinctSize != op2.DistinctSize { return false } - if len(op.RollupGroupingSets) != len(op2.RollupGroupingSets) { + if (op.RollupGroupingSets == nil && op2.RollupGroupingSets != nil) || (op.RollupGroupingSets != nil && op2.RollupGroupingSets == nil) || len(op.RollupGroupingSets) != len(op2.RollupGroupingSets) { return false } for i, one := range op.RollupGroupingSets { - if len(one) != len(op2.RollupGroupingSets[i]) { + if (one == nil && op2.RollupGroupingSets[i] != nil) || (one != nil && op2.RollupGroupingSets[i] == nil) || len(one) != len(op2.RollupGroupingSets[i]) { return false } for ii, onee := range one { - if len(onee) != len(op2.RollupGroupingSets[i][ii]) { + if (onee == nil && op2.RollupGroupingSets[i][ii] != nil) || (onee != nil && op2.RollupGroupingSets[i][ii] == nil) || len(onee) != len(op2.RollupGroupingSets[i][ii]) { return false } for iii, oneee := range onee { @@ -354,11 +378,11 @@ func (op *LogicalExpand) Equals(other any) bool { } } } - if len(op.LevelExprs) != len(op2.LevelExprs) { + if (op.LevelExprs == nil && op2.LevelExprs != nil) || (op.LevelExprs != nil && op2.LevelExprs == nil) || len(op.LevelExprs) != len(op2.LevelExprs) { return false } for i, one := range op.LevelExprs { - if len(one) != len(op2.LevelExprs[i]) { + if (one == nil && op2.LevelExprs[i] != nil) || (one != nil && op2.LevelExprs[i] == nil) || len(one) != len(op2.LevelExprs[i]) { return false } for ii, onee := range one { @@ -375,3 +399,659 @@ func (op *LogicalExpand) Equals(other any) bool { } return true } + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalLimit) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeLimit) + op.LogicalSchemaProducer.Hash64(h) + if op.PartitionBy == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.PartitionBy)) + for _, one := range op.PartitionBy { + one.Hash64(h) + } + } + h.HashUint64(uint64(op.Offset)) + h.HashUint64(uint64(op.Count)) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalLimit pointer. +func (op *LogicalLimit) Equals(other any) bool { + op2, ok := other.(*LogicalLimit) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if (op.PartitionBy == nil && op2.PartitionBy != nil) || (op.PartitionBy != nil && op2.PartitionBy == nil) || len(op.PartitionBy) != len(op2.PartitionBy) { + return false + } + for i, one := range op.PartitionBy { + if !one.Equals(&op2.PartitionBy[i]) { + return false + } + } + if op.Offset != op2.Offset { + return false + } + if op.Count != op2.Count { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalMaxOneRow) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeMaxOneRow) + op.BaseLogicalPlan.Hash64(h) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalMaxOneRow pointer. +func (op *LogicalMaxOneRow) Equals(other any) bool { + op2, ok := other.(*LogicalMaxOneRow) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.BaseLogicalPlan.Equals(&op2.BaseLogicalPlan) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *DataSource) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeDataSource) + op.LogicalSchemaProducer.Hash64(h) + if op.TableInfo == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + op.TableInfo.Hash64(h) + } + if op.TableAsName == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + op.TableAsName.Hash64(h) + } + if op.PushedDownConds == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.PushedDownConds)) + for _, one := range op.PushedDownConds { + one.Hash64(h) + } + } + if op.AllConds == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.AllConds)) + for _, one := range op.AllConds { + one.Hash64(h) + } + } + h.HashInt64(int64(op.PreferStoreType)) + h.HashBool(op.IsForUpdateRead) +} + +// Equals implements the Hash64Equals interface, only receive *DataSource pointer. +func (op *DataSource) Equals(other any) bool { + op2, ok := other.(*DataSource) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if !op.TableInfo.Equals(op2.TableInfo) { + return false + } + if !op.TableAsName.Equals(op2.TableAsName) { + return false + } + if (op.PushedDownConds == nil && op2.PushedDownConds != nil) || (op.PushedDownConds != nil && op2.PushedDownConds == nil) || len(op.PushedDownConds) != len(op2.PushedDownConds) { + return false + } + for i, one := range op.PushedDownConds { + if !one.Equals(op2.PushedDownConds[i]) { + return false + } + } + if (op.AllConds == nil && op2.AllConds != nil) || (op.AllConds != nil && op2.AllConds == nil) || len(op.AllConds) != len(op2.AllConds) { + return false + } + for i, one := range op.AllConds { + if !one.Equals(op2.AllConds[i]) { + return false + } + } + if op.PreferStoreType != op2.PreferStoreType { + return false + } + if op.IsForUpdateRead != op2.IsForUpdateRead { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalMemTable) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeMemTableScan) + op.LogicalSchemaProducer.Hash64(h) + op.DBName.Hash64(h) + if op.TableInfo == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + op.TableInfo.Hash64(h) + } +} + +// Equals implements the Hash64Equals interface, only receive *LogicalMemTable pointer. +func (op *LogicalMemTable) Equals(other any) bool { + op2, ok := other.(*LogicalMemTable) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if !op.DBName.Equals(&op2.DBName) { + return false + } + if !op.TableInfo.Equals(op2.TableInfo) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalUnionAll) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeUnion) + op.LogicalSchemaProducer.Hash64(h) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalUnionAll pointer. +func (op *LogicalUnionAll) Equals(other any) bool { + op2, ok := other.(*LogicalUnionAll) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalPartitionUnionAll) Hash64(h base.Hasher) { + h.HashString(plancodec.TypePartitionUnion) + op.LogicalUnionAll.Hash64(h) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalPartitionUnionAll pointer. +func (op *LogicalPartitionUnionAll) Equals(other any) bool { + op2, ok := other.(*LogicalPartitionUnionAll) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalUnionAll.Equals(&op2.LogicalUnionAll) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalProjection) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeProj) + op.LogicalSchemaProducer.Hash64(h) + if op.Exprs == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.Exprs)) + for _, one := range op.Exprs { + one.Hash64(h) + } + } + h.HashBool(op.CalculateNoDelay) + h.HashBool(op.Proj4Expand) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalProjection pointer. +func (op *LogicalProjection) Equals(other any) bool { + op2, ok := other.(*LogicalProjection) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if (op.Exprs == nil && op2.Exprs != nil) || (op.Exprs != nil && op2.Exprs == nil) || len(op.Exprs) != len(op2.Exprs) { + return false + } + for i, one := range op.Exprs { + if !one.Equals(op2.Exprs[i]) { + return false + } + } + if op.CalculateNoDelay != op2.CalculateNoDelay { + return false + } + if op.Proj4Expand != op2.Proj4Expand { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalSelection) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeSel) + if op.Conditions == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.Conditions)) + for _, one := range op.Conditions { + one.Hash64(h) + } + } +} + +// Equals implements the Hash64Equals interface, only receive *LogicalSelection pointer. +func (op *LogicalSelection) Equals(other any) bool { + op2, ok := other.(*LogicalSelection) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if (op.Conditions == nil && op2.Conditions != nil) || (op.Conditions != nil && op2.Conditions == nil) || len(op.Conditions) != len(op2.Conditions) { + return false + } + for i, one := range op.Conditions { + if !one.Equals(op2.Conditions[i]) { + return false + } + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalSequence) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeSequence) + op.BaseLogicalPlan.Hash64(h) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalSequence pointer. +func (op *LogicalSequence) Equals(other any) bool { + op2, ok := other.(*LogicalSequence) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.BaseLogicalPlan.Equals(&op2.BaseLogicalPlan) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalShow) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeShow) + op.LogicalSchemaProducer.Hash64(h) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalShow pointer. +func (op *LogicalShow) Equals(other any) bool { + op2, ok := other.(*LogicalShow) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalShowDDLJobs) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeShowDDLJobs) + op.LogicalSchemaProducer.Hash64(h) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalShowDDLJobs pointer. +func (op *LogicalShowDDLJobs) Equals(other any) bool { + op2, ok := other.(*LogicalShowDDLJobs) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalSort) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeSort) + if op.ByItems == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.ByItems)) + for _, one := range op.ByItems { + one.Hash64(h) + } + } +} + +// Equals implements the Hash64Equals interface, only receive *LogicalSort pointer. +func (op *LogicalSort) Equals(other any) bool { + op2, ok := other.(*LogicalSort) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if (op.ByItems == nil && op2.ByItems != nil) || (op.ByItems != nil && op2.ByItems == nil) || len(op.ByItems) != len(op2.ByItems) { + return false + } + for i, one := range op.ByItems { + if !one.Equals(op2.ByItems[i]) { + return false + } + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalTableDual) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeDual) + op.LogicalSchemaProducer.Hash64(h) + h.HashInt64(int64(op.RowCount)) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalTableDual pointer. +func (op *LogicalTableDual) Equals(other any) bool { + op2, ok := other.(*LogicalTableDual) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if op.RowCount != op2.RowCount { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalTopN) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeTopN) + if op.ByItems == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.ByItems)) + for _, one := range op.ByItems { + one.Hash64(h) + } + } + if op.PartitionBy == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.PartitionBy)) + for _, one := range op.PartitionBy { + one.Hash64(h) + } + } + h.HashUint64(uint64(op.Offset)) + h.HashUint64(uint64(op.Count)) + h.HashBool(op.PreferLimitToCop) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalTopN pointer. +func (op *LogicalTopN) Equals(other any) bool { + op2, ok := other.(*LogicalTopN) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if (op.ByItems == nil && op2.ByItems != nil) || (op.ByItems != nil && op2.ByItems == nil) || len(op.ByItems) != len(op2.ByItems) { + return false + } + for i, one := range op.ByItems { + if !one.Equals(op2.ByItems[i]) { + return false + } + } + if (op.PartitionBy == nil && op2.PartitionBy != nil) || (op.PartitionBy != nil && op2.PartitionBy == nil) || len(op.PartitionBy) != len(op2.PartitionBy) { + return false + } + for i, one := range op.PartitionBy { + if !one.Equals(&op2.PartitionBy[i]) { + return false + } + } + if op.Offset != op2.Offset { + return false + } + if op.Count != op2.Count { + return false + } + if op.PreferLimitToCop != op2.PreferLimitToCop { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalUnionScan) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeUnionScan) + if op.Conditions == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.Conditions)) + for _, one := range op.Conditions { + one.Hash64(h) + } + } + op.HandleCols.Hash64(h) +} + +// Equals implements the Hash64Equals interface, only receive *LogicalUnionScan pointer. +func (op *LogicalUnionScan) Equals(other any) bool { + op2, ok := other.(*LogicalUnionScan) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if (op.Conditions == nil && op2.Conditions != nil) || (op.Conditions != nil && op2.Conditions == nil) || len(op.Conditions) != len(op2.Conditions) { + return false + } + for i, one := range op.Conditions { + if !one.Equals(op2.Conditions[i]) { + return false + } + } + if !op.HandleCols.Equals(op2.HandleCols) { + return false + } + return true +} + +// Hash64 implements the Hash64Equals interface. +func (op *LogicalWindow) Hash64(h base.Hasher) { + h.HashString(plancodec.TypeWindow) + op.LogicalSchemaProducer.Hash64(h) + if op.WindowFuncDescs == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.WindowFuncDescs)) + for _, one := range op.WindowFuncDescs { + one.Hash64(h) + } + } + if op.PartitionBy == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.PartitionBy)) + for _, one := range op.PartitionBy { + one.Hash64(h) + } + } + if op.OrderBy == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + h.HashInt(len(op.OrderBy)) + for _, one := range op.OrderBy { + one.Hash64(h) + } + } + if op.Frame == nil { + h.HashByte(base.NilFlag) + } else { + h.HashByte(base.NotNilFlag) + op.Frame.Hash64(h) + } +} + +// Equals implements the Hash64Equals interface, only receive *LogicalWindow pointer. +func (op *LogicalWindow) Equals(other any) bool { + op2, ok := other.(*LogicalWindow) + if !ok { + return false + } + if op == nil { + return op2 == nil + } + if op2 == nil { + return false + } + if !op.LogicalSchemaProducer.Equals(&op2.LogicalSchemaProducer) { + return false + } + if (op.WindowFuncDescs == nil && op2.WindowFuncDescs != nil) || (op.WindowFuncDescs != nil && op2.WindowFuncDescs == nil) || len(op.WindowFuncDescs) != len(op2.WindowFuncDescs) { + return false + } + for i, one := range op.WindowFuncDescs { + if !one.Equals(op2.WindowFuncDescs[i]) { + return false + } + } + if (op.PartitionBy == nil && op2.PartitionBy != nil) || (op.PartitionBy != nil && op2.PartitionBy == nil) || len(op.PartitionBy) != len(op2.PartitionBy) { + return false + } + for i, one := range op.PartitionBy { + if !one.Equals(&op2.PartitionBy[i]) { + return false + } + } + if (op.OrderBy == nil && op2.OrderBy != nil) || (op.OrderBy != nil && op2.OrderBy == nil) || len(op.OrderBy) != len(op2.OrderBy) { + return false + } + for i, one := range op.OrderBy { + if !one.Equals(&op2.OrderBy[i]) { + return false + } + } + if !op.Frame.Equals(op2.Frame) { + return false + } + return true +} diff --git a/pkg/planner/core/operator/logicalop/logical_aggregation.go b/pkg/planner/core/operator/logicalop/logical_aggregation.go index d9ce1978a6c06..268c5c4bb04c5 100644 --- a/pkg/planner/core/operator/logicalop/logical_aggregation.go +++ b/pkg/planner/core/operator/logicalop/logical_aggregation.go @@ -38,7 +38,7 @@ import ( // LogicalAggregation represents an aggregate plan. type LogicalAggregation struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` AggFuncs []*aggregation.AggFuncDesc `hash64-equals:"true"` GroupByItems []expression.Expression `hash64-equals:"true"` @@ -688,7 +688,7 @@ func (la *LogicalAggregation) BuildSelfKeyInfo(selfSchema *expression.Schema) { for _, i := range indices { newKey = append(newKey, selfSchema.Columns[i]) } - selfSchema.Keys = append(selfSchema.Keys, newKey) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, newKey) } } if len(la.GroupByItems) == 0 { @@ -703,7 +703,10 @@ func (la *LogicalAggregation) CanPullUp() bool { } for _, f := range la.AggFuncs { for _, arg := range f.Args { - expr := expression.EvaluateExprWithNull(la.SCtx().GetExprCtx(), la.Children()[0].Schema(), arg) + expr, err := expression.EvaluateExprWithNull(la.SCtx().GetExprCtx(), la.Children()[0].Schema(), arg) + if err != nil { + return false + } if con, ok := expr.(*expression.Constant); !ok || !con.Value.IsNull() { return false } diff --git a/pkg/planner/core/operator/logicalop/logical_apply.go b/pkg/planner/core/operator/logicalop/logical_apply.go index b0bdab1099207..1eebc550b2d88 100644 --- a/pkg/planner/core/operator/logicalop/logical_apply.go +++ b/pkg/planner/core/operator/logicalop/logical_apply.go @@ -246,7 +246,7 @@ func (la *LogicalApply) CanPullUpAgg() bool { if len(la.EqualConditions)+len(la.LeftConditions)+len(la.RightConditions)+len(la.OtherConditions) > 0 { return false } - return len(la.Children()[0].Schema().Keys) > 0 + return len(la.Children()[0].Schema().PKOrUK) > 0 } // DeCorColFromEqExpr checks whether it's an equal condition of form `col = correlated col`. If so we will change the decorrelated diff --git a/pkg/planner/core/operator/logicalop/logical_datasource.go b/pkg/planner/core/operator/logicalop/logical_datasource.go index e921b31b223d1..8a3cb48ac22fd 100644 --- a/pkg/planner/core/operator/logicalop/logical_datasource.go +++ b/pkg/planner/core/operator/logicalop/logical_datasource.go @@ -26,7 +26,6 @@ import ( "github.com/pingcap/tidb/pkg/parser/ast" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" - base2 "github.com/pingcap/tidb/pkg/planner/cascades/base" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/constraint" ruleutil "github.com/pingcap/tidb/pkg/planner/core/rule/util" @@ -48,23 +47,23 @@ import ( // DataSource represents a tableScan without condition push down. type DataSource struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` AstIndexHints []*ast.IndexHint IndexHints []h.HintedIndex Table table.Table - TableInfo *model.TableInfo + TableInfo *model.TableInfo `hash64-equals:"true"` Columns []*model.ColumnInfo DBName pmodel.CIStr - TableAsName *pmodel.CIStr + TableAsName *pmodel.CIStr `hash64-equals:"true"` // IndexMergeHints are the hint for indexmerge. IndexMergeHints []h.HintedIndex // PushedDownConds are the conditions that will be pushed down to coprocessor. - PushedDownConds []expression.Expression + PushedDownConds []expression.Expression `hash64-equals:"true"` // AllConds contains all the filters on this table. For now it's maintained // in predicate push down and used in partition pruning/index merge. - AllConds []expression.Expression + AllConds []expression.Expression `hash64-equals:"true"` StatisticTable *statistics.Table TableStats *property.StatsInfo @@ -92,7 +91,7 @@ type DataSource struct { // it is converted from StatisticTable, and used for IO/network cost estimating. TblColHists *statistics.HistColl // PreferStoreType means the DataSource is enforced to which storage. - PreferStoreType int + PreferStoreType int `hash64-equals:"true"` // PreferPartitions store the map, the key represents store type, the value represents the partition name list. PreferPartitions map[int][]pmodel.CIStr SampleInfo *tablesampler.TableSampleInfo @@ -100,7 +99,7 @@ type DataSource struct { // IsForUpdateRead should be true in either of the following situations // 1. use `inside insert`, `update`, `delete` or `select for update` statement // 2. isolation level is RC - IsForUpdateRead bool + IsForUpdateRead bool `hash64-equals:"true"` // contain unique index and the first field is tidb_shard(), // such as (tidb_shard(a), a ...), the fields are more than 2 @@ -122,74 +121,6 @@ func (ds DataSource) Init(ctx base.PlanContext, offset int) *DataSource { return &ds } -// ************************ start implementation of HashEquals interface ************************ - -// Hash64 implements base.HashEquals interface. -func (ds *DataSource) Hash64(h base2.Hasher) { - // hash the key elements to identify this datasource. - h.HashString(plancodec.TypeDataSource) - // table related. - if ds.TableInfo == nil { - h.HashByte(base2.NilFlag) - } else { - h.HashByte(base2.NotNilFlag) - h.HashInt64(ds.TableInfo.ID) - } - // table alias related. - if ds.TableAsName == nil { - h.HashByte(base2.NilFlag) - } else { - h.HashByte(base2.NotNilFlag) - h.HashInt(len(ds.TableAsName.L)) - h.HashString(ds.TableAsName.L) - } - // visible columns related. - h.HashInt(len(ds.Columns)) - for _, oneCol := range ds.Columns { - h.HashInt64(oneCol.ID) - } - // conditions related. - h.HashInt(len(ds.PushedDownConds)) - for _, oneCond := range ds.PushedDownConds { - oneCond.Hash64(h) - } - h.HashInt(len(ds.AllConds)) - for _, oneCond := range ds.AllConds { - oneCond.Hash64(h) - } - // hint and update misc. - h.HashInt(ds.PreferStoreType) - h.HashBool(ds.IsForUpdateRead) -} - -// Equals implements base.HashEquals interface. -func (ds *DataSource) Equals(other any) bool { - if other == nil { - return false - } - var ds2 *DataSource - switch x := other.(type) { - case *DataSource: - ds2 = x - case DataSource: - ds2 = &x - default: - return false - } - ok := ds.TableInfo.ID == ds2.TableInfo.ID && ds.TableAsName.L == ds2.TableAsName.L && len(ds.PushedDownConds) == len(ds2.PushedDownConds) && - len(ds.AllConds) == len(ds2.AllConds) && ds.PreferStoreType == ds2.PreferStoreType && ds.IsForUpdateRead == ds2.IsForUpdateRead - if !ok { - return false - } - for i, oneCond := range ds.PushedDownConds { - oneCond.Equals(ds2.PushedDownConds[i]) - } - for i, oneCond := range ds.AllConds { - oneCond.Equals(ds2.AllConds[i]) - } - return true -} - // *************************** start implementation of Plan interface *************************** // ExplainInfo implements Plan interface. @@ -303,7 +234,7 @@ func (ds *DataSource) FindBestTask(prop *property.PhysicalProperty, planCounter // BuildKeyInfo implements base.LogicalPlan.<4th> interface. func (ds *DataSource) BuildKeyInfo(selfSchema *expression.Schema, _ []*expression.Schema) { - selfSchema.Keys = nil + selfSchema.PKOrUK = nil var latestIndexes map[int64]*model.IndexInfo var changed bool var err error @@ -326,15 +257,15 @@ func (ds *DataSource) BuildKeyInfo(selfSchema *expression.Schema, _ []*expressio continue } if uniqueKey, newKey := ruleutil.CheckIndexCanBeKey(index, ds.Columns, selfSchema); newKey != nil { - selfSchema.Keys = append(selfSchema.Keys, newKey) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, newKey) } else if uniqueKey != nil { - selfSchema.UniqueKeys = append(selfSchema.UniqueKeys, uniqueKey) + selfSchema.NullableUK = append(selfSchema.NullableUK, uniqueKey) } } if ds.TableInfo.PKIsHandle { for i, col := range ds.Columns { if mysql.HasPriKeyFlag(col.GetFlag()) { - selfSchema.Keys = append(selfSchema.Keys, []*expression.Column{selfSchema.Columns[i]}) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, []*expression.Column{selfSchema.Columns[i]}) break } } diff --git a/pkg/planner/core/operator/logicalop/logical_expand.go b/pkg/planner/core/operator/logicalop/logical_expand.go index 5760637b8a269..98da82ce0c5b9 100644 --- a/pkg/planner/core/operator/logicalop/logical_expand.go +++ b/pkg/planner/core/operator/logicalop/logical_expand.go @@ -33,7 +33,7 @@ import ( // LogicalExpand represents a logical Expand OP serves for data replication requirement. type LogicalExpand struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` // distinct group by columns. (maybe projected below if it's a non-col) DistinctGroupByCol []*expression.Column `hash64-equals:"true"` diff --git a/pkg/planner/core/operator/logicalop/logical_index_scan.go b/pkg/planner/core/operator/logicalop/logical_index_scan.go index 73c76c92b6ef3..395855fd67b87 100644 --- a/pkg/planner/core/operator/logicalop/logical_index_scan.go +++ b/pkg/planner/core/operator/logicalop/logical_index_scan.go @@ -93,20 +93,20 @@ func (is *LogicalIndexScan) ExplainInfo() string { // BuildKeyInfo implements base.LogicalPlan.<4th> interface. func (is *LogicalIndexScan) BuildKeyInfo(selfSchema *expression.Schema, _ []*expression.Schema) { - selfSchema.Keys = nil + selfSchema.PKOrUK = nil for _, path := range is.Source.PossibleAccessPaths { if path.IsTablePath() { continue } if uniqueKey, newKey := ruleutil.CheckIndexCanBeKey(path.Index, is.Columns, selfSchema); newKey != nil { - selfSchema.Keys = append(selfSchema.Keys, newKey) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, newKey) } else if uniqueKey != nil { - selfSchema.UniqueKeys = append(selfSchema.UniqueKeys, uniqueKey) + selfSchema.NullableUK = append(selfSchema.NullableUK, uniqueKey) } } handle := is.GetPKIsHandleCol(selfSchema) if handle != nil { - selfSchema.Keys = append(selfSchema.Keys, []*expression.Column{handle}) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, []*expression.Column{handle}) } } diff --git a/pkg/planner/core/operator/logicalop/logical_join.go b/pkg/planner/core/operator/logicalop/logical_join.go index d33acc85f0ce3..af30250932c57 100644 --- a/pkg/planner/core/operator/logicalop/logical_join.go +++ b/pkg/planner/core/operator/logicalop/logical_join.go @@ -71,6 +71,11 @@ func (tp JoinType) IsSemiJoin() bool { tp == LeftOuterSemiJoin || tp == AntiLeftOuterSemiJoin } +// IsInnerJoin returns if this joiner is a inner joiner +func (tp JoinType) IsInnerJoin() bool { + return tp == InnerJoin +} + func (tp JoinType) String() string { switch tp { case InnerJoin: @@ -93,7 +98,7 @@ func (tp JoinType) String() string { // LogicalJoin is the logical join plan. type LogicalJoin struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` JoinType JoinType `hash64-equals:"true"` Reordered bool @@ -322,7 +327,7 @@ func (p *LogicalJoin) BuildKeyInfo(selfSchema *expression.Schema, childSchema [] p.LogicalSchemaProducer.BuildKeyInfo(selfSchema, childSchema) switch p.JoinType { case SemiJoin, LeftOuterSemiJoin, AntiSemiJoin, AntiLeftOuterSemiJoin: - selfSchema.Keys = childSchema[0].Clone().Keys + selfSchema.PKOrUK = childSchema[0].Clone().PKOrUK case InnerJoin, LeftOuterJoin, RightOuterJoin: // If there is no equal conditions, then cartesian product can't be prevented and unique key information will destroy. if len(p.EqualConditions) == 0 { @@ -338,13 +343,13 @@ func (p *LogicalJoin) BuildKeyInfo(selfSchema *expression.Schema, childSchema [] for _, expr := range p.EqualConditions { ln := expr.GetArgs()[0].(*expression.Column) rn := expr.GetArgs()[1].(*expression.Column) - for _, key := range childSchema[0].Keys { + for _, key := range childSchema[0].PKOrUK { if len(key) == 1 && key[0].Equal(evalCtx, ln) { lOk = true break } } - for _, key := range childSchema[1].Keys { + for _, key := range childSchema[1].PKOrUK { if len(key) == 1 && key[0].Equal(evalCtx, rn) { rOk = true break @@ -355,10 +360,10 @@ func (p *LogicalJoin) BuildKeyInfo(selfSchema *expression.Schema, childSchema [] // another side's unique key information will all be reserved. // If it's an outer join, NULL value will fill some position, which will destroy the unique key information. if lOk && p.JoinType != LeftOuterJoin { - selfSchema.Keys = append(selfSchema.Keys, childSchema[1].Keys...) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, childSchema[1].PKOrUK...) } if rOk && p.JoinType != RightOuterJoin { - selfSchema.Keys = append(selfSchema.Keys, childSchema[0].Keys...) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, childSchema[0].PKOrUK...) } } } @@ -369,12 +374,13 @@ func (p *LogicalJoin) PushDownTopN(topNLogicalPlan base.LogicalPlan, opt *optimi if topNLogicalPlan != nil { topN = topNLogicalPlan.(*LogicalTopN) } + topnEliminated := false switch p.JoinType { case LeftOuterJoin, LeftOuterSemiJoin, AntiLeftOuterSemiJoin: - p.Children()[0] = p.pushDownTopNToChild(topN, 0, opt) + p.Children()[0], topnEliminated = p.pushDownTopNToChild(topN, 0, opt) p.Children()[1] = p.Children()[1].PushDownTopN(nil, opt) case RightOuterJoin: - p.Children()[1] = p.pushDownTopNToChild(topN, 1, opt) + p.Children()[1], topnEliminated = p.pushDownTopNToChild(topN, 1, opt) p.Children()[0] = p.Children()[0].PushDownTopN(nil, opt) default: return p.BaseLogicalPlan.PushDownTopN(topN, opt) @@ -382,6 +388,11 @@ func (p *LogicalJoin) PushDownTopN(topNLogicalPlan base.LogicalPlan, opt *optimi // The LogicalJoin may be also a LogicalApply. So we must use self to set parents. if topN != nil { + if topnEliminated && len(topN.ByItems) > 0 { + sort := LogicalSort{ByItems: topN.ByItems}.Init(p.SCtx(), p.QueryBlockOffset()) + sort.SetChildren(p.Self()) + return sort + } return topN.AttachChild(p.Self(), opt) } return p.Self() @@ -1078,22 +1089,61 @@ func (p *LogicalJoin) MergeSchema() { } // pushDownTopNToChild will push a topN to one child of join. The idx stands for join child index. 0 is for left child. -func (p *LogicalJoin) pushDownTopNToChild(topN *LogicalTopN, idx int, opt *optimizetrace.LogicalOptimizeOp) base.LogicalPlan { +// When it's outer join and there's unique key information. The TopN can be totally pushed down to the join. +// We just need reserve the ORDER informaion +func (p *LogicalJoin) pushDownTopNToChild(topN *LogicalTopN, idx int, opt *optimizetrace.LogicalOptimizeOp) (base.LogicalPlan, bool) { if topN == nil { - return p.Children()[idx].PushDownTopN(nil, opt) + return p.Children()[idx].PushDownTopN(nil, opt), false } for _, by := range topN.ByItems { cols := expression.ExtractColumns(by.Expr) for _, col := range cols { if !p.Children()[idx].Schema().Contains(col) { - return p.Children()[idx].PushDownTopN(nil, opt) + return p.Children()[idx].PushDownTopN(nil, opt), false + } + } + } + count, offset := topN.Count+topN.Offset, uint64(0) + selfEliminated := false + if p.JoinType == LeftOuterJoin { + innerChild := p.Children()[1] + innerJoinKey := make([]*expression.Column, 0, len(p.EqualConditions)) + isNullEQ := false + for _, eqCond := range p.EqualConditions { + innerJoinKey = append(innerJoinKey, eqCond.GetArgs()[1].(*expression.Column)) + if eqCond.FuncName.L == ast.NullEQ { + isNullEQ = true + } + } + // If it's unique key(unique with not null), we can push the offset down safely whatever the join key is normal eq or nulleq. + // If the join key is nulleq, then we can only push the offset down when the inner side is unique key. + // Only when the join key is normal eq, we can push the offset down when the inner side is unique(could be null). + if innerChild.Schema().IsUnique(true, innerJoinKey...) || + (!isNullEQ && innerChild.Schema().IsUnique(false, innerJoinKey...)) { + count, offset = topN.Count, topN.Offset + selfEliminated = true + } + } else if p.JoinType == RightOuterJoin { + innerChild := p.Children()[0] + innerJoinKey := make([]*expression.Column, 0, len(p.EqualConditions)) + isNullEQ := false + for _, eqCond := range p.EqualConditions { + innerJoinKey = append(innerJoinKey, eqCond.GetArgs()[0].(*expression.Column)) + if eqCond.FuncName.L == ast.NullEQ { + isNullEQ = true } } + if innerChild.Schema().IsUnique(true, innerJoinKey...) || + (!isNullEQ && innerChild.Schema().IsUnique(false, innerJoinKey...)) { + count, offset = topN.Count, topN.Offset + selfEliminated = true + } } newTopN := LogicalTopN{ - Count: topN.Count + topN.Offset, + Count: count, + Offset: offset, ByItems: make([]*util.ByItems, len(topN.ByItems)), PreferLimitToCop: topN.PreferLimitToCop, }.Init(topN.SCtx(), topN.QueryBlockOffset()) @@ -1101,7 +1151,7 @@ func (p *LogicalJoin) pushDownTopNToChild(topN *LogicalTopN, idx int, opt *optim newTopN.ByItems[i] = topN.ByItems[i].Clone() } appendTopNPushDownJoinTraceStep(p, newTopN, idx, opt) - return p.Children()[idx].PushDownTopN(newTopN, opt) + return p.Children()[idx].PushDownTopN(newTopN, opt), selfEliminated } // Add a new selection between parent plan and current plan with candidate predicates diff --git a/pkg/planner/core/operator/logicalop/logical_limit.go b/pkg/planner/core/operator/logicalop/logical_limit.go index 685f93cc6dc0c..f2a56a63fc9e3 100644 --- a/pkg/planner/core/operator/logicalop/logical_limit.go +++ b/pkg/planner/core/operator/logicalop/logical_limit.go @@ -20,7 +20,6 @@ import ( "fmt" "github.com/pingcap/tidb/pkg/expression" - base2 "github.com/pingcap/tidb/pkg/planner/cascades/base" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/planner/util" @@ -31,11 +30,11 @@ import ( // LogicalLimit represents offset and limit plan. type LogicalLimit struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` - PartitionBy []property.SortItem // This is used for enhanced topN optimization - Offset uint64 - Count uint64 + PartitionBy []property.SortItem `hash64-equals:"true"` // This is used for enhanced topN optimization + Offset uint64 `hash64-equals:"true"` + Count uint64 `hash64-equals:"true"` PreferLimitToCop bool IsPartial bool } @@ -46,45 +45,6 @@ func (p LogicalLimit) Init(ctx base.PlanContext, offset int) *LogicalLimit { return &p } -// ************************ start implementation of HashEquals interface ************************ - -// Hash64 returns the hash code for the operator. -func (p *LogicalLimit) Hash64(h base2.Hasher) { - h.HashString(plancodec.TypeLimit) - h.HashInt(len(p.PartitionBy)) - for _, one := range p.PartitionBy { - one.Hash64(h) - } - h.HashUint64(p.Offset) - h.HashUint64(p.Count) -} - -// Equals checks whether the operator is equal to another operator. -func (p *LogicalLimit) Equals(other any) bool { - if other == nil { - return false - } - var p2 *LogicalLimit - switch x := other.(type) { - case *LogicalLimit: - p2 = x - case LogicalLimit: - p2 = &x - default: - return false - } - ok := len(p.PartitionBy) == len(p2.PartitionBy) && p.Offset == p2.Offset && p.Count == p2.Count - if !ok { - return false - } - for i, one := range p.PartitionBy { - if !one.Equals(p2.PartitionBy[i]) { - return false - } - } - return true -} - // *************************** start implementation of Plan interface *************************** // ExplainInfo implements Plan interface. diff --git a/pkg/planner/core/operator/logicalop/logical_max_one_row.go b/pkg/planner/core/operator/logicalop/logical_max_one_row.go index 200a8ac51750d..686d461da0364 100644 --- a/pkg/planner/core/operator/logicalop/logical_max_one_row.go +++ b/pkg/planner/core/operator/logicalop/logical_max_one_row.go @@ -26,7 +26,8 @@ import ( // LogicalMaxOneRow checks if a query returns no more than one row. type LogicalMaxOneRow struct { - BaseLogicalPlan + // logical max one row, doesn't have any other attribute to distinguish, use plan id inside. + BaseLogicalPlan `hash64-equals:"true"` } // Init initializes LogicalMaxOneRow. diff --git a/pkg/planner/core/operator/logicalop/logical_mem_table.go b/pkg/planner/core/operator/logicalop/logical_mem_table.go index 0648b114a0b4c..d792bcc43ac98 100644 --- a/pkg/planner/core/operator/logicalop/logical_mem_table.go +++ b/pkg/planner/core/operator/logicalop/logical_mem_table.go @@ -40,11 +40,11 @@ import ( // requesting all cluster components log search gRPC interface to retrieve // log message and filtering them in TiDB node. type LogicalMemTable struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` Extractor base.MemTablePredicateExtractor - DBName pmodel.CIStr - TableInfo *model.TableInfo + DBName pmodel.CIStr `hash64-equals:"true"` + TableInfo *model.TableInfo `hash64-equals:"true"` Columns []*model.ColumnInfo // QueryTimeRange is used to specify the time range for metrics summary tables and inspection tables // e.g: select /*+ time_range('2020-02-02 12:10:00', '2020-02-02 13:00:00') */ from metrics_summary; @@ -80,9 +80,11 @@ func (p *LogicalMemTable) PruneColumns(parentUsedCols []*expression.Column, opt switch p.TableInfo.Name.O { case infoschema.TableStatementsSummary, infoschema.TableStatementsSummaryHistory, + infoschema.TableTiDBStatementsStats, infoschema.TableSlowQuery, infoschema.ClusterTableStatementsSummary, infoschema.ClusterTableStatementsSummaryHistory, + infoschema.ClusterTableTiDBStatementsStats, infoschema.ClusterTableSlowLog, infoschema.TableTiDBTrx, infoschema.ClusterTableTiDBTrx, diff --git a/pkg/planner/core/operator/logicalop/logical_partition_union_all.go b/pkg/planner/core/operator/logicalop/logical_partition_union_all.go index 095abee2bd5b3..1bf0b1b52d860 100644 --- a/pkg/planner/core/operator/logicalop/logical_partition_union_all.go +++ b/pkg/planner/core/operator/logicalop/logical_partition_union_all.go @@ -23,7 +23,7 @@ import ( // LogicalPartitionUnionAll represents the LogicalUnionAll plan is for partition table. type LogicalPartitionUnionAll struct { - LogicalUnionAll + LogicalUnionAll `hash64-equals:"true"` } // Init initializes LogicalPartitionUnionAll. diff --git a/pkg/planner/core/operator/logicalop/logical_projection.go b/pkg/planner/core/operator/logicalop/logical_projection.go index 15bc95a0f9448..05d32cf69fe57 100644 --- a/pkg/planner/core/operator/logicalop/logical_projection.go +++ b/pkg/planner/core/operator/logicalop/logical_projection.go @@ -20,7 +20,6 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/planner/cardinality" - base2 "github.com/pingcap/tidb/pkg/planner/cascades/base" "github.com/pingcap/tidb/pkg/planner/core/base" ruleutil "github.com/pingcap/tidb/pkg/planner/core/rule/util" fd "github.com/pingcap/tidb/pkg/planner/funcdep" @@ -35,19 +34,19 @@ import ( // LogicalProjection represents a select fields plan. type LogicalProjection struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` - Exprs []expression.Expression + Exprs []expression.Expression `hash64-equals:"true"` // CalculateNoDelay indicates this Projection is the root Plan and should be // calculated without delay and will not return any result to client. // Currently it is "true" only when the current sql query is a "DO" statement. // See "https://dev.mysql.com/doc/refman/5.7/en/do.html" for more detail. - CalculateNoDelay bool + CalculateNoDelay bool `hash64-equals:"true"` // Proj4Expand is used for expand to project same column reference, while these // col may be filled with null so we couldn't just eliminate this projection itself. - Proj4Expand bool + Proj4Expand bool `hash64-equals:"true"` } // Init initializes LogicalProjection. @@ -56,43 +55,6 @@ func (p LogicalProjection) Init(ctx base.PlanContext, qbOffset int) *LogicalProj return &p } -// *************************** start implementation of HashEquals interface **************************** - -// Hash64 implements the base.Hash64.<0th> interface. -func (p *LogicalProjection) Hash64(h base2.Hasher) { - h.HashInt(len(p.Exprs)) - for _, one := range p.Exprs { - one.Hash64(h) - } - h.HashBool(p.CalculateNoDelay) - h.HashBool(p.Proj4Expand) -} - -// Equals implements the base.HashEquals.<1st> interface. -func (p *LogicalProjection) Equals(other any) bool { - if other == nil { - return false - } - var p2 *LogicalProjection - switch x := other.(type) { - case *LogicalProjection: - p2 = x - case LogicalProjection: - p2 = &x - default: - return false - } - if len(p.Exprs) != len(p2.Exprs) { - return false - } - for i, one := range p.Exprs { - if !one.Equals(p2.Exprs[i]) { - return false - } - } - return p.CalculateNoDelay == p2.CalculateNoDelay && p.Proj4Expand == p2.Proj4Expand -} - // *************************** start implementation of Plan interface ********************************** // ExplainInfo implements Plan interface. @@ -209,9 +171,9 @@ func (p *LogicalProjection) BuildKeyInfo(selfSchema *expression.Schema, childSch // `LogicalProjection` use schema from `Exprs` to build key info. See `buildSchemaByExprs`. // So call `baseLogicalPlan.BuildKeyInfo` here to avoid duplicated building key info. p.BaseLogicalPlan.BuildKeyInfo(selfSchema, childSchema) - selfSchema.Keys = nil + selfSchema.PKOrUK = nil schema := p.buildSchemaByExprs(selfSchema) - for _, key := range childSchema[0].Keys { + for _, key := range childSchema[0].PKOrUK { indices := schema.ColumnsIndices(key) if indices == nil { continue @@ -220,7 +182,7 @@ func (p *LogicalProjection) BuildKeyInfo(selfSchema *expression.Schema, childSch for _, i := range indices { newKey = append(newKey, selfSchema.Columns[i]) } - selfSchema.Keys = append(selfSchema.Keys, newKey) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, newKey) } } diff --git a/pkg/planner/core/operator/logicalop/logical_schema_producer.go b/pkg/planner/core/operator/logicalop/logical_schema_producer.go index 980a6a5acf50a..0ecadf432df28 100644 --- a/pkg/planner/core/operator/logicalop/logical_schema_producer.go +++ b/pkg/planner/core/operator/logicalop/logical_schema_producer.go @@ -18,11 +18,14 @@ import ( "math" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/planner/cascades/base" "github.com/pingcap/tidb/pkg/planner/util/optimizetrace" "github.com/pingcap/tidb/pkg/planner/util/optimizetrace/logicaltrace" "github.com/pingcap/tidb/pkg/types" ) +var _ base.HashEquals = &LogicalSchemaProducer{} + // LogicalSchemaProducer stores the schema for the logical plans who can produce schema directly. type LogicalSchemaProducer struct { schema *expression.Schema @@ -30,6 +33,50 @@ type LogicalSchemaProducer struct { BaseLogicalPlan } +// Hash64 implements HashEquals interface. +func (s *LogicalSchemaProducer) Hash64(h base.Hasher) { + // output columns should affect the logical operator's hash. + // since tidb doesn't maintain the names strictly, we should + // only use the schema unique id to distinguish them. + if s.schema != nil { + h.HashByte(base.NotNilFlag) + for _, col := range s.schema.Columns { + col.Hash64(h) + } + } else { + h.HashByte(base.NilFlag) + } +} + +// Equals implement HashEquals interface. +func (s *LogicalSchemaProducer) Equals(other any) bool { + s2, ok := other.(*LogicalSchemaProducer) + if !ok { + return false + } + if s == nil { + return s2 == nil + } + if s2 == nil { + return false + } + if s.schema == nil { + return s2.schema == nil + } + if s2.schema == nil { + return false + } + if s.schema.Len() != s2.schema.Len() { + return false + } + for i, col := range s.schema.Columns { + if !col.Equals(s2.schema.Columns[i]) { + return false + } + } + return true +} + // Schema implements the Plan.Schema interface. func (s *LogicalSchemaProducer) Schema() *expression.Schema { if s.schema == nil { @@ -101,13 +148,13 @@ func (s *LogicalSchemaProducer) InlineProjection(parentUsedCols []*expression.Co // BuildKeyInfo implements LogicalPlan.BuildKeyInfo interface. func (s *LogicalSchemaProducer) BuildKeyInfo(selfSchema *expression.Schema, childSchema []*expression.Schema) { - selfSchema.Keys = nil + selfSchema.PKOrUK = nil s.BaseLogicalPlan.BuildKeyInfo(selfSchema, childSchema) // default implementation for plans has only one child: proprgate child keys // multi-children plans are likely to have particular implementation. if len(childSchema) == 1 { - for _, key := range childSchema[0].Keys { + for _, key := range childSchema[0].PKOrUK { indices := selfSchema.ColumnsIndices(key) if indices == nil { continue @@ -116,7 +163,7 @@ func (s *LogicalSchemaProducer) BuildKeyInfo(selfSchema *expression.Schema, chil for _, i := range indices { newKey = append(newKey, selfSchema.Columns[i]) } - selfSchema.Keys = append(selfSchema.Keys, newKey) + selfSchema.PKOrUK = append(selfSchema.PKOrUK, newKey) } } } diff --git a/pkg/planner/core/operator/logicalop/logical_selection.go b/pkg/planner/core/operator/logicalop/logical_selection.go index 304ea704508f7..426ff36590933 100644 --- a/pkg/planner/core/operator/logicalop/logical_selection.go +++ b/pkg/planner/core/operator/logicalop/logical_selection.go @@ -43,7 +43,7 @@ type LogicalSelection struct { // Originally the WHERE or ON condition is parsed into a single expression, // but after we converted to CNF(Conjunctive normal form), it can be // split into a list of AND conditions. - Conditions []expression.Expression + Conditions []expression.Expression `hash64-equals:"true"` } // Init initializes LogicalSelection. diff --git a/pkg/planner/core/operator/logicalop/logical_sequence.go b/pkg/planner/core/operator/logicalop/logical_sequence.go index 4ea69496b95cb..9effb8712ee17 100644 --- a/pkg/planner/core/operator/logicalop/logical_sequence.go +++ b/pkg/planner/core/operator/logicalop/logical_sequence.go @@ -34,7 +34,8 @@ import ( // // We use this property to do complex optimizations for CTEs. type LogicalSequence struct { - BaseLogicalPlan + // logical sequence doesn't have any other attribute to distinguish, use plan id inside. + BaseLogicalPlan `hash64-equals:"true"` } // Init initializes LogicalSequence diff --git a/pkg/planner/core/operator/logicalop/logical_show.go b/pkg/planner/core/operator/logicalop/logical_show.go index bf400ee91ab03..2f6eac4d36e50 100644 --- a/pkg/planner/core/operator/logicalop/logical_show.go +++ b/pkg/planner/core/operator/logicalop/logical_show.go @@ -32,7 +32,7 @@ import ( // LogicalShow represents a show plan. type LogicalShow struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` ShowContents Extractor base.ShowPredicateExtractor diff --git a/pkg/planner/core/operator/logicalop/logical_show_ddl_jobs.go b/pkg/planner/core/operator/logicalop/logical_show_ddl_jobs.go index c4eea62fa5ceb..5ca302da4ea55 100644 --- a/pkg/planner/core/operator/logicalop/logical_show_ddl_jobs.go +++ b/pkg/planner/core/operator/logicalop/logical_show_ddl_jobs.go @@ -25,7 +25,7 @@ import ( // LogicalShowDDLJobs is for showing DDL job list. type LogicalShowDDLJobs struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` JobNumber int64 } diff --git a/pkg/planner/core/operator/logicalop/logical_sort.go b/pkg/planner/core/operator/logicalop/logical_sort.go index c3b4cd3ed3683..4028a2128cc57 100644 --- a/pkg/planner/core/operator/logicalop/logical_sort.go +++ b/pkg/planner/core/operator/logicalop/logical_sort.go @@ -33,7 +33,7 @@ import ( type LogicalSort struct { BaseLogicalPlan - ByItems []*util.ByItems + ByItems []*util.ByItems `hash64-equals:"true"` } // Init initializes LogicalSort. diff --git a/pkg/planner/core/operator/logicalop/logical_table_dual.go b/pkg/planner/core/operator/logicalop/logical_table_dual.go index fa05796f91b45..2fa5bb3da5285 100644 --- a/pkg/planner/core/operator/logicalop/logical_table_dual.go +++ b/pkg/planner/core/operator/logicalop/logical_table_dual.go @@ -33,10 +33,10 @@ import ( // outputting 0/1 row with zero column. This semantic may be different from your expectation sometimes but should not // cause any actual problems now. type LogicalTableDual struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` // RowCount could only be 0 or 1. - RowCount int + RowCount int `hash64-equals:"true"` } // Init initializes LogicalTableDual. diff --git a/pkg/planner/core/operator/logicalop/logical_tikv_single_gather.go b/pkg/planner/core/operator/logicalop/logical_tikv_single_gather.go index df3d3878860fe..080e9712e2038 100644 --- a/pkg/planner/core/operator/logicalop/logical_tikv_single_gather.go +++ b/pkg/planner/core/operator/logicalop/logical_tikv_single_gather.go @@ -66,7 +66,7 @@ func (sg *TiKVSingleGather) ExplainInfo() string { // BuildKeyInfo implements base.LogicalPlan.<4th> interface. func (*TiKVSingleGather) BuildKeyInfo(selfSchema *expression.Schema, childSchema []*expression.Schema) { - selfSchema.Keys = childSchema[0].Keys + selfSchema.PKOrUK = childSchema[0].PKOrUK } // PushDownTopN inherits BaseLogicalPlan.LogicalPlan.<5th> implementation. diff --git a/pkg/planner/core/operator/logicalop/logical_top_n.go b/pkg/planner/core/operator/logicalop/logical_top_n.go index b29eb13d7fc62..2535205a1321a 100644 --- a/pkg/planner/core/operator/logicalop/logical_top_n.go +++ b/pkg/planner/core/operator/logicalop/logical_top_n.go @@ -32,12 +32,12 @@ import ( type LogicalTopN struct { BaseLogicalPlan - ByItems []*util.ByItems + ByItems []*util.ByItems `hash64-equals:"true"` // PartitionBy is used for extended TopN to consider K heaps. Used by rule_derive_topn_from_window - PartitionBy []property.SortItem // This is used for enhanced topN optimization - Offset uint64 - Count uint64 - PreferLimitToCop bool + PartitionBy []property.SortItem `hash64-equals:"true"` // This is used for enhanced topN optimization + Offset uint64 `hash64-equals:"true"` + Count uint64 `hash64-equals:"true"` + PreferLimitToCop bool `hash64-equals:"true"` } // Init initializes LogicalTopN. diff --git a/pkg/planner/core/operator/logicalop/logical_union_all.go b/pkg/planner/core/operator/logicalop/logical_union_all.go index 385e987e196b4..b15487a7e7bbf 100644 --- a/pkg/planner/core/operator/logicalop/logical_union_all.go +++ b/pkg/planner/core/operator/logicalop/logical_union_all.go @@ -29,7 +29,7 @@ import ( // LogicalUnionAll represents LogicalUnionAll plan. type LogicalUnionAll struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` } // Init initializes LogicalUnionAll. diff --git a/pkg/planner/core/operator/logicalop/logical_union_scan.go b/pkg/planner/core/operator/logicalop/logical_union_scan.go index 3eb493e7e6867..6bca79636d276 100644 --- a/pkg/planner/core/operator/logicalop/logical_union_scan.go +++ b/pkg/planner/core/operator/logicalop/logical_union_scan.go @@ -32,9 +32,9 @@ import ( type LogicalUnionScan struct { BaseLogicalPlan - Conditions []expression.Expression + Conditions []expression.Expression `hash64-equals:"true"` - HandleCols util.HandleCols + HandleCols util.HandleCols `hash64-equals:"true"` } // Init initializes LogicalUnionScan. diff --git a/pkg/planner/core/operator/logicalop/logical_window.go b/pkg/planner/core/operator/logicalop/logical_window.go index e4636f4721ad1..e218d12bcfc08 100644 --- a/pkg/planner/core/operator/logicalop/logical_window.go +++ b/pkg/planner/core/operator/logicalop/logical_window.go @@ -15,9 +15,12 @@ package logicalop import ( + "fmt" + "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/expression/aggregation" "github.com/pingcap/tidb/pkg/parser/ast" + base2 "github.com/pingcap/tidb/pkg/planner/cascades/base" "github.com/pingcap/tidb/pkg/planner/core/base" ruleutil "github.com/pingcap/tidb/pkg/planner/core/rule/util" "github.com/pingcap/tidb/pkg/planner/property" @@ -31,12 +34,12 @@ import ( // LogicalWindow represents a logical window function plan. type LogicalWindow struct { - LogicalSchemaProducer + LogicalSchemaProducer `hash64-equals:"true"` - WindowFuncDescs []*aggregation.WindowFuncDesc - PartitionBy []property.SortItem - OrderBy []property.SortItem - Frame *WindowFrame + WindowFuncDescs []*aggregation.WindowFuncDesc `hash64-equals:"true"` + PartitionBy []property.SortItem `hash64-equals:"true"` + OrderBy []property.SortItem `hash64-equals:"true"` + Frame *WindowFrame `hash64-equals:"true"` } // WindowFrame represents a window function frame. @@ -46,6 +49,36 @@ type WindowFrame struct { End *FrameBound } +// Hash64 implements HashEquals interface. +func (wf *WindowFrame) Hash64(h base2.Hasher) { + h.HashInt(int(wf.Type)) + if wf.Start != nil { + h.HashByte(base2.NotNilFlag) + wf.Start.Hash64(h) + } else { + h.HashByte(base2.NilFlag) + wf.End.Hash64(h) + } +} + +// Equals implements HashEquals interface. +func (wf *WindowFrame) Equals(other any) bool { + wf2, ok := other.(*WindowFrame) + if !ok { + return false + } + if wf == nil { + return wf2 == nil + } + if wf2 == nil { + return false + } + if wf.Type != wf2.Type || !wf.Start.Equals(wf2.Start) || !wf.End.Equals(wf2.End) { + return false + } + return true +} + // Clone copies a window frame totally. func (wf *WindowFrame) Clone() *WindowFrame { cloned := new(WindowFrame) @@ -76,6 +109,85 @@ type FrameBound struct { IsExplicitRange bool } +// Hash64 implement HashEquals interface. +func (fb *FrameBound) Hash64(h base2.Hasher) { + h.HashInt(int(fb.Type)) + h.HashBool(fb.UnBounded) + h.HashUint64(fb.Num) + if fb.CalcFuncs == nil { + h.HashByte(base2.NilFlag) + } else { + h.HashByte(base2.NotNilFlag) + h.HashInt(len(fb.CalcFuncs)) + for _, one := range fb.CalcFuncs { + one.Hash64(h) + } + } + if fb.CompareCols == nil { + h.HashByte(base2.NilFlag) + } else { + h.HashByte(base2.NotNilFlag) + h.HashInt(len(fb.CompareCols)) + for _, one := range fb.CompareCols { + one.Hash64(h) + } + } + if fb.CmpFuncs == nil { + h.HashByte(base2.NilFlag) + } else { + h.HashByte(base2.NotNilFlag) + h.HashInt(len(fb.CmpFuncs)) + for _, f := range fb.CmpFuncs { + h.HashString(fmt.Sprintf("%p", f)) + } + } + h.HashInt64(int64(fb.CmpDataType)) + h.HashBool(fb.IsExplicitRange) +} + +// Equals implement HashEquals interface. +func (fb *FrameBound) Equals(other any) bool { + fb2, ok := other.(*FrameBound) + if !ok { + return false + } + if fb == nil { + return fb2 == nil + } + if fb2 == nil { + return false + } + if fb.Type != fb2.Type || fb.UnBounded != fb2.UnBounded || fb.Num != fb2.Num { + return false + } + if fb.CalcFuncs == nil && fb2.CalcFuncs != nil || fb.CalcFuncs != nil && fb2.CalcFuncs == nil || len(fb.CalcFuncs) != len(fb2.CmpFuncs) { + return false + } + for i, one := range fb.CalcFuncs { + if !one.Equals(fb2.CalcFuncs[i]) { + return false + } + } + if fb.CompareCols == nil && fb2.CompareCols != nil || fb.CompareCols != nil && fb2.CompareCols == nil || len(fb.CompareCols) != len(fb2.CompareCols) { + return false + } + for i, one := range fb.CompareCols { + if !one.Equals(fb2.CompareCols[i]) { + return false + } + } + if fb.CmpFuncs == nil && fb2.CmpFuncs != nil || fb.CmpFuncs != nil && fb2.CmpFuncs == nil || len(fb.CmpFuncs) != len(fb2.CmpFuncs) { + return false + } + for i, one := range fb.CmpFuncs { + // com function addr + if fmt.Sprintf("%p", one) != fmt.Sprintf("%p", fb2.CmpFuncs[i]) { + return false + } + } + return fb.CmpDataType == fb2.CmpDataType && fb.IsExplicitRange == fb2.IsExplicitRange +} + // Clone copies a frame bound totally. func (fb *FrameBound) Clone() *FrameBound { cloned := new(FrameBound) diff --git a/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel b/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel index 1a823ad3b63ba..85ab42abff2fa 100644 --- a/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel +++ b/pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel @@ -8,13 +8,15 @@ go_test( "logical_mem_table_predicate_extractor_test.go", ], flaky = True, - shard_count = 17, + shard_count = 33, deps = [ "//pkg/domain", "//pkg/expression", "//pkg/expression/aggregation", + "//pkg/meta/model", "//pkg/parser", "//pkg/parser/ast", + "//pkg/parser/model", "//pkg/parser/mysql", "//pkg/planner", "//pkg/planner/cascades/base", @@ -22,11 +24,13 @@ go_test( "//pkg/planner/core/base", "//pkg/planner/core/operator/logicalop", "//pkg/planner/core/resolve", + "//pkg/planner/property", "//pkg/planner/util", "//pkg/session", "//pkg/session/types", "//pkg/testkit", "//pkg/types", + "//pkg/util/chunk", "//pkg/util/hint", "//pkg/util/mock", "//pkg/util/set", diff --git a/pkg/planner/core/operator/logicalop/logicalop_test/hash64_equals_test.go b/pkg/planner/core/operator/logicalop/logicalop_test/hash64_equals_test.go index ed0e5b882bd5a..160283443d590 100644 --- a/pkg/planner/core/operator/logicalop/logicalop_test/hash64_equals_test.go +++ b/pkg/planner/core/operator/logicalop/logicalop_test/hash64_equals_test.go @@ -19,15 +19,569 @@ import ( "github.com/pingcap/tidb/pkg/expression" "github.com/pingcap/tidb/pkg/expression/aggregation" + "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/cascades/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/types" + "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/mock" "github.com/stretchr/testify/require" ) +func TestLogicalTopNHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + ctx := mock.NewContext() + p1 := logicalop.LogicalTopN{}.Init(ctx, 1) + p1.ByItems = []*util.ByItems{{Expr: col1, Desc: true}} + p1.PartitionBy = []property.SortItem{{Col: col1, Desc: true}} + p2 := logicalop.LogicalTopN{}.Init(ctx, 1) + p2.ByItems = []*util.ByItems{{Expr: col1, Desc: true}} + p2.PartitionBy = []property.SortItem{{Col: col1, Desc: true}} + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + p1.Hash64(hasher1) + p2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, p1.Equals(p2)) + + p2.ByItems = []*util.ByItems{{Expr: col2, Desc: true}} + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.ByItems = []*util.ByItems{{Expr: col1, Desc: false}} + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.ByItems = []*util.ByItems{{Expr: col1, Desc: true}} + p2.PartitionBy = []property.SortItem{{Col: col1, Desc: false}} + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.PartitionBy = []property.SortItem{{Col: col2, Desc: true}} + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.PartitionBy = []property.SortItem{{Col: col1, Desc: true}} + p2.Offset = 2 + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.Offset = 0 + p2.Count = 1 + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.Count = 0 + p2.PreferLimitToCop = true + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.PreferLimitToCop = false + hasher2.Reset() + p2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, p1.Equals(p2)) +} + +func TestLogicalTableDualHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + ctx := mock.NewContext() + p1 := logicalop.LogicalTableDual{}.Init(ctx, 1) + p1.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + p2 := logicalop.LogicalTableDual{}.Init(ctx, 1) + p2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + p1.Hash64(hasher1) + p2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, p1.Equals(p2)) + + p2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col2}}) + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + p2.RowCount = 2 + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + p2.RowCount = 0 + hasher2.Reset() + p2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, p1.Equals(p2)) +} + +func TestLogicalSortHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + ctx := mock.NewContext() + s1 := logicalop.LogicalSort{}.Init(ctx, 1) + s2 := logicalop.LogicalSort{}.Init(ctx, 1) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + s1.Hash64(hasher1) + s2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, s1.Equals(s2)) + + s2.ByItems = []*util.ByItems{} + hasher2.Reset() + s2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, s1.Equals(s2)) + + s2.ByItems = []*util.ByItems{{Expr: col1, Desc: true}} + hasher2.Reset() + s2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, s1.Equals(s2)) + + s1.ByItems = []*util.ByItems{{Expr: col1, Desc: false}} + hasher1.Reset() + s1.Hash64(hasher1) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, s1.Equals(s2)) + + s1.ByItems = []*util.ByItems{{Expr: col1, Desc: true}} + hasher1.Reset() + s1.Hash64(hasher1) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, s1.Equals(s2)) +} + +func TestLogicalShowDDLJobs(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + ctx := mock.NewContext() + s1 := logicalop.LogicalShowDDLJobs{}.Init(ctx) + s2 := logicalop.LogicalShowDDLJobs{}.Init(ctx) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + s1.Hash64(hasher1) + s2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, s1.Equals(s2)) + + s2.LogicalSchemaProducer.SetSchema(expression.NewSchema(col1)) + hasher2.Reset() + s2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, s1.Equals(s2)) +} + +func TestLogicalShowHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + + ctx := mock.NewContext() + s1 := logicalop.LogicalShow{}.Init(ctx) + s2 := logicalop.LogicalShow{}.Init(ctx) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + s1.Hash64(hasher1) + s2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, s1.Equals(s2)) + + s2.LogicalSchemaProducer.SetSchema(expression.NewSchema(col1)) + hasher2.Reset() + s2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, s1.Equals(s2)) +} + +func TestLogicalSequence(t *testing.T) { + ctx := mock.NewContext() + m1 := logicalop.LogicalSequence{}.Init(ctx, 1) + m2 := logicalop.LogicalSequence{}.Init(ctx, 1) + // since logical max one row doesn't have any elements, they are always indicate + // that they are equal. + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + m1.Hash64(hasher1) + m2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, m1.Equals(m2)) + + m2.SetID(m1.ID()) + hasher2.Reset() + m2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, m1.Equals(m2)) +} + +func TestLogicalSelectionHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + // test schema producer. + ctx := mock.NewContext() + p1 := logicalop.LogicalSelection{Conditions: []expression.Expression{col1}}.Init(ctx, 1) + p2 := logicalop.LogicalSelection{Conditions: []expression.Expression{col1}}.Init(ctx, 1) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + p1.Hash64(hasher1) + p2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, p1.Equals(p2)) + + // change conditions + p2.Conditions = []expression.Expression{} + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.Conditions = nil + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.Conditions = []expression.Expression{col2} + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) +} + +func TestLogicalProjectionHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + // test schema producer. + ctx := mock.NewContext() + p1 := logicalop.LogicalProjection{Exprs: []expression.Expression{col2}}.Init(ctx, 1) + p1.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + p2 := logicalop.LogicalProjection{Exprs: []expression.Expression{col2}}.Init(ctx, 1) + p2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + p1.Hash64(hasher1) + p2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, p1.Equals(p2)) + + // change Exprs + p2.Exprs = []expression.Expression{} + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.Exprs = nil + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + // change CalculateNoDelay + p2.Exprs = []expression.Expression{col2} + p2.CalculateNoDelay = true + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + // change Proj4Expand + p2.CalculateNoDelay = false + p2.Proj4Expand = true + hasher2.Reset() + p2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, p1.Equals(p2)) + + p2.Proj4Expand = false + hasher2.Reset() + p2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, p1.Equals(p2)) +} + +func TestLogicalUnionAllHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + // test schema producer. + ctx := mock.NewContext() + u1 := logicalop.LogicalUnionAll{}.Init(ctx, 1) + u1.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + u2 := logicalop.LogicalUnionAll{}.Init(ctx, 1) + u2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + u1.Hash64(hasher1) + u2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, u1.Equals(u2)) + + u2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col2}}) + hasher2.Reset() + u2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, u1.Equals(u2)) + + pu1 := logicalop.LogicalPartitionUnionAll{}.Init(ctx, 1) + pu1.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + pu2 := logicalop.LogicalPartitionUnionAll{}.Init(ctx, 1) + pu2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + hasher1.Reset() + hasher2.Reset() + pu1.Hash64(hasher1) + pu2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, pu1.Equals(pu2)) + + pu2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col2}}) + hasher2.Reset() + pu2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, pu1.Equals(pu2)) +} + +func TestLogicalMemTableHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + // test schema producer. + ctx := mock.NewContext() + m1 := logicalop.LogicalMemTable{}.Init(ctx, 1) + m1.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + m2 := logicalop.LogicalMemTable{}.Init(ctx, 1) + m2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + m1.Hash64(hasher1) + m2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, m1.Equals(m2)) + + m2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col2}}) + hasher2.Reset() + m2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, m1.Equals(m2)) + + m2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + m2.DBName = pmodel.NewCIStr("d1") + hasher2.Reset() + m2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, m1.Equals(m2)) + + m2.DBName = pmodel.NewCIStr("") + m2.TableInfo = &model.TableInfo{ID: 1} + hasher2.Reset() + m2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, m1.Equals(m2)) + + m2.TableInfo = &model.TableInfo{} + hasher2.Reset() + m2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, m1.Equals(m2)) + + m2.TableInfo = nil + hasher2.Reset() + m2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, m1.Equals(m2)) + + m1.TableInfo = &model.TableInfo{ID: 1} + hasher1.Reset() + m1.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, m1.Equals(m2)) +} + +func TestLogicalSchemaProducerHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + ctx := mock.NewContext() + d1 := logicalop.DataSource{}.Init(ctx, 1) + d1.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + d2 := logicalop.DataSource{}.Init(ctx, 1) + d2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col1}}) + + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + d1.Hash64(hasher1) + d2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, d1.Equals(d2)) + + d2.LogicalSchemaProducer.SetSchema(&expression.Schema{Columns: []*expression.Column{col2}}) + hasher2.Reset() + d2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, d1.Equals(d2)) +} + +func TestLogicalMaxOneRowHash64Equals(t *testing.T) { + ctx := mock.NewContext() + m1 := logicalop.LogicalMaxOneRow{}.Init(ctx, 1) + m2 := logicalop.LogicalMaxOneRow{}.Init(ctx, 1) + // since logical max one row doesn't have any elements, they are always indicate + // that they are equal. + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + m1.Hash64(hasher1) + m2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, m1.Equals(m2)) + + m2.SetID(m1.ID()) + hasher2.Reset() + m2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, m1.Equals(m2)) +} + +func TestLogicalLimitHash64Equals(t *testing.T) { + col1 := &expression.Column{ + ID: 1, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + ID: 2, + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + limit1 := &logicalop.LogicalLimit{ + PartitionBy: []property.SortItem{{Col: col1, Desc: true}}, + Offset: 1, + Count: 1, + } + limit2 := &logicalop.LogicalLimit{ + PartitionBy: []property.SortItem{{Col: col1, Desc: true}}, + Offset: 1, + Count: 1, + } + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + limit1.Hash64(hasher1) + limit2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, limit1.Equals(limit2)) + + limit2.PartitionBy = []property.SortItem{{Col: col2, Desc: true}} + hasher2.Reset() + limit2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, limit1.Equals(limit2)) + + limit2.PartitionBy = []property.SortItem{{Col: col1, Desc: true}} + limit2.Offset = 2 + hasher2.Reset() + limit2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, limit1.Equals(limit2)) + + limit2.Offset = 1 + limit2.Count = 2 + hasher2.Reset() + limit2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, limit1.Equals(limit2)) + + limit2.Count = 1 + hasher2.Reset() + limit2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, limit1.Equals(limit2)) +} + func TestLogicalExpandHash64Equals(t *testing.T) { col1 := &expression.Column{ ID: 1, @@ -62,52 +616,61 @@ func TestLogicalExpandHash64Equals(t *testing.T) { expand1.Hash64(hasher1) expand2.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, expand1.Equals(expand2)) expand2.DistinctGroupByCol = []*expression.Column{col2} hasher2.Reset() expand2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, expand1.Equals(expand2)) expand2.DistinctGroupByCol = []*expression.Column{col1} expand2.DistinctGbyExprs = []expression.Expression{col2} hasher2.Reset() expand2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, expand1.Equals(expand2)) expand2.DistinctGbyExprs = []expression.Expression{col1} expand2.DistinctSize = 2 hasher2.Reset() expand2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, expand1.Equals(expand2)) expand2.DistinctSize = 1 expand2.RollupGroupingSets = expression.GroupingSets{expression.GroupingSet{expression.GroupingExprs{col1}}} hasher2.Reset() expand2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, expand1.Equals(expand2)) expand2.RollupGroupingSets = nil expand2.LevelExprs = [][]expression.Expression{{col1}} hasher2.Reset() expand2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, expand1.Equals(expand2)) expand2.LevelExprs = nil expand2.GID = col2 hasher2.Reset() expand2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, expand1.Equals(expand2)) expand2.GID = col1 expand2.GPos = col2 hasher2.Reset() expand2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, expand1.Equals(expand2)) expand2.GPos = col1 hasher2.Reset() expand2.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, expand1.Equals(expand2)) } func TestLogicalApplyHash64Equals(t *testing.T) { @@ -133,11 +696,11 @@ func TestLogicalApplyHash64Equals(t *testing.T) { JoinType: logicalop.InnerJoin, EqualConditions: []*expression.ScalarFunction{eq.(*expression.ScalarFunction)}, } - la1 := logicalop.LogicalApply{ + la1 := &logicalop.LogicalApply{ LogicalJoin: *join, CorCols: []*expression.CorrelatedColumn{{Column: *col3}}, } - la2 := logicalop.LogicalApply{ + la2 := &logicalop.LogicalApply{ LogicalJoin: *join, CorCols: []*expression.CorrelatedColumn{{Column: *col3}}, } @@ -146,22 +709,26 @@ func TestLogicalApplyHash64Equals(t *testing.T) { la1.Hash64(hasher1) la2.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, la1.Equals(la2)) la2.CorCols = []*expression.CorrelatedColumn{{Column: *col2}} hasher2.Reset() la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) la2.CorCols = []*expression.CorrelatedColumn{{Column: *col3}} la2.NoDecorrelate = true hasher2.Reset() la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) la2.NoDecorrelate = false hasher2.Reset() la2.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, la1.Equals(la2)) } func TestLogicalJoinHash64Equals(t *testing.T) { @@ -191,11 +758,13 @@ func TestLogicalJoinHash64Equals(t *testing.T) { la1.Hash64(hasher1) la2.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, la1.Equals(la2)) la2.JoinType = logicalop.AntiSemiJoin hasher2.Reset() la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) la2.JoinType = logicalop.InnerJoin eq2, err2 := expression.NewFunction(ctx, ast.EQ, types.NewFieldType(mysql.TypeLonglong), col2, col1) @@ -204,6 +773,7 @@ func TestLogicalJoinHash64Equals(t *testing.T) { hasher2.Reset() la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) la2.EqualConditions = nil gt, err3 := expression.NewFunction(ctx, ast.EQ, types.NewFieldType(mysql.TypeLonglong), col1, col2) @@ -212,6 +782,7 @@ func TestLogicalJoinHash64Equals(t *testing.T) { hasher2.Reset() la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) la1.EqualConditions = []*expression.ScalarFunction{} la2.OtherConditions = nil @@ -221,11 +792,13 @@ func TestLogicalJoinHash64Equals(t *testing.T) { la1.Hash64(hasher1) la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) la2.EqualConditions = []*expression.ScalarFunction{} hasher2.Reset() la2.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, la1.Equals(la2)) } func TestLogicalAggregationHash64Equals(t *testing.T) { @@ -251,15 +824,229 @@ func TestLogicalAggregationHash64Equals(t *testing.T) { la1.Hash64(hasher1) la2.Hash64(hasher2) require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, la1.Equals(la2)) la2.GroupByItems = []expression.Expression{} hasher2.Reset() la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) la2.GroupByItems = []expression.Expression{col} la2.PossibleProperties = [][]*expression.Column{{}} hasher2.Reset() la2.Hash64(hasher2) require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, la1.Equals(la2)) +} + +func MockFunc(sctx expression.EvalContext, lhsArg, rhsArg expression.Expression, lhsRow, rhsRow chunk.Row) (int64, bool, error) { + return 0, false, nil +} +func MockFunc2(sctx expression.EvalContext, lhsArg, rhsArg expression.Expression, lhsRow, rhsRow chunk.Row) (int64, bool, error) { + return 0, false, nil +} + +func TestFrameBoundHash64Equals(t *testing.T) { + col := &expression.Column{ + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + Index: 1, + UniqueID: 1, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + fb1 := &logicalop.FrameBound{ + Type: ast.Preceding, + UnBounded: true, + Num: 1, + CalcFuncs: []expression.Expression{col}, + CompareCols: []expression.Expression{col}, + CmpFuncs: []expression.CompareFunc{MockFunc}, + CmpDataType: 1, + IsExplicitRange: false, + } + fb2 := &logicalop.FrameBound{ + Type: ast.Preceding, + UnBounded: true, + Num: 1, + CalcFuncs: []expression.Expression{col}, + CompareCols: []expression.Expression{col}, + CmpFuncs: []expression.CompareFunc{MockFunc}, + CmpDataType: 1, + IsExplicitRange: false, + } + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + fb1.Hash64(hasher1) + fb2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, fb1.Equals(fb2)) + + fb2.Type = ast.CurrentRow + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) + + fb2.Type = ast.Preceding + fb2.UnBounded = false + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) + + fb2.UnBounded = true + fb2.Num = 2 + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) + + fb2.Num = 1 + fb2.CalcFuncs = []expression.Expression{col2} + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) + + fb2.CalcFuncs = []expression.Expression{col} + fb2.CompareCols = []expression.Expression{col2} + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) + + fb2.CompareCols = []expression.Expression{col} + fb2.CmpFuncs = []expression.CompareFunc{MockFunc2} + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) + + fb2.CmpFuncs = []expression.CompareFunc{MockFunc} + hasher2.Reset() + fb2.Hash64(hasher2) + require.True(t, fb1.Equals(fb2)) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + + fb2.CmpDataType = 2 + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) + + fb2.CmpDataType = 1 + fb2.IsExplicitRange = true + hasher2.Reset() + fb2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, fb1.Equals(fb2)) +} + +func TestWindowFrameHash64Equals(t *testing.T) { + col := &expression.Column{ + Index: 0, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + start := &logicalop.FrameBound{ + Type: ast.Preceding, + UnBounded: true, + Num: 1, + CalcFuncs: []expression.Expression{col}, + CompareCols: []expression.Expression{col}, + CmpFuncs: []expression.CompareFunc{MockFunc}, + CmpDataType: 1, + IsExplicitRange: false, + } + end := start + wf1 := &logicalop.WindowFrame{ + Type: 1, + Start: start, + End: end, + } + wf2 := &logicalop.WindowFrame{ + Type: 1, + Start: start, + End: end, + } + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + wf1.Hash64(hasher1) + wf2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, wf1.Equals(wf2)) + + wf2.Type = 2 + hasher2.Reset() + wf2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, wf1.Equals(wf2)) +} + +func TestHandleColsHash64Equals(t *testing.T) { + col1 := &expression.Column{ + UniqueID: 1, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + col2 := &expression.Column{ + UniqueID: 2, + RetType: types.NewFieldType(mysql.TypeLonglong), + } + ctx := mock.NewContext() + handles1 := util.NewCommonHandlesColsWithoutColsAlign(ctx.GetSessionVars().StmtCtx, &model.TableInfo{ID: 1}, &model.IndexInfo{ID: 1}, []*expression.Column{col1, col2}) + handles2 := util.NewCommonHandlesColsWithoutColsAlign(ctx.GetSessionVars().StmtCtx, &model.TableInfo{ID: 1}, &model.IndexInfo{ID: 1}, []*expression.Column{col1, col2}) + + hasher1 := base.NewHashEqualer() + hasher2 := base.NewHashEqualer() + handles1.Hash64(hasher1) + handles2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, handles1.Equals(handles2)) + + handles2 = util.NewCommonHandlesColsWithoutColsAlign(ctx.GetSessionVars().StmtCtx, &model.TableInfo{ID: 2}, &model.IndexInfo{ID: 1}, []*expression.Column{col1, col2}) + hasher2.Reset() + handles2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, handles1.Equals(handles2)) + + handles2 = util.NewCommonHandlesColsWithoutColsAlign(ctx.GetSessionVars().StmtCtx, &model.TableInfo{ID: 1}, &model.IndexInfo{ID: 2}, []*expression.Column{col1, col2}) + hasher2.Reset() + handles2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, handles1.Equals(handles2)) + + handles2 = util.NewCommonHandlesColsWithoutColsAlign(ctx.GetSessionVars().StmtCtx, &model.TableInfo{ID: 1}, &model.IndexInfo{ID: 1}, []*expression.Column{col2, col2}) + hasher2.Reset() + handles2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, handles1.Equals(handles2)) + + handles2 = util.NewCommonHandlesColsWithoutColsAlign(ctx.GetSessionVars().StmtCtx, &model.TableInfo{ID: 1}, &model.IndexInfo{ID: 1}, []*expression.Column{col2, col1}) + hasher2.Reset() + handles2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, handles1.Equals(handles2)) + + handles2 = util.NewCommonHandlesColsWithoutColsAlign(ctx.GetSessionVars().StmtCtx, &model.TableInfo{ID: 1}, &model.IndexInfo{ID: 1}, []*expression.Column{col1, col2}) + hasher2.Reset() + handles2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, handles1.Equals(handles2)) + + intH1 := util.NewIntHandleCols(col1) + intH2 := util.NewIntHandleCols(col1) + hasher1.Reset() + hasher2.Reset() + intH1.Hash64(hasher1) + intH2.Hash64(hasher2) + require.Equal(t, hasher1.Sum64(), hasher2.Sum64()) + require.True(t, handles1.Equals(handles2)) + + intH2 = util.NewIntHandleCols(col2) + hasher2.Reset() + intH2.Hash64(hasher2) + require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64()) + require.False(t, intH1.Equals(intH2)) } diff --git a/pkg/planner/core/partition_pruning_test.go b/pkg/planner/core/partition_pruning_test.go index 4032320060121..67a21859123c4 100644 --- a/pkg/planner/core/partition_pruning_test.go +++ b/pkg/planner/core/partition_pruning_test.go @@ -575,6 +575,60 @@ func TestPartitionRangeColumnsForExpr(t *testing.T) { } } +func TestPartitionRangeColumnsForExprWithSpecialCollation(t *testing.T) { + tc := prepareTestCtx(t, "create table t (a varchar(255) COLLATE utf8mb4_0900_ai_ci, b varchar(255) COLLATE utf8mb4_unicode_ci)", "a,b") + lessThan := make([][]*expression.Expression, 0, 6) + partDefs := [][]string{ + {"'i'", "'i'"}, + {"MAXVALUE", "MAXVALUE"}, + } + for i := range partDefs { + l := make([]*expression.Expression, 0, 2) + for j := range []int{0, 1} { + v := partDefs[i][j] + var e *expression.Expression + if v == "MAXVALUE" { + e = nil // MAXVALUE + } else { + expr, err := expression.ParseSimpleExpr(tc.sctx, v, expression.WithInputSchemaAndNames(tc.schema, tc.names, nil)) + require.NoError(t, err) + e = &expr + } + l = append(l, e) + } + lessThan = append(lessThan, l) + } + pruner := &rangeColumnsPruner{lessThan, tc.columns[:2]} + cases := []struct { + input string + result partitionRangeOR + }{ + {"a = 'q'", partitionRangeOR{{1, 2}}}, + {"a = 'Q'", partitionRangeOR{{1, 2}}}, + {"a = 'a'", partitionRangeOR{{0, 1}}}, + {"a = 'A'", partitionRangeOR{{0, 1}}}, + {"a > 'a'", partitionRangeOR{{0, 2}}}, + {"a > 'q'", partitionRangeOR{{1, 2}}}, + {"a = 'i' and b = 'q'", partitionRangeOR{{1, 2}}}, + {"a = 'i' and b = 'Q'", partitionRangeOR{{1, 2}}}, + {"a = 'i' and b = 'a'", partitionRangeOR{{0, 1}}}, + {"a = 'i' and b = 'A'", partitionRangeOR{{0, 1}}}, + {"a = 'i' and b > 'a'", partitionRangeOR{{0, 2}}}, + {"a = 'i' and b > 'q'", partitionRangeOR{{1, 2}}}, + {"a = 'i' or a = 'h'", partitionRangeOR{{0, 2}}}, + {"a = 'h' and a = 'j'", partitionRangeOR{}}, + } + + for _, ca := range cases { + expr, err := expression.ParseSimpleExpr(tc.sctx, ca.input, expression.WithInputSchemaAndNames(tc.schema, tc.names, nil)) + require.NoError(t, err) + result := fullRange(len(lessThan)) + e := expression.SplitCNFItems(expr) + result = partitionRangeForCNFExpr(tc.sctx, e, pruner, result) + require.Truef(t, equalPartitionRangeOR(ca.result, result), "unexpected: %v %v != %v", ca.input, ca.result, result) + } +} + func benchmarkRangeColumnsPruner(b *testing.B, parts int) { tc := prepareBenchCtx("create table t (a bigint unsigned, b int, c int)", "a") if tc == nil { diff --git a/pkg/planner/core/physical_plans.go b/pkg/planner/core/physical_plans.go index 34a98efe793db..e4270f3c0d655 100644 --- a/pkg/planner/core/physical_plans.go +++ b/pkg/planner/core/physical_plans.go @@ -174,16 +174,15 @@ type PhysPlanPartInfo struct { const emptyPartitionInfoSize = int64(unsafe.Sizeof(PhysPlanPartInfo{})) -// Clone clones the PhysPlanPartInfo. -func (pi *PhysPlanPartInfo) Clone() *PhysPlanPartInfo { +func (pi *PhysPlanPartInfo) cloneForPlanCache() *PhysPlanPartInfo { if pi == nil { return nil } cloned := new(PhysPlanPartInfo) - cloned.PruningConds = util.CloneExprs(pi.PruningConds) - cloned.PartitionNames = util.CloneCIStrs(pi.PartitionNames) - cloned.Columns = util.CloneCols(pi.Columns) - cloned.ColumnNames = util.CloneFieldNames(pi.ColumnNames) + cloned.PruningConds = cloneExpressionsForPlanCache(pi.PruningConds, nil) + cloned.PartitionNames = pi.PartitionNames + cloned.Columns = cloneColumnsForPlanCache(pi.Columns, nil) + cloned.ColumnNames = pi.ColumnNames return cloned } @@ -737,7 +736,7 @@ type PhysicalIndexScan struct { Index *model.IndexInfo `plan-cache-clone:"shallow"` IdxCols []*expression.Column IdxColLens []int - Ranges []*ranger.Range + Ranges []*ranger.Range `plan-cache-clone:"shallow"` Columns []*model.ColumnInfo `plan-cache-clone:"shallow"` DBName pmodel.CIStr `plan-cache-clone:"shallow"` @@ -913,7 +912,7 @@ type PhysicalTableScan struct { Table *model.TableInfo `plan-cache-clone:"shallow"` Columns []*model.ColumnInfo `plan-cache-clone:"shallow"` DBName pmodel.CIStr `plan-cache-clone:"shallow"` - Ranges []*ranger.Range + Ranges []*ranger.Range `plan-cache-clone:"shallow"` TableAsName *pmodel.CIStr `plan-cache-clone:"shallow"` @@ -1354,21 +1353,21 @@ func (p *basePhysicalJoin) cloneForPlanCacheWithSelf(newCtx base.PlanContext, ne } cloned.physicalSchemaProducer = *base cloned.JoinType = p.JoinType - cloned.LeftConditions = util.CloneExprs(p.LeftConditions) - cloned.RightConditions = util.CloneExprs(p.RightConditions) - cloned.OtherConditions = util.CloneExprs(p.OtherConditions) + cloned.LeftConditions = cloneExpressionsForPlanCache(p.LeftConditions, nil) + cloned.RightConditions = cloneExpressionsForPlanCache(p.RightConditions, nil) + cloned.OtherConditions = cloneExpressionsForPlanCache(p.OtherConditions, nil) cloned.InnerChildIdx = p.InnerChildIdx - cloned.OuterJoinKeys = util.CloneCols(p.OuterJoinKeys) - cloned.InnerJoinKeys = util.CloneCols(p.InnerJoinKeys) - cloned.LeftJoinKeys = util.CloneCols(p.LeftJoinKeys) - cloned.RightJoinKeys = util.CloneCols(p.RightJoinKeys) + cloned.OuterJoinKeys = cloneColumnsForPlanCache(p.OuterJoinKeys, nil) + cloned.InnerJoinKeys = cloneColumnsForPlanCache(p.InnerJoinKeys, nil) + cloned.LeftJoinKeys = cloneColumnsForPlanCache(p.LeftJoinKeys, nil) + cloned.RightJoinKeys = cloneColumnsForPlanCache(p.RightJoinKeys, nil) cloned.IsNullEQ = make([]bool, len(p.IsNullEQ)) copy(cloned.IsNullEQ, p.IsNullEQ) for _, d := range p.DefaultValues { cloned.DefaultValues = append(cloned.DefaultValues, *d.Clone()) } - cloned.LeftNAJoinKeys = util.CloneCols(p.LeftNAJoinKeys) - cloned.RightNAJoinKeys = util.CloneCols(p.RightNAJoinKeys) + cloned.LeftNAJoinKeys = cloneColumnsForPlanCache(p.LeftNAJoinKeys, nil) + cloned.RightNAJoinKeys = cloneColumnsForPlanCache(p.RightNAJoinKeys, nil) return cloned, true } @@ -1507,7 +1506,7 @@ func (p *PhysicalHashJoin) CanUseHashJoinV2() bool { return false } switch p.JoinType { - case logicalop.LeftOuterJoin, logicalop.RightOuterJoin, logicalop.InnerJoin: + case logicalop.LeftOuterJoin, logicalop.RightOuterJoin, logicalop.InnerJoin, logicalop.LeftOuterSemiJoin, logicalop.SemiJoin: // null aware join is not supported yet if len(p.LeftNAJoinKeys) > 0 { return false diff --git a/pkg/planner/core/plan_cache.go b/pkg/planner/core/plan_cache.go index d023eb092f1ff..a9091d51b47dd 100644 --- a/pkg/planner/core/plan_cache.go +++ b/pkg/planner/core/plan_cache.go @@ -16,6 +16,7 @@ package core import ( "context" + "math" "time" "github.com/pingcap/errors" @@ -37,7 +38,10 @@ import ( "github.com/pingcap/tidb/pkg/util/chunk" contextutil "github.com/pingcap/tidb/pkg/util/context" "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors" + "github.com/pingcap/tidb/pkg/util/hint" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" + "go.uber.org/zap" ) // PlanCacheKeyTestIssue43667 is only for test. @@ -114,23 +118,23 @@ func planCachePreprocess(ctx context.Context, sctx sessionctx.Context, isNonPrep if err != nil { return plannererrors.ErrSchemaChanged.GenWithStack("Schema change caused error: %s", err.Error()) } + // Table ID is changed, for example, drop & create table, truncate table. delete(stmt.RelateVersion, stmt.tbls[i].Meta().ID) - stmt.tbls[i] = tblByName - stmt.RelateVersion[tblByName.Meta().ID] = tblByName.Meta().Revision + tbl = tblByName } - newTbl, err := tryLockMDLAndUpdateSchemaIfNecessary(ctx, sctx.GetPlanCtx(), stmt.dbName[i], stmt.tbls[i], is) + // newTbl is the 'should be used' table info for this execution. + newTbl, err := tryLockMDLAndUpdateSchemaIfNecessary(ctx, sctx.GetPlanCtx(), stmt.dbName[i], tbl, is) if err != nil { + logutil.BgLogger().Warn("meet error during tryLockMDLAndUpdateSchemaIfNecessary", zap.String("table name", tbl.Meta().Name.String()), zap.Error(err)) + // Invalid the cache key related fields to avoid using plan cache. + stmt.RelateVersion[tbl.Meta().ID] = math.MaxUint64 schemaNotMatch = true continue } - // The revision of tbl and newTbl may not be the same. - // Example: - // The version of stmt.tbls[i] is taken from the prepare statement and is revision v1. - // When stmt.tbls[i] is locked in MDL, the revision of newTbl is also v1. - // The revision of tbl is v2. The reason may have other statements trigger "tryLockMDLAndUpdateSchemaIfNecessary" before, leading to tbl revision update. - if stmt.tbls[i].Meta().Revision != newTbl.Meta().Revision || (tbl != nil && tbl.Meta().Revision != newTbl.Meta().Revision) { + if stmt.tbls[i].Meta().Revision != newTbl.Meta().Revision { schemaNotMatch = true } + // Update the cache key related fields. stmt.tbls[i] = newTbl stmt.RelateVersion[newTbl.Meta().ID] = newTbl.Meta().Revision } @@ -223,16 +227,46 @@ func GetPlanFromPlanCache(ctx context.Context, sctx sessionctx.Context, paramTypes := parseParamTypes(sctx, params) if stmtCtx.UseCache() { - cachedVal, hit := lookupPlanCache(ctx, sctx, cacheKey, paramTypes) + plan, outputCols, stmtHints, hit := lookupPlanCache(ctx, sctx, cacheKey, paramTypes) skipPrivCheck := stmt.PointGet.Executor != nil // this case is specially handled + if hit && instancePlanCacheEnabled(ctx) { + plan, hit = clonePlanForInstancePlanCache(ctx, sctx, stmt, plan) + } if hit { - if plan, names, ok, err := adjustCachedPlan(ctx, sctx, cachedVal, isNonPrepared, skipPrivCheck, binding, is, stmt); err != nil || ok { - return plan, names, err + if plan, ok, err := adjustCachedPlan(ctx, sctx, plan, stmtHints, isNonPrepared, skipPrivCheck, binding, is, stmt); err != nil || ok { + return plan, outputCols, err } } } - return generateNewPlan(ctx, sctx, isNonPrepared, is, stmt, cacheKey, paramTypes) + return generateNewPlan(ctx, sctx, isNonPrepared, is, stmt, cacheKey, binding, paramTypes) +} + +func clonePlanForInstancePlanCache(ctx context.Context, sctx sessionctx.Context, + stmt *PlanCacheStmt, plan base.Plan) (clonedPlan base.Plan, ok bool) { + defer func(begin time.Time) { + if ok { + core_metrics.GetPlanCacheCloneDuration().Observe(time.Since(begin).Seconds()) + } + }(time.Now()) + fastPoint := stmt.PointGet.Executor != nil // this case is specially handled + pointPlan, isPoint := plan.(*PointGetPlan) + if fastPoint && isPoint { // special optimization for fast point plans + if stmt.PointGet.FastPlan == nil { + stmt.PointGet.FastPlan = new(PointGetPlan) + } + FastClonePointGetForPlanCache(sctx.GetPlanCtx(), pointPlan, stmt.PointGet.FastPlan) + clonedPlan = stmt.PointGet.FastPlan + } else { + clonedPlan, ok = plan.CloneForPlanCache(sctx.GetPlanCtx()) + if !ok { // clone the value to solve concurrency problem + return nil, false + } + } + if intest.InTest && ctx.Value(PlanCacheKeyTestClone{}) != nil { + ctx.Value(PlanCacheKeyTestClone{}).(func(plan, cloned base.Plan))(plan, clonedPlan) + } + return clonedPlan, true } func instancePlanCacheEnabled(ctx context.Context) bool { @@ -243,38 +277,41 @@ func instancePlanCacheEnabled(ctx context.Context) bool { return enableInstancePlanCache } -func lookupPlanCache(ctx context.Context, sctx sessionctx.Context, cacheKey string, paramTypes []*types.FieldType) (cachedVal *PlanCacheValue, hit bool) { +func lookupPlanCache(ctx context.Context, sctx sessionctx.Context, cacheKey string, + paramTypes []*types.FieldType) (plan base.Plan, outputCols types.NameSlice, stmtHints *hint.StmtHints, hit bool) { useInstanceCache := instancePlanCacheEnabled(ctx) defer func(begin time.Time) { if hit { core_metrics.GetPlanCacheLookupDuration(useInstanceCache).Observe(time.Since(begin).Seconds()) } }(time.Now()) + var v any if useInstanceCache { - if v, hit := domain.GetDomain(sctx).GetInstancePlanCache().Get(cacheKey, paramTypes); hit { - cachedVal = v.(*PlanCacheValue) - return cachedVal.CloneForInstancePlanCache(ctx, sctx.GetPlanCtx()) // clone the value to solve concurrency problem - } + v, hit = domain.GetDomain(sctx).GetInstancePlanCache().Get(cacheKey, paramTypes) } else { - if v, hit := sctx.GetSessionPlanCache().Get(cacheKey, paramTypes); hit { - return v.(*PlanCacheValue), true - } + v, hit = sctx.GetSessionPlanCache().Get(cacheKey, paramTypes) + } + if !hit { + return nil, nil, nil, false } - return nil, false + pcv := v.(*PlanCacheValue) + sctx.GetSessionVars().PlanCacheValue = pcv + return pcv.Plan, pcv.OutputColumns, pcv.StmtHints, true } -func adjustCachedPlan(ctx context.Context, sctx sessionctx.Context, cachedVal *PlanCacheValue, isNonPrepared, skipPrivCheck bool, - bindSQL string, is infoschema.InfoSchema, stmt *PlanCacheStmt) (base.Plan, - []*types.FieldName, bool, error) { +func adjustCachedPlan(ctx context.Context, sctx sessionctx.Context, + plan base.Plan, stmtHints *hint.StmtHints, isNonPrepared, skipPrivCheck bool, + bindSQL string, is infoschema.InfoSchema, stmt *PlanCacheStmt) ( + base.Plan, bool, error) { sessVars := sctx.GetSessionVars() stmtCtx := sessVars.StmtCtx if !skipPrivCheck { // keep the prior behavior if err := checkPreparedPriv(ctx, sctx, stmt, is); err != nil { - return nil, nil, false, err + return nil, false, err } } - if !RebuildPlan4CachedPlan(cachedVal.Plan) { - return nil, nil, false, nil + if !RebuildPlan4CachedPlan(plan) { + return nil, false, nil } sessVars.FoundInPlanCache = true if len(bindSQL) > 0 { // We're using binding, set this to true. @@ -286,14 +323,14 @@ func adjustCachedPlan(ctx context.Context, sctx sessionctx.Context, cachedVal *P core_metrics.GetPlanCacheHitCounter(isNonPrepared).Inc() } stmtCtx.SetPlanDigest(stmt.NormalizedPlan, stmt.PlanDigest) - stmtCtx.StmtHints = *cachedVal.stmtHints - return cachedVal.Plan, cachedVal.OutputColumns, true, nil + stmtCtx.StmtHints = *stmtHints + return plan, true, nil } // generateNewPlan call the optimizer to generate a new plan for current statement // and try to add it to cache func generateNewPlan(ctx context.Context, sctx sessionctx.Context, isNonPrepared bool, is infoschema.InfoSchema, - stmt *PlanCacheStmt, cacheKey string, paramTypes []*types.FieldType) (base.Plan, []*types.FieldName, error) { + stmt *PlanCacheStmt, cacheKey, binding string, paramTypes []*types.FieldType) (base.Plan, []*types.FieldName, error) { stmtAst := stmt.PreparedAst sessVars := sctx.GetSessionVars() stmtCtx := sessVars.StmtCtx @@ -316,8 +353,8 @@ func generateNewPlan(ctx context.Context, sctx sessionctx.Context, isNonPrepared // put this plan into the plan cache. if stmtCtx.UseCache() { - cached := NewPlanCacheValue(p, names, paramTypes, &stmtCtx.StmtHints) stmt.NormalizedPlan, stmt.PlanDigest = NormalizePlan(p) + cached := NewPlanCacheValue(sctx, stmt, cacheKey, binding, p, names, paramTypes, &stmtCtx.StmtHints) stmtCtx.SetPlan(p) stmtCtx.SetPlanDigest(stmt.NormalizedPlan, stmt.PlanDigest) if instancePlanCacheEnabled(ctx) { @@ -325,6 +362,7 @@ func generateNewPlan(ctx context.Context, sctx sessionctx.Context, isNonPrepared } else { sctx.GetSessionPlanCache().Put(cacheKey, cached, paramTypes) } + sctx.GetSessionVars().PlanCacheValue = cached } sessVars.FoundInPlanCache = false return p, names, err diff --git a/pkg/planner/core/plan_cache_instance.go b/pkg/planner/core/plan_cache_instance.go index 5cdfbab6a8de1..59273083b3a63 100644 --- a/pkg/planner/core/plan_cache_instance.go +++ b/pkg/planner/core/plan_cache_instance.go @@ -88,7 +88,7 @@ func (pc *instancePlanCache) Get(key string, paramTypes any) (value any, ok bool func (pc *instancePlanCache) getPlanFromList(headNode *instancePCNode, paramTypes any) (any, bool) { for node := headNode.next.Load(); node != nil; node = node.next.Load() { - if checkTypesCompatibility4PC(node.value.paramTypes, paramTypes) { // v.Plan is read-only, no need to lock + if checkTypesCompatibility4PC(node.value.ParamTypes, paramTypes) { // v.Plan is read-only, no need to lock if !pc.inEvict.Load() { node.lastUsed.Store(time.Now()) // atomically update the lastUsed field } @@ -130,17 +130,28 @@ func (pc *instancePlanCache) Put(key string, value, paramTypes any) (succ bool) return } +// All returns all cached values. +// All returned values are read-only, don't modify them. +func (pc *instancePlanCache) All() (values []any) { + values = make([]any, 0, pc.Size()) + pc.foreach(func(_, this *instancePCNode) bool { + values = append(values, this.value) + return false + }) + return +} + // Evict evicts some values. There should be a background thread to perform the eviction. // step 1: iterate all values to collect their last_used // step 2: estimate an eviction threshold time based on all last_used values // step 3: iterate all values again and evict qualified values -func (pc *instancePlanCache) Evict() (detailInfo string, numEvicted int) { +func (pc *instancePlanCache) Evict(evictAll bool) (detailInfo string, numEvicted int) { pc.evictMutex.Lock() // make sure only one thread to trigger eviction for safety defer pc.evictMutex.Unlock() pc.inEvict.Store(true) defer pc.inEvict.Store(false) currentTot, softLimit := pc.totCost.Load(), pc.softMemLimit.Load() - if currentTot < softLimit { + if !evictAll && currentTot < softLimit { detailInfo = fmt.Sprintf("memory usage is below the soft limit, currentTot: %v, softLimit: %v", currentTot, softLimit) return } @@ -149,7 +160,12 @@ func (pc *instancePlanCache) Evict() (detailInfo string, numEvicted int) { lastUsedTimes = append(lastUsedTimes, this.lastUsed.Load()) return false }) - threshold := pc.calcEvictionThreshold(lastUsedTimes) // step 2 + var threshold time.Time + if evictAll { + threshold = time.Now().Add(time.Hour * 24) // a future time + } else { + threshold = pc.calcEvictionThreshold(lastUsedTimes) // step 2 + } detailInfo = fmt.Sprintf("evict threshold: %v", threshold) pc.foreach(func(prev, this *instancePCNode) bool { // step 3 if !this.lastUsed.Load().After(threshold) { // if lastUsed<=threshold, evict this value diff --git a/pkg/planner/core/plan_cache_instance_test.go b/pkg/planner/core/plan_cache_instance_test.go index d9bbc7a846601..2e9142602876a 100644 --- a/pkg/planner/core/plan_cache_instance_test.go +++ b/pkg/planner/core/plan_cache_instance_test.go @@ -28,7 +28,7 @@ import ( ) func _put(pc sessionctx.InstancePlanCache, testKey, memUsage, statsHash int64) (succ bool) { - v := &PlanCacheValue{testKey: testKey, memoryUsage: memUsage} + v := &PlanCacheValue{testKey: testKey, Memory: memUsage} return pc.Put(fmt.Sprintf("%v-%v", testKey, statsHash), v, nil) } @@ -84,7 +84,7 @@ func TestInstancePlanCacheBasic(t *testing.T) { _hit(t, pc, 1, 0) // access 1-3 to refresh their last_used _hit(t, pc, 2, 0) _hit(t, pc, 3, 0) - _, numEvicted := pc.Evict() + _, numEvicted := pc.Evict(false) require.Equal(t, numEvicted > 0, true) require.Equal(t, pc.MemUsage(), int64(300)) _hit(t, pc, 1, 0) // access 1-3 to refresh their last_used @@ -98,7 +98,7 @@ func TestInstancePlanCacheBasic(t *testing.T) { _put(pc, 1, 100, 0) _put(pc, 2, 100, 0) _put(pc, 3, 100, 0) - _, numEvicted = pc.Evict() + _, numEvicted = pc.Evict(false) require.Equal(t, numEvicted > 0, false) require.Equal(t, pc.MemUsage(), int64(300)) _hit(t, pc, 1, 0) @@ -115,7 +115,7 @@ func TestInstancePlanCacheBasic(t *testing.T) { numHeads := 0 pcImpl.heads.Range(func(k, v any) bool { numHeads++; return true }) require.Equal(t, numHeads, 3) - _, numEvicted = pc.Evict() + _, numEvicted = pc.Evict(false) require.Equal(t, numEvicted > 0, true) require.Equal(t, pc.MemUsage(), int64(0)) numHeads = 0 @@ -177,7 +177,7 @@ func TestInstancePlanCacheWithMatchOpts(t *testing.T) { _hit(t, pc, 1, 1) // refresh 1-3's last_used _hit(t, pc, 1, 2) _hit(t, pc, 1, 3) - _, numEvicted := pc.Evict() + _, numEvicted := pc.Evict(false) require.True(t, numEvicted > 0) require.Equal(t, pc.MemUsage(), int64(300)) _hit(t, pc, 1, 1) @@ -187,6 +187,27 @@ func TestInstancePlanCacheWithMatchOpts(t *testing.T) { _miss(t, pc, 1, 5) } +func TestInstancePlanCacheEvictAll(t *testing.T) { + sctx := MockContext() + defer func() { + domain.GetDomain(sctx).StatsHandle().Close() + }() + sctx.GetSessionVars().PlanCacheInvalidationOnFreshStats = true + + // same key with different statsHash + pc := NewInstancePlanCache(1000, 1000) + _put(pc, 1, 100, 1) + _put(pc, 1, 100, 2) + _put(pc, 1, 100, 3) + _, numEvicted := pc.Evict(true) + require.Equal(t, 3, numEvicted) + _miss(t, pc, 1, 1) + _miss(t, pc, 1, 2) + _miss(t, pc, 1, 3) + require.Equal(t, pc.MemUsage(), int64(0)) + require.Equal(t, pc.Size(), int64(0)) +} + func TestInstancePlanCacheConcurrentRead(t *testing.T) { sctx := MockContext() defer func() { diff --git a/pkg/planner/core/plan_cache_lru.go b/pkg/planner/core/plan_cache_lru.go index 7fc9b512f718d..6e18298d73228 100644 --- a/pkg/planner/core/plan_cache_lru.go +++ b/pkg/planner/core/plan_cache_lru.go @@ -241,7 +241,7 @@ func (l *LRUPlanCache) memoryControl() { // PickPlanFromBucket pick one plan from bucket func (*LRUPlanCache) pickFromBucket(bucket map[*list.Element]struct{}, paramTypes any) (*list.Element, bool) { for k := range bucket { - if checkTypesCompatibility4PC(k.Value.(*planCacheEntry).PlanValue.(*PlanCacheValue).paramTypes, paramTypes) { + if checkTypesCompatibility4PC(k.Value.(*planCacheEntry).PlanValue.(*PlanCacheValue).ParamTypes, paramTypes) { return k, true } } diff --git a/pkg/planner/core/plan_cache_lru_test.go b/pkg/planner/core/plan_cache_lru_test.go index 14e0a16547299..178fa21df599e 100644 --- a/pkg/planner/core/plan_cache_lru_test.go +++ b/pkg/planner/core/plan_cache_lru_test.go @@ -38,7 +38,7 @@ func randomPlanCacheValue(types []*types.FieldType) *PlanCacheValue { random := rand.New(rand.NewSource(time.Now().UnixNano())) return &PlanCacheValue{ Plan: plans[random.Int()%len(plans)], - paramTypes: types, + ParamTypes: types, } } @@ -73,7 +73,7 @@ func TestLRUPCPut(t *testing.T) { keys[i] = "key-1" opts := pTypes[i] vals[i] = &PlanCacheValue{ - paramTypes: opts, + ParamTypes: opts, } lru.Put(keys[i], vals[i], opts) } @@ -144,7 +144,7 @@ func TestLRUPCGet(t *testing.T) { keys[i] = fmt.Sprintf("key-%v", i%4) opts := pTypes[i] vals[i] = &PlanCacheValue{ - paramTypes: opts, + ParamTypes: opts, } lru.Put(keys[i], vals[i], opts) } @@ -197,7 +197,7 @@ func TestLRUPCDelete(t *testing.T) { keys[i] = fmt.Sprintf("key-%v", i) opts := pTypes[i] vals[i] = &PlanCacheValue{ - paramTypes: opts, + ParamTypes: opts, } lru.Put(keys[i], vals[i], opts) } @@ -233,7 +233,7 @@ func TestLRUPCDeleteAll(t *testing.T) { keys[i] = fmt.Sprintf("key-%v", i) opts := pTypes[i] vals[i] = &PlanCacheValue{ - paramTypes: opts, + ParamTypes: opts, } lru.Put(keys[i], vals[i], opts) } @@ -276,7 +276,7 @@ func TestLRUPCSetCapacity(t *testing.T) { keys[i] = "key-1" opts := pTypes[i] vals[i] = &PlanCacheValue{ - paramTypes: opts, + ParamTypes: opts, } lru.Put(keys[i], vals[i], opts) } @@ -328,7 +328,7 @@ func TestIssue37914(t *testing.T) { pTypes := []*types.FieldType{types.NewFieldType(mysql.TypeFloat), types.NewFieldType(mysql.TypeDouble)} key := "key-1" opts := pTypes - val := &PlanCacheValue{paramTypes: opts} + val := &PlanCacheValue{ParamTypes: opts} require.NotPanics(t, func() { lru.Put(key, val, opts) @@ -356,7 +356,7 @@ func TestIssue38244(t *testing.T) { for i := 0; i < 5; i++ { keys[i] = fmt.Sprintf("key-%v", i) opts := pTypes[i] - vals[i] = &PlanCacheValue{paramTypes: opts} + vals[i] = &PlanCacheValue{ParamTypes: opts} lru.Put(keys[i], vals[i], opts) } require.Equal(t, lru.size, lru.capacity) diff --git a/pkg/planner/core/plan_cache_rebuild.go b/pkg/planner/core/plan_cache_rebuild.go index 0280d453d4bad..3a274caf106c6 100644 --- a/pkg/planner/core/plan_cache_rebuild.go +++ b/pkg/planner/core/plan_cache_rebuild.go @@ -76,7 +76,6 @@ func updateRange(p base.PhysicalPlan, ranges ranger.Ranges, rangeInfo string) { // usage exceeds range mem limit 100B, and range fallback happens and tidb may fetch more rows than users expect. func rebuildRange(p base.Plan) error { sctx := p.SCtx() - sc := p.SCtx().GetSessionVars().StmtCtx var err error switch x := p.(type) { case *PhysicalIndexHashJoin: @@ -124,155 +123,12 @@ func rebuildRange(p base.Plan) error { return err } case *PointGetPlan: - if x.TblInfo.GetPartitionInfo() != nil { - if fixcontrol.GetBoolWithDefault(sctx.GetSessionVars().OptimizerFixControl, fixcontrol.Fix33031, false) { - return errors.NewNoStackError("Fix33031 fix-control set and partitioned table in cached Point Get plan") - } - } - // if access condition is not nil, which means it's a point get generated by cbo. - if x.AccessConditions != nil { - if x.IndexInfo != nil { - ranges, err := ranger.DetachCondAndBuildRangeForIndex(x.ctx.GetRangerCtx(), x.AccessConditions, x.IdxCols, x.IdxColLens, 0) - if err != nil { - return err - } - if len(ranges.Ranges) != 1 || !isSafeRange(x.AccessConditions, ranges, false, nil) { - return errors.New("rebuild to get an unsafe range") - } - for i := range x.IndexValues { - x.IndexValues[i] = ranges.Ranges[0].LowVal[i] - } - } else { - var pkCol *expression.Column - var unsignedIntHandle bool - if x.TblInfo.PKIsHandle { - if pkColInfo := x.TblInfo.GetPkColInfo(); pkColInfo != nil { - pkCol = expression.ColInfo2Col(x.schema.Columns, pkColInfo) - } - if !x.TblInfo.IsCommonHandle { - unsignedIntHandle = true - } - } - if pkCol != nil { - ranges, accessConds, remainingConds, err := ranger.BuildTableRange(x.AccessConditions, x.ctx.GetRangerCtx(), pkCol.RetType, 0) - if err != nil { - return err - } - if len(ranges) != 1 || !isSafeRange(x.AccessConditions, &ranger.DetachRangeResult{ - Ranges: ranges, - AccessConds: accessConds, - RemainedConds: remainingConds, - }, unsignedIntHandle, nil) { - return errors.New("rebuild to get an unsafe range") - } - x.Handle = kv.IntHandle(ranges[0].LowVal[0].GetInt64()) - } - } - } - if x.HandleConstant != nil { - dVal, err := convertConstant2Datum(sctx, x.HandleConstant, x.handleFieldType) - if err != nil { - return err - } - iv, err := dVal.ToInt64(sc.TypeCtx()) - if err != nil { - return err - } - x.Handle = kv.IntHandle(iv) - return nil - } - for i, param := range x.IndexConstants { - if param != nil { - dVal, err := convertConstant2Datum(sctx, param, x.ColsFieldType[i]) - if err != nil { - return err - } - x.IndexValues[i] = *dVal - } + if err = buildRangesForPointGet(sctx, x); err != nil { + return err } - return nil case *BatchPointGetPlan: - if x.TblInfo.GetPartitionInfo() != nil && fixcontrol.GetBoolWithDefault(sctx.GetSessionVars().OptimizerFixControl, fixcontrol.Fix33031, false) { - return errors.NewNoStackError("Fix33031 fix-control set and partitioned table in cached Batch Point Get plan") - } - // if access condition is not nil, which means it's a point get generated by cbo. - if x.AccessConditions != nil { - if x.IndexInfo != nil { - ranges, err := ranger.DetachCondAndBuildRangeForIndex(x.ctx.GetRangerCtx(), x.AccessConditions, x.IdxCols, x.IdxColLens, 0) - if err != nil { - return err - } - if len(ranges.Ranges) != len(x.IndexValues) || !isSafeRange(x.AccessConditions, ranges, false, nil) { - return errors.New("rebuild to get an unsafe range") - } - for i := range ranges.Ranges { - copy(x.IndexValues[i], ranges.Ranges[i].LowVal) - } - } else { - var pkCol *expression.Column - var unsignedIntHandle bool - if x.TblInfo.PKIsHandle { - if pkColInfo := x.TblInfo.GetPkColInfo(); pkColInfo != nil { - pkCol = expression.ColInfo2Col(x.schema.Columns, pkColInfo) - } - if !x.TblInfo.IsCommonHandle { - unsignedIntHandle = true - } - } - if pkCol != nil { - ranges, accessConds, remainingConds, err := ranger.BuildTableRange(x.AccessConditions, x.ctx.GetRangerCtx(), pkCol.RetType, 0) - if err != nil { - return err - } - if len(ranges) != len(x.Handles) || !isSafeRange(x.AccessConditions, &ranger.DetachRangeResult{ - Ranges: ranges, - AccessConds: accessConds, - RemainedConds: remainingConds, - }, unsignedIntHandle, nil) { - return errors.New("rebuild to get an unsafe range") - } - for i := range ranges { - x.Handles[i] = kv.IntHandle(ranges[i].LowVal[0].GetInt64()) - } - } - } - } - if len(x.HandleParams) > 0 { - if len(x.HandleParams) != len(x.Handles) { - return errors.New("rebuild to get an unsafe range, Handles length diff") - } - for i, param := range x.HandleParams { - if param != nil { - dVal, err := convertConstant2Datum(sctx, param, x.HandleType) - if err != nil { - return err - } - iv, err := dVal.ToInt64(sc.TypeCtx()) - if err != nil { - return err - } - x.Handles[i] = kv.IntHandle(iv) - } - } - } - if len(x.IndexValueParams) > 0 { - if len(x.IndexValueParams) != len(x.IndexValues) { - return errors.New("rebuild to get an unsafe range, IndexValue length diff") - } - for i, params := range x.IndexValueParams { - if len(params) < 1 { - continue - } - for j, param := range params { - if param != nil { - dVal, err := convertConstant2Datum(sctx, param, x.IndexColTypes[j]) - if err != nil { - return err - } - x.IndexValues[i][j] = *dVal - } - } - } + if err = buildRangesForBatchGet(sctx, x); err != nil { + return err } case *PhysicalIndexMergeReader: indexMerge := p.(*PhysicalIndexMergeReader) @@ -390,6 +246,162 @@ func buildRangeForTableScan(sctx base.PlanContext, ts *PhysicalTableScan) (err e return } +func buildRangesForPointGet(sctx base.PlanContext, x *PointGetPlan) (err error) { + if x.TblInfo.GetPartitionInfo() != nil { + if fixcontrol.GetBoolWithDefault(sctx.GetSessionVars().OptimizerFixControl, fixcontrol.Fix33031, false) { + return errors.NewNoStackError("Fix33031 fix-control set and partitioned table in cached Point Get plan") + } + } + // if access condition is not nil, which means it's a point get generated by cbo. + if x.AccessConditions != nil { + if x.IndexInfo != nil { + ranges, err := ranger.DetachCondAndBuildRangeForIndex(x.SCtx().GetRangerCtx(), x.AccessConditions, x.IdxCols, x.IdxColLens, 0) + if err != nil { + return err + } + if len(ranges.Ranges) != 1 || !isSafeRange(x.AccessConditions, ranges, false, nil) { + return errors.New("rebuild to get an unsafe range") + } + for i := range x.IndexValues { + x.IndexValues[i] = ranges.Ranges[0].LowVal[i] + } + } else { + var pkCol *expression.Column + var unsignedIntHandle bool + if x.TblInfo.PKIsHandle { + if pkColInfo := x.TblInfo.GetPkColInfo(); pkColInfo != nil { + pkCol = expression.ColInfo2Col(x.schema.Columns, pkColInfo) + } + if !x.TblInfo.IsCommonHandle { + unsignedIntHandle = true + } + } + if pkCol != nil { + ranges, accessConds, remainingConds, err := ranger.BuildTableRange(x.AccessConditions, x.SCtx().GetRangerCtx(), pkCol.RetType, 0) + if err != nil { + return err + } + if len(ranges) != 1 || !isSafeRange(x.AccessConditions, &ranger.DetachRangeResult{ + Ranges: ranges, + AccessConds: accessConds, + RemainedConds: remainingConds, + }, unsignedIntHandle, nil) { + return errors.New("rebuild to get an unsafe range") + } + x.Handle = kv.IntHandle(ranges[0].LowVal[0].GetInt64()) + } + } + } + if x.HandleConstant != nil { + dVal, err := convertConstant2Datum(sctx, x.HandleConstant, x.handleFieldType) + if err != nil { + return err + } + iv, err := dVal.ToInt64(sctx.GetSessionVars().StmtCtx.TypeCtx()) + if err != nil { + return err + } + x.Handle = kv.IntHandle(iv) + return nil + } + for i, param := range x.IndexConstants { + if param != nil { + dVal, err := convertConstant2Datum(sctx, param, x.ColsFieldType[i]) + if err != nil { + return err + } + x.IndexValues[i] = *dVal + } + } + return nil +} + +func buildRangesForBatchGet(sctx base.PlanContext, x *BatchPointGetPlan) (err error) { + if x.TblInfo.GetPartitionInfo() != nil && fixcontrol.GetBoolWithDefault(sctx.GetSessionVars().OptimizerFixControl, fixcontrol.Fix33031, false) { + return errors.NewNoStackError("Fix33031 fix-control set and partitioned table in cached Batch Point Get plan") + } + // if access condition is not nil, which means it's a point get generated by cbo. + if x.AccessConditions != nil { + if x.IndexInfo != nil { + ranges, err := ranger.DetachCondAndBuildRangeForIndex(x.ctx.GetRangerCtx(), x.AccessConditions, x.IdxCols, x.IdxColLens, 0) + if err != nil { + return err + } + if len(ranges.Ranges) != len(x.IndexValues) || !isSafeRange(x.AccessConditions, ranges, false, nil) { + return errors.New("rebuild to get an unsafe range") + } + for i := range ranges.Ranges { + copy(x.IndexValues[i], ranges.Ranges[i].LowVal) + } + } else { + var pkCol *expression.Column + var unsignedIntHandle bool + if x.TblInfo.PKIsHandle { + if pkColInfo := x.TblInfo.GetPkColInfo(); pkColInfo != nil { + pkCol = expression.ColInfo2Col(x.schema.Columns, pkColInfo) + } + if !x.TblInfo.IsCommonHandle { + unsignedIntHandle = true + } + } + if pkCol != nil { + ranges, accessConds, remainingConds, err := ranger.BuildTableRange(x.AccessConditions, x.ctx.GetRangerCtx(), pkCol.RetType, 0) + if err != nil { + return err + } + if len(ranges) != len(x.Handles) || !isSafeRange(x.AccessConditions, &ranger.DetachRangeResult{ + Ranges: ranges, + AccessConds: accessConds, + RemainedConds: remainingConds, + }, unsignedIntHandle, nil) { + return errors.New("rebuild to get an unsafe range") + } + for i := range ranges { + x.Handles[i] = kv.IntHandle(ranges[i].LowVal[0].GetInt64()) + } + } + } + } + if len(x.HandleParams) > 0 { + if len(x.HandleParams) != len(x.Handles) { + return errors.New("rebuild to get an unsafe range, Handles length diff") + } + for i, param := range x.HandleParams { + if param != nil { + dVal, err := convertConstant2Datum(sctx, param, x.HandleType) + if err != nil { + return err + } + iv, err := dVal.ToInt64(sctx.GetSessionVars().StmtCtx.TypeCtx()) + if err != nil { + return err + } + x.Handles[i] = kv.IntHandle(iv) + } + } + } + if len(x.IndexValueParams) > 0 { + if len(x.IndexValueParams) != len(x.IndexValues) { + return errors.New("rebuild to get an unsafe range, IndexValue length diff") + } + for i, params := range x.IndexValueParams { + if len(params) < 1 { + continue + } + for j, param := range params { + if param != nil { + dVal, err := convertConstant2Datum(sctx, param, x.IndexColTypes[j]) + if err != nil { + return err + } + x.IndexValues[i][j] = *dVal + } + } + } + } + return nil +} + func buildRangeForIndexScan(sctx base.PlanContext, is *PhysicalIndexScan) (err error) { if len(is.IdxCols) == 0 { if ranger.HasFullRange(is.Ranges, false) { // the original range is already a full-range. diff --git a/pkg/planner/core/plan_cache_rebuild_test.go b/pkg/planner/core/plan_cache_rebuild_test.go index d0eb813b978eb..f502d1d863b7d 100644 --- a/pkg/planner/core/plan_cache_rebuild_test.go +++ b/pkg/planner/core/plan_cache_rebuild_test.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "math/rand" + "os" "reflect" "strings" "testing" @@ -25,8 +26,11 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/parser" + "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/resolve" "github.com/pingcap/tidb/pkg/planner/util" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" @@ -236,7 +240,9 @@ func testCachedPlanClone(t *testing.T, tk1, tk2 *testkit.TestKit, prep, set, exe require.NoError(t, checkUnclearPlanCacheClone(plan, cloned, ".ctx", ".AccessCondition", ".filterCondition", ".Conditions", ".Exprs", ".IndexConstants", "*collate", ".IdxCols", ".OutputColumns", ".EqualConditions", ".OuterHashKeys", ".InnerHashKeys", - ".HandleParams", ".IndexValueParams", ".Insert.Lists", ".accessCols")) + ".HandleParams", ".IndexValueParams", ".Insert.Lists", ".accessCols", ".physicalSchemaProducer.schema", + ".PruningConds", ".PlanPartInfo.Columns", ".PlanPartInfo.ColumnNames", ".baseSchemaProducer.schema", + ".pkIsHandleCol", "JoinKeys", ".OtherConditions", ".ExtraHandleCol", ".PointGetPlan.HandleConstant")) }) if isDML { tk2.MustExecWithContext(ctx, exec2) @@ -439,3 +445,86 @@ type visit struct { a2 unsafe.Pointer typ reflect.Type } + +func TestFastPointGetClone(t *testing.T) { + codeFile := "plan_clone_utils.go" + codeData, err := os.ReadFile(codeFile) + require.NoError(t, err) + codeLines := strings.Split(string(codeData), "\n") + beginPrefix := `func FastClonePointGetForPlanCache(` + endPrefix := `}` + beginIdx, endIdx := -1, -1 + for i, line := range codeLines { + if strings.HasPrefix(line, beginPrefix) { + beginIdx = i + } + if beginIdx != -1 && strings.HasPrefix(line, endPrefix) { + endIdx = i + break + } + } + cloneFuncCode := strings.Join(codeLines[beginIdx:endIdx+1], "\n") + fieldNoNeedToClone := map[string]struct{}{ + "cost": {}, + "planCostInit": {}, + "planCost": {}, + "planCostVer2": {}, + "accessCols": {}, + } + + pointPlan := reflect.TypeOf(core.PointGetPlan{}) + for i := 0; i < pointPlan.NumField(); i++ { + fieldName := pointPlan.Field(i).Name + if _, ok := fieldNoNeedToClone[fieldName]; ok { + continue + } + assignFieldCode := fmt.Sprintf("%v =", fieldName) + if !strings.Contains(cloneFuncCode, assignFieldCode) { + errMsg := fmt.Sprintf("field %v might not be set in FastClonePointGetForPlanCache correctly", fieldName) + t.Fatal(errMsg) + } + } +} + +func BenchmarkPointGetCloneFast(b *testing.B) { + store, domain := testkit.CreateMockStoreAndDomain(b) + tk := testkit.NewTestKit(b, store) + tk.MustExec(`use test`) + tk.MustExec(`create table t (a int, b int, primary key(a, b))`) + + p := parser.New() + stmt, err := p.ParseOneStmt("select a, b from t where a=1 and b=1", "", "") + require.NoError(b, err) + nodeW := resolve.NewNodeW(stmt) + plan, _, err := planner.Optimize(context.TODO(), tk.Session(), nodeW, domain.InfoSchema()) + require.NoError(b, err) + + b.ResetTimer() + src := plan.(*core.PointGetPlan) + dst := new(core.PointGetPlan) + sctx := tk.Session().GetPlanCtx() + for i := 0; i < b.N; i++ { + core.FastClonePointGetForPlanCache(sctx, src, dst) + } +} + +func BenchmarkPointGetClone(b *testing.B) { + store, domain := testkit.CreateMockStoreAndDomain(b) + tk := testkit.NewTestKit(b, store) + tk.MustExec(`use test`) + tk.MustExec(`create table t (a int, b int, primary key(a, b))`) + + p := parser.New() + stmt, err := p.ParseOneStmt("select a, b from t where a=1 and b=1", "", "") + require.NoError(b, err) + nodeW := resolve.NewNodeW(stmt) + plan, _, err := planner.Optimize(context.TODO(), tk.Session(), nodeW, domain.InfoSchema()) + require.NoError(b, err) + + b.ResetTimer() + src := plan.(*core.PointGetPlan) + sctx := tk.Session().GetPlanCtx() + for i := 0; i < b.N; i++ { + src.CloneForPlanCache(sctx) + } +} diff --git a/pkg/planner/core/plan_cache_utils.go b/pkg/planner/core/plan_cache_utils.go index c5911254ff6ae..bf927cfacdb5e 100644 --- a/pkg/planner/core/plan_cache_utils.go +++ b/pkg/planner/core/plan_cache_utils.go @@ -17,10 +17,15 @@ package core import ( "cmp" "context" + "crypto/sha256" + "encoding/hex" + "hash" "math" "slices" "sort" "strconv" + "sync" + "sync/atomic" "time" "github.com/pingcap/errors" @@ -422,43 +427,64 @@ func bool2Byte(flag bool) byte { // PlanCacheValue stores the cached Statement and StmtNode. type PlanCacheValue struct { - Plan base.Plan // not-read-only, session might update it before reusing - OutputColumns types.NameSlice // read-only - memoryUsage int64 // read-only - testKey int64 // test-only - paramTypes []*types.FieldType // read-only, all parameters' types, different parameters may share same plan - stmtHints *hint.StmtHints // read-only, hints which set session variables -} - -// CloneForInstancePlanCache clones a PlanCacheValue for instance plan cache. -// Since PlanCacheValue.Plan is not read-only, to solve the concurrency problem when sharing the same PlanCacheValue -// across multiple sessions, we need to clone the PlanCacheValue for each session. -func (v *PlanCacheValue) CloneForInstancePlanCache(ctx context.Context, newCtx base.PlanContext) (*PlanCacheValue, bool) { - clonedPlan, ok := v.Plan.CloneForPlanCache(newCtx) - if !ok { - return nil, false - } - if intest.InTest && ctx.Value(PlanCacheKeyTestClone{}) != nil { - ctx.Value(PlanCacheKeyTestClone{}).(func(plan, cloned base.Plan))(v.Plan, clonedPlan) - } - cloned := new(PlanCacheValue) - *cloned = *v - cloned.Plan = clonedPlan - return cloned, true + // Meta Info, all are READ-ONLY once initialized. + SQLDigest string + SQLText string + StmtType string // select, update, insert, delete, etc. + ParseUser string // the user who parses/compiles this plan. + Binding string // the binding of this plan. + OptimizerEnvHash string // other environment information that might affect the plan like "time_zone", "sql_mode". + ParseValues string // the actual values used when parsing/compiling this plan. + PlanDigest string // digest of the plan, used to identify the plan in the cache. + BinaryPlan string // binary of this Plan, use tidb_decode_binary_plan to decode this. + Memory int64 // the memory usage of this plan, in bytes. + LoadTime time.Time // the time when this plan is loaded into the cache. + Plan base.Plan // READ-ONLY for Instance Cache, READ-WRITE for Session Cache. + OutputColumns types.NameSlice // output column names of this plan + ParamTypes []*types.FieldType // all parameters' types, different parameters may share same plan + StmtHints *hint.StmtHints // related hints of this plan, like 'max_execution_time'. + + // Runtime Info, all are READ-WRITE, use UpdateRuntimeInfo() and RuntimeInfo() to access them. + executions int64 // the execution times. + processedKeys int64 // the total number of processed keys in TiKV. + totalKeys int64 // the total number of returned keys in TiKV. + sumLatency int64 // the total latency of this plan, in nanoseconds. + lastUsedTimeInUnix int64 // the last time when this plan is used, in Unix timestamp. + + testKey int64 // test-only } // unKnownMemoryUsage represent the memory usage of uncounted structure, maybe need implement later // 100 KiB is approximate consumption of a plan from our internal tests const unKnownMemoryUsage = int64(50 * size.KB) +// UpdateRuntimeInfo accumulates the runtime information of the plan. +func (v *PlanCacheValue) UpdateRuntimeInfo(proKeys, totKeys, latency int64) { + atomic.AddInt64(&v.executions, 1) + atomic.AddInt64(&v.processedKeys, proKeys) + atomic.AddInt64(&v.totalKeys, totKeys) + atomic.AddInt64(&v.sumLatency, latency) + atomic.StoreInt64(&v.lastUsedTimeInUnix, time.Now().Unix()) +} + +// RuntimeInfo returns the runtime information of the plan. +func (v *PlanCacheValue) RuntimeInfo() (exec, procKeys, totKeys, sumLat int64, lastUsedTime time.Time) { + exec = atomic.LoadInt64(&v.executions) + procKeys = atomic.LoadInt64(&v.processedKeys) + totKeys = atomic.LoadInt64(&v.totalKeys) + sumLat = atomic.LoadInt64(&v.sumLatency) + lastUsedTime = time.Unix(atomic.LoadInt64(&v.lastUsedTimeInUnix), 0) + return +} + // MemoryUsage return the memory usage of PlanCacheValue func (v *PlanCacheValue) MemoryUsage() (sum int64) { if v == nil { return } - if v.memoryUsage > 0 { - return v.memoryUsage + if v.Memory > 0 { + return v.Memory } switch x := v.Plan.(type) { case base.PhysicalPlan: @@ -475,9 +501,9 @@ func (v *PlanCacheValue) MemoryUsage() (sum int64) { sum += size.SizeOfInterface + size.SizeOfSlice*2 + int64(cap(v.OutputColumns))*size.SizeOfPointer + size.SizeOfMap + size.SizeOfInt64*2 - if v.paramTypes != nil { - sum += int64(cap(v.paramTypes)) * size.SizeOfPointer - for _, ft := range v.paramTypes { + if v.ParamTypes != nil { + sum += int64(cap(v.ParamTypes)) * size.SizeOfPointer + for _, ft := range v.ParamTypes { sum += ft.MemoryUsage() } } @@ -485,23 +511,76 @@ func (v *PlanCacheValue) MemoryUsage() (sum int64) { for _, name := range v.OutputColumns { sum += name.MemoryUsage() } - v.memoryUsage = sum + sum += int64(len(v.SQLDigest)) + int64(len(v.SQLText)) + int64(len(v.StmtType)) + int64(len(v.BinaryPlan)) + + int64(len(v.ParseUser)) + int64(len(v.Binding)) + int64(len(v.OptimizerEnvHash)) + int64(len(v.ParseValues)) + + // Runtime Info Size + sum += size.SizeOfFloat64 * 7 + + v.Memory = sum return } +var planCacheHasherPool = sync.Pool{ + New: func() any { + return sha256.New() + }, +} + // NewPlanCacheValue creates a SQLCacheValue. -func NewPlanCacheValue(plan base.Plan, names []*types.FieldName, - paramTypes []*types.FieldType, stmtHints *hint.StmtHints) *PlanCacheValue { +func NewPlanCacheValue( + sctx sessionctx.Context, + stmt *PlanCacheStmt, + cacheKey string, + binding string, + plan base.Plan, // the cached plan, + names []*types.FieldName, // output column names of this plan, + paramTypes []*types.FieldType, // corresponding parameter types of this plan, + stmtHints *hint.StmtHints, // corresponding hints of this plan, +) *PlanCacheValue { userParamTypes := make([]*types.FieldType, len(paramTypes)) for i, tp := range paramTypes { userParamTypes[i] = tp.Clone() } - return &PlanCacheValue{ + var userName string + if sctx.GetSessionVars().User != nil { // might be nil if in test + userName = sctx.GetSessionVars().User.AuthUsername + } + + flat := FlattenPhysicalPlan(plan, false) + binaryPlan := BinaryPlanStrFromFlatPlan(sctx.GetPlanCtx(), flat) + + // calculate opt env hash using cacheKey and paramTypes + // (cacheKey, paramTypes) contains all factors that can affect the plan + // use the same hash algo with SQLDigest: sha256 + hex + hasher := planCacheHasherPool.Get().(hash.Hash) + hasher.Write(hack.Slice(cacheKey)) + for _, tp := range paramTypes { + hasher.Write(hack.Slice(tp.String())) + } + optEnvHash := hex.EncodeToString(hasher.Sum(nil)) + hasher.Reset() + planCacheHasherPool.Put(hasher) + + pcv := &PlanCacheValue{ + SQLDigest: stmt.SQLDigest.String(), + SQLText: stmt.StmtText, + StmtType: stmt.PreparedAst.StmtType, + ParseUser: userName, + Binding: binding, + OptimizerEnvHash: optEnvHash, + ParseValues: types.DatumsToStrNoErr(sctx.GetSessionVars().PlanCacheParams.AllParamValues()), + PlanDigest: stmt.PlanDigest.String(), + BinaryPlan: binaryPlan, + + LoadTime: time.Now(), Plan: plan, OutputColumns: names, - paramTypes: userParamTypes, - stmtHints: stmtHints.Clone(), + ParamTypes: userParamTypes, + StmtHints: stmtHints.Clone(), } + pcv.MemoryUsage() // initialize the memory usage field + return pcv } // planCacheStmtProcessor records all query features which may affect plan selection. @@ -540,6 +619,11 @@ type PointGetExecutorCache struct { // Notice that we should only cache the PointGetExecutor that have a snapshot with MaxTS in it. // If the current plan is not PointGet or does not use MaxTS optimization, this value should be nil here. Executor any + + // FastPlan is only used for instance plan cache. + // To ensure thread-safe, we have to clone each plan before reusing if using instance plan cache. + // To reduce the memory allocation and increase performance, we cache the FastPlan here. + FastPlan *PointGetPlan } // PlanCacheStmt store prepared ast from PrepareExec and other related fields @@ -570,7 +654,7 @@ type PlanCacheStmt struct { SQLDigest *parser.Digest PlanDigest *parser.Digest ForUpdateRead bool - SnapshotTSEvaluator func(sessionctx.Context) (uint64, error) + SnapshotTSEvaluator func(context.Context, sessionctx.Context) (uint64, error) BindingInfo bindinfo.BindingMatchInfo diff --git a/pkg/planner/core/plan_clone_generated.go b/pkg/planner/core/plan_clone_generated.go index 96341bff0fbee..7bfbc0eec1618 100644 --- a/pkg/planner/core/plan_clone_generated.go +++ b/pkg/planner/core/plan_clone_generated.go @@ -22,144 +22,6 @@ import ( "github.com/pingcap/tidb/pkg/planner/util" ) -func clonePhysicalPlansForPlanCache(newCtx base.PlanContext, plans []base.PhysicalPlan) ([]base.PhysicalPlan, bool) { - clonedPlans := make([]base.PhysicalPlan, len(plans)) - for i, plan := range plans { - cloned, ok := plan.CloneForPlanCache(newCtx) - if !ok { - return nil, false - } - clonedPlans[i] = cloned.(base.PhysicalPlan) - } - return clonedPlans, true -} - -func cloneExpressionsForPlanCache(exprs []expression.Expression) []expression.Expression { - if exprs == nil { - return nil - } - allSafe := true - for _, e := range exprs { - if !e.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return exprs - } - cloned := make([]expression.Expression, 0, len(exprs)) - for _, e := range exprs { - if e.SafeToShareAcrossSession() { - cloned = append(cloned, e) - } else { - cloned = append(cloned, e.Clone()) - } - } - return cloned -} - -func cloneExpression2DForPlanCache(exprs [][]expression.Expression) [][]expression.Expression { - if exprs == nil { - return nil - } - cloned := make([][]expression.Expression, 0, len(exprs)) - for _, e := range exprs { - cloned = append(cloned, cloneExpressionsForPlanCache(e)) - } - return cloned -} - -func cloneScalarFunctionsForPlanCache(scalarFuncs []*expression.ScalarFunction) []*expression.ScalarFunction { - if scalarFuncs == nil { - return nil - } - allSafe := true - for _, f := range scalarFuncs { - if !f.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return scalarFuncs - } - cloned := make([]*expression.ScalarFunction, 0, len(scalarFuncs)) - for _, f := range scalarFuncs { - if f.SafeToShareAcrossSession() { - cloned = append(cloned, f) - } else { - cloned = append(cloned, f.Clone().(*expression.ScalarFunction)) - } - } - return cloned -} - -func cloneColumnsForPlanCache(cols []*expression.Column) []*expression.Column { - if cols == nil { - return nil - } - allSafe := true - for _, c := range cols { - if !c.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return cols - } - cloned := make([]*expression.Column, 0, len(cols)) - for _, c := range cols { - if c == nil { - cloned = append(cloned, nil) - continue - } - if c.SafeToShareAcrossSession() { - cloned = append(cloned, c) - } else { - cloned = append(cloned, c.Clone().(*expression.Column)) - } - } - return cloned -} - -func cloneConstantsForPlanCache(constants []*expression.Constant) []*expression.Constant { - if constants == nil { - return nil - } - allSafe := true - for _, c := range constants { - if !c.SafeToShareAcrossSession() { - allSafe = false - break - } - } - if allSafe { - return constants - } - cloned := make([]*expression.Constant, 0, len(constants)) - for _, c := range constants { - if c.SafeToShareAcrossSession() { - cloned = append(cloned, c) - } else { - cloned = append(cloned, c.Clone().(*expression.Constant)) - } - } - return cloned -} - -func cloneConstant2DForPlanCache(constants [][]*expression.Constant) [][]*expression.Constant { - if constants == nil { - return nil - } - cloned := make([][]*expression.Constant, 0, len(constants)) - for _, c := range constants { - cloned = append(cloned, cloneConstantsForPlanCache(c)) - } - return cloned -} - // CloneForPlanCache implements the base.Plan interface. func (op *PhysicalTableScan) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { cloned := new(PhysicalTableScan) @@ -169,17 +31,16 @@ func (op *PhysicalTableScan) CloneForPlanCache(newCtx base.PlanContext) (base.Pl return nil, false } cloned.physicalSchemaProducer = *basePlan - cloned.AccessCondition = cloneExpressionsForPlanCache(op.AccessCondition) - cloned.filterCondition = cloneExpressionsForPlanCache(op.filterCondition) - cloned.LateMaterializationFilterCondition = cloneExpressionsForPlanCache(op.LateMaterializationFilterCondition) - cloned.Ranges = util.CloneRanges(op.Ranges) + cloned.AccessCondition = cloneExpressionsForPlanCache(op.AccessCondition, nil) + cloned.filterCondition = cloneExpressionsForPlanCache(op.filterCondition, nil) + cloned.LateMaterializationFilterCondition = cloneExpressionsForPlanCache(op.LateMaterializationFilterCondition, nil) cloned.HandleIdx = make([]int, len(op.HandleIdx)) copy(cloned.HandleIdx, op.HandleIdx) if op.HandleCols != nil { cloned.HandleCols = op.HandleCols.Clone(newCtx.GetSessionVars().StmtCtx) } cloned.ByItems = util.CloneByItemss(op.ByItems) - cloned.PlanPartInfo = op.PlanPartInfo.Clone() + cloned.PlanPartInfo = op.PlanPartInfo.cloneForPlanCache() if op.SampleInfo != nil { return nil, false } @@ -203,17 +64,20 @@ func (op *PhysicalIndexScan) CloneForPlanCache(newCtx base.PlanContext) (base.Pl return nil, false } cloned.physicalSchemaProducer = *basePlan - cloned.AccessCondition = cloneExpressionsForPlanCache(op.AccessCondition) - cloned.IdxCols = cloneColumnsForPlanCache(op.IdxCols) + cloned.AccessCondition = cloneExpressionsForPlanCache(op.AccessCondition, nil) + cloned.IdxCols = cloneColumnsForPlanCache(op.IdxCols, nil) cloned.IdxColLens = make([]int, len(op.IdxColLens)) copy(cloned.IdxColLens, op.IdxColLens) - cloned.Ranges = util.CloneRanges(op.Ranges) if op.GenExprs != nil { return nil, false } cloned.ByItems = util.CloneByItemss(op.ByItems) if op.pkIsHandleCol != nil { - cloned.pkIsHandleCol = op.pkIsHandleCol.Clone().(*expression.Column) + if op.pkIsHandleCol.SafeToShareAcrossSession() { + cloned.pkIsHandleCol = op.pkIsHandleCol + } else { + cloned.pkIsHandleCol = op.pkIsHandleCol.Clone().(*expression.Column) + } } cloned.constColsByCond = make([]bool, len(op.constColsByCond)) copy(cloned.constColsByCond, op.constColsByCond) @@ -229,7 +93,7 @@ func (op *PhysicalSelection) CloneForPlanCache(newCtx base.PlanContext) (base.Pl return nil, false } cloned.BasePhysicalPlan = *basePlan - cloned.Conditions = cloneExpressionsForPlanCache(op.Conditions) + cloned.Conditions = cloneExpressionsForPlanCache(op.Conditions, nil) return cloned, true } @@ -242,7 +106,7 @@ func (op *PhysicalProjection) CloneForPlanCache(newCtx base.PlanContext) (base.P return nil, false } cloned.physicalSchemaProducer = *basePlan - cloned.Exprs = cloneExpressionsForPlanCache(op.Exprs) + cloned.Exprs = cloneExpressionsForPlanCache(op.Exprs, nil) return cloned, true } @@ -306,8 +170,8 @@ func (op *PhysicalHashJoin) CloneForPlanCache(newCtx base.PlanContext) (base.Pla return nil, false } cloned.basePhysicalJoin = *basePlan - cloned.EqualConditions = cloneScalarFunctionsForPlanCache(op.EqualConditions) - cloned.NAEqualConditions = cloneScalarFunctionsForPlanCache(op.NAEqualConditions) + cloned.EqualConditions = cloneScalarFunctionsForPlanCache(op.EqualConditions, nil) + cloned.NAEqualConditions = cloneScalarFunctionsForPlanCache(op.NAEqualConditions, nil) if op.runtimeFilterList != nil { return nil, false } @@ -343,7 +207,7 @@ func (op *PhysicalTableReader) CloneForPlanCache(newCtx base.PlanContext) (base. cloned.tablePlan = tablePlan.(base.PhysicalPlan) } cloned.TablePlans = flattenPushDownPlan(cloned.tablePlan) - cloned.PlanPartInfo = op.PlanPartInfo.Clone() + cloned.PlanPartInfo = op.PlanPartInfo.cloneForPlanCache() if op.TableScanAndPartitionInfos != nil { return nil, false } @@ -367,8 +231,8 @@ func (op *PhysicalIndexReader) CloneForPlanCache(newCtx base.PlanContext) (base. cloned.indexPlan = indexPlan.(base.PhysicalPlan) } cloned.IndexPlans = flattenPushDownPlan(cloned.indexPlan) - cloned.OutputColumns = cloneColumnsForPlanCache(op.OutputColumns) - cloned.PlanPartInfo = op.PlanPartInfo.Clone() + cloned.OutputColumns = cloneColumnsForPlanCache(op.OutputColumns, nil) + cloned.PlanPartInfo = op.PlanPartInfo.cloneForPlanCache() return cloned, true } @@ -377,13 +241,6 @@ func (op *PointGetPlan) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, b cloned := new(PointGetPlan) *cloned = *op cloned.Plan = *op.Plan.CloneWithNewCtx(newCtx) - probeParents, ok := clonePhysicalPlansForPlanCache(newCtx, op.probeParents) - if !ok { - return nil, false - } - cloned.probeParents = probeParents - cloned.PartitionNames = util.CloneCIStrs(op.PartitionNames) - cloned.schema = op.schema.Clone() if op.PartitionIdx != nil { cloned.PartitionIdx = new(int) *cloned.PartitionIdx = *op.PartitionIdx @@ -392,16 +249,19 @@ func (op *PointGetPlan) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, b cloned.Handle = op.Handle.Copy() } if op.HandleConstant != nil { - cloned.HandleConstant = op.HandleConstant.Clone().(*expression.Constant) + if op.HandleConstant.SafeToShareAcrossSession() { + cloned.HandleConstant = op.HandleConstant + } else { + cloned.HandleConstant = op.HandleConstant.Clone().(*expression.Constant) + } } cloned.IndexValues = util.CloneDatums(op.IndexValues) - cloned.IndexConstants = cloneConstantsForPlanCache(op.IndexConstants) - cloned.IdxCols = cloneColumnsForPlanCache(op.IdxCols) + cloned.IndexConstants = cloneConstantsForPlanCache(op.IndexConstants, nil) + cloned.IdxCols = cloneColumnsForPlanCache(op.IdxCols, nil) cloned.IdxColLens = make([]int, len(op.IdxColLens)) copy(cloned.IdxColLens, op.IdxColLens) - cloned.AccessConditions = cloneExpressionsForPlanCache(op.AccessConditions) - cloned.ctx = newCtx - cloned.accessCols = cloneColumnsForPlanCache(op.accessCols) + cloned.AccessConditions = cloneExpressionsForPlanCache(op.AccessConditions, nil) + cloned.accessCols = cloneColumnsForPlanCache(op.accessCols, nil) return cloned, true } @@ -409,25 +269,24 @@ func (op *PointGetPlan) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, b func (op *BatchPointGetPlan) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { cloned := new(BatchPointGetPlan) *cloned = *op - cloned.baseSchemaProducer = *op.baseSchemaProducer.CloneWithNewCtx(newCtx) + cloned.baseSchemaProducer = *op.baseSchemaProducer.cloneForPlanCache(newCtx) probeParents, ok := clonePhysicalPlansForPlanCache(newCtx, op.probeParents) if !ok { return nil, false } cloned.probeParents = probeParents - cloned.PartitionNames = util.CloneCIStrs(op.PartitionNames) cloned.ctx = newCtx cloned.Handles = util.CloneHandles(op.Handles) - cloned.HandleParams = cloneConstantsForPlanCache(op.HandleParams) + cloned.HandleParams = cloneConstantsForPlanCache(op.HandleParams, nil) cloned.IndexValues = util.CloneDatum2D(op.IndexValues) cloned.IndexValueParams = cloneConstant2DForPlanCache(op.IndexValueParams) - cloned.AccessConditions = cloneExpressionsForPlanCache(op.AccessConditions) - cloned.IdxCols = cloneColumnsForPlanCache(op.IdxCols) + cloned.AccessConditions = cloneExpressionsForPlanCache(op.AccessConditions, nil) + cloned.IdxCols = cloneColumnsForPlanCache(op.IdxCols, nil) cloned.IdxColLens = make([]int, len(op.IdxColLens)) copy(cloned.IdxColLens, op.IdxColLens) cloned.PartitionIdxs = make([]int, len(op.PartitionIdxs)) copy(cloned.PartitionIdxs, op.PartitionIdxs) - cloned.accessCols = cloneColumnsForPlanCache(op.accessCols) + cloned.accessCols = cloneColumnsForPlanCache(op.accessCols, nil) return cloned, true } @@ -465,9 +324,9 @@ func (op *PhysicalIndexJoin) CloneForPlanCache(newCtx base.PlanContext) (base.Pl copy(cloned.KeyOff2IdxOff, op.KeyOff2IdxOff) cloned.IdxColLens = make([]int, len(op.IdxColLens)) copy(cloned.IdxColLens, op.IdxColLens) - cloned.CompareFilters = op.CompareFilters.Copy() - cloned.OuterHashKeys = cloneColumnsForPlanCache(op.OuterHashKeys) - cloned.InnerHashKeys = cloneColumnsForPlanCache(op.InnerHashKeys) + cloned.CompareFilters = op.CompareFilters.cloneForPlanCache() + cloned.OuterHashKeys = cloneColumnsForPlanCache(op.OuterHashKeys, nil) + cloned.InnerHashKeys = cloneColumnsForPlanCache(op.InnerHashKeys, nil) return cloned, true } @@ -510,11 +369,15 @@ func (op *PhysicalIndexLookUpReader) CloneForPlanCache(newCtx base.PlanContext) cloned.IndexPlans = flattenPushDownPlan(cloned.indexPlan) cloned.TablePlans = flattenPushDownPlan(cloned.tablePlan) if op.ExtraHandleCol != nil { - cloned.ExtraHandleCol = op.ExtraHandleCol.Clone().(*expression.Column) + if op.ExtraHandleCol.SafeToShareAcrossSession() { + cloned.ExtraHandleCol = op.ExtraHandleCol + } else { + cloned.ExtraHandleCol = op.ExtraHandleCol.Clone().(*expression.Column) + } } cloned.PushedLimit = op.PushedLimit.Clone() - cloned.CommonHandleCols = cloneColumnsForPlanCache(op.CommonHandleCols) - cloned.PlanPartInfo = op.PlanPartInfo.Clone() + cloned.CommonHandleCols = cloneColumnsForPlanCache(op.CommonHandleCols, nil) + cloned.PlanPartInfo = op.PlanPartInfo.cloneForPlanCache() return cloned, true } @@ -546,7 +409,7 @@ func (op *PhysicalIndexMergeReader) CloneForPlanCache(newCtx base.PlanContext) ( cloned.PartialPlans[i] = flattenPushDownPlan(plan) } cloned.TablePlans = flattenPushDownPlan(cloned.tablePlan) - cloned.PlanPartInfo = op.PlanPartInfo.Clone() + cloned.PlanPartInfo = op.PlanPartInfo.cloneForPlanCache() if op.HandleCols != nil { cloned.HandleCols = op.HandleCols.Clone(newCtx.GetSessionVars().StmtCtx) } @@ -557,7 +420,7 @@ func (op *PhysicalIndexMergeReader) CloneForPlanCache(newCtx base.PlanContext) ( func (op *Update) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { cloned := new(Update) *cloned = *op - cloned.baseSchemaProducer = *op.baseSchemaProducer.CloneWithNewCtx(newCtx) + cloned.baseSchemaProducer = *op.baseSchemaProducer.cloneForPlanCache(newCtx) cloned.OrderedList = util.CloneAssignments(op.OrderedList) if op.SelectPlan != nil { SelectPlan, ok := op.SelectPlan.CloneForPlanCache(newCtx) @@ -566,9 +429,6 @@ func (op *Update) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { } cloned.SelectPlan = SelectPlan.(base.PhysicalPlan) } - if op.PartitionedTable != nil { - return nil, false - } if op.FKChecks != nil { return nil, false } @@ -582,7 +442,7 @@ func (op *Update) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { func (op *Delete) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { cloned := new(Delete) *cloned = *op - cloned.baseSchemaProducer = *op.baseSchemaProducer.CloneWithNewCtx(newCtx) + cloned.baseSchemaProducer = *op.baseSchemaProducer.cloneForPlanCache(newCtx) if op.SelectPlan != nil { SelectPlan, ok := op.SelectPlan.CloneForPlanCache(newCtx) if !ok { @@ -603,10 +463,10 @@ func (op *Delete) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { func (op *Insert) CloneForPlanCache(newCtx base.PlanContext) (base.Plan, bool) { cloned := new(Insert) *cloned = *op - cloned.baseSchemaProducer = *op.baseSchemaProducer.CloneWithNewCtx(newCtx) + cloned.baseSchemaProducer = *op.baseSchemaProducer.cloneForPlanCache(newCtx) cloned.Lists = cloneExpression2DForPlanCache(op.Lists) cloned.OnDuplicate = util.CloneAssignments(op.OnDuplicate) - cloned.GenCols = op.GenCols.Copy() + cloned.GenCols = op.GenCols.cloneForPlanCache() if op.SelectPlan != nil { SelectPlan, ok := op.SelectPlan.CloneForPlanCache(newCtx) if !ok { @@ -656,7 +516,7 @@ func (op *PhysicalUnionScan) CloneForPlanCache(newCtx base.PlanContext) (base.Pl return nil, false } cloned.BasePhysicalPlan = *basePlan - cloned.Conditions = cloneExpressionsForPlanCache(op.Conditions) + cloned.Conditions = cloneExpressionsForPlanCache(op.Conditions, nil) if op.HandleCols != nil { cloned.HandleCols = op.HandleCols.Clone(newCtx.GetSessionVars().StmtCtx) } diff --git a/pkg/planner/core/plan_clone_utils.go b/pkg/planner/core/plan_clone_utils.go new file mode 100644 index 0000000000000..2a3c9646aa998 --- /dev/null +++ b/pkg/planner/core/plan_clone_utils.go @@ -0,0 +1,223 @@ +// Copyright 2024 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 core + +import ( + "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/planner/core/base" + "github.com/pingcap/tidb/pkg/types" +) + +func clonePhysicalPlansForPlanCache(newCtx base.PlanContext, plans []base.PhysicalPlan) ([]base.PhysicalPlan, bool) { + clonedPlans := make([]base.PhysicalPlan, len(plans)) + for i, plan := range plans { + cloned, ok := plan.CloneForPlanCache(newCtx) + if !ok { + return nil, false + } + clonedPlans[i] = cloned.(base.PhysicalPlan) + } + return clonedPlans, true +} + +func cloneExpressionsForPlanCache(exprs, cloned []expression.Expression) []expression.Expression { + if exprs == nil { + return nil + } + allSafe := true + for _, e := range exprs { + if !e.SafeToShareAcrossSession() { + allSafe = false + break + } + } + if allSafe { + return exprs + } + if cloned == nil { + cloned = make([]expression.Expression, 0, len(exprs)) + } else { + cloned = cloned[:0] + } + for _, e := range exprs { + if e.SafeToShareAcrossSession() { + cloned = append(cloned, e) + } else { + cloned = append(cloned, e.Clone()) + } + } + return cloned +} + +func cloneExpression2DForPlanCache(exprs [][]expression.Expression) [][]expression.Expression { + if exprs == nil { + return nil + } + cloned := make([][]expression.Expression, 0, len(exprs)) + for _, e := range exprs { + cloned = append(cloned, cloneExpressionsForPlanCache(e, nil)) + } + return cloned +} + +func cloneScalarFunctionsForPlanCache(scalarFuncs, cloned []*expression.ScalarFunction) []*expression.ScalarFunction { + if scalarFuncs == nil { + return nil + } + allSafe := true + for _, f := range scalarFuncs { + if !f.SafeToShareAcrossSession() { + allSafe = false + break + } + } + if allSafe { + return scalarFuncs + } + if cloned == nil { + cloned = make([]*expression.ScalarFunction, 0, len(scalarFuncs)) + } else { + cloned = cloned[:0] + } + for _, f := range scalarFuncs { + if f.SafeToShareAcrossSession() { + cloned = append(cloned, f) + } else { + cloned = append(cloned, f.Clone().(*expression.ScalarFunction)) + } + } + return cloned +} + +func cloneColumnsForPlanCache(cols, cloned []*expression.Column) []*expression.Column { + if cols == nil { + return nil + } + allSafe := true + for _, c := range cols { + if !c.SafeToShareAcrossSession() { + allSafe = false + break + } + } + if allSafe { + return cols + } + if cloned == nil { + cloned = make([]*expression.Column, 0, len(cols)) + } else { + cloned = cloned[:0] + } + for _, c := range cols { + if c == nil { + cloned = append(cloned, nil) + continue + } + if c.SafeToShareAcrossSession() { + cloned = append(cloned, c) + } else { + cloned = append(cloned, c.Clone().(*expression.Column)) + } + } + return cloned +} + +func cloneConstantsForPlanCache(constants, cloned []*expression.Constant) []*expression.Constant { + if constants == nil { + return nil + } + allSafe := true + for _, c := range constants { + if !c.SafeToShareAcrossSession() { + allSafe = false + break + } + } + if allSafe { + return constants + } + if cloned == nil { + cloned = make([]*expression.Constant, 0, len(constants)) + } else { + cloned = cloned[:0] + } + for _, c := range constants { + if c.SafeToShareAcrossSession() { + cloned = append(cloned, c) + } else { + cloned = append(cloned, c.Clone().(*expression.Constant)) + } + } + return cloned +} + +func cloneConstant2DForPlanCache(constants [][]*expression.Constant) [][]*expression.Constant { + if constants == nil { + return nil + } + cloned := make([][]*expression.Constant, 0, len(constants)) + for _, c := range constants { + cloned = append(cloned, cloneConstantsForPlanCache(c, nil)) + } + return cloned +} + +// FastClonePointGetForPlanCache is a fast path to clone a PointGetPlan for plan cache. +func FastClonePointGetForPlanCache(newCtx base.PlanContext, src, dst *PointGetPlan) *PointGetPlan { + if dst == nil { + dst = new(PointGetPlan) + } + dst.Plan = src.Plan + dst.Plan.SetSCtx(newCtx) + dst.probeParents = src.probeParents + dst.PartitionNames = src.PartitionNames + dst.dbName = src.dbName + dst.schema = src.schema + dst.TblInfo = src.TblInfo + dst.IndexInfo = src.IndexInfo + dst.PartitionIdx = nil // partition prune will be triggered during execution phase + dst.Handle = nil // handle will be set during rebuild phase + if src.HandleConstant == nil { + dst.HandleConstant = nil + } else { + if src.HandleConstant.SafeToShareAcrossSession() { + dst.HandleConstant = src.HandleConstant + } else { + dst.HandleConstant = src.HandleConstant.Clone().(*expression.Constant) + } + } + dst.handleFieldType = src.handleFieldType + dst.HandleColOffset = src.HandleColOffset + if len(dst.IndexValues) < len(src.IndexValues) { // actually set during rebuild phase + dst.IndexValues = make([]types.Datum, len(src.IndexValues)) + } else { + dst.IndexValues = dst.IndexValues[:len(src.IndexValues)] + } + dst.IndexConstants = cloneConstantsForPlanCache(src.IndexConstants, dst.IndexConstants) + dst.ColsFieldType = src.ColsFieldType + dst.IdxCols = cloneColumnsForPlanCache(src.IdxCols, dst.IdxCols) + dst.IdxColLens = src.IdxColLens + dst.AccessConditions = cloneExpressionsForPlanCache(src.AccessConditions, dst.AccessConditions) + dst.UnsignedHandle = src.UnsignedHandle + dst.IsTableDual = src.IsTableDual + dst.Lock = src.Lock + dst.outputNames = src.outputNames + dst.LockWaitTime = src.LockWaitTime + dst.Columns = src.Columns + + // remaining fields are unnecessary to clone: + // cost, planCostInit, planCost, planCostVer2, accessCols + return dst +} diff --git a/pkg/planner/core/plan_cost_ver2.go b/pkg/planner/core/plan_cost_ver2.go index 8f92cd2146f4e..f57e319d0c811 100644 --- a/pkg/planner/core/plan_cost_ver2.go +++ b/pkg/planner/core/plan_cost_ver2.go @@ -163,30 +163,8 @@ func (p *PhysicalTableScan) GetPlanCostVer2(taskType property.TaskType, option * if p.StoreType == kv.TiFlash { p.PlanCostVer2 = costusage.SumCostVer2(p.PlanCostVer2, scanCostVer2(option, TiFlashStartupRowPenalty, rowSize, scanFactor)) } else if !p.isChildOfIndexLookUp { - // Apply cost penalty for full scans that carry high risk of underestimation - sessionVars := p.SCtx().GetSessionVars() - allowPreferRangeScan := sessionVars.GetAllowPreferRangeScan() - tblColHists := p.tblColHists - - // hasUnreliableStats is a check for pseudo or zero stats - hasUnreliableStats := tblColHists.Pseudo || tblColHists.RealtimeCount < 1 - // hasHighModifyCount tracks the high risk of a tablescan where auto-analyze had not yet updated the table row count - hasHighModifyCount := tblColHists.ModifyCount > tblColHists.RealtimeCount - // hasLowEstimate is a check to capture a unique customer case where modifyCount is used for tablescan estimate (but it not adequately understood why) - hasLowEstimate := rows > 1 && tblColHists.ModifyCount < tblColHists.RealtimeCount && int64(rows) <= tblColHists.ModifyCount - // preferRangeScan check here is same as in skylinePruning - preferRangeScanCondition := allowPreferRangeScan && (hasUnreliableStats || hasHighModifyCount || hasLowEstimate) - var unsignedIntHandle bool - if p.Table.PKIsHandle { - if pkColInfo := p.Table.GetPkColInfo(); pkColInfo != nil { - unsignedIntHandle = mysql.HasUnsignedFlag(pkColInfo.GetFlag()) - } - } - hasFullRangeScan := ranger.HasFullRange(p.Ranges, unsignedIntHandle) - - shouldApplyPenalty := hasFullRangeScan && preferRangeScanCondition - if shouldApplyPenalty { - newRowCount := max(MaxPenaltyRowCount, max(float64(tblColHists.ModifyCount), float64(tblColHists.RealtimeCount))) + newRowCount := getTableScanPenalty(p, rows) + if newRowCount > 0 { p.PlanCostVer2 = costusage.SumCostVer2(p.PlanCostVer2, scanCostVer2(option, newRowCount, rowSize, scanFactor)) } } @@ -935,6 +913,65 @@ func doubleReadCostVer2(option *optimizetrace.PlanCostOption, numTasks float64, func() string { return fmt.Sprintf("doubleRead(tasks(%v)*%v)", numTasks, requestFactor) }) } +func getTableScanPenalty(p *PhysicalTableScan, rows float64) (rowPenalty float64) { + // Apply cost penalty for full scans that carry high risk of underestimation. Exclude those + // that are the child of an index scan or child is TableRangeScan + if len(p.rangeInfo) > 0 { + return float64(0) + } + var unsignedIntHandle bool + if p.Table.PKIsHandle { + if pkColInfo := p.Table.GetPkColInfo(); pkColInfo != nil { + unsignedIntHandle = mysql.HasUnsignedFlag(pkColInfo.GetFlag()) + } + } + hasFullRangeScan := ranger.HasFullRange(p.Ranges, unsignedIntHandle) + if !hasFullRangeScan { + return float64(0) + } + + sessionVars := p.SCtx().GetSessionVars() + allowPreferRangeScan := sessionVars.GetAllowPreferRangeScan() + tblColHists := p.tblColHists + originalRows := int64(tblColHists.GetAnalyzeRowCount()) + + // hasUnreliableStats is a check for pseudo or zero stats + hasUnreliableStats := tblColHists.Pseudo || originalRows < 1 + // hasHighModifyCount tracks the high risk of a tablescan where auto-analyze had not yet updated the table row count + hasHighModifyCount := tblColHists.ModifyCount > originalRows + // hasLowEstimate is a check to capture a unique customer case where modifyCount is used for tablescan estimate (but it not adequately understood why) + hasLowEstimate := rows > 1 && tblColHists.ModifyCount < originalRows && int64(rows) <= tblColHists.ModifyCount + // preferRangeScan check here is same as in skylinePruning + preferRangeScanCondition := allowPreferRangeScan && (hasUnreliableStats || hasHighModifyCount || hasLowEstimate) + + // differentiate a FullTableScan from a partition level scan - so we shouldn't penalize these + hasPartitionScan := false + if p.PlanPartInfo != nil { + if len(p.PlanPartInfo.PruningConds) > 0 { + hasPartitionScan = true + } + } + + // GetIndexForce assumes that the USE/FORCE index is to force a range scan, and thus the + // penalty is applied to a full table scan (not range scan). This may also penalize a + // full table scan where USE/FORCE was applied to the primary key. + hasIndexForce := sessionVars.StmtCtx.GetIndexForce() + shouldApplyPenalty := hasFullRangeScan && (hasIndexForce || preferRangeScanCondition) + if shouldApplyPenalty { + // MySQL will increase the cost of table scan if FORCE index is used. TiDB takes this one + // step further - because we don't differentiate USE/FORCE - the added penalty applies to + // both, and it also applies to any full table scan in the query. Use "max" to get the minimum + // number of rows to add as a penalty to the table scan. + minRows := max(MaxPenaltyRowCount, rows) + if hasPartitionScan { + return minRows + } + // If it isn't a partitioned table - choose the max that includes ModifyCount + return max(minRows, float64(tblColHists.ModifyCount)) + } + return float64(0) +} + // In Cost Ver2, we hide cost factors from users and deprecate SQL variables like `tidb_opt_scan_factor`. type costVer2Factors struct { TiDBTemp costusage.CostVer2Factor // operations on TiDB temporary table diff --git a/pkg/planner/core/plan_cost_ver2_test.go b/pkg/planner/core/plan_cost_ver2_test.go index c78572ffc9c24..614548b27c0aa 100644 --- a/pkg/planner/core/plan_cost_ver2_test.go +++ b/pkg/planner/core/plan_cost_ver2_test.go @@ -33,6 +33,7 @@ import ( "github.com/pingcap/tidb/pkg/planner/util/optimizetrace" "github.com/pingcap/tidb/pkg/sessiontxn" "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/tests/realtikvtest" "github.com/stretchr/testify/require" ) @@ -59,9 +60,9 @@ func TestCostModelVer2ScanRowSize(t *testing.T) { {"select a, b from t use index(abc) where a=1 and b=1", "scan(1*logrowsize(48)*tikv_scan_factor(40.7))"}, {"select a, b, c from t use index(abc) where a=1 and b=1 and c=1", "scan(1*logrowsize(48)*tikv_scan_factor(40.7))"}, // table scan row-size is always equal to row-size(*) - {"select a from t use index(primary) where a=1", "(scan(1*logrowsize(80)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(80)*tikv_scan_factor(40.7)))"}, - {"select a, d from t use index(primary) where a=1", "(scan(1*logrowsize(80)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(80)*tikv_scan_factor(40.7)))"}, - {"select * from t use index(primary) where a=1", "(scan(1*logrowsize(80)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(80)*tikv_scan_factor(40.7)))"}, + {"select a from t use index(primary) where a=1", "(scan(1*logrowsize(80)*tikv_scan_factor(40.7))) + (scan(1000*logrowsize(80)*tikv_scan_factor(40.7)))"}, + {"select a, d from t use index(primary) where a=1", "(scan(1*logrowsize(80)*tikv_scan_factor(40.7))) + (scan(1000*logrowsize(80)*tikv_scan_factor(40.7)))"}, + {"select * from t use index(primary) where a=1", "(scan(1*logrowsize(80)*tikv_scan_factor(40.7))) + (scan(1000*logrowsize(80)*tikv_scan_factor(40.7)))"}, } for _, c := range cases { rs := tk.MustQuery("explain analyze format=true_card_cost " + c.query).Rows() @@ -162,3 +163,42 @@ func BenchmarkGetPlanCost(b *testing.B) { _, _ = core.GetPlanCost(phyPlan, property.RootTaskType, optimizetrace.NewDefaultPlanCostOption().WithCostFlag(costusage.CostFlagRecalculate)) } } + +func TestTableScanCostWithForce(t *testing.T) { + store, dom := realtikvtest.CreateMockStoreAndDomainAndSetup(t) + defer func() { + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + dom.StatsHandle().Clear() + }() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(a int, b int, primary key (a))") + + // Insert some data + tk.MustExec("insert into t values (1,1),(2,2),(3,3),(4,4),(5,5)") + + // Analyze table to update statistics + tk.MustExec("analyze table t") + + // Test TableFullScan with and without FORCE INDEX + rs := tk.MustQuery("explain analyze format=verbose select * from t").Rows() + planCost1 := rs[0][2].(string) + rs = tk.MustQuery("explain analyze format=verbose select * from t force index(PRIMARY)").Rows() + planCost2 := rs[0][2].(string) + + // Query with FORCE should be more expensive than query without + require.Less(t, planCost1, planCost2) + + // Test TableRangeScan with and without FORCE INDEX + rs = tk.MustQuery("explain analyze format=verbose select * from t where a > 1").Rows() + planCost1 = rs[0][2].(string) + rs = tk.MustQuery("explain analyze format=verbose select * from t force index(PRIMARY) where a > 1").Rows() + planCost2 = rs[0][2].(string) + + // Query costs should be equal since FORCE cost penalty does not apply to range scan + require.Equal(t, planCost1, planCost2) +} diff --git a/pkg/planner/core/plan_to_pb.go b/pkg/planner/core/plan_to_pb.go index 1857cfad88deb..291d2467476e7 100644 --- a/pkg/planner/core/plan_to_pb.go +++ b/pkg/planner/core/plan_to_pb.go @@ -16,6 +16,7 @@ package core import ( "fmt" + "math" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/expression" @@ -273,7 +274,7 @@ func (p *PhysicalTableScan) ToPB(ctx *base.BuildPBContext, storeType kv.StoreTyp tsExec.PushedDownFilterConditions = conditions } - if p.AnnIndexExtra != nil && p.AnnIndexExtra.PushDownQueryInfo != nil { + if p.AnnIndexExtra != nil && p.AnnIndexExtra.PushDownQueryInfo != nil && p.AnnIndexExtra.PushDownQueryInfo.TopK != math.MaxUint32 { annQueryCopy := *p.AnnIndexExtra.PushDownQueryInfo tsExec.AnnQuery = &annQueryCopy } @@ -318,7 +319,7 @@ func (p *PhysicalTableScan) partitionTableScanToPBForFlash(ctx *base.BuildPBCont ptsExec.Desc = p.Desc - if p.AnnIndexExtra != nil && p.AnnIndexExtra.PushDownQueryInfo != nil { + if p.AnnIndexExtra != nil && p.AnnIndexExtra.PushDownQueryInfo != nil && p.AnnIndexExtra.PushDownQueryInfo.TopK != math.MaxUint32 { annQueryCopy := *p.AnnIndexExtra.PushDownQueryInfo ptsExec.AnnQuery = &annQueryCopy } diff --git a/pkg/planner/core/plan_to_pb_test.go b/pkg/planner/core/plan_to_pb_test.go index dc055266c2231..826911dffb2da 100644 --- a/pkg/planner/core/plan_to_pb_test.go +++ b/pkg/planner/core/plan_to_pb_test.go @@ -36,7 +36,7 @@ func TestColumnToProto(t *testing.T) { FieldType: *tp, } pc := util.ColumnToProto(col, false, false) - expect := &tipb.ColumnInfo{ColumnId: 0, Tp: 3, Collation: 83, ColumnLen: 11, Decimal: 0, Flag: 10, Elems: []string(nil), DefaultVal: []uint8(nil), PkHandle: false, XXX_unrecognized: []uint8(nil)} + expect := &tipb.ColumnInfo{ColumnId: 0, Tp: 3, Collation: 83, ColumnLen: 11, Decimal: 0, Flag: 10, Elems: []string(nil), DefaultVal: []uint8(nil), PkHandle: false} require.Equal(t, expect, pc) cols := []*model.ColumnInfo{col, col} @@ -62,7 +62,7 @@ func TestColumnToProto(t *testing.T) { collate.SetNewCollationEnabledForTest(true) pc = util.ColumnToProto(col, false, false) - expect = &tipb.ColumnInfo{ColumnId: 0, Tp: 3, Collation: -83, ColumnLen: 11, Decimal: 0, Flag: 10, Elems: []string(nil), DefaultVal: []uint8(nil), PkHandle: false, XXX_unrecognized: []uint8(nil)} + expect = &tipb.ColumnInfo{ColumnId: 0, Tp: 3, Collation: -83, ColumnLen: 11, Decimal: 0, Flag: 10, Elems: []string(nil), DefaultVal: []uint8(nil), PkHandle: false} require.Equal(t, expect, pc) pcs = util.ColumnsToProto(cols, true, false, false) for _, v := range pcs { @@ -92,6 +92,6 @@ func TestColumnToProto(t *testing.T) { FieldType: *tp, } pc = util.ColumnToProto(col3, true, false) - expect = &tipb.ColumnInfo{ColumnId: 0, Tp: 0xfe, Collation: 63, ColumnLen: 100, Decimal: 0, Flag: 10, Elems: []string(nil), DefaultVal: []uint8(nil), PkHandle: false, XXX_unrecognized: []uint8(nil)} + expect = &tipb.ColumnInfo{ColumnId: 0, Tp: 0xfe, Collation: 63, ColumnLen: 100, Decimal: 0, Flag: 10, Elems: []string(nil), DefaultVal: []uint8(nil), PkHandle: false} require.Equal(t, expect, pc) } diff --git a/pkg/planner/core/planbuilder.go b/pkg/planner/core/planbuilder.go index d09ba5597c0d8..56a221084a8bf 100644 --- a/pkg/planner/core/planbuilder.go +++ b/pkg/planner/core/planbuilder.go @@ -23,6 +23,7 @@ import ( "strconv" "strings" + "github.com/docker/go-units" "github.com/pingcap/errors" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/bindinfo" @@ -269,8 +270,10 @@ type PlanBuilder struct { allocIDForCTEStorage int buildingRecursivePartForCTE bool buildingCTE bool - //Check whether the current building query is a CTE + // Check whether the current building query is a CTE isCTE bool + // CTE table name in lower case, it can be nil + nameMapCTE map[string]struct{} // subQueryCtx and subQueryHintFlags are for handling subquery related hints. // Note: "subquery" here only contains subqueries that are handled by the expression rewriter, i.e., [NOT] IN, @@ -529,6 +532,8 @@ func (b *PlanBuilder) Build(ctx context.Context, node *resolve.NodeW) (base.Plan return b.buildUnlockStats(x), nil case *ast.PlanReplayerStmt: return b.buildPlanReplayer(x), nil + case *ast.TrafficStmt: + return b.buildTraffic(x), nil case *ast.PrepareStmt: return b.buildPrepare(x), nil case *ast.SelectStmt: @@ -1191,15 +1196,19 @@ func getPossibleAccessPaths(ctx base.PlanContext, tableHints *hint.PlanHints, in continue } } - path := &util.AccessPath{Index: index} if index.VectorInfo != nil { // Because the value of `TiFlashReplica.Available` changes as the user modify replica, it is not ideal if the state of index changes accordingly. // So the current way to use the vector indexes is to require the TiFlash Replica to be available. if !tblInfo.TiFlashReplica.Available { continue } + path := genTiFlashPath(tblInfo) path.StoreType = kv.TiFlash + path.Index = index + publicPaths = append(publicPaths, path) + continue } + path := &util.AccessPath{Index: index} publicPaths = append(publicPaths, path) } } @@ -1576,6 +1585,11 @@ func (b *PlanBuilder) buildAdmin(ctx context.Context, as *ast.AdminStmt) (base.P p := &AdminShowBDRRole{} p.setSchemaAndNames(buildAdminShowBDRRoleFields()) ret = p + case ast.AdminAlterDDLJob: + ret, err = b.buildAdminAlterDDLJob(ctx, as) + if err != nil { + return nil, err + } default: return nil, plannererrors.ErrUnsupportedType.GenWithStack("Unsupported ast.AdminStmt(%T) for buildAdmin", as) } @@ -2332,7 +2346,7 @@ func getModifiedIndexesInfoForAnalyze( } // filterSkipColumnTypes filters out columns whose types are in the skipTypes list. -func (b *PlanBuilder) filterSkipColumnTypes(origin []*model.ColumnInfo, tbl *resolve.TableNameW, mustAnalyzedCols *calcOnceMap) (result []*model.ColumnInfo) { +func (b *PlanBuilder) filterSkipColumnTypes(origin []*model.ColumnInfo, tbl *resolve.TableNameW, mustAnalyzedCols *calcOnceMap) (result []*model.ColumnInfo, skipCol []*model.ColumnInfo) { // If the session is in restricted SQL mode, it uses @@global.tidb_analyze_skip_column_types to get the skipTypes list. skipTypes := b.ctx.GetSessionVars().AnalyzeSkipColumnTypes if b.ctx.GetSessionVars().InRestrictedSQL { @@ -2362,6 +2376,7 @@ func (b *PlanBuilder) filterSkipColumnTypes(origin []*model.ColumnInfo, tbl *res // into TiDB to build the index statistics. _, keep := mustAnalyze[colInfo.ID] if skip && !keep { + skipCol = append(skipCol, colInfo) continue } result = append(result, colInfo) @@ -2485,16 +2500,18 @@ func (b *PlanBuilder) buildAnalyzeFullSamplingTask( if colsInfo, ok := colsInfoMap[physicalID]; ok { execColsInfo = colsInfo } - execColsInfo = b.filterSkipColumnTypes(execColsInfo, tbl, &mustAnalyzedCols) + var skipColsInfo []*model.ColumnInfo + execColsInfo, skipColsInfo = b.filterSkipColumnTypes(execColsInfo, tbl, &mustAnalyzedCols) allColumns := len(tbl.TableInfo.Columns) == len(execColsInfo) indexes, independentIndexes, specialGlobalIndexes = getModifiedIndexesInfoForAnalyze(b.ctx.GetSessionVars().StmtCtx, tbl.TableInfo, allColumns, execColsInfo) handleCols := BuildHandleColsForAnalyze(b.ctx, tbl.TableInfo, allColumns, execColsInfo) newTask := AnalyzeColumnsTask{ - HandleCols: handleCols, - ColsInfo: execColsInfo, - AnalyzeInfo: info, - TblInfo: tbl.TableInfo, - Indexes: indexes, + HandleCols: handleCols, + ColsInfo: execColsInfo, + AnalyzeInfo: info, + TblInfo: tbl.TableInfo, + Indexes: indexes, + SkipColsInfo: skipColsInfo, } if newTask.HandleCols == nil { extraCol := model.NewExtraHandleColInfo() @@ -3155,6 +3172,7 @@ func buildShowDDLJobsFields() (*expression.Schema, types.NameSlice) { schema.Append(buildColumnWithName("", "START_TIME", mysql.TypeDatetime, 19)) schema.Append(buildColumnWithName("", "END_TIME", mysql.TypeDatetime, 19)) schema.Append(buildColumnWithName("", "STATE", mysql.TypeVarchar, 64)) + schema.Append(buildColumnWithName("", "COMMENTS", mysql.TypeVarchar, 65535)) return schema.col2Schema(), schema.names } @@ -3590,11 +3608,11 @@ func (b *PlanBuilder) buildSimple(ctx context.Context, node ast.StmtNode) (base. b.visitInfo = appendDynamicVisitInfo(b.visitInfo, []string{"ROLE_ADMIN"}, false, err) // Check if any of the users are RESTRICTED for _, user := range raw.Users { - b.visitInfo = appendVisitInfoIsRestrictedUser(b.visitInfo, b.ctx, user, "RESTRICTED_USER_ADMIN") + b.visitInfo = appendVisitInfoIsRestrictedUser(ctx, b.visitInfo, b.ctx, user, "RESTRICTED_USER_ADMIN") } case *ast.RevokeStmt: var err error - b.visitInfo, err = collectVisitInfoFromRevokeStmt(b.ctx, b.visitInfo, raw) + b.visitInfo, err = collectVisitInfoFromRevokeStmt(ctx, b.ctx, b.visitInfo, raw) if err != nil { return nil, err } @@ -3609,7 +3627,7 @@ func (b *PlanBuilder) buildSimple(ctx context.Context, node ast.StmtNode) (base. if pi.User != loginUser.Username { err := plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs("SUPER or CONNECTION_ADMIN") b.visitInfo = appendDynamicVisitInfo(b.visitInfo, []string{"CONNECTION_ADMIN"}, false, err) - b.visitInfo = appendVisitInfoIsRestrictedUser(b.visitInfo, b.ctx, &auth.UserIdentity{Username: pi.User, Hostname: pi.Host}, "RESTRICTED_CONNECTION_ADMIN") + b.visitInfo = appendVisitInfoIsRestrictedUser(ctx, b.visitInfo, b.ctx, &auth.UserIdentity{Username: pi.User, Hostname: pi.Host}, "RESTRICTED_CONNECTION_ADMIN") } } else if handleutil.GlobalAutoAnalyzeProcessList.Contains(raw.ConnectionID) { // Only the users with SUPER or CONNECTION_ADMIN privilege can kill auto analyze. @@ -3625,11 +3643,11 @@ func (b *PlanBuilder) buildSimple(ctx context.Context, node ast.StmtNode) (base. // The main privilege checks for DROP USER are currently performed in executor/simple.go // because they use complex OR conditions (not supported by visitInfo). for _, user := range raw.UserList { - b.visitInfo = appendVisitInfoIsRestrictedUser(b.visitInfo, b.ctx, user, "RESTRICTED_USER_ADMIN") + b.visitInfo = appendVisitInfoIsRestrictedUser(ctx, b.visitInfo, b.ctx, user, "RESTRICTED_USER_ADMIN") } case *ast.SetPwdStmt: if raw.User != nil { - b.visitInfo = appendVisitInfoIsRestrictedUser(b.visitInfo, b.ctx, raw.User, "RESTRICTED_USER_ADMIN") + b.visitInfo = appendVisitInfoIsRestrictedUser(ctx, b.visitInfo, b.ctx, raw.User, "RESTRICTED_USER_ADMIN") } case *ast.ShutdownStmt: b.visitInfo = appendVisitInfo(b.visitInfo, mysql.ShutdownPriv, "", "", "", nil) @@ -3640,7 +3658,7 @@ func (b *PlanBuilder) buildSimple(ctx context.Context, node ast.StmtNode) (base. if err != nil { return nil, err } - if err := sessionctx.ValidateStaleReadTS(ctx, b.ctx.GetSessionVars().StmtCtx, b.ctx.GetStore(), startTS); err != nil { + if err := sessionctx.ValidateSnapshotReadTS(ctx, b.ctx.GetStore(), startTS); err != nil { return nil, err } p.StaleTxnStartTS = startTS @@ -3654,7 +3672,7 @@ func (b *PlanBuilder) buildSimple(ctx context.Context, node ast.StmtNode) (base. if err != nil { return nil, err } - if err := sessionctx.ValidateStaleReadTS(ctx, b.ctx.GetSessionVars().StmtCtx, b.ctx.GetStore(), startTS); err != nil { + if err := sessionctx.ValidateSnapshotReadTS(ctx, b.ctx.GetStore(), startTS); err != nil { return nil, err } p.StaleTxnStartTS = startTS @@ -3668,7 +3686,7 @@ func (b *PlanBuilder) buildSimple(ctx context.Context, node ast.StmtNode) (base. return p, nil } -func collectVisitInfoFromRevokeStmt(sctx base.PlanContext, vi []visitInfo, stmt *ast.RevokeStmt) ([]visitInfo, error) { +func collectVisitInfoFromRevokeStmt(ctx context.Context, 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. dbName := stmt.Level.DBName @@ -3708,7 +3726,7 @@ func collectVisitInfoFromRevokeStmt(sctx base.PlanContext, vi []visitInfo, stmt } for _, u := range stmt.Users { // For SEM, make sure the users are not restricted - vi = appendVisitInfoIsRestrictedUser(vi, sctx, u.User, "RESTRICTED_USER_ADMIN") + vi = appendVisitInfoIsRestrictedUser(ctx, vi, sctx, u.User, "RESTRICTED_USER_ADMIN") } if nonDynamicPrivilege { // Dynamic privileges use their own GRANT OPTION. If there were any non-dynamic privilege requests, @@ -3720,12 +3738,12 @@ func collectVisitInfoFromRevokeStmt(sctx base.PlanContext, vi []visitInfo, stmt // appendVisitInfoIsRestrictedUser appends additional visitInfo if the user has a // special privilege called "RESTRICTED_USER_ADMIN". It only applies when SEM is enabled. -func appendVisitInfoIsRestrictedUser(visitInfo []visitInfo, sctx base.PlanContext, user *auth.UserIdentity, priv string) []visitInfo { +func appendVisitInfoIsRestrictedUser(ctx context.Context, visitInfo []visitInfo, sctx base.PlanContext, user *auth.UserIdentity, priv string) []visitInfo { if !sem.IsEnabled() { return visitInfo } checker := privilege.GetPrivilegeManager(sctx) - if checker != nil && checker.RequestDynamicVerificationWithUser("RESTRICTED_USER_ADMIN", false, user) { + if checker != nil && checker.RequestDynamicVerificationWithUser(ctx, "RESTRICTED_USER_ADMIN", false, user) { err := plannererrors.ErrSpecificAccessDenied.GenWithStackByArgs(priv) visitInfo = appendDynamicVisitInfo(visitInfo, []string{priv}, false, err) } @@ -4920,6 +4938,32 @@ func convertValueListToData(valueList []ast.ExprNode, handleColInfos []*model.Co return data, nil } +type userVariableChecker struct { + hasUserVariables bool +} + +func (e *userVariableChecker) Enter(in ast.Node) (ast.Node, bool) { + if _, ok := in.(*ast.VariableExpr); ok { + e.hasUserVariables = true + return in, true + } + return in, false +} + +func (*userVariableChecker) Leave(in ast.Node) (ast.Node, bool) { + return in, true +} + +// Check for UserVariables +func checkForUserVariables(in ast.Node) error { + v := &userVariableChecker{hasUserVariables: false} + _, ok := in.Accept(v) + if !ok || v.hasUserVariables { + return dbterror.ErrViewSelectVariable + } + return nil +} + func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan, error) { var authErr error switch v := node.(type) { @@ -5067,6 +5111,10 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (base.Plan v.ReferTable.Name.L, "", authErr) } case *ast.CreateViewStmt: + err := checkForUserVariables(v.Select) + if err != nil { + return nil, err + } b.isCreateView = true b.capFlag |= canExpandAST | renameView b.renamingViewName = v.ViewName.Schema.L + "." + v.ViewName.Name.L @@ -5781,6 +5829,14 @@ func findStmtAsViewSchema(stmt ast.Node) *ast.SelectStmt { return nil } +func (*PlanBuilder) buildTraffic(pc *ast.TrafficStmt) base.Plan { + return &Traffic{ + OpType: pc.OpType, + Options: pc.Options, + Dir: pc.Dir, + } +} + // buildCompactTable builds a plan for the "ALTER TABLE [NAME] COMPACT ..." statement. func (b *PlanBuilder) buildCompactTable(node *ast.CompactTableStmt) (base.Plan, error) { var authErr error @@ -5855,3 +5911,96 @@ func getTablePath(paths []*util.AccessPath) *util.AccessPath { } return nil } + +func (b *PlanBuilder) buildAdminAlterDDLJob(ctx context.Context, as *ast.AdminStmt) (_ base.Plan, err error) { + options := make([]*AlterDDLJobOpt, 0, len(as.AlterJobOptions)) + optionNames := make([]string, 0, len(as.AlterJobOptions)) + mockTablePlan := logicalop.LogicalTableDual{}.Init(b.ctx, b.getSelectOffset()) + for _, opt := range as.AlterJobOptions { + _, ok := allowedAlterDDLJobParams[opt.Name] + if !ok { + return nil, fmt.Errorf("unsupported admin alter ddl jobs config: %s", opt.Name) + } + alterDDLJobOpt := AlterDDLJobOpt{Name: opt.Name} + if opt.Value != nil { + alterDDLJobOpt.Value, _, err = b.rewrite(ctx, opt.Value, mockTablePlan, nil, true) + if err != nil { + return nil, err + } + } + if err = checkAlterDDLJobOptValue(&alterDDLJobOpt); err != nil { + return nil, err + } + options = append(options, &alterDDLJobOpt) + optionNames = append(optionNames, opt.Name) + } + p := &AlterDDLJob{ + JobID: as.JobNumber, + Options: options, + } + return p, nil +} + +// check if the config value is valid. +func checkAlterDDLJobOptValue(opt *AlterDDLJobOpt) error { + switch opt.Name { + case AlterDDLJobThread: + thread, err := GetThreadOrBatchSizeFromExpression(opt) + if err != nil { + return err + } + if thread < 1 || thread > variable.MaxConfigurableConcurrency { + return fmt.Errorf("the value %v for %s is out of range [1, %v]", + thread, opt.Name, variable.MaxConfigurableConcurrency) + } + case AlterDDLJobBatchSize: + batchSize, err := GetThreadOrBatchSizeFromExpression(opt) + if err != nil { + return err + } + bs := int32(batchSize) + if bs < variable.MinDDLReorgBatchSize || bs > variable.MaxDDLReorgBatchSize { + return fmt.Errorf("the value %v for %s is out of range [%v, %v]", + bs, opt.Name, variable.MinDDLReorgBatchSize, variable.MaxDDLReorgBatchSize) + } + case AlterDDLJobMaxWriteSpeed: + speed, err := GetMaxWriteSpeedFromExpression(opt) + if err != nil { + return err + } + if speed < 0 || speed > units.PiB { + return fmt.Errorf("the value %s for %s is out of range [%v, %v]", + strconv.FormatInt(speed, 10), opt.Name, 0, units.PiB) + } + } + return nil +} + +// GetThreadOrBatchSizeFromExpression gets the numeric value of the thread or batch size from the expression. +func GetThreadOrBatchSizeFromExpression(opt *AlterDDLJobOpt) (int64, error) { + v := opt.Value.(*expression.Constant) + switch v.RetType.EvalType() { + case types.ETInt: + return v.Value.GetInt64(), nil + default: + return 0, fmt.Errorf("the value for %s is invalid, only integer is allowed", opt.Name) + } +} + +// GetMaxWriteSpeedFromExpression gets the numeric value of the max write speed from the expression. +func GetMaxWriteSpeedFromExpression(opt *AlterDDLJobOpt) (maxWriteSpeed int64, err error) { + v := opt.Value.(*expression.Constant) + switch v.RetType.EvalType() { + case types.ETString: + speedStr := v.Value.GetString() + maxWriteSpeed, err = units.RAMInBytes(speedStr) + if err != nil { + return 0, errors.Annotate(err, "parse max_write_speed value error") + } + case types.ETInt: + maxWriteSpeed = v.Value.GetInt64() + default: + return 0, fmt.Errorf("the value %v for %s is invalid", v.Value.GetValue(), opt.Name) + } + return maxWriteSpeed, nil +} diff --git a/pkg/planner/core/planbuilder_test.go b/pkg/planner/core/planbuilder_test.go index f52c2751916b1..6502f83132740 100644 --- a/pkg/planner/core/planbuilder_test.go +++ b/pkg/planner/core/planbuilder_test.go @@ -17,11 +17,14 @@ package core import ( "context" "fmt" + "math/rand" "reflect" + "sort" "strings" "testing" "unsafe" + "github.com/docker/go-units" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression" @@ -877,3 +880,143 @@ func TestImportIntoCollAssignmentChecker(t *testing.T) { }) } } + +func TestTraffic(t *testing.T) { + sqls := []string{ + "traffic capture to '/tmp' duration='1s' encryption_method='aes' compress=true", + "traffic replay from '/tmp' user='root' password='123456' speed=1.0 read_only=true", + "show traffic jobs", + "cancel traffic jobs", + } + + parser := parser.New() + sctx := MockContext() + ctx := context.TODO() + builder, _ := NewPlanBuilder().Init(sctx, nil, hint.NewQBHintHandler(nil)) + for _, sql := range sqls { + stmt, err := parser.ParseOneStmt(sql, "", "") + require.NoError(t, err) + p, err := builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + _, ok := p.(*Traffic) + require.True(t, ok) + } +} + +func TestBuildAdminAlterDDLJobPlan(t *testing.T) { + parser := parser.New() + sctx := MockContext() + ctx := context.TODO() + builder, _ := NewPlanBuilder().Init(sctx, nil, hint.NewQBHintHandler(nil)) + + stmt, err := parser.ParseOneStmt("admin alter ddl jobs 1 thread = 16 ", "", "") + require.NoError(t, err) + p, err := builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + plan, ok := p.(*AlterDDLJob) + require.True(t, ok) + require.Equal(t, plan.JobID, int64(1)) + require.Len(t, plan.Options, 1) + require.Equal(t, plan.Options[0].Name, AlterDDLJobThread) + cons, ok := plan.Options[0].Value.(*expression.Constant) + require.True(t, ok) + require.Equal(t, cons.Value.GetInt64(), int64(16)) + + stmt, err = parser.ParseOneStmt("admin alter ddl jobs 2 batch_size = 512 ", "", "") + require.NoError(t, err) + p, err = builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + plan, ok = p.(*AlterDDLJob) + require.True(t, ok) + require.Equal(t, plan.JobID, int64(2)) + require.Len(t, plan.Options, 1) + require.Equal(t, plan.Options[0].Name, AlterDDLJobBatchSize) + cons, ok = plan.Options[0].Value.(*expression.Constant) + require.True(t, ok) + require.Equal(t, cons.Value.GetInt64(), int64(512)) + + stmt, err = parser.ParseOneStmt("admin alter ddl jobs 3 max_write_speed = '10MiB' ", "", "") + require.NoError(t, err) + p, err = builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + plan, ok = p.(*AlterDDLJob) + require.True(t, ok) + require.Equal(t, plan.JobID, int64(3)) + require.Len(t, plan.Options, 1) + require.Equal(t, plan.Options[0].Name, AlterDDLJobMaxWriteSpeed) + cons, ok = plan.Options[0].Value.(*expression.Constant) + require.True(t, ok) + require.Equal(t, cons.Value.GetString(), "10MiB") + + stmt, err = parser.ParseOneStmt("admin alter ddl jobs 4 max_write_speed = 1024", "", "") + require.NoError(t, err) + p, err = builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + plan, ok = p.(*AlterDDLJob) + require.True(t, ok) + require.Equal(t, plan.JobID, int64(4)) + require.Len(t, plan.Options, 1) + require.Equal(t, AlterDDLJobMaxWriteSpeed, plan.Options[0].Name) + cons, ok = plan.Options[0].Value.(*expression.Constant) + require.True(t, ok) + require.EqualValues(t, 1024, cons.Value.GetInt64()) + + stmt, err = parser.ParseOneStmt("admin alter ddl jobs 5 thread = 16, batch_size = 512, max_write_speed = '10MiB' ", "", "") + require.NoError(t, err) + p, err = builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + plan, ok = p.(*AlterDDLJob) + require.True(t, ok) + require.Equal(t, plan.JobID, int64(5)) + require.Len(t, plan.Options, 3) + sort.Slice(plan.Options, func(i, j int) bool { + return plan.Options[i].Name < plan.Options[j].Name + }) + require.Equal(t, plan.Options[0].Name, AlterDDLJobBatchSize) + cons, ok = plan.Options[0].Value.(*expression.Constant) + require.True(t, ok) + require.Equal(t, cons.Value.GetInt64(), int64(512)) + require.Equal(t, plan.Options[1].Name, AlterDDLJobMaxWriteSpeed) + cons, ok = plan.Options[1].Value.(*expression.Constant) + require.True(t, ok) + require.Equal(t, cons.Value.GetString(), "10MiB") + require.Equal(t, plan.Options[2].Name, AlterDDLJobThread) + cons, ok = plan.Options[2].Value.(*expression.Constant) + require.True(t, ok) + require.Equal(t, cons.Value.GetInt64(), int64(16)) + + stmt, err = parser.ParseOneStmt("admin alter ddl jobs 4 aaa = 16", "", "") + require.NoError(t, err) + _, err = builder.Build(ctx, resolve.NewNodeW(stmt)) + require.Equal(t, err.Error(), "unsupported admin alter ddl jobs config: aaa") +} + +func TestGetMaxWriteSpeedFromExpression(t *testing.T) { + parser := parser.New() + sctx := MockContext() + ctx := context.TODO() + builder, _ := NewPlanBuilder().Init(sctx, nil, hint.NewQBHintHandler(nil)) + // random speed value + n := rand.Intn(units.PiB + 1) + stmt, err := parser.ParseOneStmt(fmt.Sprintf("admin alter ddl jobs 1 max_write_speed = %d ", n), "", "") + require.NoError(t, err) + p, err := builder.Build(ctx, resolve.NewNodeW(stmt)) + require.NoError(t, err) + plan, ok := p.(*AlterDDLJob) + require.True(t, ok) + require.Equal(t, plan.JobID, int64(1)) + require.Len(t, plan.Options, 1) + require.Equal(t, plan.Options[0].Name, AlterDDLJobMaxWriteSpeed) + _, ok = plan.Options[0].Value.(*expression.Constant) + require.True(t, ok) + maxWriteSpeed, err := GetMaxWriteSpeedFromExpression(plan.Options[0]) + require.NoError(t, err) + require.Equal(t, int64(n), maxWriteSpeed) + // parse speed string error + opt := &AlterDDLJobOpt{ + Name: "test", + Value: expression.NewStrConst("MiB"), + } + _, err = GetMaxWriteSpeedFromExpression(opt) + require.Equal(t, "parse max_write_speed value error: invalid size: 'MiB'", err.Error()) +} diff --git a/pkg/planner/core/point_get_plan.go b/pkg/planner/core/point_get_plan.go index 2b80ed70fd268..c18d9fb978ade 100644 --- a/pkg/planner/core/point_get_plan.go +++ b/pkg/planner/core/point_get_plan.go @@ -80,14 +80,14 @@ type PointGetPlan struct { // probeParents records the IndexJoins and Applys with this operator in their inner children. // Please see comments in PhysicalPlan for details. - probeParents []base.PhysicalPlan + probeParents []base.PhysicalPlan `plan-cache-clone:"shallow"` // explicit partition selection - PartitionNames []pmodel.CIStr + PartitionNames []pmodel.CIStr `plan-cache-clone:"shallow"` dbName string - schema *expression.Schema - TblInfo *model.TableInfo `plan-cache-clone:"shallow"` - IndexInfo *model.IndexInfo `plan-cache-clone:"shallow"` + schema *expression.Schema `plan-cache-clone:"shallow"` + TblInfo *model.TableInfo `plan-cache-clone:"shallow"` + IndexInfo *model.IndexInfo `plan-cache-clone:"shallow"` PartitionIdx *int Handle kv.Handle HandleConstant *expression.Constant @@ -99,21 +99,22 @@ type PointGetPlan struct { IdxCols []*expression.Column IdxColLens []int AccessConditions []expression.Expression - ctx base.PlanContext UnsignedHandle bool IsTableDual bool Lock bool outputNames []*types.FieldName `plan-cache-clone:"shallow"` LockWaitTime int64 Columns []*model.ColumnInfo `plan-cache-clone:"shallow"` - cost float64 // required by cost model + cost float64 planCostInit bool planCost float64 planCostVer2 costusage.CostVer2 `plan-cache-clone:"shallow"` // accessCols represents actual columns the PointGet will access, which are used to calculate row-size accessCols []*expression.Column + + // NOTE: please update FastClonePointGetForPlanCache accordingly if you add new fields here. } // GetEstRowCountForDisplay implements PhysicalPlan interface. @@ -420,7 +421,7 @@ type BatchPointGetPlan struct { // Please see comments in PhysicalPlan for details. probeParents []base.PhysicalPlan // explicit partition selection - PartitionNames []pmodel.CIStr + PartitionNames []pmodel.CIStr `plan-cache-clone:"shallow"` ctx base.PlanContext dbName string @@ -1394,6 +1395,7 @@ func checkTblIndexForPointPlan(ctx base.PlanContext, tblName *resolve.TableNameW if idxInfo.Global { if tblName.TableInfo == nil || len(tbl.GetPartitionInfo().AddingDefinitions) > 0 || + len(tbl.GetPartitionInfo().NewPartitionIDs) > 0 || len(tbl.GetPartitionInfo().DroppingDefinitions) > 0 { continue } @@ -2005,7 +2007,11 @@ func buildOrderedList(ctx base.PlanContext, plan base.Plan, list []*ast.Assignme if err != nil { return nil, true } - expr = expression.BuildCastFunction(ctx.GetExprCtx(), expr, col.GetStaticType()) + castToTP := col.GetStaticType() + if castToTP.GetType() == mysql.TypeEnum && assign.Expr.GetType().EvalType() == types.ETInt { + castToTP.AddFlag(mysql.EnumSetAsIntFlag) + } + expr = expression.BuildCastFunction(ctx.GetExprCtx(), expr, castToTP) if allAssignmentsAreConstant { _, isConst := expr.(*expression.Constant) allAssignmentsAreConstant = isConst diff --git a/pkg/planner/core/point_get_plan_test.go b/pkg/planner/core/point_get_plan_test.go index 6dc87e75b81e1..2c4bcc8f67cb8 100644 --- a/pkg/planner/core/point_get_plan_test.go +++ b/pkg/planner/core/point_get_plan_test.go @@ -275,3 +275,14 @@ func TestIssue52592(t *testing.T) { "TableDual 0.00 root rows:0", )) } + +func TestIssue56832(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t (id int primary key, c enum('0', '1', '2'));") + tk.MustExec("insert into t values (0,'0'), (1,'1'), (2,'2');") + tk.MustExec("update t set c = 2 where id = 0;") + tk.MustQuery("select c from t where id = 0").Check(testkit.Rows("1")) +} diff --git a/pkg/planner/core/preprocess.go b/pkg/planner/core/preprocess.go index ad1bf32e066b8..34408a5c5d9ab 100644 --- a/pkg/planner/core/preprocess.go +++ b/pkg/planner/core/preprocess.go @@ -180,7 +180,7 @@ var _ = PreprocessorReturn{}.initedLastSnapshotTS type PreprocessorReturn struct { initedLastSnapshotTS bool IsStaleness bool - SnapshotTSEvaluator func(sessionctx.Context) (uint64, error) + SnapshotTSEvaluator func(context.Context, sessionctx.Context) (uint64, error) // LastSnapshotTS is the last evaluated snapshotTS if any // otherwise it defaults to zero LastSnapshotTS uint64 @@ -571,7 +571,9 @@ func (p *preprocessor) checkBindGrammar(originNode, hintedNode ast.StmtNode, def TableInfo: tableInfo, }) } - + aliasChecker := &aliasChecker{} + originNode.Accept(aliasChecker) + hintedNode.Accept(aliasChecker) originSQL := parser.NormalizeForBinding(utilparser.RestoreWithDefaultDB(originNode, defaultDB, originNode.Text()), false) hintedSQL := parser.NormalizeForBinding(utilparser.RestoreWithDefaultDB(hintedNode, defaultDB, hintedNode.Text()), false) if originSQL != hintedSQL { @@ -1991,3 +1993,59 @@ func (p *preprocessor) skipLockMDL() bool { // skip lock mdl for ANALYZE statement. return p.flag&inImportInto > 0 || p.flag&inAnalyze > 0 } + +// aliasChecker is used to check the alias of the table in delete statement. +// +// for example: delete tt1 from t1 tt1,(select max(id) id from t2)tt2 where tt1.id<=tt2.id +// `delete tt1` will be transformed to `delete current_database.t1` by default. +// because `tt1` cannot be used as alias in delete statement. +// so we have to set `tt1` as alias by aliasChecker. +type aliasChecker struct{} + +func (*aliasChecker) Enter(in ast.Node) (ast.Node, bool) { + if deleteStmt, ok := in.(*ast.DeleteStmt); ok { + // 1. check the tableRefs of deleteStmt to find the alias + var aliases []*pmodel.CIStr + if deleteStmt.TableRefs != nil && deleteStmt.TableRefs.TableRefs != nil { + tableRefs := deleteStmt.TableRefs.TableRefs + if val := getTableRefsAlias(tableRefs.Left); val != nil { + aliases = append(aliases, val) + } + if val := getTableRefsAlias(tableRefs.Right); val != nil { + aliases = append(aliases, val) + } + } + // 2. check the Tables to tag the alias + if deleteStmt.Tables != nil && deleteStmt.Tables.Tables != nil { + for _, table := range deleteStmt.Tables.Tables { + if table.Schema.String() != "" { + continue + } + for _, alias := range aliases { + if table.Name.L == alias.L { + table.IsAlias = true + break + } + } + } + } + return in, true + } + return in, false +} + +func getTableRefsAlias(tableRefs ast.ResultSetNode) *pmodel.CIStr { + switch v := tableRefs.(type) { + case *ast.Join: + if v.Left != nil { + return getTableRefsAlias(v.Left) + } + case *ast.TableSource: + return &v.AsName + } + return nil +} + +func (*aliasChecker) Leave(in ast.Node) (ast.Node, bool) { + return in, true +} diff --git a/pkg/planner/core/preprocess_test.go b/pkg/planner/core/preprocess_test.go index f3eea5b6f54b9..9a8653e8ad409 100644 --- a/pkg/planner/core/preprocess_test.go +++ b/pkg/planner/core/preprocess_test.go @@ -414,3 +414,14 @@ func TestPreprocessCTE(t *testing.T) { require.Equal(t, tc.after, rs.String()) } } + +func TestPreprocessDeleteFromWithAlias(t *testing.T) { + // https://github.com/pingcap/tidb/issues/56726 + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1(id int);") + tk.MustExec(" create table t2(id int);") + tk.MustExec("delete tt1 from t1 tt1,(select max(id) id from t2)tt2 where tt1.id<=tt2.id;") + tk.MustExec("create global binding for delete tt1 from t1 tt1,(select max(id) id from t2)tt2 where tt1.id<=tt2.id using delete /*+ MAX_EXECUTION_TIME(10)*/ tt1 from t1 tt1,(select max(id) id from t2)tt2 where tt1.id<=tt2.id;") +} diff --git a/pkg/planner/core/rule/util/build_key_info_misc.go b/pkg/planner/core/rule/util/build_key_info_misc.go index 7ab9e89371f1e..160c8b61235e2 100644 --- a/pkg/planner/core/rule/util/build_key_info_misc.go +++ b/pkg/planner/core/rule/util/build_key_info_misc.go @@ -28,9 +28,9 @@ func CheckMaxOneRowCond(eqColIDs map[int64]struct{}, childSchema *expression.Sch return false } // We check `UniqueKeys` as well since the condition is `col = con | corr`, not `col <=> con | corr`. - keys := make([]expression.KeyInfo, 0, len(childSchema.Keys)+len(childSchema.UniqueKeys)) - keys = append(keys, childSchema.Keys...) - keys = append(keys, childSchema.UniqueKeys...) + keys := make([]expression.KeyInfo, 0, len(childSchema.PKOrUK)+len(childSchema.NullableUK)) + keys = append(keys, childSchema.PKOrUK...) + keys = append(keys, childSchema.NullableUK...) var maxOneRow bool for _, cols := range keys { maxOneRow = true diff --git a/pkg/planner/core/rule_aggregation_elimination.go b/pkg/planner/core/rule_aggregation_elimination.go index 6b5a7796e81b8..a4ef73338e44a 100644 --- a/pkg/planner/core/rule_aggregation_elimination.go +++ b/pkg/planner/core/rule_aggregation_elimination.go @@ -69,7 +69,7 @@ func (a *aggregationEliminateChecker) tryToEliminateAggregation(agg *logicalop.L schemaByGroupby := expression.NewSchema(agg.GetGroupByCols()...) coveredByUniqueKey := false var uniqueKey expression.KeyInfo - for _, key := range agg.Children()[0].Schema().Keys { + for _, key := range agg.Children()[0].Schema().PKOrUK { if schemaByGroupby.ColumnsIndices(key) != nil { coveredByUniqueKey = true uniqueKey = key @@ -109,14 +109,14 @@ func (*aggregationEliminateChecker) tryToEliminateDistinct(agg *logicalop.Logica distinctByUniqueKey := false schemaByDistinct := expression.NewSchema(cols...) var uniqueKey expression.KeyInfo - for _, key := range agg.Children()[0].Schema().Keys { + for _, key := range agg.Children()[0].Schema().PKOrUK { if schemaByDistinct.ColumnsIndices(key) != nil { distinctByUniqueKey = true uniqueKey = key break } } - for _, key := range agg.Children()[0].Schema().UniqueKeys { + for _, key := range agg.Children()[0].Schema().NullableUK { if schemaByDistinct.ColumnsIndices(key) != nil { distinctByUniqueKey = true uniqueKey = key diff --git a/pkg/planner/core/rule_aggregation_push_down.go b/pkg/planner/core/rule_aggregation_push_down.go index e172fd967c048..ebc1f339e88b5 100644 --- a/pkg/planner/core/rule_aggregation_push_down.go +++ b/pkg/planner/core/rule_aggregation_push_down.go @@ -264,7 +264,7 @@ func (a *AggregationPushDownSolver) tryToPushDownAgg(oldAgg *logicalop.LogicalAg return child, nil } tmpSchema := expression.NewSchema(gbyCols...) - for _, key := range child.Schema().Keys { + for _, key := range child.Schema().PKOrUK { if tmpSchema.ColumnsIndices(key) != nil { // gby item need to be covered by key. return child, nil } @@ -297,8 +297,9 @@ func (a *AggregationPushDownSolver) tryToPushDownAgg(oldAgg *logicalop.LogicalAg func (*AggregationPushDownSolver) getDefaultValues(agg *logicalop.LogicalAggregation) ([]types.Datum, bool) { defaultValues := make([]types.Datum, 0, agg.Schema().Len()) for _, aggFunc := range agg.AggFuncs { - value, existsDefaultValue := aggFunc.EvalNullValueInOuterJoin(agg.SCtx().GetExprCtx(), agg.Children()[0].Schema()) - if !existsDefaultValue { + value, existsDefaultValue, err := aggFunc.EvalNullValueInOuterJoin(agg.SCtx().GetExprCtx(), agg.Children()[0].Schema()) + // if err is not null, just treat it as no default value. + if err != nil || !existsDefaultValue { return nil, false } defaultValues = append(defaultValues, value) @@ -426,7 +427,7 @@ func (*AggregationPushDownSolver) pushAggCrossUnion(agg *logicalop.LogicalAggreg // e.g. Union distinct will add a aggregation like `select join_agg_0, join_agg_1, join_agg_2 from t group by a, b, c` above UnionAll. // And the pushed agg will be something like `select a, b, c, a, b, c from t group by a, b, c`. So if we just return child as join does, // this will cause error during executor phase. - for _, key := range unionChild.Schema().Keys { + for _, key := range unionChild.Schema().PKOrUK { if tmpSchema.ColumnsIndices(key) != nil { if ok, proj := ConvertAggToProj(newAgg, newAgg.Schema()); ok { proj.SetChildren(unionChild) diff --git a/pkg/planner/core/rule_collect_plan_stats.go b/pkg/planner/core/rule_collect_plan_stats.go index 7646d6d8f5045..d31dfa60a045f 100644 --- a/pkg/planner/core/rule_collect_plan_stats.go +++ b/pkg/planner/core/rule_collect_plan_stats.go @@ -16,6 +16,7 @@ package core import ( "context" + "maps" "time" "github.com/pingcap/failpoint" @@ -23,10 +24,12 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/planner/core/base" + "github.com/pingcap/tidb/pkg/planner/planctx" "github.com/pingcap/tidb/pkg/planner/util/optimizetrace" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" - "github.com/pingcap/tidb/pkg/table" + "github.com/pingcap/tidb/pkg/statistics/asyncload" + "github.com/pingcap/tidb/pkg/util/intset" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) @@ -35,45 +38,173 @@ import ( type CollectPredicateColumnsPoint struct{} // Optimize implements LogicalOptRule.<0th> interface. -func (CollectPredicateColumnsPoint) Optimize(_ context.Context, plan base.LogicalPlan, _ *optimizetrace.LogicalOptimizeOp) (base.LogicalPlan, bool, error) { +func (c *CollectPredicateColumnsPoint) Optimize(_ context.Context, plan base.LogicalPlan, _ *optimizetrace.LogicalOptimizeOp) (base.LogicalPlan, bool, error) { planChanged := false if plan.SCtx().GetSessionVars().InRestrictedSQL { return plan, planChanged, nil } syncWait := plan.SCtx().GetSessionVars().StatsLoadSyncWait.Load() histNeeded := syncWait > 0 - predicateColumns, histNeededColumns, visitedPhysTblIDs := CollectColumnStatsUsage(plan, histNeeded) + predicateColumns, visitedPhysTblIDs, tid2pids := CollectColumnStatsUsage(plan, histNeeded) if len(predicateColumns) > 0 { - plan.SCtx().UpdateColStatsUsage(predicateColumns) + plan.SCtx().UpdateColStatsUsage(maps.Keys(predicateColumns)) } // Prepare the table metadata to avoid repeatedly fetching from the infoSchema below, and trigger extra sync/async // stats loading for the determinate mode. - is := plan.SCtx().GetInfoSchema().(infoschema.InfoSchema) - tblID2Tbl := make(map[int64]table.Table) + is := plan.SCtx().GetDomainInfoSchema() + tblID2TblInfo := make(map[int64]*model.TableInfo) visitedPhysTblIDs.ForEach(func(physicalTblID int) { - tbl, _ := infoschema.FindTableByTblOrPartID(is, int64(physicalTblID)) - if tbl == nil { + tblInfo, _ := is.TableInfoByID(int64(physicalTblID)) + if tblInfo == nil { return } - tblID2Tbl[int64(physicalTblID)] = tbl + tblID2TblInfo[int64(physicalTblID)] = tblInfo }) + c.markAtLeastOneFullStatsLoadForEachTable(plan.SCtx(), visitedPhysTblIDs, tblID2TblInfo, predicateColumns, histNeeded) + if !histNeeded { + return plan, planChanged, nil + } + histNeededColumns := make([]model.StatsLoadItem, 0, len(predicateColumns)) + for item, fullLoad := range predicateColumns { + histNeededColumns = append(histNeededColumns, model.StatsLoadItem{TableItemID: item, FullLoad: fullLoad}) + } + // collect needed virtual columns from already needed columns // Note that we use the dependingVirtualCols only to collect needed index stats, but not to trigger stats loading on // the virtual columns themselves. It's because virtual columns themselves don't have statistics, while expression // indexes, which are indexes on virtual columns, have statistics. We don't waste the resource here now. - dependingVirtualCols := CollectDependingVirtualCols(tblID2Tbl, histNeededColumns) + dependingVirtualCols := CollectDependingVirtualCols(tblID2TblInfo, histNeededColumns) - histNeededIndices := collectSyncIndices(plan.SCtx(), append(histNeededColumns, dependingVirtualCols...), tblID2Tbl) + histNeededIndices := collectSyncIndices(plan.SCtx(), append(histNeededColumns, dependingVirtualCols...), tblID2TblInfo) histNeededItems := collectHistNeededItems(histNeededColumns, histNeededIndices) - if histNeeded && len(histNeededItems) > 0 { + histNeededItems = c.expandStatsNeededColumnsForStaticPruning(histNeededItems, tid2pids) + if len(histNeededItems) > 0 { err := RequestLoadStats(plan.SCtx(), histNeededItems, syncWait) return plan, planChanged, err } return plan, planChanged, nil } +// markAtLeastOneFullStatsLoadForEachTable marks at least one full stats load for each table. +// It should be called after we use c.predicateCols to update the usage of predicate columns. +func (*CollectPredicateColumnsPoint) markAtLeastOneFullStatsLoadForEachTable( + sctx planctx.PlanContext, + visitedPhysTblIDs *intset.FastIntSet, + tblID2TblInfo map[int64]*model.TableInfo, + predicateCols map[model.TableItemID]bool, + histNeeded bool, +) { + statsHandle := domain.GetDomain(sctx).StatsHandle() + if statsHandle == nil { + // If there's no stats handler, it's abnormal status. Return directly. + return + } + physTblIDsWithNeededCols := intset.NewFastIntSet() + for neededCol, fullLoad := range predicateCols { + if !fullLoad { + continue + } + tblInfo := tblID2TblInfo[neededCol.TableID] + // If we don't find its table info, it might be deleted. Skip. + if tblInfo == nil { + continue + } + tableStats := statsHandle.GetTableStats(tblInfo) + if tableStats == nil || tableStats.Pseudo { + continue + } + if !tableStats.ColAndIdxExistenceMap.HasAnalyzed(neededCol.ID, neededCol.IsIndex) { + continue + } + physTblIDsWithNeededCols.Insert(int(neededCol.TableID)) + } + visitedPhysTblIDs.ForEach(func(physicalTblID int) { + // 1. collect table metadata + tbl := tblID2TblInfo[int64(physicalTblID)] + if tbl == nil { + return + } + + // 2. get the stats table + // If we already collected some columns that need trigger sync loading on this table, we don't need to + // additionally do anything for determinate mode. + if physTblIDsWithNeededCols.Has(physicalTblID) { + return + } + tblStats := statsHandle.GetTableStats(tbl) + if tblStats == nil || tblStats.Pseudo { + return + } + var colToTriggerLoad *model.TableItemID + for _, col := range tbl.Columns { + // Skip the column that satisfies any of the following conditions: + // 1. not in public state. + // 2. virtual generated column. + // 3. unanalyzed column. + if col.State != model.StatePublic || (col.IsGenerated() && !col.GeneratedStored) || !tblStats.ColAndIdxExistenceMap.HasAnalyzed(col.ID, false) { + continue + } + if colStats := tblStats.GetCol(col.ID); colStats != nil { + // If any stats are already full loaded, we don't need to trigger stats loading on this table. + if colStats.IsFullLoad() { + colToTriggerLoad = nil + break + } + } + // Choose the first column we meet to trigger stats loading. + colToTriggerLoad = &model.TableItemID{TableID: int64(physicalTblID), ID: col.ID, IsIndex: false} + break + } + if colToTriggerLoad == nil { + return + } + for _, idx := range tbl.Indices { + if idx.State != model.StatePublic || idx.MVIndex { + continue + } + // If any stats are already full loaded, we don't need to trigger stats loading on this table. + if idxStats := tblStats.GetIdx(idx.ID); idxStats != nil && idxStats.IsFullLoad() { + colToTriggerLoad = nil + break + } + } + if colToTriggerLoad == nil { + return + } + if histNeeded { + predicateCols[*colToTriggerLoad] = true + } else { + asyncload.AsyncLoadHistogramNeededItems.Insert(*colToTriggerLoad, true) + } + }) +} + +func (CollectPredicateColumnsPoint) expandStatsNeededColumnsForStaticPruning( + histNeededItems []model.StatsLoadItem, + tid2pids map[int64][]int64, +) []model.StatsLoadItem { + curLen := len(histNeededItems) + for i := 0; i < curLen; i++ { + partitionIDs := tid2pids[histNeededItems[i].TableID] + if len(partitionIDs) == 0 { + continue + } + for _, pid := range partitionIDs { + histNeededItems = append(histNeededItems, model.StatsLoadItem{ + TableItemID: model.TableItemID{ + TableID: pid, + ID: histNeededItems[i].ID, + IsIndex: histNeededItems[i].IsIndex, + }, + FullLoad: histNeededItems[i].FullLoad, + }) + } + } + return histNeededItems +} + // Name implements the base.LogicalOptRule.<1st> interface. func (CollectPredicateColumnsPoint) Name() string { return "collect_predicate_columns_point" @@ -179,7 +310,7 @@ func SyncWaitStatsLoad(plan base.LogicalPlan) error { // but d will not be collected. // It's because currently it's impossible that statistics related to indirectly depending columns are actually needed. // If we need to check indirect dependency some day, we can easily extend the logic here. -func CollectDependingVirtualCols(tblID2Tbl map[int64]table.Table, neededItems []model.StatsLoadItem) []model.StatsLoadItem { +func CollectDependingVirtualCols(tblID2Tbl map[int64]*model.TableInfo, neededItems []model.StatsLoadItem) []model.StatsLoadItem { generatedCols := make([]model.StatsLoadItem, 0) // group the neededItems by table id @@ -200,16 +331,16 @@ func CollectDependingVirtualCols(tblID2Tbl map[int64]table.Table, neededItems [] // collect the needed columns on this table into a set for faster lookup colNameSet := make(map[string]struct{}, len(colIDs)) for _, colID := range colIDs { - name := tbl.Meta().FindColumnNameByID(colID) + name := tbl.FindColumnNameByID(colID) if name == "" { continue } colNameSet[name] = struct{}{} } // iterate columns in this table, and collect the virtual columns that depend on the needed columns - for _, col := range tbl.Cols() { + for _, col := range tbl.Columns { // only handles virtual columns - if !col.IsVirtualGenerated() { + if col.State != model.StatePublic || !col.IsVirtualGenerated() { continue } // If this column is already needed, then skip it. @@ -235,7 +366,7 @@ func CollectDependingVirtualCols(tblID2Tbl map[int64]table.Table, neededItems [] // 2. The stats condition of idx_a can't meet IsFullLoad, which means its stats was evicted previously func collectSyncIndices(ctx base.PlanContext, histNeededColumns []model.StatsLoadItem, - tblID2Tbl map[int64]table.Table, + tblID2Tbl map[int64]*model.TableInfo, ) map[model.TableItemID]struct{} { histNeededIndices := make(map[model.TableItemID]struct{}) stats := domain.GetDomain(ctx).StatsHandle() @@ -247,18 +378,18 @@ func collectSyncIndices(ctx base.PlanContext, if tbl == nil { continue } - colName := tbl.Meta().FindColumnNameByID(column.ID) + colName := tbl.FindColumnNameByID(column.ID) if colName == "" { continue } - for _, idx := range tbl.Indices() { - if idx.Meta().State != model.StatePublic { + for _, idx := range tbl.Indices { + if idx.State != model.StatePublic { continue } - idxCol := idx.Meta().FindColumnByName(colName) - idxID := idx.Meta().ID + idxCol := idx.FindColumnByName(colName) + idxID := idx.ID if idxCol != nil { - tblStats := stats.GetTableStats(tbl.Meta()) + tblStats := stats.GetTableStats(tbl) if tblStats == nil || tblStats.Pseudo { continue } @@ -274,11 +405,11 @@ func collectSyncIndices(ctx base.PlanContext, } func collectHistNeededItems(histNeededColumns []model.StatsLoadItem, histNeededIndices map[model.TableItemID]struct{}) (histNeededItems []model.StatsLoadItem) { - histNeededItems = make([]model.StatsLoadItem, 0, len(histNeededColumns)+len(histNeededIndices)) + histNeededItems = make([]model.StatsLoadItem, len(histNeededColumns), len(histNeededColumns)+len(histNeededIndices)) + copy(histNeededItems, histNeededColumns) for idx := range histNeededIndices { histNeededItems = append(histNeededItems, model.StatsLoadItem{TableItemID: idx, FullLoad: true}) } - histNeededItems = append(histNeededItems, histNeededColumns...) return } diff --git a/pkg/planner/core/rule_decorrelate.go b/pkg/planner/core/rule_decorrelate.go index 08fac278701b5..e56379e6432e4 100644 --- a/pkg/planner/core/rule_decorrelate.go +++ b/pkg/planner/core/rule_decorrelate.go @@ -248,7 +248,7 @@ func (s *DecorrelateSolver) Optimize(ctx context.Context, p base.LogicalPlan, op apply.JoinType = logicalop.LeftOuterJoin apply.SetChildren(outerPlan, innerPlan) agg.SetSchema(apply.Schema()) - agg.GroupByItems = expression.Column2Exprs(outerPlan.Schema().Keys[0]) + agg.GroupByItems = expression.Column2Exprs(outerPlan.Schema().PKOrUK[0]) newAggFuncs := make([]*aggregation.AggFuncDesc, 0, apply.Schema().Len()) outerColsInSchema := make([]*expression.Column, 0, outerPlan.Schema().Len()) diff --git a/pkg/planner/core/rule_join_elimination.go b/pkg/planner/core/rule_join_elimination.go index 31964fdaadffa..3d473c4e988b2 100644 --- a/pkg/planner/core/rule_join_elimination.go +++ b/pkg/planner/core/rule_join_elimination.go @@ -123,7 +123,7 @@ func IsColsAllFromOuterTable(cols []*expression.Column, outerUniqueIDs set.Int64 // check whether one of unique keys sets is contained by inner join keys func (*OuterJoinEliminator) isInnerJoinKeysContainUniqueKey(innerPlan base.LogicalPlan, joinKeys *expression.Schema) (bool, error) { - for _, keyInfo := range innerPlan.Schema().Keys { + for _, keyInfo := range innerPlan.Schema().PKOrUK { joinKeysContainKeyInfo := true for _, col := range keyInfo { if !joinKeys.Contains(col) { diff --git a/pkg/planner/core/rule_partition_processor.go b/pkg/planner/core/rule_partition_processor.go index adf30ffbbcaf7..9d80b20bf7ff5 100644 --- a/pkg/planner/core/rule_partition_processor.go +++ b/pkg/planner/core/rule_partition_processor.go @@ -781,7 +781,7 @@ func (l *listPartitionPruner) findUsedListPartitions(conds []expression.Expressi used := make(map[int]struct{}, len(ranges)) tc := l.ctx.GetSessionVars().StmtCtx.TypeCtx() for _, r := range ranges { - if len(r.HighVal) != len(exprCols) { + if len(r.HighVal) != len(exprCols) || r.IsFullRange(false) { return l.fullRange, nil } var idxs map[int]struct{} @@ -1320,7 +1320,7 @@ func multiColumnRangeColumnsPruner(sctx base.PlanContext, exprs []expression.Exp lens = append(lens, columnsPruner.partCols[i].RetType.GetFlen()) } - res, err := ranger.DetachCondAndBuildRangeForIndex(sctx.GetRangerCtx(), exprs, columnsPruner.partCols, lens, sctx.GetSessionVars().RangeMaxSize) + res, err := ranger.DetachCondAndBuildRangeForPartition(sctx.GetRangerCtx(), exprs, columnsPruner.partCols, lens, sctx.GetSessionVars().RangeMaxSize) if err != nil { return fullRange(len(columnsPruner.lessThan)) } @@ -1335,16 +1335,12 @@ func multiColumnRangeColumnsPruner(sctx base.PlanContext, exprs []expression.Exp rangeOr := make([]partitionRange, 0, len(res.Ranges)) - comparer := make([]collate.Collator, 0, len(columnsPruner.partCols)) - for i := range columnsPruner.partCols { - comparer = append(comparer, collate.GetCollator(columnsPruner.partCols[i].RetType.GetCollate())) - } gotError := false // Create a sort.Search where the compare loops over ColumnValues // Loop over the different ranges and extend/include all the partitions found for idx := range res.Ranges { - minComparer := minCmp(sctx, res.Ranges[idx].LowVal, columnsPruner, comparer, res.Ranges[idx].LowExclude, &gotError) - maxComparer := maxCmp(sctx, res.Ranges[idx].HighVal, columnsPruner, comparer, res.Ranges[idx].HighExclude, &gotError) + minComparer := minCmp(sctx, res.Ranges[idx].LowVal, columnsPruner, res.Ranges[idx].Collators, res.Ranges[idx].LowExclude, &gotError) + maxComparer := maxCmp(sctx, res.Ranges[idx].HighVal, columnsPruner, res.Ranges[idx].Collators, res.Ranges[idx].HighExclude, &gotError) if gotError { // the compare function returned error, use all partitions. return fullRange(len(columnsPruner.lessThan)) @@ -1953,10 +1949,9 @@ func makeRangeColumnPruner(columns []*expression.Column, pi *model.PartitionInfo if len(pi.Definitions) != len(from.LessThan) { return nil, errors.Trace(fmt.Errorf("internal error len(pi.Definitions) != len(from.LessThan) %d != %d", len(pi.Definitions), len(from.LessThan))) } - schema := expression.NewSchema(columns...) partCols := make([]*expression.Column, len(offsets)) for i, offset := range offsets { - partCols[i] = schema.Columns[offset] + partCols[i] = columns[offset] } lessThan := make([][]*expression.Expression, 0, len(from.LessThan)) for i := range from.LessThan { diff --git a/pkg/planner/core/rule_predicate_simplification.go b/pkg/planner/core/rule_predicate_simplification.go index 84b09309cd789..3ab9bec94b266 100644 --- a/pkg/planner/core/rule_predicate_simplification.go +++ b/pkg/planner/core/rule_predicate_simplification.go @@ -55,6 +55,9 @@ func findPredicateType(expr expression.Expression) (*expression.Column, predicat return nil, orPredicate } args := v.GetArgs() + if len(args) == 0 { + return nil, otherPredicate + } col, colOk := args[0].(*expression.Column) if !colOk { return nil, otherPredicate @@ -221,7 +224,10 @@ func unsatisfiable(ctx base.PlanContext, p1, p2 expression.Expression) bool { // Copy constant from equal predicate into other predicate. equalValue := equalPred.(*expression.ScalarFunction) otherValue := otherPred.(*expression.ScalarFunction) - newPred := expression.NewFunctionInternal(ctx.GetExprCtx(), otherValue.FuncName.L, otherValue.RetType, equalValue.GetArgs()[1], otherValue.GetArgs()[1]) + newPred, err := expression.NewFunction(ctx.GetExprCtx(), otherValue.FuncName.L, otherValue.RetType, equalValue.GetArgs()[1], otherValue.GetArgs()[1]) + if err != nil { + return false + } newPredList := make([]expression.Expression, 0, 1) newPredList = append(newPredList, newPred) newPredList = expression.PropagateConstant(ctx.GetExprCtx(), newPredList) @@ -273,7 +279,11 @@ func updateOrPredicate(ctx base.PlanContext, orPredicateList expression.Expressi } else if emptyFirst && emptySecond { return &expression.Constant{Value: types.NewIntDatum(0), RetType: types.NewFieldType(mysql.TypeTiny)} } - return expression.NewFunctionInternal(ctx.GetExprCtx(), ast.LogicOr, v.RetType, firstCondition, secondCondition) + newPred, err := expression.NewFunction(ctx.GetExprCtx(), ast.LogicOr, v.RetType, firstCondition, secondCondition) + if err != nil { + return orPredicateList + } + return newPred } // pruneEmptyORBranches applies iteratively updateOrPredicate for each pair of OR predicate diff --git a/pkg/planner/core/runtime_filter_generator.go b/pkg/planner/core/runtime_filter_generator.go index dba6e0b59d49e..9ea586df60393 100644 --- a/pkg/planner/core/runtime_filter_generator.go +++ b/pkg/planner/core/runtime_filter_generator.go @@ -83,9 +83,6 @@ func (generator *RuntimeFilterGenerator) GenerateRuntimeFilter(plan base.Physica func (generator *RuntimeFilterGenerator) generateRuntimeFilterInterval(hashJoinPlan *PhysicalHashJoin) { // precondition: the storage type of hash join must be TiFlash if hashJoinPlan.storeTp != kv.TiFlash { - logutil.BgLogger().Warn("RF only support TiFlash compute engine while storage type of hash join node is not TiFlash", - zap.Int("PhysicalHashJoinId", hashJoinPlan.ID()), - zap.String("StoreTP", hashJoinPlan.storeTp.Name())) return } // check hash join pattern diff --git a/pkg/planner/core/scalar_subq_expression.go b/pkg/planner/core/scalar_subq_expression.go index 2a7f2bf16ecee..50a07bc6de0a4 100644 --- a/pkg/planner/core/scalar_subq_expression.go +++ b/pkg/planner/core/scalar_subq_expression.go @@ -233,16 +233,14 @@ func (s *ScalarSubQueryExpr) Hash64(h base2.Hasher) { // Equals implements the HashEquals.<1st> interface. func (s *ScalarSubQueryExpr) Equals(other any) bool { - if other == nil { + s2, ok := other.(*ScalarSubQueryExpr) + if !ok { return false } - var s2 *ScalarSubQueryExpr - switch x := other.(type) { - case *ScalarSubQueryExpr: - s2 = x - case ScalarSubQueryExpr: - s2 = &x - default: + if s == nil { + return s2 == nil + } + if s2 == nil { return false } return s.scalarSubqueryColID == s2.scalarSubqueryColID diff --git a/pkg/planner/core/stats.go b/pkg/planner/core/stats.go index 40056528f55ee..a0680f4af88ef 100644 --- a/pkg/planner/core/stats.go +++ b/pkg/planner/core/stats.go @@ -160,7 +160,11 @@ func deriveStats4DataSource(lp base.LogicalPlan, colGroups [][]*expression.Colum if ds.SCtx().GetSessionVars().StmtCtx.EnableOptimizerDebugTrace { debugTraceAccessPaths(ds.SCtx(), ds.PossibleAccessPaths) } - ds.AccessPathMinSelectivity = getMinSelectivityFromPaths(ds.PossibleAccessPaths, float64(ds.TblColHists.RealtimeCount)) + indexForce := false + ds.AccessPathMinSelectivity, indexForce = getGeneralAttributesFromPaths(ds.PossibleAccessPaths, float64(ds.TblColHists.RealtimeCount)) + if indexForce { + ds.SCtx().GetSessionVars().StmtCtx.SetIndexForce() + } return ds.StatsInfo(), nil } @@ -404,21 +408,24 @@ func detachCondAndBuildRangeForPath( return err } -func getMinSelectivityFromPaths(paths []*util.AccessPath, totalRowCount float64) float64 { +func getGeneralAttributesFromPaths(paths []*util.AccessPath, totalRowCount float64) (float64, bool) { minSelectivity := 1.0 - if totalRowCount <= 0 { - return minSelectivity - } + indexForce := false for _, path := range paths { // For table path and index merge path, AccessPath.CountAfterIndex is not set and meaningless, // but we still consider their AccessPath.CountAfterAccess. - if path.IsTablePath() || path.PartialIndexPaths != nil { - minSelectivity = min(minSelectivity, path.CountAfterAccess/totalRowCount) - continue + if totalRowCount > 0 { + if path.IsTablePath() || path.PartialIndexPaths != nil { + minSelectivity = min(minSelectivity, path.CountAfterAccess/totalRowCount) + } else { + minSelectivity = min(minSelectivity, path.CountAfterIndex/totalRowCount) + } + } + if !indexForce && path.Forced { + indexForce = true } - minSelectivity = min(minSelectivity, path.CountAfterIndex/totalRowCount) } - return minSelectivity + return minSelectivity, indexForce } func getGroupNDVs(ds *logicalop.DataSource, colGroups [][]*expression.Column) []property.GroupNDV { diff --git a/pkg/planner/core/task.go b/pkg/planner/core/task.go index 14c49e3ae78b7..b4a479c72701a 100644 --- a/pkg/planner/core/task.go +++ b/pkg/planner/core/task.go @@ -1438,8 +1438,8 @@ func BuildFinalModeAggregation( // If there is no avg, nothing is changed and return nil. func (p *basePhysicalAgg) convertAvgForMPP() *PhysicalProjection { newSchema := expression.NewSchema() - newSchema.Keys = p.schema.Keys - newSchema.UniqueKeys = p.schema.UniqueKeys + newSchema.PKOrUK = p.schema.PKOrUK + newSchema.NullableUK = p.schema.NullableUK newAggFuncs := make([]*aggregation.AggFuncDesc, 0, 2*len(p.AggFuncs)) exprs := make([]expression.Expression, 0, 2*len(p.schema.Columns)) // add agg functions schema diff --git a/pkg/planner/core/testdata/index_merge_suite_out.json b/pkg/planner/core/testdata/index_merge_suite_out.json index 66cc33e82a435..72197a2bf4d4d 100644 --- a/pkg/planner/core/testdata/index_merge_suite_out.json +++ b/pkg/planner/core/testdata/index_merge_suite_out.json @@ -189,7 +189,7 @@ "SQL": "select (select /*+ use_index_merge(t1,ia,ibc,ic) */ a from t1 where t1.a > 10 and t1.b = 20 and t1.c = t2.a) from t2", "Plan": [ "Projection 3.00 root test.t1.a", - "└─Apply 3.00 root CARTESIAN left outer join", + "└─Apply 3.00 root CARTESIAN left outer join, left side:IndexReader", " ├─IndexReader(Build) 3.00 root partition:all index:IndexFullScan", " │ └─IndexFullScan 3.00 cop[tikv] table:t2, index:ia(a) keep order:false", " └─MaxOneRow(Probe) 3.00 root ", @@ -208,7 +208,7 @@ "SQL": "select (select /*+ use_index_merge(t1,ia,ibc,ic) */ a from t1 where t1.a > 10 and t1.b = 20 and t1.c > t2.a) from t2", "Plan": [ "Projection 3.00 root test.t1.a", - "└─Apply 3.00 root CARTESIAN left outer join", + "└─Apply 3.00 root CARTESIAN left outer join, left side:IndexReader", " ├─IndexReader(Build) 3.00 root partition:all index:IndexFullScan", " │ └─IndexFullScan 3.00 cop[tikv] table:t2, index:ia(a) keep order:false", " └─MaxOneRow(Probe) 3.00 root ", @@ -228,7 +228,7 @@ "SQL": "select (select /*+ use_index_merge(t1,ia,ibc,ic) */ a from t1 where t1.a > 10 and t1.b = 20 and t1.e > t2.a) from t2", "Plan": [ "Projection 3.00 root test.t1.a", - "└─Apply 3.00 root CARTESIAN left outer join", + "└─Apply 3.00 root CARTESIAN left outer join, left side:IndexReader", " ├─IndexReader(Build) 3.00 root partition:all index:IndexFullScan", " │ └─IndexFullScan 3.00 cop[tikv] table:t2, index:ia(a) keep order:false", " └─MaxOneRow(Probe) 3.00 root ", diff --git a/pkg/planner/core/testdata/plan_suite_unexported_in.json b/pkg/planner/core/testdata/plan_suite_unexported_in.json index 067b1836d9836..cb3764f8ac309 100644 --- a/pkg/planner/core/testdata/plan_suite_unexported_in.json +++ b/pkg/planner/core/testdata/plan_suite_unexported_in.json @@ -173,8 +173,22 @@ "select a, b from (select @i as a, @i := @i+1 as b from t) t order by a desc limit 1", // Test TopN + Left Join + Proj. "select * from t left outer join t s on t.a = s.a order by t.a limit 5", - // Test TopN + Left Join + Proj. + // Test TopN(with offset) + Left Join + Proj, outer side join key is unique key and not null. "select * from t left outer join t s on t.a = s.a order by t.a limit 5, 5", + // Test TopN(with offset) + Left Join + Proj, outer side join key is unique key and not null. + "select * from t left outer join t s on t.f = s.f and t.g = s.g order by t.f, t.g limit 5, 5", + // Test TopN(with offset) + Left Join + Proj, outer side join key is unique key and not null. + "select * from t left outer join t s on t.f = s.f and t.g = s.g order by t.g, t.f limit 5, 5", + // Test TopN(with offset) + Left Join + Proj, outer side join key is part of unique key and not null. + "select * from t left outer join t s on t.g = s.g order by t.g limit 5, 5", + // Test TopN(with offset) + Left Join + Proj, outer side join key is part of unique key and not null. + "select * from t left outer join t s on t.g = s.g order by t.f, t.g limit 5, 5", + // Test TopN(with offset) + Left Join + Proj, outer side join key is unique key(c, d, e) but nullable. + "select * from t left outer join t s on t.c = s.c and t.d=s.d and t.e=s.e order by t.c, t.d, t.e limit 5, 5", + // Test TopN(with offset) + Left Join + Proj, outer side join key is part of unique key(c, d, e) but nullable. + "select * from t left outer join t s on t.c = s.c and t.d=s.d order by t.c, t.d limit 5, 5", + // Test TopN(with offset) + Left Join + Proj, outer side join key is not unique. + "select * from t left outer join t s on t.b = s.b order by t.b limit 5, 5", // Test Limit + Left Join + Proj. "select * from t left outer join t s on t.a = s.a limit 5", // Test Limit + Left Join Apply + Proj. diff --git a/pkg/planner/core/testdata/plan_suite_unexported_out.json b/pkg/planner/core/testdata/plan_suite_unexported_out.json index 85c6fef491855..e6d20fd872aa7 100644 --- a/pkg/planner/core/testdata/plan_suite_unexported_out.json +++ b/pkg/planner/core/testdata/plan_suite_unexported_out.json @@ -150,15 +150,22 @@ "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", - "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)->TopN([test.t.a],0,10)->DataScan(s)}(test.t.a,test.t.a)->TopN([test.t.a],5,5)->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", + "Join{DataScan(t)->TopN([test.t.g test.t.f],5,5)->DataScan(s)}(test.t.f,test.t.f)(test.t.g,test.t.g)->Sort->Projection", + "Join{DataScan(t)->TopN([test.t.g],0,10)->DataScan(s)}(test.t.g,test.t.g)->TopN([test.t.g],5,5)->Projection", + "Join{DataScan(t)->TopN([test.t.f test.t.g],0,10)->DataScan(s)}(test.t.g,test.t.g)->TopN([test.t.f test.t.g],5,5)->Projection", + "Join{DataScan(t)->TopN([test.t.c test.t.d test.t.e],5,5)->DataScan(s)}(test.t.c,test.t.c)(test.t.d,test.t.d)(test.t.e,test.t.e)->Sort->Projection", + "Join{DataScan(t)->TopN([test.t.c test.t.d],0,10)->DataScan(s)}(test.t.c,test.t.c)(test.t.d,test.t.d)->TopN([test.t.c test.t.d],5,5)->Projection", + "Join{DataScan(t)->TopN([test.t.b],0,10)->DataScan(s)}(test.t.b,test.t.b)->TopN([test.t.b],5,5)->Projection", "Join{DataScan(t)->Limit->DataScan(s)}(test.t.a,test.t.a)->Limit->Projection", "Join{DataScan(t)->Limit->DataScan(s)}(test.t.a,test.t.a)->Limit->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)->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([test.t.a],0,5)->Projection", - "Join{DataScan(t)->DataScan(s)->TopN([test.t.a],0,5)}(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)", 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 8f2e1b65181ca..161f12ca429e9 100644 --- a/pkg/planner/core/testdata/runtime_filter_generator_suite_out.json +++ b/pkg/planner/core/testdata/runtime_filter_generator_suite_out.json @@ -154,7 +154,7 @@ "Plan": [ "TableReader 1.00 root MppVersion: 2, data:ExchangeSender", "└─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough", - " └─HashJoin 1.00 mpp[tiflash] right outer join, equal:[eq(test.t1.k1, test.t2.k1)]", + " └─HashJoin 1.00 mpp[tiflash] right outer join, left side:ExchangeReceiver, equal:[eq(test.t1.k1, test.t2.k1)]", " ├─ExchangeReceiver(Build) 1.00 mpp[tiflash] ", " │ └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST", " │ └─Selection 1.00 mpp[tiflash] not(isnull(test.t1.k1))", diff --git a/pkg/planner/core/tests/analyze/BUILD.bazel b/pkg/planner/core/tests/analyze/BUILD.bazel new file mode 100644 index 0000000000000..cb8137fc63554 --- /dev/null +++ b/pkg/planner/core/tests/analyze/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "analyze_test", + timeout = "short", + srcs = [ + "analyze_test.go", + "main_test.go", + ], + flaky = True, + deps = [ + "//pkg/testkit", + "//pkg/testkit/testsetup", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/pkg/planner/core/tests/analyze/analyze_test.go b/pkg/planner/core/tests/analyze/analyze_test.go new file mode 100644 index 0000000000000..b72daf24756a6 --- /dev/null +++ b/pkg/planner/core/tests/analyze/analyze_test.go @@ -0,0 +1,29 @@ +// Copyright 2024 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 analyze + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/testkit" +) + +func TestAnalyzeVirtualColumns(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec(`CREATE TABLE t1 (id bigint NOT NULL,c1 varchar(50) NOT NULL ,c2 int DEFAULT NULL ,c3 json DEFAULT NULL ,c4 varchar(255) GENERATED ALWAYS AS (json_unquote(json_extract(c3, '$.oppositePlaceId'))) VIRTUAL ,PRIMARY KEY (id),UNIQUE KEY idx_unique (c1,c2)) ;`) + tk.MustExec("analyze table t1 all columns") +} diff --git a/pkg/planner/core/tests/analyze/main_test.go b/pkg/planner/core/tests/analyze/main_test.go new file mode 100644 index 0000000000000..6e82ccc5f5a5e --- /dev/null +++ b/pkg/planner/core/tests/analyze/main_test.go @@ -0,0 +1,34 @@ +// Copyright 2024 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 analyze + +import ( + "flag" + "testing" + + "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.VerifyTestMain(m, opts...) +} diff --git a/pkg/planner/core/tests/cte/BUILD.bazel b/pkg/planner/core/tests/cte/BUILD.bazel new file mode 100644 index 0000000000000..4ca7030885b41 --- /dev/null +++ b/pkg/planner/core/tests/cte/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "cte_test", + timeout = "short", + srcs = [ + "cte_test.go", + "main_test.go", + ], + flaky = True, + deps = [ + "//pkg/testkit", + "//pkg/testkit/testsetup", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/pkg/planner/core/tests/cte/cte_test.go b/pkg/planner/core/tests/cte/cte_test.go new file mode 100644 index 0000000000000..fa7ebb5d964af --- /dev/null +++ b/pkg/planner/core/tests/cte/cte_test.go @@ -0,0 +1,54 @@ +// Copyright 2024 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 cte + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/testkit" +) + +func TestCTEWithDifferentSchema(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("CREATE USER 'db_a'@'%';") + tk.MustExec("CREATE USER 'db_b'@'%';") + tk.MustExec("GRANT ALL PRIVILEGES ON `db_a`.* TO 'db_a'@'%';") + tk.MustExec("GRANT ALL PRIVILEGES ON `db_b`.* TO 'db_a'@'%';") + tk.MustExec("GRANT ALL PRIVILEGES ON `db_b`.* TO 'db_b'@'%';") + tk.MustExec("GRANT ALL PRIVILEGES ON `db_b`.* TO 'db_b'@'%';") + tk.MustExec("create database db_a;") + tk.MustExec("create database db_b;") + tk.MustExec("use db_a;") + tk.MustExec(`CREATE TABLE tmp_table1 ( + id decimal(18,0) NOT NULL, + row_1 varchar(255) DEFAULT NULL, + PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */ + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin`) + tk.MustExec(`create ALGORITHM=UNDEFINED DEFINER=db_a@'%' SQL SECURITY DEFINER VIEW view_test_v1 as ( + with rs1 as( + select otn.* + from tmp_table1 otn + ) + select ojt.* from rs1 ojt + )`) + tk.MustExec("use db_b;") + tk.MustQuery("explain select * from db_a.view_test_v1;").Check(testkit.Rows( + "CTEFullScan_11 10000.00 root CTE:rs1 AS ojt data:CTE_0", + "CTE_0 10000.00 root Non-Recursive CTE", + "└─TableReader_9(Seed Part) 10000.00 root data:TableFullScan_8", + " └─TableFullScan_8 10000.00 cop[tikv] table:otn keep order:false, stats:pseudo")) +} diff --git a/pkg/planner/core/tests/cte/main_test.go b/pkg/planner/core/tests/cte/main_test.go new file mode 100644 index 0000000000000..191fa0ace9e5e --- /dev/null +++ b/pkg/planner/core/tests/cte/main_test.go @@ -0,0 +1,34 @@ +// Copyright 2024 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 cte + +import ( + "flag" + "testing" + + "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.VerifyTestMain(m, opts...) +} diff --git a/pkg/planner/core/tests/redact/redact_test.go b/pkg/planner/core/tests/redact/redact_test.go index ef267baa9a947..9d8f29985b285 100644 --- a/pkg/planner/core/tests/redact/redact_test.go +++ b/pkg/planner/core/tests/redact/redact_test.go @@ -44,7 +44,7 @@ func TestRedactExplain(t *testing.T) { 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", - "└─HashJoin_9 2.50 root left outer join, equal:[eq(test.t.a, test.tlist.a)]", + "└─HashJoin_9 2.50 root left outer join, left side:Batch_Point_Get_10, 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", " └─Selection_12 20.00 cop[tikv] in(test.tlist.a, ‹12›, ‹13›), not(isnull(test.tlist.a))", @@ -117,7 +117,7 @@ func TestRedactExplain(t *testing.T) { 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", - "└─HashJoin_9 2.50 root left outer join, equal:[eq(test.t.a, test.tlist.a)]", + "└─HashJoin_9 2.50 root left outer join, left side:Batch_Point_Get_10, 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", " └─Selection_12 20.00 cop[tikv] in(test.tlist.a, ?, ?), not(isnull(test.tlist.a))", @@ -220,14 +220,14 @@ func TestJoinNotSupportedByTiFlash(t *testing.T) { tk.MustExec("admin reload expr_pushdown_blacklist;") tk.MustExec("set session tidb_redact_log=ON") tk.MustQuery("explain format = 'brief' select * from table_1 a left join table_1 b on a.id = b.id and dayofmonth(a.datetime_col) > 100").Check(testkit.Rows( - "MergeJoin 2.00 root left outer join, left key:test.table_1.id, right key:test.table_1.id, left cond:gt(dayofmonth(test.table_1.datetime_col), ?)", + "MergeJoin 2.00 root left outer join, left side:IndexReader, left key:test.table_1.id, right key:test.table_1.id, left cond:gt(dayofmonth(test.table_1.datetime_col), ?)", "├─IndexReader(Build) 2.00 root index:IndexFullScan", "│ └─IndexFullScan 2.00 cop[tikv] table:b, index:idx(id, bit_col, datetime_col) keep order:true", "└─IndexReader(Probe) 2.00 root index:IndexFullScan", " └─IndexFullScan 2.00 cop[tikv] table:a, index:idx(id, bit_col, datetime_col) keep order:true")) tk.MustExec("set session tidb_redact_log=MARKER") tk.MustQuery("explain format = 'brief' select * from table_1 a left join table_1 b on a.id = b.id and dayofmonth(a.datetime_col) > 100").Check(testkit.Rows( - "MergeJoin 2.00 root left outer join, left key:test.table_1.id, right key:test.table_1.id, left cond:gt(dayofmonth(test.table_1.datetime_col), ‹100›)", + "MergeJoin 2.00 root left outer join, left side:IndexReader, left key:test.table_1.id, right key:test.table_1.id, left cond:gt(dayofmonth(test.table_1.datetime_col), ‹100›)", "├─IndexReader(Build) 2.00 root index:IndexFullScan", "│ └─IndexFullScan 2.00 cop[tikv] table:b, index:idx(id, bit_col, datetime_col) keep order:true", "└─IndexReader(Probe) 2.00 root index:IndexFullScan", diff --git a/pkg/planner/core/util.go b/pkg/planner/core/util.go index 6270f29635b1d..7f3c6b6c27f30 100644 --- a/pkg/planner/core/util.go +++ b/pkg/planner/core/util.go @@ -103,7 +103,7 @@ type physicalSchemaProducer struct { func (s *physicalSchemaProducer) cloneForPlanCacheWithSelf(newCtx base.PlanContext, newSelf base.PhysicalPlan) (*physicalSchemaProducer, bool) { cloned := new(physicalSchemaProducer) - cloned.schema = s.Schema().Clone() + cloned.schema = s.schema base, ok := s.BasePhysicalPlan.CloneForPlanCacheWithSelf(newCtx, newSelf) if !ok { return nil, false @@ -159,11 +159,10 @@ type baseSchemaProducer struct { baseimpl.Plan } -// CloneWithNewCtx clones the baseSchemaProducer with new context. -func (s *baseSchemaProducer) CloneWithNewCtx(newCtx base.PlanContext) *baseSchemaProducer { +func (s *baseSchemaProducer) cloneForPlanCache(newCtx base.PlanContext) *baseSchemaProducer { cloned := new(baseSchemaProducer) cloned.Plan = *s.Plan.CloneWithNewCtx(newCtx) - cloned.schema = s.schema.Clone() + cloned.schema = s.schema cloned.names = s.names return cloned } diff --git a/pkg/planner/memo/BUILD.bazel b/pkg/planner/memo/BUILD.bazel index 6188f20d8d877..5ca76fe078a01 100644 --- a/pkg/planner/memo/BUILD.bazel +++ b/pkg/planner/memo/BUILD.bazel @@ -12,10 +12,10 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/expression", + "//pkg/planner/cascades/pattern", "//pkg/planner/core", "//pkg/planner/core/base", "//pkg/planner/core/operator/logicalop", - "//pkg/planner/pattern", "//pkg/planner/property", ], ) @@ -38,11 +38,11 @@ go_test( "//pkg/infoschema", "//pkg/meta/model", "//pkg/parser", + "//pkg/planner/cascades/pattern", "//pkg/planner/core", "//pkg/planner/core/base", "//pkg/planner/core/operator/logicalop", "//pkg/planner/core/resolve", - "//pkg/planner/pattern", "//pkg/planner/property", "//pkg/sessionctx/variable", "//pkg/testkit/testsetup", diff --git a/pkg/planner/memo/expr_iterator.go b/pkg/planner/memo/expr_iterator.go index 8190306a5a76e..3bfe96f46d5dd 100644 --- a/pkg/planner/memo/expr_iterator.go +++ b/pkg/planner/memo/expr_iterator.go @@ -17,7 +17,7 @@ package memo import ( "container/list" - "github.com/pingcap/tidb/pkg/planner/pattern" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" ) // ExprIter enumerates all the equivalent expressions in the Group according to diff --git a/pkg/planner/memo/expr_iterator_test.go b/pkg/planner/memo/expr_iterator_test.go index 03338b140ec77..0b3add80c7c63 100644 --- a/pkg/planner/memo/expr_iterator_test.go +++ b/pkg/planner/memo/expr_iterator_test.go @@ -19,9 +19,9 @@ import ( "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" plannercore "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop" - "github.com/pingcap/tidb/pkg/planner/pattern" "github.com/stretchr/testify/require" "go.opencensus.io/stats/view" ) diff --git a/pkg/planner/memo/group.go b/pkg/planner/memo/group.go index ed112502b2a9c..4060457e417e5 100644 --- a/pkg/planner/memo/group.go +++ b/pkg/planner/memo/group.go @@ -19,11 +19,11 @@ import ( "fmt" "github.com/pingcap/tidb/pkg/expression" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" // import core pkg first to call its init func. _ "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/pattern" "github.com/pingcap/tidb/pkg/planner/property" ) @@ -220,7 +220,7 @@ func (g *Group) BuildKeyInfo() { if len(childSchema) == 1 { // For UnaryPlan(such as Selection, Limit ...), we can set the child's unique key as its unique key. // If the GroupExpr is a schemaProducer, schema.Keys will be reset below in `BuildKeyInfo()`. - g.Prop.Schema.Keys = childSchema[0].Keys + g.Prop.Schema.PKOrUK = childSchema[0].PKOrUK } e.ExprNode.BuildKeyInfo(g.Prop.Schema, childSchema) g.Prop.MaxOneRow = e.ExprNode.MaxOneRow() || logicalop.HasMaxOneRow(e.ExprNode, childMaxOneRow) diff --git a/pkg/planner/memo/group_test.go b/pkg/planner/memo/group_test.go index d6d050ca5a829..f3a637327f91e 100644 --- a/pkg/planner/memo/group_test.go +++ b/pkg/planner/memo/group_test.go @@ -23,11 +23,11 @@ import ( "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/planner/cascades/pattern" plannercore "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/pattern" "github.com/pingcap/tidb/pkg/planner/property" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/stretchr/testify/require" @@ -250,7 +250,7 @@ func TestBuildKeyInfo(t *testing.T) { group1 := Convert2Group(logic1) group1.BuildKeyInfo() require.True(t, group1.Prop.MaxOneRow) - require.Len(t, group1.Prop.Schema.Keys, 1) + require.Len(t, group1.Prop.Schema.PKOrUK, 1) // case 2: group by column is key stmt2, err := p.ParseOneStmt("select b, sum(a) from t group by b", "", "") @@ -263,7 +263,7 @@ func TestBuildKeyInfo(t *testing.T) { group2 := Convert2Group(logic2) group2.BuildKeyInfo() require.False(t, group2.Prop.MaxOneRow) - require.Len(t, group2.Prop.Schema.Keys, 1) + require.Len(t, group2.Prop.Schema.PKOrUK, 1) // case 3: build key info for new Group newSel := logicalop.LogicalSelection{}.Init(ctx, 0) @@ -271,7 +271,7 @@ func TestBuildKeyInfo(t *testing.T) { newExpr1.SetChildren(group2) newGroup1 := NewGroupWithSchema(newExpr1, group2.Prop.Schema) newGroup1.BuildKeyInfo() - require.Len(t, newGroup1.Prop.Schema.Keys, 1) + require.Len(t, newGroup1.Prop.Schema.PKOrUK, 1) // case 4: build maxOneRow for new Group newLimit := logicalop.LogicalLimit{Count: 1}.Init(ctx, 0) diff --git a/pkg/planner/optimize.go b/pkg/planner/optimize.go index 1c1f06fd6c04d..93faff2784ade 100644 --- a/pkg/planner/optimize.go +++ b/pkg/planner/optimize.go @@ -30,7 +30,7 @@ import ( "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tidb/pkg/parser/model" - "github.com/pingcap/tidb/pkg/planner/cascades" + "github.com/pingcap/tidb/pkg/planner/cascades/old" "github.com/pingcap/tidb/pkg/planner/core" "github.com/pingcap/tidb/pkg/planner/core/base" "github.com/pingcap/tidb/pkg/planner/core/resolve" @@ -521,7 +521,7 @@ func optimize(ctx context.Context, sctx planctx.PlanContext, node *resolve.NodeW // Handle the logical plan statement, use cascades planner if enabled. if sessVars.GetEnableCascadesPlanner() { - finalPlan, cost, err := cascades.DefaultOptimizer.FindBestPlan(sctx, logic) + finalPlan, cost, err := old.DefaultOptimizer.FindBestPlan(sctx, logic) return finalPlan, names, cost, err } diff --git a/pkg/planner/planctx/context.go b/pkg/planner/planctx/context.go index 7a61c2a7e08e9..0a09af8e212e6 100644 --- a/pkg/planner/planctx/context.go +++ b/pkg/planner/planctx/context.go @@ -15,6 +15,8 @@ package planctx import ( + "iter" + "github.com/pingcap/tidb/pkg/expression/exprctx" infoschema "github.com/pingcap/tidb/pkg/infoschema/context" "github.com/pingcap/tidb/pkg/kv" @@ -50,7 +52,7 @@ type PlanContext interface { // GetInfoSchema returns the current infoschema GetInfoSchema() infoschema.MetaOnlyInfoSchema // UpdateColStatsUsage updates the column stats usage. - UpdateColStatsUsage(predicateColumns []model.TableItemID) + UpdateColStatsUsage(predicateColumns iter.Seq[model.TableItemID]) // GetClient gets a kv.Client. GetClient() kv.Client // GetMPPClient gets a kv.MPPClient. diff --git a/pkg/planner/property/logical_property.go b/pkg/planner/property/logical_property.go index e1e6156e156e0..64cc48485be0d 100644 --- a/pkg/planner/property/logical_property.go +++ b/pkg/planner/property/logical_property.go @@ -25,4 +25,9 @@ type LogicalProperty struct { MaxOneRow bool } +// NewLogicalProp returns a new empty LogicalProperty. +func NewLogicalProp() *LogicalProperty { + return &LogicalProperty{} +} + // todo: ScalarProperty: usedColumns in current scalar expr, null reject, cor-related, subq contained and so on diff --git a/pkg/planner/property/physical_property.go b/pkg/planner/property/physical_property.go index a147be0737fca..e3ed164f52c6d 100644 --- a/pkg/planner/property/physical_property.go +++ b/pkg/planner/property/physical_property.go @@ -51,16 +51,14 @@ func (s *SortItem) Hash64(h base.Hasher) { // Equals implements the HashEquals interface. func (s *SortItem) Equals(other any) bool { - if other == nil { + s2, ok := other.(*SortItem) + if !ok { return false } - var s2 *SortItem - switch x := other.(type) { - case *SortItem: - s2 = x - case SortItem: - s2 = &x - default: + if s == nil { + return s2 == nil + } + if s2 == nil { return false } return s.Col.Equals(s2.Col) && s.Desc == s2.Desc @@ -252,7 +250,7 @@ type PhysicalProperty struct { CTEProducerStatus cteProducerStatus VectorProp struct { - *expression.VectorHelper + *expression.VSInfo TopK uint32 } } @@ -383,7 +381,7 @@ func (p *PhysicalProperty) HashCode() []byte { for _, col := range p.MPPPartitionCols { p.hashcode = append(p.hashcode, col.hashCode()...) } - if p.VectorProp.VectorHelper != nil { + if p.VectorProp.VSInfo != nil { // We only accpect the vector information from the TopN which is directly above the DataSource. // So it's safe to not hash the vector constant. p.hashcode = append(p.hashcode, p.VectorProp.Column.HashCode()...) diff --git a/pkg/planner/util/handle_cols.go b/pkg/planner/util/handle_cols.go index 06d6ad97008a5..21145b512a93d 100644 --- a/pkg/planner/util/handle_cols.go +++ b/pkg/planner/util/handle_cols.go @@ -22,6 +22,7 @@ import ( "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/cascades/base" "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/tablecodec" "github.com/pingcap/tidb/pkg/types" @@ -34,6 +35,7 @@ import ( // HandleCols is the interface that holds handle columns. type HandleCols interface { expression.StringerWithCtx + base.HashEquals // BuildHandle builds a Handle from a row. BuildHandle(row chunk.Row) (kv.Handle, error) @@ -86,6 +88,59 @@ func (cb *CommonHandleCols) Clone(newCtx *stmtctx.StatementContext) HandleCols { } } +// Hash64 implements HashEquals interface. +func (cb *CommonHandleCols) Hash64(h base.Hasher) { + if cb.tblInfo != nil { + h.HashByte(base.NotNilFlag) + cb.tblInfo.Hash64(h) + } else { + h.HashByte(base.NilFlag) + } + if cb.idxInfo != nil { + h.HashByte(base.NotNilFlag) + cb.idxInfo.Hash64(h) + } else { + h.HashByte(base.NilFlag) + } + if cb.columns != nil { + h.HashByte(base.NotNilFlag) + h.HashInt(len(cb.columns)) + for _, one := range cb.columns { + one.Hash64(h) + } + } else { + h.HashByte(base.NilFlag) + } +} + +// Equals implements HashEquals interface. +func (cb *CommonHandleCols) Equals(other any) bool { + cb2, ok := other.(*CommonHandleCols) + if !ok { + return false + } + if cb == nil { + return cb2 == nil + } + if cb2 == nil { + return false + } + if !cb.tblInfo.Equals(cb2.tblInfo) || !cb.idxInfo.Equals(cb2.idxInfo) { + return false + } + if cb.columns == nil && cb2.columns != nil || + cb.columns != nil && cb2.columns == nil || + len(cb.columns) != len(cb2.columns) { + return false + } + for i, one := range cb.columns { + if !one.Equals(cb2.columns[i]) { + return false + } + } + return true +} + // GetColumns returns all the internal columns out. func (cb *CommonHandleCols) GetColumns() []*expression.Column { return cb.columns @@ -262,6 +317,31 @@ type IntHandleCols struct { col *expression.Column } +// Hash64 implements HashEquals interface. +func (ib *IntHandleCols) Hash64(h base.Hasher) { + if ib.col != nil { + h.HashByte(base.NotNilFlag) + ib.col.Hash64(h) + } else { + h.HashByte(base.NilFlag) + } +} + +// Equals implements HashEquals interface. +func (ib *IntHandleCols) Equals(other any) bool { + ib2, ok := other.(*IntHandleCols) + if !ok { + return false + } + if ib == nil { + return ib2 == nil + } + if ib2 == nil { + return false + } + return ib.col.Equals(ib2.col) +} + // Clone implements the kv.HandleCols interface. func (ib *IntHandleCols) Clone(*stmtctx.StatementContext) HandleCols { return &IntHandleCols{col: ib.col.Clone().(*expression.Column)} diff --git a/pkg/planner/util/null_misc.go b/pkg/planner/util/null_misc.go index c1923d1377f95..838518b410e46 100644 --- a/pkg/planner/util/null_misc.go +++ b/pkg/planner/util/null_misc.go @@ -106,7 +106,10 @@ func isNullRejectedSimpleExpr(ctx planctx.PlanContext, schema *expression.Schema } exprCtx := ctx.GetNullRejectCheckExprCtx() sc := ctx.GetSessionVars().StmtCtx - result := expression.EvaluateExprWithNull(exprCtx, schema, expr) + result, err := expression.EvaluateExprWithNull(exprCtx, schema, expr) + if err != nil { + return false + } x, ok := result.(*expression.Constant) if ok { if x.Value.IsNull() { diff --git a/pkg/planner/util/path.go b/pkg/planner/util/path.go index 92da155765238..f01f1ac1caa5d 100644 --- a/pkg/planner/util/path.go +++ b/pkg/planner/util/path.go @@ -156,7 +156,7 @@ func (path *AccessPath) IsTiKVTablePath() bool { // IsTiFlashSimpleTablePath returns true if it's a TiFlash path and will not use any special indexes like vector index. func (path *AccessPath) IsTiFlashSimpleTablePath() bool { - return (path.IsIntHandlePath || path.IsCommonHandlePath) && path.StoreType == kv.TiFlash + return path.StoreType == kv.TiFlash && path.Index == nil } // SplitCorColAccessCondFromFilters move the necessary filter in the form of index_col = corrlated_col to access conditions. diff --git a/pkg/privilege/BUILD.bazel b/pkg/privilege/BUILD.bazel index 2a8e6e17cba93..3e07babb15194 100644 --- a/pkg/privilege/BUILD.bazel +++ b/pkg/privilege/BUILD.bazel @@ -12,5 +12,6 @@ go_library( "//pkg/sessionctx", "//pkg/sessionctx/variable", "//pkg/types", + "//pkg/util/sqlexec", ], ) diff --git a/pkg/privilege/privilege.go b/pkg/privilege/privilege.go index cba7c122a7419..ce2fcea5f78e8 100644 --- a/pkg/privilege/privilege.go +++ b/pkg/privilege/privilege.go @@ -15,6 +15,7 @@ package privilege import ( + "context" "fmt" "github.com/pingcap/tidb/pkg/parser/auth" @@ -23,6 +24,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/sqlexec" ) type keyType int @@ -44,10 +46,10 @@ type VerificationInfo struct { // Manager is the interface for providing privilege related operations. type Manager interface { // ShowGrants shows granted privileges for user. - ShowGrants(ctx sessionctx.Context, user *auth.UserIdentity, roles []*auth.RoleIdentity) ([]string, error) + ShowGrants(ctx context.Context, sctx sessionctx.Context, user *auth.UserIdentity, roles []*auth.RoleIdentity) ([]string, error) // GetEncodedPassword shows the encoded password for user. - GetEncodedPassword(user, host string) string + GetEncodedPassword(ctx context.Context, user, host string) string // RequestVerification verifies user privilege for the request. // If table is "", only check global/db scope privileges. @@ -57,7 +59,7 @@ type Manager interface { RequestVerification(activeRole []*auth.RoleIdentity, db, table, column string, priv mysql.PrivilegeType) bool // RequestVerificationWithUser verifies specific user privilege for the request. - RequestVerificationWithUser(db, table, column string, priv mysql.PrivilegeType, user *auth.UserIdentity) bool + RequestVerificationWithUser(ctx context.Context, db, table, column string, priv mysql.PrivilegeType, user *auth.UserIdentity) bool // HasExplicitlyGrantedDynamicPrivilege verifies is a user has a dynamic privilege granted // without using the SUPER privilege as a fallback. @@ -68,7 +70,7 @@ type Manager interface { RequestDynamicVerification(activeRoles []*auth.RoleIdentity, privName string, grantable bool) bool // RequestDynamicVerificationWithUser verifies a DYNAMIC privilege for a specific user. - RequestDynamicVerificationWithUser(privName string, grantable bool, user *auth.UserIdentity) bool + RequestDynamicVerificationWithUser(ctx context.Context, privName string, grantable bool, user *auth.UserIdentity) bool // VerifyAccountAutoLockInMemory automatically unlock when the time comes. VerifyAccountAutoLockInMemory(user string, host string) (bool, error) @@ -88,10 +90,10 @@ type Manager interface { GetAuthWithoutVerification(user, host string) bool // MatchIdentity matches an identity - MatchIdentity(user, host string, skipNameResolve bool) (string, string, bool) + MatchIdentity(ctx context.Context, user, host string, skipNameResolve bool) (string, string, bool) // MatchUserResourceGroupName matches a user with specified resource group name - MatchUserResourceGroupName(resourceGroupName string) (string, bool) + MatchUserResourceGroupName(exec sqlexec.RestrictedSQLExecutor, resourceGroupName string) (string, bool) // DBIsVisible returns true is the database is visible to current user. DBIsVisible(activeRole []*auth.RoleIdentity, db string) bool @@ -101,13 +103,13 @@ type Manager interface { // ActiveRoles active roles for current session. // The first illegal role will be returned. - ActiveRoles(ctx sessionctx.Context, roleList []*auth.RoleIdentity) (bool, string) + ActiveRoles(ctx context.Context, sctx sessionctx.Context, roleList []*auth.RoleIdentity) (bool, string) // FindEdge find if there is an edge between role and user. - FindEdge(ctx sessionctx.Context, role *auth.RoleIdentity, user *auth.UserIdentity) bool + FindEdge(ctx context.Context, role *auth.RoleIdentity, user *auth.UserIdentity) bool // GetDefaultRoles returns all default roles for certain user. - GetDefaultRoles(user, host string) []*auth.RoleIdentity + GetDefaultRoles(ctx context.Context, user, host string) []*auth.RoleIdentity // GetAllRoles return all roles of user. GetAllRoles(user, host string) []*auth.RoleIdentity @@ -116,10 +118,10 @@ type Manager interface { IsDynamicPrivilege(privNameInUpper string) bool // GetAuthPluginForConnection gets the authentication plugin used in connection establishment. - GetAuthPluginForConnection(user, host string) (string, error) + GetAuthPluginForConnection(ctx context.Context, user, host string) (string, error) // GetAuthPlugin gets the authentication plugin for the account identified by the user and host - GetAuthPlugin(user, host string) (string, error) + GetAuthPlugin(ctx context.Context, user, host string) (string, error) } const key keyType = 0 diff --git a/pkg/privilege/privileges/cache.go b/pkg/privilege/privileges/cache.go index 70a37d7957875..acdef9609b7a7 100644 --- a/pkg/privilege/privileges/cache.go +++ b/pkg/privilege/privileges/cache.go @@ -347,6 +347,13 @@ func (p *MySQLPrivilege) FindRole(user string, host string, role *auth.RoleIdent return false } +func findRole(ctx context.Context, h *Handle, user string, host string, role *auth.RoleIdentity) bool { + terror.Log(h.ensureActiveUser(ctx, user)) + terror.Log(h.ensureActiveUser(ctx, role.Username)) + mysqlPrivilege := h.Get() + return mysqlPrivilege.FindRole(user, host, role) +} + // LoadAll loads the tables from database to memory. func (p *MySQLPrivilege) LoadAll(ctx sqlexec.RestrictedSQLExecutor) error { err := p.LoadUserTable(ctx) @@ -412,118 +419,162 @@ func (p *MySQLPrivilege) LoadAll(ctx sqlexec.RestrictedSQLExecutor) error { return nil } -func (p *immutable) loadSomeUsers(ctx sqlexec.RestrictedSQLExecutor, userList ...string) error { - err := p.loadTable(ctx, sqlLoadUserTable, p.decodeUserTableRow, userList...) +func findUserAndAllRoles(all map[string]struct{}, roleGraph map[string]roleGraphEdgesTable) { + for { + before := len(all) + + for userHost, value := range roleGraph { + user, _, found := strings.Cut(userHost, "@") + if !found { + // this should never happen + continue + } + if _, ok := all[user]; ok { + // If a user is in map, all its role should also added + for _, role := range value.roleList { + all[role.Username] = struct{}{} + } + } + } + + // loop until the map does not expand + after := len(all) + if before == after { + break + } + } +} + +func (p *immutable) loadSomeUsers(ctx sqlexec.RestrictedSQLExecutor, userList ...string) ([]string, error) { + // Load the full role edge table first. + p.roleGraph = make(map[string]roleGraphEdgesTable) + err := p.loadTable(ctx, sqlLoadRoleGraph, p.decodeRoleEdgesTable) if err != nil { - return errors.Trace(err) + return nil, errors.Trace(err) + } + + // Including the user list and also their roles + extendedUserList := make(map[string]struct{}, len(userList)) + for _, user := range userList { + extendedUserList[user] = struct{}{} + } + findUserAndAllRoles(extendedUserList, p.roleGraph) + // Re-generate the user list. + userList = userList[:0] + for user := range extendedUserList { + userList = append(userList, user) + } + + err = p.loadTable(ctx, sqlLoadUserTable, p.decodeUserTableRow, userList...) + if err != nil { + return nil, errors.Trace(err) } err = p.loadTable(ctx, sqlLoadGlobalPrivTable, p.decodeGlobalPrivTableRow, userList...) if err != nil { - return errors.Trace(err) + return nil, errors.Trace(err) } err = p.loadTable(ctx, sqlLoadGlobalGrantsTable, p.decodeGlobalGrantsTableRow, userList...) if err != nil { - return errors.Trace(err) + return nil, errors.Trace(err) } err = p.loadTable(ctx, sqlLoadDBTable, p.decodeDBTableRow, userList...) if err != nil { - return errors.Trace(err) + return nil, errors.Trace(err) } err = p.loadTable(ctx, sqlLoadTablePrivTable, p.decodeTablesPrivTableRow, userList...) if err != nil { - return errors.Trace(err) + return nil, errors.Trace(err) } err = p.loadTable(ctx, sqlLoadDefaultRoles, p.decodeDefaultRoleTableRow, userList...) if err != nil { - return errors.Trace(err) + return nil, errors.Trace(err) } err = p.loadTable(ctx, sqlLoadColumnsPrivTable, p.decodeColumnsPrivTableRow, userList...) if err != nil { - return errors.Trace(err) + return nil, errors.Trace(err) } - p.roleGraph = make(map[string]roleGraphEdgesTable) - err = p.loadTable(ctx, sqlLoadRoleGraph, p.decodeRoleEdgesTable) - if err != nil { - return errors.Trace(err) - } - - return nil -} - -func dedupSortedKeepLast[S ~[]E, E any](s S, eq func(a, b E) bool) S { - skip := 0 - for i := 1; i < len(s); i++ { - if eq(s[i], s[i-1]) { - skip++ - } - s[i-skip] = s[i] - } - s = s[:len(s)-skip] - return s + return userList, nil } // merge construct a new MySQLPrivilege by merging the data of the two objects;. -func (p *MySQLPrivilege) merge(diff *immutable) *MySQLPrivilege { +func (p *MySQLPrivilege) merge(diff *immutable, userList []string) *MySQLPrivilege { var ret MySQLPrivilege ret.user = make([]UserRecord, 0, len(p.user)+len(diff.user)) - ret.user = append(ret.user, p.user...) + for _, v := range p.user { + if !slices.ContainsFunc(userList, func(usr string) bool { return usr == v.User }) { + ret.user = append(ret.user, v) + } + } ret.user = append(ret.user, diff.user...) - - // sort and dedup - slices.SortStableFunc(ret.user, compareUserRecord) - ret.user = dedupSortedKeepLast(ret.user, func(x, y UserRecord) bool { return x.User == y.User && x.Host == y.Host }) + slices.SortFunc(ret.user, compareUserRecord) ret.buildUserMap() ret.db = make([]dbRecord, 0, len(p.db)+len(diff.db)) - ret.db = append(ret.db, p.db...) + for _, v := range p.db { + if !slices.ContainsFunc(userList, func(user string) bool { return user == v.User }) { + ret.db = append(ret.db, v) + } + } ret.db = append(ret.db, diff.db...) + slices.SortFunc(ret.db, compareDBRecord) ret.buildDBMap() ret.tablesPriv = make([]tablesPrivRecord, 0, len(p.tablesPriv)+len(diff.tablesPriv)) - ret.tablesPriv = append(ret.tablesPriv, p.tablesPriv...) + for _, v := range p.tablesPriv { + if !slices.ContainsFunc(userList, func(user string) bool { return user == v.User }) { + ret.tablesPriv = append(ret.tablesPriv, v) + } + } ret.tablesPriv = append(ret.tablesPriv, diff.tablesPriv...) + slices.SortFunc(ret.tablesPriv, compareTablesPrivRecord) ret.buildTablesPrivMap() ret.columnsPriv = make([]columnsPrivRecord, 0, len(p.columnsPriv)+len(diff.columnsPriv)) - ret.columnsPriv = append(ret.columnsPriv, p.columnsPriv...) + for _, v := range p.columnsPriv { + if !slices.ContainsFunc(userList, func(user string) bool { return user == v.User }) { + ret.columnsPriv = append(ret.columnsPriv, v) + } + } ret.columnsPriv = append(ret.columnsPriv, diff.columnsPriv...) - slices.SortStableFunc(ret.columnsPriv, compareColumnsPrivRecord) - ret.columnsPriv = dedupSortedKeepLast(ret.columnsPriv, func(x, y columnsPrivRecord) bool { - return x.Host == y.Host && x.User == y.User && - x.DB == y.DB && x.TableName == y.TableName && x.ColumnName == y.ColumnName - }) + slices.SortFunc(ret.columnsPriv, compareColumnsPrivRecord) ret.defaultRoles = make([]defaultRoleRecord, 0, len(p.defaultRoles)+len(diff.defaultRoles)) - ret.defaultRoles = append(ret.defaultRoles, p.defaultRoles...) + for _, v := range p.defaultRoles { + if !slices.ContainsFunc(userList, func(user string) bool { return user == v.User }) { + ret.defaultRoles = append(ret.defaultRoles, v) + } + } ret.defaultRoles = append(ret.defaultRoles, diff.defaultRoles...) - slices.SortStableFunc(ret.defaultRoles, compareDefaultRoleRecord) - ret.defaultRoles = dedupSortedKeepLast(ret.defaultRoles, func(x, y defaultRoleRecord) bool { - return x.Host == y.Host && x.User == y.User - }) + slices.SortFunc(ret.defaultRoles, compareDefaultRoleRecord) ret.dynamicPriv = make([]dynamicPrivRecord, 0, len(p.dynamicPriv)+len(diff.dynamicPriv)) - ret.dynamicPriv = append(ret.dynamicPriv, p.dynamicPriv...) + for _, v := range p.dynamicPriv { + if !slices.ContainsFunc(userList, func(user string) bool { return user == v.User }) { + ret.dynamicPriv = append(ret.dynamicPriv, v) + } + } ret.dynamicPriv = append(ret.dynamicPriv, diff.dynamicPriv...) + slices.SortFunc(ret.dynamicPriv, compareDynamicPrivRecord) ret.buildDynamicMap() ret.globalPriv = make([]globalPrivRecord, 0, len(p.globalPriv)+len(diff.globalPriv)) - ret.globalPriv = append(ret.globalPriv, p.globalPriv...) + for _, v := range p.globalPriv { + if !slices.ContainsFunc(userList, func(user string) bool { return user == v.User }) { + ret.globalPriv = append(ret.globalPriv, v) + } + } ret.globalPriv = append(ret.globalPriv, diff.globalPriv...) - slices.SortStableFunc(ret.globalPriv, compareGlobalPrivRecord) - ret.globalPriv = dedupSortedKeepLast(ret.globalPriv, func(x, y globalPrivRecord) bool { - return x.Host == y.Host && x.User == y.User - }) + slices.SortFunc(ret.globalPriv, compareGlobalPrivRecord) ret.buildGlobalMap() ret.roleGraph = diff.roleGraph - return &ret } @@ -594,6 +645,10 @@ func compareGlobalPrivRecord(x, y globalPrivRecord) int { return compareBaseRecord(&x.baseRecord, &y.baseRecord) } +func compareDynamicPrivRecord(x, y dynamicPrivRecord) int { + return compareBaseRecord(&x.baseRecord, &y.baseRecord) +} + func compareColumnsPrivRecord(x, y columnsPrivRecord) int { cmp := compareBaseRecord(&x.baseRecord, &y.baseRecord) if cmp != 0 { @@ -711,7 +766,26 @@ func (p *MySQLPrivilege) LoadDBTable(ctx sqlexec.RestrictedSQLExecutor) error { } func compareDBRecord(x, y dbRecord) int { - return compareBaseRecord(&x.baseRecord, &y.baseRecord) + ret := compareBaseRecord(&x.baseRecord, &y.baseRecord) + if ret != 0 { + return ret + } + + return strings.Compare(x.DB, y.DB) +} + +func compareTablesPrivRecord(x, y tablesPrivRecord) int { + ret := compareBaseRecord(&x.baseRecord, &y.baseRecord) + if ret != 0 { + return ret + } + + ret = strings.Compare(x.DB, y.DB) + if ret != 0 { + return ret + } + + return strings.Compare(x.TableName, y.TableName) } func (p *MySQLPrivilege) buildDBMap() { @@ -1192,17 +1266,6 @@ func (p *MySQLPrivilege) matchIdentity(sctx sqlexec.RestrictedSQLExecutor, user, return nil } -// matchResoureGroup finds an identity to match resource group. -func (p *MySQLPrivilege) matchResoureGroup(resourceGroupName string) *UserRecord { - for i := 0; i < len(p.user); i++ { - record := &p.user[i] - if record.ResourceGroup == resourceGroupName { - return record - } - } - return nil -} - // connectionVerification verifies the username + hostname according to exact // match from the mysql.user privilege table. call matchIdentity() first if you // do not have an exact match yet. @@ -1833,28 +1896,37 @@ func NewHandle(sctx sqlexec.RestrictedSQLExecutor) *Handle { } // ensureActiveUser ensure that the specific user data is loaded in-memory. -func (h *Handle) ensureActiveUser(user string) error { +func (h *Handle) ensureActiveUser(ctx context.Context, user string) error { + if p := ctx.Value("mock"); p != nil { + visited := p.(*bool) + *visited = true + } + _, exist := h.activeUsers.Load(user) if exist { return nil } - var data immutable - err := data.loadSomeUsers(h.sctx, user) + userList, err := data.loadSomeUsers(h.sctx, user) if err != nil { return errors.Trace(err) } + h.merge(&data, userList) + return nil +} + +func (h *Handle) merge(data *immutable, userList []string) { for { old := h.Get() - swapped := h.priv.CompareAndSwap(old, old.merge(&data)) + swapped := h.priv.CompareAndSwap(old, old.merge(data, userList)) if swapped { break } } - h.activeUsers.Store(user, struct{}{}) - - return nil + for _, user := range userList { + h.activeUsers.Store(user, struct{}{}) + } } // Get the MySQLPrivilege for read. @@ -1862,14 +1934,41 @@ func (h *Handle) Get() *MySQLPrivilege { return h.priv.Load() } -// Update loads all the privilege info from kv storage. -func (h *Handle) Update() error { - var priv MySQLPrivilege - err := priv.LoadAll(h.sctx) +// UpdateAll loads all the active users' privilege info from kv storage. +func (h *Handle) UpdateAll() error { + userList := make([]string, 0, 20) + h.activeUsers.Range(func(key, _ any) bool { + userList = append(userList, key.(string)) + return true + }) + + var priv immutable + userList, err := priv.loadSomeUsers(h.sctx, userList...) if err != nil { return err } + h.merge(&priv, userList) + return nil +} - h.priv.Store(&priv) +// Update loads the privilege info from kv storage for the list of users. +func (h *Handle) Update(userList []string) error { + needReload := false + for _, user := range userList { + if _, ok := h.activeUsers.Load(user); ok { + needReload = true + break + } + } + if !needReload { + return nil + } + + var priv immutable + userList, err := priv.loadSomeUsers(h.sctx, userList...) + if err != nil { + return err + } + h.merge(&priv, userList) return nil } diff --git a/pkg/privilege/privileges/privileges.go b/pkg/privilege/privileges/privileges.go index 0c65df3696d36..6f255ba185cfe 100644 --- a/pkg/privilege/privileges/privileges.go +++ b/pkg/privilege/privileges/privileges.go @@ -15,6 +15,7 @@ package privileges import ( + "context" "crypto/tls" "crypto/x509" "errors" @@ -29,6 +30,7 @@ import ( "github.com/lestrrat-go/jwx/v2/jwt/openid" "github.com/pingcap/tidb/pkg/extension" "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/auth" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/terror" @@ -43,6 +45,7 @@ import ( "github.com/pingcap/tidb/pkg/util/hack" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/sem" + "github.com/pingcap/tidb/pkg/util/sqlexec" "go.uber.org/zap" ) @@ -94,7 +97,7 @@ func NewUserPrivileges(handle *Handle, extension *extension.Extensions) *UserPri } // RequestDynamicVerificationWithUser implements the Manager interface. -func (p *UserPrivileges) RequestDynamicVerificationWithUser(privName string, grantable bool, user *auth.UserIdentity) bool { +func (p *UserPrivileges) RequestDynamicVerificationWithUser(ctx context.Context, privName string, grantable bool, user *auth.UserIdentity) bool { if SkipWithGrant { return true } @@ -103,6 +106,7 @@ func (p *UserPrivileges) RequestDynamicVerificationWithUser(privName string, gra return false } + terror.Log(p.Handle.ensureActiveUser(ctx, user.Username)) mysqlPriv := p.Handle.Get() roles := mysqlPriv.getDefaultRoles(user.Username, user.Hostname) return mysqlPriv.RequestDynamicVerification(roles, user.Username, user.Hostname, privName, grantable) @@ -202,7 +206,7 @@ func (p *UserPrivileges) RequestVerification(activeRoles []*auth.RoleIdentity, d } // RequestVerificationWithUser implements the Manager interface. -func (p *UserPrivileges) RequestVerificationWithUser(db, table, column string, priv mysql.PrivilegeType, user *auth.UserIdentity) bool { +func (p *UserPrivileges) RequestVerificationWithUser(ctx context.Context, db, table, column string, priv mysql.PrivilegeType, user *auth.UserIdentity) bool { if SkipWithGrant { return true } @@ -219,7 +223,7 @@ func (p *UserPrivileges) RequestVerificationWithUser(db, table, column string, p return true } - terror.Log(p.Handle.ensureActiveUser(user.Username)) + terror.Log(p.Handle.ensureActiveUser(ctx, user.Username)) mysqlPriv := p.Handle.Get() roles := mysqlPriv.getDefaultRoles(user.Username, user.Hostname) return mysqlPriv.RequestVerification(roles, user.Username, user.Hostname, db, table, column, priv) @@ -314,7 +318,8 @@ func (p *UserPrivileges) isValidHash(record *UserRecord) bool { } // GetEncodedPassword implements the Manager interface. -func (p *UserPrivileges) GetEncodedPassword(user, host string) string { +func (p *UserPrivileges) GetEncodedPassword(ctx context.Context, user, host string) string { + terror.Log(p.Handle.ensureActiveUser(ctx, user)) mysqlPriv := p.Handle.Get() record := mysqlPriv.connectionVerification(user, host) if record == nil { @@ -329,11 +334,12 @@ func (p *UserPrivileges) GetEncodedPassword(user, host string) string { } // GetAuthPluginForConnection gets the authentication plugin used in connection establishment. -func (p *UserPrivileges) GetAuthPluginForConnection(user, host string) (string, error) { +func (p *UserPrivileges) GetAuthPluginForConnection(ctx context.Context, user, host string) (string, error) { if SkipWithGrant { return mysql.AuthNativePassword, nil } + terror.Log(p.Handle.ensureActiveUser(ctx, user)) mysqlPriv := p.Handle.Get() record := mysqlPriv.connectionVerification(user, host) if record == nil { @@ -360,10 +366,12 @@ func (p *UserPrivileges) GetAuthPluginForConnection(user, host string) (string, } // GetAuthPlugin gets the authentication plugin for the account identified by the user and host -func (p *UserPrivileges) GetAuthPlugin(user, host string) (string, error) { +func (p *UserPrivileges) GetAuthPlugin(ctx context.Context, user, host string) (string, error) { if SkipWithGrant { return mysql.AuthNativePassword, nil } + + terror.Log(p.Handle.ensureActiveUser(ctx, user)) mysqlPriv := p.Handle.Get() record := mysqlPriv.connectionVerification(user, host) if record == nil { @@ -376,11 +384,11 @@ func (p *UserPrivileges) GetAuthPlugin(user, host string) (string, error) { } // MatchIdentity implements the Manager interface. -func (p *UserPrivileges) MatchIdentity(user, host string, skipNameResolve bool) (u string, h string, success bool) { +func (p *UserPrivileges) MatchIdentity(ctx context.Context, user, host string, skipNameResolve bool) (u string, h string, success bool) { if SkipWithGrant { return user, host, true } - if err := p.Handle.ensureActiveUser(user); err != nil { + if err := p.Handle.ensureActiveUser(ctx, user); err != nil { logutil.BgLogger().Error("ensure user data fail", zap.String("user", user)) } @@ -393,11 +401,16 @@ func (p *UserPrivileges) MatchIdentity(user, host string, skipNameResolve bool) } // MatchUserResourceGroupName implements the Manager interface. -func (p *UserPrivileges) MatchUserResourceGroupName(resourceGroupName string) (u string, success bool) { - mysqlPriv := p.Handle.Get() - record := mysqlPriv.matchResoureGroup(resourceGroupName) - if record != nil { - return record.User, true +func (p *UserPrivileges) MatchUserResourceGroupName(exec sqlexec.RestrictedSQLExecutor, resourceGroupName string) (u string, success bool) { + ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnPrivilege) + sql := "SELECT user FROM mysql.user WHERE json_extract(user_attributes, '$.resource_group') = %? LIMIT 1" + rows, _, err := exec.ExecRestrictedSQL(ctx, nil, sql, resourceGroupName) + if err != nil { + logutil.BgLogger().Error("execute sql error", zap.String("sql", sql), zap.Error(err)) + return "", false + } + if len(rows) > 0 { + return rows[0].GetString(0), true } return "", false } @@ -907,7 +920,7 @@ func (p *UserPrivileges) UserPrivilegesTable(activeRoles []*auth.RoleIdentity, u } // ShowGrants implements privilege.Manager ShowGrants interface. -func (p *UserPrivileges) ShowGrants(ctx sessionctx.Context, user *auth.UserIdentity, roles []*auth.RoleIdentity) (grants []string, err error) { +func (p *UserPrivileges) ShowGrants(ctx context.Context, sctx sessionctx.Context, user *auth.UserIdentity, roles []*auth.RoleIdentity) (grants []string, err error) { if SkipWithGrant { return nil, ErrNonexistingGrant.GenWithStackByArgs("root", "%") } @@ -917,12 +930,11 @@ func (p *UserPrivileges) ShowGrants(ctx sessionctx.Context, user *auth.UserIdent u = user.AuthUsername h = user.AuthHostname } - if err := p.Handle.ensureActiveUser(u); err != nil { + if err := p.Handle.ensureActiveUser(ctx, u); err != nil { return nil, err } mysqlPrivilege := p.Handle.Get() - - grants = mysqlPrivilege.showGrants(ctx, u, h, roles) + grants = mysqlPrivilege.showGrants(sctx, u, h, roles) if len(grants) == 0 { err = ErrNonexistingGrant.GenWithStackByArgs(u, h) } @@ -931,31 +943,29 @@ func (p *UserPrivileges) ShowGrants(ctx sessionctx.Context, user *auth.UserIdent } // ActiveRoles implements privilege.Manager ActiveRoles interface. -func (p *UserPrivileges) ActiveRoles(ctx sessionctx.Context, roleList []*auth.RoleIdentity) (bool, string) { +func (p *UserPrivileges) ActiveRoles(ctx context.Context, sctx sessionctx.Context, roleList []*auth.RoleIdentity) (bool, string) { if SkipWithGrant { return true, "" } - mysqlPrivilege := p.Handle.Get() u := p.user h := p.host for _, r := range roleList { - ok := mysqlPrivilege.FindRole(u, h, r) + ok := findRole(ctx, p.Handle, u, h, r) if !ok { logutil.BgLogger().Error("find role failed", zap.Stringer("role", r)) return false, r.String() } } - ctx.GetSessionVars().ActiveRoles = roleList + sctx.GetSessionVars().ActiveRoles = roleList return true, "" } // FindEdge implements privilege.Manager FindRelationship interface. -func (p *UserPrivileges) FindEdge(ctx sessionctx.Context, role *auth.RoleIdentity, user *auth.UserIdentity) bool { +func (p *UserPrivileges) FindEdge(ctx context.Context, role *auth.RoleIdentity, user *auth.UserIdentity) bool { if SkipWithGrant { return false } - mysqlPrivilege := p.Handle.Get() - ok := mysqlPrivilege.FindRole(user.Username, user.Hostname, role) + ok := findRole(ctx, p.Handle, user.Username, user.Hostname, role) if !ok { logutil.BgLogger().Error("find role failed", zap.Stringer("role", role)) return false @@ -964,10 +974,11 @@ func (p *UserPrivileges) FindEdge(ctx sessionctx.Context, role *auth.RoleIdentit } // GetDefaultRoles returns all default roles for certain user. -func (p *UserPrivileges) GetDefaultRoles(user, host string) []*auth.RoleIdentity { +func (p *UserPrivileges) GetDefaultRoles(ctx context.Context, user, host string) []*auth.RoleIdentity { if SkipWithGrant { return make([]*auth.RoleIdentity, 0, 10) } + terror.Log(p.Handle.ensureActiveUser(ctx, user)) mysqlPrivilege := p.Handle.Get() ret := mysqlPrivilege.getDefaultRoles(user, host) return ret diff --git a/pkg/privilege/privileges/privileges_test.go b/pkg/privilege/privileges/privileges_test.go index 46137e742f1a9..9fa0babdb6db1 100644 --- a/pkg/privilege/privileges/privileges_test.go +++ b/pkg/privilege/privileges/privileges_test.go @@ -1045,15 +1045,15 @@ func TestDefaultRoles(t *testing.T) { tk := testkit.NewTestKit(t, store) pc := privilege.GetPrivilegeManager(tk.Session()) - ret := pc.GetDefaultRoles("testdefault", "localhost") + ret := pc.GetDefaultRoles(context.Background(), "testdefault", "localhost") require.Len(t, ret, 0) rootTk.MustExec(`SET DEFAULT ROLE ALL TO 'testdefault'@'localhost';`) - ret = pc.GetDefaultRoles("testdefault", "localhost") + ret = pc.GetDefaultRoles(context.Background(), "testdefault", "localhost") require.Len(t, ret, 2) rootTk.MustExec(`SET DEFAULT ROLE NONE TO 'testdefault'@'localhost';`) - ret = pc.GetDefaultRoles("testdefault", "localhost") + ret = pc.GetDefaultRoles(context.Background(), "testdefault", "localhost") require.Len(t, ret, 0) } @@ -2091,7 +2091,7 @@ func TestNilHandleInConnectionVerification(t *testing.T) { func testShowGrantsSQLMode(t *testing.T, tk *testkit.TestKit, expected []string) { pc := privilege.GetPrivilegeManager(tk.Session()) - gs, err := pc.ShowGrants(tk.Session(), &auth.UserIdentity{Username: "show_sql_mode", Hostname: "localhost"}, nil) + gs, err := pc.ShowGrants(context.Background(), tk.Session(), &auth.UserIdentity{Username: "show_sql_mode", Hostname: "localhost"}, nil) require.NoError(t, err) require.Len(t, gs, 2) require.True(t, testutil.CompareUnorderedStringSlice(gs, expected), fmt.Sprintf("gs: %v, expected: %v", gs, expected)) @@ -2116,3 +2116,36 @@ func TestShowGrantsSQLMode(t *testing.T) { "GRANT SELECT ON \"test\".* TO 'show_sql_mode'@'localhost'", }) } + +func TestEnsureActiveUserCoverage(t *testing.T) { + store := createStoreAndPrepareDB(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("create user 'test'") + tk.Session().Auth(&auth.UserIdentity{Username: "root", Hostname: "localhost"}, nil, nil, nil) + + cases := []struct { + sql string + visited bool + }{ + // FIXME {"drop user if exists 'test1'", false}, + // FIXME {"alter user test identified by 'test1'", false}, + // {"set password for test = 'test2'", false}, + // FIXME {"show create user test", false}, + {"create user test1", false}, + // FIXME {"show grants", false}, + {"show grants for 'test'@'%'", true}, + } + + for ith, c := range cases { + var visited bool + ctx := context.WithValue(context.Background(), "mock", &visited) + rs, err := tk.ExecWithContext(ctx, c.sql) + require.NoError(t, err) + + comment := fmt.Sprintf("testcase %d failed", ith) + if rs != nil { + tk.ResultSetToResultWithCtx(ctx, rs, comment) + } + require.Equal(t, c.visited, visited, comment) + } +} diff --git a/pkg/resourcegroup/runaway/checker.go b/pkg/resourcegroup/runaway/checker.go index dabaa468ed520..7efc84209af3b 100644 --- a/pkg/resourcegroup/runaway/checker.go +++ b/pkg/resourcegroup/runaway/checker.go @@ -49,10 +49,10 @@ type Checker struct { // From the group runaway settings, which will be applied when a query lacks a specified watch rule. settings *rmpb.RunawaySettings - // markedByRule is set to true when the query matches the group runaway settings. - markedByRule atomic.Bool - // markedByWatch is set to true when the query matches the specified watch rules. - markedByWatch bool + // markedByIdentifyInRunawaySettings is set to true when the query matches the group runaway settings. + markedByIdentifyInRunawaySettings atomic.Bool + // markedByQueryWatchRule is set to true when the query matches the specified watch rules. + markedByQueryWatchRule bool // watchAction is the specified watch action for the runaway query. // If it's not given, the action defined in `settings` will be used. watchAction rmpb.RunawayAction @@ -65,14 +65,14 @@ func NewChecker( originalSQL, sqlDigest, planDigest string, startTime time.Time, ) *Checker { c := &Checker{ - manager: manager, - resourceGroupName: resourceGroupName, - originalSQL: originalSQL, - sqlDigest: sqlDigest, - planDigest: planDigest, - settings: settings, - markedByRule: atomic.Bool{}, - markedByWatch: false, + manager: manager, + resourceGroupName: resourceGroupName, + originalSQL: originalSQL, + sqlDigest: sqlDigest, + planDigest: planDigest, + settings: settings, + markedByIdentifyInRunawaySettings: atomic.Bool{}, + markedByQueryWatchRule: false, } if settings != nil { // avoid setting deadline if the threshold is 0 @@ -92,6 +92,10 @@ func (rm *Manager) DeriveChecker(resourceGroupName, originalSQL, sqlDigest, plan logutil.BgLogger().Warn("cannot setup up runaway checker", zap.Error(err)) return nil } + // Only check the normal statement. + if len(planDigest) == 0 { + return nil + } rm.ActiveLock.RLock() defer rm.ActiveLock.RUnlock() if group.RunawaySettings == nil && rm.ActiveGroup[resourceGroupName] == 0 { @@ -129,7 +133,7 @@ func (r *Checker) BeforeExecutor() (string, error) { switchGroupName = r.settings.SwitchGroupName } // Mark it if this is the first time being watched. - r.markRunawayByWatch(action, switchGroupName, exceedCause) + r.markRunawayByQueryWatchRule(action, switchGroupName, exceedCause) // Take action if needed. switch action { case rmpb.RunawayAction_Kill: @@ -157,16 +161,16 @@ func (r *Checker) BeforeCopRequest(req *tikvrpc.Request) error { return nil } // If the group settings are not available, and it's not marked by watch, skip this part. - if r.settings == nil && !r.markedByWatch { + if r.settings == nil && !r.markedByQueryWatchRule { return nil } // If it's marked by watch and the action is cooldown, override the priority, - if r.markedByWatch && r.watchAction == rmpb.RunawayAction_CoolDown { + if r.markedByQueryWatchRule && r.watchAction == rmpb.RunawayAction_CoolDown { req.ResourceControlContext.OverridePriority = 1 // set priority to lowest } // If group settings are available and the query is not marked by a rule, // verify if it matches any rules in the settings. - if r.settings != nil && !r.markedByRule.Load() { + if r.settings != nil && !r.markedByIdentifyInRunawaySettings.Load() { now := time.Now() // only check time and need to ensure deadline existed. exceedCause := r.exceedsThresholds(now, nil, 0) @@ -181,7 +185,7 @@ func (r *Checker) BeforeCopRequest(req *tikvrpc.Request) error { return nil } // execution time exceeds the threshold, mark the query as runaway - r.markRunawayByIdentify(&now, exceedCause) + r.markRunawayByIdentifyInRunawaySettings(&now, exceedCause) // Take action if needed. switch r.settings.Action { case rmpb.RunawayAction_Kill: @@ -205,10 +209,10 @@ func (r *Checker) CheckAction() rmpb.RunawayAction { if r == nil { return rmpb.RunawayAction_NoneAction } - if r.markedByWatch { + if r.markedByQueryWatchRule { return r.watchAction } - if r.markedByRule.Load() { + if r.markedByIdentifyInRunawaySettings.Load() { return r.settings.Action } return rmpb.RunawayAction_NoneAction @@ -217,17 +221,17 @@ func (r *Checker) CheckAction() rmpb.RunawayAction { // CheckRuleKillAction checks whether the query should be killed according to the group settings. func (r *Checker) CheckRuleKillAction() (string, bool) { // If the group settings are not available, and it's not marked by watch, skip this part. - if r == nil || r.settings == nil && !r.markedByWatch { + if r == nil || r.settings == nil && !r.markedByQueryWatchRule { return "", false } // If the group settings are available, and it's not marked by rule, check the execution time. - if r.settings != nil && !r.markedByRule.Load() { + if r.settings != nil && !r.markedByIdentifyInRunawaySettings.Load() { now := time.Now() exceedCause := r.exceedsThresholds(now, nil, 0) if exceedCause == "" { return "", false } - r.markRunawayByIdentify(&now, exceedCause) + r.markRunawayByIdentifyInRunawaySettings(&now, exceedCause) return exceedCause, r.settings.Action == rmpb.RunawayAction_Kill } return "", false @@ -243,19 +247,19 @@ func (r *Checker) markQuarantine(now *time.Time, exceedCause string) { r.settings.Action, r.settings.SwitchGroupName, ttl, now, exceedCause) } -func (r *Checker) markRunawayByIdentify(now *time.Time, exceedCause string) bool { - swapped := r.markedByRule.CompareAndSwap(false, true) +func (r *Checker) markRunawayByIdentifyInRunawaySettings(now *time.Time, exceedCause string) bool { + swapped := r.markedByIdentifyInRunawaySettings.CompareAndSwap(false, true) if swapped { r.markRunaway("identify", r.settings.Action, r.settings.SwitchGroupName, now, exceedCause) - if !r.markedByWatch { + if !r.markedByQueryWatchRule { r.markQuarantine(now, exceedCause) } } return swapped } -func (r *Checker) markRunawayByWatch(action rmpb.RunawayAction, switchGroupName, exceedCause string) { - r.markedByWatch = true +func (r *Checker) markRunawayByQueryWatchRule(action rmpb.RunawayAction, switchGroupName, exceedCause string) { + r.markedByQueryWatchRule = true r.watchAction = action now := time.Now() r.markRunaway("watch", action, switchGroupName, &now, exceedCause) @@ -326,15 +330,15 @@ func (r *Checker) CheckThresholds(ruDetail *util.RUDetails, processKeys int64, e // add the processed keys to the total processed keys. r.totalProcessedKeys += processKeys exceedCause := r.exceedsThresholds(checkTime, ruDetail, r.totalProcessedKeys) - if !r.markedByRule.Load() { - if exceedCause != "" && r.markRunawayByIdentify(&now, exceedCause) { - if r.markRunawayByIdentify(&now, exceedCause) { + if !r.markedByIdentifyInRunawaySettings.Load() { + if exceedCause != "" && r.markRunawayByIdentifyInRunawaySettings(&now, exceedCause) { + if r.markRunawayByIdentifyInRunawaySettings(&now, exceedCause) { return exeerrors.ErrResourceGroupQueryRunawayInterrupted.FastGenByArgs(exceedCause) } } } // Due to concurrency, check again. - if r.markedByRule.Load() { + if r.markedByIdentifyInRunawaySettings.Load() { return exeerrors.ErrResourceGroupQueryRunawayInterrupted.FastGenByArgs(exceedCause) } diff --git a/pkg/resourcegroup/tests/resource_group_test.go b/pkg/resourcegroup/tests/resource_group_test.go index da03cf2dc0dd5..578c86fcc1af9 100644 --- a/pkg/resourcegroup/tests/resource_group_test.go +++ b/pkg/resourcegroup/tests/resource_group_test.go @@ -45,7 +45,7 @@ func TestResourceGroupBasic(t *testing.T) { re := require.New(t) var groupID atomic.Int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { // job.SchemaID will be assigned when the group is created. if (job.SchemaName == "x" || job.SchemaName == "y") && job.Type == model.ActionCreateResourceGroup && job.SchemaID != 0 { groupID.Store(job.SchemaID) diff --git a/pkg/server/conn.go b/pkg/server/conn.go index e201ff3cb45cf..00665bdd88eda 100644 --- a/pkg/server/conn.go +++ b/pkg/server/conn.go @@ -849,12 +849,12 @@ func (cc *clientConn) checkAuthPlugin(ctx context.Context, resp *handshake.Respo return nil, err } // Find the identity of the user based on username and peer host. - identity, err := cc.ctx.MatchIdentity(cc.user, host) + identity, err := cc.ctx.MatchIdentity(ctx, cc.user, host) if err != nil { return nil, servererr.ErrAccessDenied.FastGenByArgs(cc.user, host, hasPassword) } // Get the plugin for the identity. - userplugin, err := cc.ctx.AuthPluginForUser(identity) + userplugin, err := cc.ctx.AuthPluginForUser(ctx, identity) if err != nil { logutil.Logger(ctx).Warn("Failed to get authentication method for user", zap.String("user", cc.user), zap.String("host", host)) @@ -2547,7 +2547,7 @@ func (cc *clientConn) handleResetConnection(ctx context.Context) error { return err } cc.SetCtx(tidbCtx) - if !cc.ctx.AuthWithoutVerification(user) { + if !cc.ctx.AuthWithoutVerification(ctx, user) { return errors.New("Could not reset connection") } if cc.dbname != "" { // Restore the current DB diff --git a/pkg/server/handler/optimizor/BUILD.bazel b/pkg/server/handler/optimizor/BUILD.bazel index cccf9b5498c63..326afbaefa59c 100644 --- a/pkg/server/handler/optimizor/BUILD.bazel +++ b/pkg/server/handler/optimizor/BUILD.bazel @@ -19,7 +19,7 @@ go_library( "//pkg/server/handler", "//pkg/sessionctx/variable", "//pkg/statistics/handle", - "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/table", "//pkg/types", "//pkg/util", @@ -43,7 +43,7 @@ go_test( "statistics_handler_test.go", ], flaky = True, - shard_count = 6, + shard_count = 7, deps = [ ":optimizor", "//pkg/config", @@ -56,7 +56,8 @@ go_test( "//pkg/server/internal/testutil", "//pkg/server/internal/util", "//pkg/session", - "//pkg/statistics/handle/util", + "//pkg/statistics/handle/types", + "//pkg/statistics/util", "//pkg/store/mockstore/unistore", "//pkg/testkit", "//pkg/testkit/testsetup", diff --git a/pkg/server/handler/optimizor/plan_replayer.go b/pkg/server/handler/optimizor/plan_replayer.go index 590492a57599d..4fda19bbcc5c1 100644 --- a/pkg/server/handler/optimizor/plan_replayer.go +++ b/pkg/server/handler/optimizor/plan_replayer.go @@ -38,7 +38,7 @@ import ( pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/server/handler" "github.com/pingcap/tidb/pkg/statistics/handle" - util2 "github.com/pingcap/tidb/pkg/statistics/handle/util" + util2 "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/replayer" diff --git a/pkg/server/handler/optimizor/plan_replayer_test.go b/pkg/server/handler/optimizor/plan_replayer_test.go index dc49ffdc665b9..59e1b6931050f 100644 --- a/pkg/server/handler/optimizor/plan_replayer_test.go +++ b/pkg/server/handler/optimizor/plan_replayer_test.go @@ -41,7 +41,7 @@ import ( "github.com/pingcap/tidb/pkg/server/internal/testutil" "github.com/pingcap/tidb/pkg/server/internal/util" "github.com/pingcap/tidb/pkg/session" - util2 "github.com/pingcap/tidb/pkg/statistics/handle/util" + util2 "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util/replayer" "github.com/stretchr/testify/require" @@ -186,7 +186,7 @@ func TestDumpPlanReplayerAPI(t *testing.T) { tk.MustExec(fmt.Sprintf(`plan replayer load "%s"`, path)) // 3-3. assert that the count and modify count in the stats is as expected - rows := tk.MustQuery("show stats_meta") + rows := tk.MustQuery(`show stats_meta where table_name="t"`) require.True(t, rows.Next(), "unexpected data") var dbName, tableName string var modifyCount, count int64 @@ -217,6 +217,7 @@ func prepareData4PlanReplayer(t *testing.T, client *testserverclient.TestServerC tk.MustExec("create table t(a int)") tk.MustExec("CREATE TABLE authors (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,email VARCHAR(100) UNIQUE NOT NULL);") tk.MustExec("CREATE TABLE books (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(200) NOT NULL,publication_date DATE NOT NULL,author_id INT,FOREIGN KEY (author_id) REFERENCES authors(id) ON DELETE CASCADE);") + tk.MustExec("create table tt(a int, b varchar(10)) PARTITION BY HASH(a) PARTITIONS 4;") err = h.HandleDDLEvent(<-h.DDLEventCh()) require.NoError(t, err) tk.MustExec("insert into t values(1), (2), (3), (4)") @@ -224,6 +225,9 @@ func prepareData4PlanReplayer(t *testing.T, client *testserverclient.TestServerC tk.MustExec("analyze table t") tk.MustExec("insert into t values(5), (6), (7), (8)") require.NoError(t, h.DumpStatsDeltaToKV(true)) + tk.MustExec("INSERT INTO tt (a, b) VALUES (1, 'str1'), (2, 'str2'), (3, 'str3'), (4, 'str4'),(5, 'str5'), (6, 'str6'), (7, 'str7'), (8, 'str8'),(9, 'str9'), (10, 'str10'), (11, 'str11'), (12, 'str12'),(13, 'str13'), (14, 'str14'), (15, 'str15'), (16, 'str16'),(17, 'str17'), (18, 'str18'), (19, 'str19'), (20, 'str20'),(21, 'str21'), (22, 'str22'), (23, 'str23'), (24, 'str24'),(25, 'str25'), (26, 'str26'), (27, 'str27'), (28, 'str28'),(29, 'str29'), (30, 'str30'), (31, 'str31'), (32, 'str32'),(33, 'str33'), (34, 'str34'), (35, 'str35'), (36, 'str36'),(37, 'str37'), (38, 'str38'), (39, 'str39'), (40, 'str40'),(41, 'str41'), (42, 'str42'), (43, 'str43'), (44, 'str44'),(45, 'str45'), (46, 'str46'), (47, 'str47'), (48, 'str48'),(49, 'str49'), (50, 'str50'), (51, 'str51'), (52, 'str52'),(53, 'str53'), (54, 'str54'), (55, 'str55'), (56, 'str56'),(57, 'str57'), (58, 'str58'), (59, 'str59'), (60, 'str60'),(61, 'str61'), (62, 'str62'), (63, 'str63'), (64, 'str64'),(65, 'str65'), (66, 'str66'), (67, 'str67'), (68, 'str68'),(69, 'str69'), (70, 'str70'), (71, 'str71'), (72, 'str72'),(73, 'str73'), (74, 'str74'), (75, 'str75'), (76, 'str76'),(77, 'str77'), (78, 'str78'), (79, 'str79'), (80, 'str80'),(81, 'str81'), (82, 'str82'), (83, 'str83'), (84, 'str84'),(85, 'str85'), (86, 'str86'), (87, 'str87'), (88, 'str88'),(89, 'str89'), (90, 'str90'), (91, 'str91'), (92, 'str92'),(93, 'str93'), (94, 'str94'), (95, 'str95'), (96, 'str96'),(97, 'str97'), (98, 'str98'), (99, 'str99'), (100, 'str100');") + require.NoError(t, h.DumpStatsDeltaToKV(true)) + tk.MustExec("analyze table tt") rows := tk.MustQuery("plan replayer dump explain select * from t") require.True(t, rows.Next(), "unexpected data") var filename string @@ -425,8 +429,12 @@ func prepareData4Issue43192(t *testing.T, client *testserverclient.TestServerCli tk.MustExec("create database planReplayer") tk.MustExec("use planReplayer") - tk.MustExec("create table t(a int, b int, INDEX ia (a), INDEX ib (b));") + tk.MustExec("create table t(a int, b int, INDEX ia (a), INDEX ib (b)) PARTITION BY HASH(a) PARTITIONS 4;") err = h.HandleDDLEvent(<-h.DDLEventCh()) + tk.MustExec("INSERT INTO t (a, b) VALUES (1, 1), (2, 2), (3, 3), (4, 4),(5, 5), (6, 6), (7, 7), (8, 8),(9, 9), (10, 10), (11, 11), (12, 12),(13, 13), (14, 14), (15, 15), (16, 16),(17, 17), (18, 18), (19, 19), (20, 20),(21, 21), (22, 22), (23, 23), (24, 24),(25, 25), (26, 26), (27, 27), (28, 28),(29, 29), (30, 30), (31, 31), (32, 32),(33, 33), (34, 34), (35, 35), (36, 36),(37, 37), (38, 38), (39, 39), (40, 40),(41, 41), (42, 42), (43, 43), (44, 44),(45, 45), (46, 46), (47, 47), (48, 48),(49, 49), (50, 50), (51, 51), (52, 52),(53, 53), (54, 54), (55, 55), (56, 56),(57, 57), (58, 58), (59, 59), (60, 60),(61, 61), (62, 62), (63, 63), (64, 64),(65, 65), (66, 66), (67, 67), (68, 68),(69, 69), (70, 70), (71, 71), (72, 72),(73, 73), (74, 74), (75, 75), (76, 76),(77, 77), (78, 78), (79, 79), (80, 80),(81, 81), (82, 82), (83, 83), (84, 84),(85, 85), (86, 86), (87, 87), (88, 88),(89, 89), (90, 90), (91, 91), (92, 92),(93, 93), (94, 94), (95, 95), (96, 96),(97, 97), (98, 98), (99, 99), (100, 100);") + require.NoError(t, h.DumpStatsDeltaToKV(true)) + tk.MustExec("analyze table t") + require.NoError(t, err) tk.MustExec("create global binding for select a, b from t where a in (1, 2, 3) using select a, b from t use index (ib) where a in (1, 2, 3)") rows := tk.MustQuery("plan replayer dump explain select a, b from t where a in (1, 2, 3)") diff --git a/pkg/server/handler/optimizor/statistics_handler.go b/pkg/server/handler/optimizor/statistics_handler.go index 897b91309ea46..8a0fe4264f4ef 100644 --- a/pkg/server/handler/optimizor/statistics_handler.go +++ b/pkg/server/handler/optimizor/statistics_handler.go @@ -144,3 +144,26 @@ func getSnapshotTableInfo(dom *domain.Domain, snapshot uint64, dbName, tblName s } return is.TableByName(context.Background(), model.NewCIStr(dbName), model.NewCIStr(tblName)) } + +// StatsPriorityQueueHandler is the handler for dumping the stats priority queue snapshot. +type StatsPriorityQueueHandler struct { + do *domain.Domain +} + +// NewStatsPriorityQueueHandler creates a new StatsPriorityQueueHandler. +func NewStatsPriorityQueueHandler(do *domain.Domain) *StatsPriorityQueueHandler { + return &StatsPriorityQueueHandler{do: do} +} + +// ServeHTTP dumps the stats priority queue snapshot to json. +func (sh StatsPriorityQueueHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + + h := sh.do.StatsHandle() + tables, err := h.GetPriorityQueueSnapshot() + if err != nil { + handler.WriteError(w, err) + } else { + handler.WriteData(w, tables) + } +} diff --git a/pkg/server/handler/optimizor/statistics_handler_test.go b/pkg/server/handler/optimizor/statistics_handler_test.go index d91fa92121cdb..cf479cc0b439b 100644 --- a/pkg/server/handler/optimizor/statistics_handler_test.go +++ b/pkg/server/handler/optimizor/statistics_handler_test.go @@ -33,7 +33,8 @@ import ( "github.com/pingcap/tidb/pkg/server/internal/testutil" "github.com/pingcap/tidb/pkg/server/internal/util" "github.com/pingcap/tidb/pkg/session" - util2 "github.com/pingcap/tidb/pkg/statistics/handle/util" + "github.com/pingcap/tidb/pkg/statistics/handle/types" + statsutil "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/testkit" "github.com/stretchr/testify/require" ) @@ -178,10 +179,10 @@ func testDumpPartitionTableStats(t *testing.T, client *testserverclient.TestServ }() b, err := io.ReadAll(resp0.Body) require.NoError(t, err) - jsonTable := &util2.JSONTable{} + jsonTable := &statsutil.JSONTable{} err = json.Unmarshal(b, jsonTable) require.NoError(t, err) - require.NotNil(t, jsonTable.Partitions[util2.TiDBGlobalStats]) + require.NotNil(t, jsonTable.Partitions[statsutil.TiDBGlobalStats]) require.Len(t, jsonTable.Partitions, expectedLen) } check(false) @@ -289,3 +290,58 @@ func checkData(t *testing.T, path string, client *testserverclient.TestServerCli require.Equal(t, int64(4), count) require.NoError(t, rows.Close()) } + +func TestStatsPriorityQueueAPI(t *testing.T) { + store := testkit.CreateMockStore(t) + driver := server2.NewTiDBDriver(store) + client := testserverclient.NewTestServerClient() + cfg := util.NewTestConfig() + cfg.Port = client.Port + cfg.Status.StatusPort = client.StatusPort + cfg.Status.ReportStatus = true + cfg.Socket = fmt.Sprintf("/tmp/tidb-mock-%d.sock", time.Now().UnixNano()) + + server, err := server2.NewServer(cfg, driver) + require.NoError(t, err) + defer server.Close() + + dom, err := session.GetDomain(store) + require.NoError(t, err) + server.SetDomain(dom) + go func() { + err := server.Run(nil) + require.NoError(t, err) + }() + <-server2.RunInGoTestChan + client.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) + client.StatusPort = testutil.GetPortFromTCPAddr(server.StatusListenerAddr()) + client.WaitUntilServerOnline() + + router := mux.NewRouter() + handler := optimizor.NewStatsPriorityQueueHandler(dom) + router.Handle("/stats/priority-queue", handler) + + resp, err := client.FetchStatus("/stats/priority-queue") + require.NoError(t, err) + defer resp.Body.Close() + + js, err := io.ReadAll(resp.Body) + require.NoError(t, err) + require.Equal(t, "priority queue not initialized", string(js)) + + // Init the queue. + handle := dom.StatsHandle() + require.False(t, handle.HandleAutoAnalyze()) + + resp, err = client.FetchStatus("/stats/priority-queue") + require.NoError(t, err) + defer resp.Body.Close() + + js, err = io.ReadAll(resp.Body) + require.NoError(t, err) + var snapshot types.PriorityQueueSnapshot + err = json.Unmarshal(js, &snapshot) + require.NoError(t, err) + require.Empty(t, snapshot.CurrentJobs) + require.Empty(t, snapshot.MustRetryTables) +} diff --git a/pkg/server/handler/tests/http_handler_test.go b/pkg/server/handler/tests/http_handler_test.go index 8e10af13f67a1..7fe06ef783602 100644 --- a/pkg/server/handler/tests/http_handler_test.go +++ b/pkg/server/handler/tests/http_handler_test.go @@ -396,7 +396,7 @@ func (ts *basicHTTPHandlerTestSuite) startServer(t *testing.T) { ts.tidbdrv = server2.NewTiDBDriver(ts.store) cfg := util.NewTestConfig() - cfg.Store = "tikv" + cfg.Store = config.StoreTypeTiKV cfg.Port = 0 cfg.Status.StatusPort = 0 cfg.Status.ReportStatus = true diff --git a/pkg/server/handler/tikvhandler/tikv_handler.go b/pkg/server/handler/tikvhandler/tikv_handler.go index 73e2f7f03c733..da6888e660a83 100644 --- a/pkg/server/handler/tikvhandler/tikv_handler.go +++ b/pkg/server/handler/tikvhandler/tikv_handler.go @@ -1957,7 +1957,7 @@ func (DDLHookHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { hook := req.FormValue("ddl_hook") switch hook { case "ctc_hook": - err := failpoint.EnableCall("github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + err := failpoint.EnableCall("github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { log.Info("on job run before", zap.String("job", job.String())) // Only block the ctc type ddl here. if job.Type != model.ActionModifyColumn { @@ -1974,7 +1974,7 @@ func (DDLHookHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { return } case "default_hook": - _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + _ = failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") } handler.WriteData(w, "success!") diff --git a/pkg/server/http_status.go b/pkg/server/http_status.go index ad52b61a16952..ef861efd86498 100644 --- a/pkg/server/http_status.go +++ b/pkg/server/http_status.go @@ -217,6 +217,8 @@ func (s *Server) startHTTPServer() { Name("StatsDump") router.Handle("/stats/dump/{db}/{table}/{snapshot}", s.newStatsHistoryHandler()). Name("StatsHistoryDump") + router.Handle("/stats/priority-queue", s.newStatsPriorityQueueHandler()). + Name("StatsPriorityQueue") router.Handle("/plan_replayer/dump/{filename}", s.newPlanReplayerHandler()).Name("PlanReplayerDump") router.Handle("/extract_task/dump", s.newExtractServeHandler()).Name("ExtractTaskDump") @@ -255,7 +257,7 @@ func (s *Server) startHTTPServer() { // HTTP path for upgrade operations. router.Handle("/upgrade/{op}", handler.NewClusterUpgradeHandler(tikvHandlerTool.Store.(kv.Storage))).Name("upgrade operations") - if s.cfg.Store == "tikv" { + if s.cfg.Store == config.StoreTypeTiKV { // HTTP path for tikv. router.Handle("/tables/{db}/{table}/regions", tikvhandler.NewTableHandler(tikvHandlerTool, tikvhandler.OpTableRegions)) router.Handle("/tables/{db}/{table}/ranges", tikvhandler.NewTableHandler(tikvHandlerTool, tikvhandler.OpTableRanges)) @@ -481,7 +483,7 @@ func (s *Server) startStatusServerAndRPCServer(serverMux *http.ServeMux) { statusServer := &http.Server{Addr: s.statusAddr, Handler: util2.NewCorsHandler(serverMux, s.cfg)} grpcServer := NewRPCServer(s.cfg, s.dom, s) service.RegisterChannelzServiceToServer(grpcServer) - if s.cfg.Store == "tikv" { + if s.cfg.Store == config.StoreTypeTiKV { keyspaceName := config.GetGlobalKeyspaceName() for { var fullPath string @@ -621,3 +623,17 @@ func (s *Server) newStatsHistoryHandler() *optimizor.StatsHistoryHandler { } return optimizor.NewStatsHistoryHandler(do) } + +func (s *Server) newStatsPriorityQueueHandler() *optimizor.StatsPriorityQueueHandler { + store, ok := s.driver.(*TiDBDriver) + if !ok { + panic("Illegal driver") + } + + do, err := session.GetDomain(store.store) + if err != nil { + panic("Failed to get domain") + } + + return optimizor.NewStatsPriorityQueueHandler(do) +} diff --git a/pkg/server/internal/testserverclient/server_client.go b/pkg/server/internal/testserverclient/server_client.go index 9dbaf855851ee..ce79917933f20 100644 --- a/pkg/server/internal/testserverclient/server_client.go +++ b/pkg/server/internal/testserverclient/server_client.go @@ -3071,11 +3071,11 @@ func runTestInSchemaState( } } if isOnJobUpdated { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", cbFunc1) - defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated") + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", cbFunc1) + defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced") } else { - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", cbFunc1) - defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", cbFunc1) + defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") } MustExec(ctx, t, conn, dropColumnSQL) require.NoError(t, checkErr) diff --git a/pkg/server/stat_test.go b/pkg/server/stat_test.go index edc26eed42277..cd450a3bcf847 100644 --- a/pkg/server/stat_test.go +++ b/pkg/server/stat_test.go @@ -50,7 +50,7 @@ func TestUptime(t *testing.T) { }() require.NoError(t, err) - _, err = infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true) + _, err = infosync.GlobalInfoSyncerInit(context.Background(), dom.DDL().GetID(), dom.ServerID, dom.GetEtcdClient(), dom.GetEtcdClient(), dom.GetPDClient(), dom.GetPDHTTPClient(), keyspace.CodecV1, true, dom.InfoCache()) require.NoError(t, err) tidbdrv := NewTiDBDriver(store) diff --git a/pkg/server/tests/commontest/tidb_test.go b/pkg/server/tests/commontest/tidb_test.go index c0c5372c06b7f..2fdb68d192ff9 100644 --- a/pkg/server/tests/commontest/tidb_test.go +++ b/pkg/server/tests/commontest/tidb_test.go @@ -2663,7 +2663,7 @@ func TestSandBoxMode(t *testing.T) { require.NoError(t, err) _, err = Execute(context.Background(), qctx, "create user testuser;") require.NoError(t, err) - qctx.Session.GetSessionVars().User = &auth.UserIdentity{Username: "testuser", AuthUsername: "testuser", AuthHostname: "%"} + qctx.Session.Auth(&auth.UserIdentity{Username: "testuser", AuthUsername: "testuser", AuthHostname: "%"}, nil, nil, nil) alterPwdStmts := []string{ "set password = '1234';", diff --git a/pkg/session/BUILD.bazel b/pkg/session/BUILD.bazel index 51c5b5e23c739..f2da24851b1d8 100644 --- a/pkg/session/BUILD.bazel +++ b/pkg/session/BUILD.bazel @@ -82,6 +82,7 @@ go_library( "//pkg/statistics/handle/syncload", "//pkg/statistics/handle/usage", "//pkg/statistics/handle/usage/indexusage", + "//pkg/store", "//pkg/store/driver/error", "//pkg/store/helper", "//pkg/store/mockstore", @@ -130,6 +131,7 @@ go_library( "@com_github_tikv_client_go_v2//oracle", "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_client_go_v2//util", + "@io_etcd_go_etcd_client_v3//:client", "@io_etcd_go_etcd_client_v3//concurrency", "@org_uber_go_atomic//:atomic", "@org_uber_go_zap//:zap", @@ -160,6 +162,7 @@ go_test( "//pkg/executor", "//pkg/expression", "//pkg/expression/sessionexpr", + "//pkg/keyspace", "//pkg/kv", "//pkg/meta", "//pkg/parser", @@ -180,9 +183,11 @@ go_test( "//pkg/util/logutil", "//pkg/util/sqlexec", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_kvproto//pkg/keyspacepb", "@com_github_pingcap_log//:log", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//tikv", + "@io_etcd_go_etcd_tests_v3//integration", "@org_uber_go_atomic//:atomic", #keep "@org_uber_go_goleak//:goleak", "@org_uber_go_zap//:zap", diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 7dd4ed0381a1b..0a24c5cbaa266 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -47,6 +47,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/terror" sessiontypes "github.com/pingcap/tidb/pkg/session/types" "github.com/pingcap/tidb/pkg/sessionctx/variable" + storepkg "github.com/pingcap/tidb/pkg/store" "github.com/pingcap/tidb/pkg/table/tables" timertable "github.com/pingcap/tidb/pkg/timer/tablestore" "github.com/pingcap/tidb/pkg/types" @@ -589,8 +590,9 @@ const ( step INT(11), target_scope VARCHAR(256) DEFAULT "", error BLOB, + modify_params json, key(state), - UNIQUE KEY task_key(task_key) + UNIQUE KEY task_key(task_key) );` // CreateGlobalTaskHistory is a table about history global task. @@ -610,8 +612,9 @@ const ( step INT(11), target_scope VARCHAR(256) DEFAULT "", error BLOB, + modify_params json, key(state), - UNIQUE KEY task_key(task_key) + UNIQUE KEY task_key(task_key) );` // CreateDistFrameworkMeta create a system table that distributed task framework use to store meta information @@ -1186,11 +1189,25 @@ const ( // version 217 // Keep tidb_schema_cache_size to 0 if this variable does not exist (upgrading from old version pre 8.1). version217 = 217 + + // version 218 + // enable fast_create_table on default + version218 = 218 + + // ... + // [version219, version238] is the version range reserved for patches of 8.5.x + // ... + + // next version should start with 239 + + // version 239 + // add modify_params to tidb_global_task and tidb_global_task_history. + version239 = 239 ) // 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 = version217 +var currentBootstrapVersion int64 = version239 // 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 @@ -1363,6 +1380,8 @@ var ( upgradeToVer215, upgradeToVer216, upgradeToVer217, + upgradeToVer218, + upgradeToVer239, } ) @@ -1427,7 +1446,7 @@ var ( ) func acquireLock(store kv.Storage) (func(), error) { - etcdCli, err := domain.NewEtcdCli(store) + etcdCli, err := storepkg.NewEtcdCli(store) if err != nil { return nil, errors.Trace(err) } @@ -3253,6 +3272,21 @@ func upgradeToVer217(s sessiontypes.Session, ver int64) { mustExecute(s, "INSERT IGNORE INTO mysql.global_variables VALUES ('tidb_schema_cache_size', 0)") } +func upgradeToVer218(_ sessiontypes.Session, ver int64) { + if ver >= version218 { + return + } + // empty, just make lint happy. +} + +func upgradeToVer239(s sessiontypes.Session, ver int64) { + if ver >= version239 { + return + } + doReentrantDDL(s, "ALTER TABLE mysql.tidb_global_task ADD COLUMN modify_params json AFTER `error`;", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.tidb_global_task_history ADD COLUMN modify_params json AFTER `error`;", infoschema.ErrColumnExists) +} + // 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) diff --git a/pkg/session/bootstrap_test.go b/pkg/session/bootstrap_test.go index 9a887fe13dff8..9ff0d449be6ab 100644 --- a/pkg/session/bootstrap_test.go +++ b/pkg/session/bootstrap_test.go @@ -16,6 +16,7 @@ package session import ( "context" + "crypto/tls" "fmt" "sort" "strings" @@ -23,11 +24,14 @@ import ( "time" "github.com/pingcap/failpoint" + "github.com/pingcap/kvproto/pkg/keyspacepb" "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/bindinfo" "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/expression/sessionexpr" + "github.com/pingcap/tidb/pkg/keyspace" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/parser" "github.com/pingcap/tidb/pkg/parser/auth" @@ -38,6 +42,7 @@ import ( "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/table/tblsession" "github.com/stretchr/testify/require" + "go.etcd.io/etcd/tests/v3/integration" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -92,7 +97,7 @@ func TestBootstrap(t *testing.T) { MustExec(t, se, "USE test") MustExec(t, se, "drop table if exists t") MustExec(t, se, "create table t (id int)") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) se.Close() se, err = CreateSession4Test(store) @@ -343,7 +348,7 @@ func TestUpgrade(t *testing.T) { MustExec(t, se1, "update mysql.global_variables set variable_value='off' where variable_name='tidb_enable_dist_task'") MustExec(t, se1, fmt.Sprintf(`delete from mysql.global_variables where VARIABLE_NAME="%s"`, variable.TiDBDistSQLScanConcurrency)) MustExec(t, se1, `commit`) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) revertVersionAndVariables(t, se1, 0) // Make sure the version is downgraded. r = MustExecToRecodeSet(t, se1, `SELECT VARIABLE_VALUE from mysql.TiDB where VARIABLE_NAME="tidb_server_version"`) @@ -417,7 +422,7 @@ func TestIssue17979_1(t *testing.T) { revertVersionAndVariables(t, seV3, 58) MustExec(t, seV3, "delete from mysql.tidb where variable_name='default_oom_action'") MustExec(t, seV3, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV3) require.NoError(t, err) require.Equal(t, int64(58), ver) @@ -453,7 +458,7 @@ func TestIssue17979_2(t *testing.T) { revertVersionAndVariables(t, seV3, 59) MustExec(t, seV3, "delete from mysql.tidb where variable_name='default_iim_action'") MustExec(t, seV3, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV3) require.NoError(t, err) require.Equal(t, int64(59), ver) @@ -495,7 +500,7 @@ func TestIssue20900_2(t *testing.T) { revertVersionAndVariables(t, seV3, 52) MustExec(t, seV3, "delete from mysql.tidb where variable_name='default_memory_quota_query'") MustExec(t, seV3, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV3) require.NoError(t, err) require.Equal(t, int64(52), ver) @@ -526,7 +531,7 @@ func TestANSISQLMode(t *testing.T) { MustExec(t, se, "USE mysql") MustExec(t, se, `set @@global.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI"`) MustExec(t, se, `delete from mysql.TiDB where VARIABLE_NAME="tidb_server_version"`) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) se.Close() // Do some clean up, BootstrapSession will not create a new domain otherwise. @@ -643,7 +648,7 @@ func TestUpgradeClusteredIndexDefaultValue(t *testing.T) { MustExec(t, seV67, "UPDATE mysql.global_variables SET VARIABLE_VALUE = 'OFF' where VARIABLE_NAME = 'tidb_enable_clustered_index'") require.Equal(t, uint64(1), seV67.GetSessionVars().StmtCtx.AffectedRows()) MustExec(t, seV67, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV67) require.NoError(t, err) require.Equal(t, int64(67), ver) @@ -734,7 +739,7 @@ func TestAnalyzeVersionUpgradeFrom300To500(t *testing.T) { revertVersionAndVariables(t, seV3, ver300) MustExec(t, seV3, fmt.Sprintf("delete from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBAnalyzeVersion)) MustExec(t, seV3, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV3) require.NoError(t, err) require.Equal(t, int64(ver300), ver) @@ -809,7 +814,7 @@ func TestIndexMergeUpgradeFrom300To540(t *testing.T) { revertVersionAndVariables(t, seV3, ver300) MustExec(t, seV3, fmt.Sprintf("delete from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBEnableIndexMerge)) MustExec(t, seV3, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV3) require.NoError(t, err) require.Equal(t, int64(ver300), ver) @@ -868,7 +873,7 @@ func testIndexMergeUpgradeFrom400To540(t *testing.T, enable bool) { revertVersionAndVariables(t, seV4, ver400) MustExec(t, seV4, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", variable.Off, variable.TiDBEnableIndexMerge)) MustExec(t, seV4, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV4) require.NoError(t, err) require.Equal(t, int64(ver400), ver) @@ -987,7 +992,7 @@ func TestTiDBOptRangeMaxSizeWhenUpgrading(t *testing.T) { revertVersionAndVariables(t, seV630, ver94) MustExec(t, seV630, fmt.Sprintf("delete from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBOptRangeMaxSize)) MustExec(t, seV630, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV630) require.NoError(t, err) require.Equal(t, int64(ver94), ver) @@ -1045,7 +1050,7 @@ func TestTiDBOptAdvancedJoinHintWhenUpgrading(t *testing.T) { revertVersionAndVariables(t, seV660, ver134) MustExec(t, seV660, fmt.Sprintf("delete from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBOptAdvancedJoinHint)) MustExec(t, seV660, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV660) require.NoError(t, err) require.Equal(t, int64(ver134), ver) @@ -1155,7 +1160,7 @@ func TestTiDBCostModelUpgradeFrom300To650(t *testing.T) { revertVersionAndVariables(t, seV3, ver300) MustExec(t, seV3, fmt.Sprintf("delete from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBCostModelVersion)) MustExec(t, seV3, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV3) require.NoError(t, err) require.Equal(t, int64(ver300), ver) @@ -1207,7 +1212,7 @@ func TestTiDBCostModelUpgradeFrom610To650(t *testing.T) { revertVersionAndVariables(t, seV61, ver61) MustExec(t, seV61, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "1", variable.TiDBCostModelVersion)) MustExec(t, seV61, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV61) require.NoError(t, err) require.Equal(t, int64(ver61), ver) @@ -1275,7 +1280,7 @@ func TestTiDBGCAwareUpgradeFrom630To650(t *testing.T) { revertVersionAndVariables(t, seV63, ver63) MustExec(t, seV63, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "1", variable.TiDBEnableGCAwareMemoryTrack)) MustExec(t, seV63, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV63) require.NoError(t, err) require.Equal(t, int64(ver63), ver) @@ -1329,7 +1334,7 @@ func TestTiDBServerMemoryLimitUpgradeTo651_1(t *testing.T) { revertVersionAndVariables(t, seV132, ver132) MustExec(t, seV132, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "0", variable.TiDBServerMemoryLimit)) MustExec(t, seV132, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV132) require.NoError(t, err) require.Equal(t, int64(ver132), ver) @@ -1383,7 +1388,7 @@ func TestTiDBServerMemoryLimitUpgradeTo651_2(t *testing.T) { revertVersionAndVariables(t, seV132, ver132) MustExec(t, seV132, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "70%", variable.TiDBServerMemoryLimit)) MustExec(t, seV132, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV132) require.NoError(t, err) require.Equal(t, int64(ver132), ver) @@ -1440,7 +1445,7 @@ func TestTiDBGlobalVariablesDefaultValueUpgradeFrom630To660(t *testing.T) { MustExec(t, seV630, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "OFF", variable.TiDBEnableHistoricalStats)) MustExec(t, seV630, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "OFF", variable.TiDBEnablePlanReplayerCapture)) MustExec(t, seV630, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV630) require.NoError(t, err) require.Equal(t, int64(ver630), ver) @@ -1503,7 +1508,7 @@ func TestTiDBStoreBatchSizeUpgradeFrom650To660(t *testing.T) { revertVersionAndVariables(t, seV65, ver65) MustExec(t, seV65, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "0", variable.TiDBStoreBatchSize)) MustExec(t, seV65, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV65) require.NoError(t, err) require.Equal(t, int64(ver65), ver) @@ -1570,7 +1575,7 @@ func TestTiDBUpgradeToVer136(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV135) require.NoError(t, err) require.Equal(t, int64(ver135), ver) @@ -1609,7 +1614,7 @@ func TestTiDBUpgradeToVer140(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(s) require.NoError(t, err) require.Equal(t, int64(ver139), ver) @@ -1656,7 +1661,7 @@ func TestTiDBNonPrepPlanCacheUpgradeFrom540To700(t *testing.T) { revertVersionAndVariables(t, seV54, ver54) MustExec(t, seV54, fmt.Sprintf("delete from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBEnableNonPreparedPlanCache)) MustExec(t, seV54, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV54) require.NoError(t, err) require.Equal(t, int64(ver54), ver) @@ -1716,7 +1721,7 @@ func TestTiDBStatsLoadPseudoTimeoutUpgradeFrom610To650(t *testing.T) { revertVersionAndVariables(t, seV61, ver61) MustExec(t, seV61, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "0", variable.TiDBStatsLoadPseudoTimeout)) MustExec(t, seV61, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV61) require.NoError(t, err) require.Equal(t, int64(ver61), ver) @@ -1769,7 +1774,7 @@ func TestTiDBTiDBOptTiDBOptimizerEnableNAAJWhenUpgradingToVer138(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV137) require.NoError(t, err) require.Equal(t, int64(ver137), ver) @@ -1820,7 +1825,7 @@ func TestTiDBUpgradeToVer143(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV142) require.NoError(t, err) require.Equal(t, int64(ver142), ver) @@ -1852,7 +1857,7 @@ func TestTiDBLoadBasedReplicaReadThresholdUpgradingToVer141(t *testing.T) { revertVersionAndVariables(t, seV70, ver70) MustExec(t, seV70, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "0", variable.TiDBLoadBasedReplicaReadThreshold)) MustExec(t, seV70, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV70) require.NoError(t, err) require.Equal(t, int64(ver70), ver) @@ -1906,7 +1911,7 @@ func TestTiDBPlanCacheInvalidationOnFreshStatsWhenUpgradingToVer144(t *testing.T MustExec(t, seV143, "delete from mysql.GLOBAL_VARIABLES where variable_name='tidb_plan_cache_invalidation_on_fresh_stats'") err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) // upgrade to ver144 do.Close() @@ -1953,7 +1958,7 @@ func TestTiDBUpgradeToVer145(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV144) require.NoError(t, err) require.Equal(t, int64(ver144), ver) @@ -1983,7 +1988,7 @@ func TestTiDBUpgradeToVer170(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV169) require.NoError(t, err) require.Equal(t, int64(ver169), ver) @@ -2013,7 +2018,7 @@ func TestTiDBBindingInListToVer175(t *testing.T) { revertVersionAndVariables(t, seV174, ver174) err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) // create some bindings at version174 MustExec(t, seV174, "use test") @@ -2097,7 +2102,7 @@ func TestTiDBUpgradeToVer176(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV175) require.NoError(t, err) require.Equal(t, int64(ver175), ver) @@ -2128,7 +2133,7 @@ func TestTiDBUpgradeToVer177(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV176) require.NoError(t, err) require.Equal(t, int64(ver176), ver) @@ -2187,7 +2192,7 @@ func TestWriteDDLTableVersionToMySQLTiDBWhenUpgradingTo178(t *testing.T) { MustExec(t, seV177, fmt.Sprintf("delete from mysql.tidb where VARIABLE_NAME='%s'", tidbDDLTableVersion)) err = txn.Commit(ctx) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV177) require.NoError(t, err) require.Equal(t, int64(ver177), ver) @@ -2229,7 +2234,7 @@ func TestTiDBUpgradeToVer179(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV178) require.NoError(t, err) require.Equal(t, int64(ver178), ver) @@ -2269,7 +2274,7 @@ func testTiDBUpgradeWithDistTask(t *testing.T, injectQuery string, fatal bool) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV178) require.NoError(t, err) require.Equal(t, int64(ver178), ver) @@ -2318,7 +2323,7 @@ func TestTiDBUpgradeToVer209(t *testing.T) { MustExec(t, seV198, "delete from mysql.GLOBAL_VARIABLES where variable_name='tidb_resource_control_strict_mode'") err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) // upgrade to ver209 dom.Close() @@ -2391,7 +2396,7 @@ func TestTiDBUpgradeToVer211(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV210) require.NoError(t, err) require.Equal(t, int64(ver210), ver) @@ -2461,7 +2466,7 @@ func TestTiDBUpgradeToVer212(t *testing.T) { revertVersionAndVariables(t, seV198, ver198) err = txn.Commit(context.Background()) require.NoError(t, err) - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) // upgrade to ver212 dom.Close() @@ -2494,7 +2499,7 @@ func TestIndexJoinMultiPatternByUpgrade650To840(t *testing.T) { revertVersionAndVariables(t, seV7, ver650) MustExec(t, seV7, fmt.Sprintf("delete from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBEnableINLJoinInnerMultiPattern)) MustExec(t, seV7, "commit") - unsetStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, nil) ver, err := getBootstrapVersion(seV7) require.NoError(t, err) require.Equal(t, int64(ver650), ver) @@ -2524,3 +2529,88 @@ func TestIndexJoinMultiPatternByUpgrade650To840(t *testing.T) { require.Equal(t, 1, row.Len()) require.Equal(t, int64(0), row.GetInt64(0)) } + +func TestKeyspaceEtcdNamespace(t *testing.T) { + keyspaceMeta := keyspacepb.KeyspaceMeta{} + keyspaceMeta.Id = 2 + keyspaceMeta.Name = "test_ks_name2" + makeStore(t, &keyspaceMeta, true) +} + +func TestNullKeyspaceEtcdNamespace(t *testing.T) { + makeStore(t, nil, false) +} + +func makeStore(t *testing.T, keyspaceMeta *keyspacepb.KeyspaceMeta, isHasPrefix bool) { + integration.BeforeTestExternal(t) + var store kv.Storage + var err error + if keyspaceMeta != nil { + store, err = mockstore.NewMockStore( + mockstore.WithKeyspaceMeta(keyspaceMeta), + mockstore.WithStoreType(mockstore.EmbedUnistore), + ) + } else { + store, err = mockstore.NewMockStore(mockstore.WithStoreType(mockstore.EmbedUnistore)) + } + require.NoError(t, err) + defer func() { + require.NoError(t, store.Close()) + }() + + cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}) + defer cluster.Terminate(t) + + // Build a mockEtcdBackend. + mockStore := &mockEtcdBackend{ + Storage: store, + pdAddrs: []string{cluster.Members[0].GRPCURL()}} + etcdClient := cluster.RandClient() + + require.NoError(t, err) + dom, err := domap.getWithEtcdClient(mockStore, etcdClient) + require.NoError(t, err) + defer dom.Close() + + checkETCDNameSpace(t, dom, isHasPrefix) +} + +func checkETCDNameSpace(t *testing.T, dom *domain.Domain, isHasPrefix bool) { + namespacePrefix := keyspace.MakeKeyspaceEtcdNamespace(dom.Store().GetCodec()) + testKeyWithoutPrefix := "/testkey" + testVal := "test" + var expectTestKey string + if isHasPrefix { + expectTestKey = namespacePrefix + testKeyWithoutPrefix + } else { + expectTestKey = testKeyWithoutPrefix + } + + // Put key value into etcd. + _, err := dom.EtcdClient().Put(context.Background(), testKeyWithoutPrefix, testVal) + require.NoError(t, err) + + // Use expectTestKey to get the key from etcd. + getResp, err := dom.UnprefixedEtcdCli().Get(context.Background(), expectTestKey) + require.NoError(t, err) + require.Equal(t, len(getResp.Kvs), 1) + + if isHasPrefix { + getResp, err = dom.UnprefixedEtcdCli().Get(context.Background(), testKeyWithoutPrefix) + require.NoError(t, err) + require.Equal(t, 0, len(getResp.Kvs)) + } +} + +type mockEtcdBackend struct { + kv.Storage + pdAddrs []string +} + +func (mebd *mockEtcdBackend) EtcdAddrs() ([]string, error) { + return mebd.pdAddrs, nil +} + +func (mebd *mockEtcdBackend) TLSConfig() *tls.Config { return nil } + +func (mebd *mockEtcdBackend) StartGCWorker() error { return nil } diff --git a/pkg/session/bootstraptest/bootstrap_upgrade_test.go b/pkg/session/bootstraptest/bootstrap_upgrade_test.go index 3a4449d295176..de5ad55e956d0 100644 --- a/pkg/session/bootstraptest/bootstrap_upgrade_test.go +++ b/pkg/session/bootstraptest/bootstrap_upgrade_test.go @@ -126,7 +126,7 @@ func TestUpgradeVersion66(t *testing.T) { revertVersionAndVariables(t, seV65, 65) session.MustExec(t, seV65, "set @@global.tidb_track_aggregate_memory_usage = 0") session.MustExec(t, seV65, "commit") - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV65) require.NoError(t, err) require.Equal(t, int64(65), ver) @@ -176,7 +176,7 @@ func TestUpgradeVersion74(t *testing.T) { revertVersionAndVariables(t, seV73, 72) session.MustExec(t, seV73, "set @@global.tidb_stmt_summary_max_stmt_count = "+strconv.Itoa(ca.oldValue)) session.MustExec(t, seV73, "commit") - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV73) require.NoError(t, err) require.Equal(t, int64(72), ver) @@ -217,7 +217,7 @@ func TestUpgradeVersion75(t *testing.T) { session.MustExec(t, seV74, "ALTER TABLE mysql.user DROP PRIMARY KEY") session.MustExec(t, seV74, "ALTER TABLE mysql.user MODIFY COLUMN Host CHAR(64)") session.MustExec(t, seV74, "ALTER TABLE mysql.user ADD PRIMARY KEY(Host, User)") - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV74) require.NoError(t, err) require.Equal(t, int64(74), ver) @@ -259,7 +259,7 @@ func TestUpgradeVersionMockLatest(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) revertVersionAndVariables(t, seV, int(session.CurrentBootstrapVersion-1)) - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV) require.NoError(t, err) require.Equal(t, session.CurrentBootstrapVersion-1, ver) @@ -324,7 +324,7 @@ func TestUpgradeVersionWithUpgradeHTTPOp(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) revertVersionAndVariables(t, seV, int(session.SupportUpgradeHTTPOpVer)) - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV) require.NoError(t, err) require.Equal(t, session.SupportUpgradeHTTPOpVer, ver) @@ -374,7 +374,7 @@ func TestUpgradeVersionWithoutUpgradeHTTPOp(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) revertVersionAndVariables(t, seV, int(session.SupportUpgradeHTTPOpVer)) - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV) require.NoError(t, err) require.Equal(t, session.SupportUpgradeHTTPOpVer, ver) @@ -417,7 +417,7 @@ func TestUpgradeVersionForPausedJob(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) revertVersionAndVariables(t, seV, int(session.CurrentBootstrapVersion-1)) - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV) require.NoError(t, err) require.Equal(t, session.CurrentBootstrapVersion-1, ver) @@ -426,7 +426,7 @@ func TestUpgradeVersionForPausedJob(t *testing.T) { session.MustExec(t, seV, "create table test.upgrade_tbl(a int)") ch := make(chan struct{}) var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { if job.SchemaState == model.StateWriteOnly { se := session.CreateSessionAndSetID(t, store) session.MustExec(t, se, fmt.Sprintf("admin pause ddl jobs %d", job.ID)) @@ -442,7 +442,7 @@ func TestUpgradeVersionForPausedJob(t *testing.T) { // Make sure upgrade is successful. startUpgrade(store) dom.Close() - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep") domLatestV, err := session.BootstrapSession(store) require.NoError(t, err) defer domLatestV.Close() @@ -498,7 +498,7 @@ func TestUpgradeVersionForSystemPausedJob(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) revertVersionAndVariables(t, seV, int(session.CurrentBootstrapVersion-1)) - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV) require.NoError(t, err) require.Equal(t, session.CurrentBootstrapVersion-1, ver) @@ -507,7 +507,7 @@ func TestUpgradeVersionForSystemPausedJob(t *testing.T) { session.MustExec(t, seV, "create table mysql.upgrade_tbl(a int)") ch := make(chan struct{}) var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { if job.SchemaState == model.StateDeleteOnly { se := session.CreateSessionAndSetID(t, store) session.MustExec(t, se, fmt.Sprintf("admin pause ddl jobs %d", job.ID)) @@ -532,7 +532,7 @@ func TestUpgradeVersionForSystemPausedJob(t *testing.T) { // Make sure upgrade is successful. startUpgrade(store) dom.Close() - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep") domLatestV, err := session.BootstrapSession(store) require.NoError(t, err) defer domLatestV.Close() @@ -559,7 +559,7 @@ func TestUpgradeVersionForResumeJob(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) revertVersionAndVariables(t, seV, int(session.CurrentBootstrapVersion-1)) - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV) require.NoError(t, err) require.Equal(t, session.CurrentBootstrapVersion-1, ver) @@ -767,7 +767,7 @@ func TestUpgradeWithPauseDDL(t *testing.T) { err = txn.Commit(context.Background()) require.NoError(t, err) revertVersionAndVariables(t, seV, int(session.CurrentBootstrapVersion-1)) - session.UnsetStoreBootstrapped(store.UUID()) + store.SetOption(session.StoreBootstrappedKey, nil) ver, err := session.GetBootstrapVersion(seV) require.NoError(t, err) require.Equal(t, session.CurrentBootstrapVersion-1, ver) diff --git a/pkg/session/session.go b/pkg/session/session.go index f381afdab8632..1dc365b78af96 100644 --- a/pkg/session/session.go +++ b/pkg/session/session.go @@ -26,6 +26,7 @@ import ( "encoding/json" stderrs "errors" "fmt" + "iter" "math" "math/rand" "runtime/pprof" @@ -128,6 +129,7 @@ import ( "github.com/tikv/client-go/v2/oracle" tikvutil "github.com/tikv/client-go/v2/util" "go.uber.org/zap" + "go.uber.org/zap/zapcore" ) func init() { @@ -414,18 +416,12 @@ func (s *session) GetSessionManager() util.SessionManager { return s.sessionManager } -func (s *session) UpdateColStatsUsage(predicateColumns []model.TableItemID) { +func (s *session) UpdateColStatsUsage(colStatsUsage iter.Seq[model.TableItemID]) { if s.statsCollector == nil { return } t := time.Now() - colMap := make(map[model.TableItemID]time.Time, len(predicateColumns)) - for _, col := range predicateColumns { - // TODO: Remove this assertion once it has been confirmed to operate correctly over a period of time. - intest.Assert(!col.IsIndex, "predicate column should only be table column") - colMap[col] = t - } - s.statsCollector.UpdateColStatsUsage(colMap) + s.statsCollector.UpdateColStatsUsage(colStatsUsage, t) } // FieldList returns fields list of a table. @@ -2145,7 +2141,7 @@ func (s *session) ExecuteStmt(ctx context.Context, stmtNode ast.StmtNode) (sqlex } // Execute the physical plan. - logStmt(stmt, s) + defer logStmt(stmt, s) // defer until txnStartTS is set var recordSet sqlexec.RecordSet if stmt.PsStmt != nil { // point plan short path @@ -2263,10 +2259,10 @@ func runStmt(ctx context.Context, se *session, s sqlexec.Statement) (rs sqlexec. r, ctx := tracing.StartRegionEx(ctx, "session.runStmt") defer r.End() if r.Span != nil { - r.Span.LogKV("sql", s.OriginText()) + r.Span.LogKV("sql", s.Text()) } - se.SetValue(sessionctx.QueryString, s.OriginText()) + se.SetValue(sessionctx.QueryString, s.Text()) if _, ok := s.(*executor.ExecStmt).StmtNode.(ast.DDLNode); ok { se.SetValue(sessionctx.LastExecuteDDL, true) } else { @@ -2648,6 +2644,7 @@ func (s *session) GetDistSQLCtx() *distsqlctx.DistSQLContext { LoadBasedReplicaReadThreshold: vars.LoadBasedReplicaReadThreshold, RunawayChecker: sc.RunawayChecker, TiKVClientReadTimeout: vars.GetTiKVClientReadTimeout(), + MaxExecutionTime: vars.GetMaxExecutionTime(), ReplicaClosestReadThreshold: vars.ReplicaClosestReadThreshold, ConnectionID: vars.ConnectionID, @@ -2708,9 +2705,9 @@ func (s *session) GetBuildPBCtx() *planctx.BuildPBContext { return bctx.(*planctx.BuildPBContext) } -func (s *session) AuthPluginForUser(user *auth.UserIdentity) (string, error) { +func (s *session) AuthPluginForUser(ctx context.Context, user *auth.UserIdentity) (string, error) { pm := privilege.GetPrivilegeManager(s) - authplugin, err := pm.GetAuthPluginForConnection(user.Username, user.Hostname) + authplugin, err := pm.GetAuthPluginForConnection(ctx, user.Username, user.Hostname) if err != nil { return "", err } @@ -2726,7 +2723,7 @@ func (s *session) Auth(user *auth.UserIdentity, authentication, salt []byte, aut hasPassword = "NO" } pm := privilege.GetPrivilegeManager(s) - authUser, err := s.MatchIdentity(user.Username, user.Hostname) + authUser, err := s.MatchIdentity(context.Background(), user.Username, user.Hostname) if err != nil { return privileges.ErrAccessDenied.FastGenByArgs(user.Username, user.Hostname, hasPassword) } @@ -2756,7 +2753,7 @@ func (s *session) Auth(user *auth.UserIdentity, authentication, salt []byte, aut } if lockStatusChanged { // Notification auto unlock. - err = domain.GetDomain(s).NotifyUpdatePrivilege() + err = domain.GetDomain(s).NotifyUpdatePrivilege([]string{authUser.Username}) if err != nil { return err } @@ -2831,7 +2828,7 @@ func (s *session) Auth(user *auth.UserIdentity, authentication, salt []byte, aut user.AuthUsername = authUser.Username user.AuthHostname = authUser.Hostname s.sessionVars.User = user - s.sessionVars.ActiveRoles = pm.GetDefaultRoles(user.AuthUsername, user.AuthHostname) + s.sessionVars.ActiveRoles = pm.GetDefaultRoles(context.Background(), user.AuthUsername, user.AuthHostname) return nil } @@ -2930,7 +2927,7 @@ func authFailedTracking(s *session, user string, host string) (bool, *privileges func autolockAction(s *session, passwordLocking *privileges.PasswordLocking, user, host string) error { // Don't want to update the cache frequently, and only trigger the update cache when the lock status is updated. - err := domain.GetDomain(s).NotifyUpdatePrivilege() + err := domain.GetDomain(s).NotifyUpdatePrivilege([]string{user}) if err != nil { return err } @@ -3047,7 +3044,7 @@ func userAutoAccountLocked(s *session, user string, host string, pl *privileges. // MatchIdentity finds the matching username + password in the MySQL privilege tables // for a username + hostname, since MySQL can have wildcards. -func (s *session) MatchIdentity(username, remoteHost string) (*auth.UserIdentity, error) { +func (s *session) MatchIdentity(ctx context.Context, username, remoteHost string) (*auth.UserIdentity, error) { pm := privilege.GetPrivilegeManager(s) var success bool var skipNameResolve bool @@ -3056,7 +3053,7 @@ func (s *session) MatchIdentity(username, remoteHost string) (*auth.UserIdentity if err == nil && variable.TiDBOptOn(varVal) { skipNameResolve = true } - user.Username, user.Hostname, success = pm.MatchIdentity(username, remoteHost, skipNameResolve) + user.Username, user.Hostname, success = pm.MatchIdentity(ctx, username, remoteHost, skipNameResolve) if success { return user, nil } @@ -3065,9 +3062,9 @@ func (s *session) MatchIdentity(username, remoteHost string) (*auth.UserIdentity } // AuthWithoutVerification is required by the ResetConnection RPC -func (s *session) AuthWithoutVerification(user *auth.UserIdentity) bool { +func (s *session) AuthWithoutVerification(ctx context.Context, user *auth.UserIdentity) bool { pm := privilege.GetPrivilegeManager(s) - authUser, err := s.MatchIdentity(user.Username, user.Hostname) + authUser, err := s.MatchIdentity(ctx, user.Username, user.Hostname) if err != nil { return false } @@ -3075,7 +3072,7 @@ func (s *session) AuthWithoutVerification(user *auth.UserIdentity) bool { user.AuthUsername = authUser.Username user.AuthHostname = authUser.Hostname s.sessionVars.User = user - s.sessionVars.ActiveRoles = pm.GetDefaultRoles(user.AuthUsername, user.AuthHostname) + s.sessionVars.ActiveRoles = pm.GetDefaultRoles(ctx, user.AuthUsername, user.AuthHostname) return true } return false @@ -3892,10 +3889,8 @@ func mustGetStoreBootstrapVersion(store kv.Storage) int64 { } func getStoreBootstrapVersionWithCache(store kv.Storage) int64 { - storeBootstrappedLock.Lock() - defer storeBootstrappedLock.Unlock() // check in memory - _, ok := storeBootstrapped[store.UUID()] + _, ok := store.GetOption(StoreBootstrappedKey) if ok { return currentBootstrapVersion } @@ -3904,7 +3899,7 @@ func getStoreBootstrapVersionWithCache(store kv.Storage) int64 { if ver > notBootstrapped { // here mean memory is not ok, but other server has already finished it - storeBootstrapped[store.UUID()] = true + store.SetOption(StoreBootstrappedKey, true) } modifyBootstrapVersionForTest(ver) @@ -3912,7 +3907,7 @@ func getStoreBootstrapVersionWithCache(store kv.Storage) int64 { } func finishBootstrap(store kv.Storage) { - setStoreBootstrapped(store.UUID()) + store.SetOption(StoreBootstrappedKey, true) ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnBootstrap) err := kv.RunInNewTxn(ctx, store, true, func(_ context.Context, txn kv.Transaction) error { @@ -4099,7 +4094,7 @@ func logStmt(execStmt *executor.ExecStmt, s *session) { case *ast.CreateUserStmt, *ast.DropUserStmt, *ast.AlterUserStmt, *ast.SetPwdStmt, *ast.GrantStmt, *ast.RevokeStmt, *ast.AlterTableStmt, *ast.CreateDatabaseStmt, *ast.CreateTableStmt, *ast.DropDatabaseStmt, *ast.DropTableStmt, *ast.RenameTableStmt, *ast.TruncateTableStmt, - *ast.RenameUserStmt: + *ast.RenameUserStmt, *ast.CreateBindingStmt, *ast.DropBindingStmt, *ast.SetBindingStmt: isCrucial = true } @@ -4139,7 +4134,8 @@ func logGeneralQuery(execStmt *executor.ExecStmt, s *session, isPrepared bool) { if vars.EnableRedactLog != errors.RedactLogEnable { query += redact.String(vars.EnableRedactLog, vars.PlanCacheParams.String()) } - logutil.GeneralLogger.Info("GENERAL_LOG", + + fields := []zapcore.Field{ zap.Uint64("conn", vars.ConnectionID), zap.String("session_alias", vars.SessionAlias), zap.String("user", vars.User.LoginString()), @@ -4150,7 +4146,12 @@ func logGeneralQuery(execStmt *executor.ExecStmt, s *session, isPrepared bool) { zap.String("currentDB", vars.CurrentDB), zap.Bool("isPessimistic", vars.TxnCtx.IsPessimistic), zap.String("sessionTxnMode", vars.GetReadableTxnMode()), - zap.String("sql", query)) + zap.String("sql", query), + } + if ot := execStmt.OriginText(); ot != execStmt.Text() { + fields = append(fields, zap.String("originText", strconv.Quote(ot))) + } + logutil.GeneralLogger.Info("GENERAL_LOG", fields...) } } diff --git a/pkg/session/sync_upgrade.go b/pkg/session/sync_upgrade.go index 6f7f7fcfa497a..2430e5385013d 100644 --- a/pkg/session/sync_upgrade.go +++ b/pkg/session/sync_upgrade.go @@ -63,7 +63,7 @@ func SyncUpgradeState(s sessionctx.Context, timeout time.Duration) error { var op owner.OpType childCtx, cancel := context.WithTimeout(ctx, 3*time.Second) - op, err = owner.GetOwnerOpValue(childCtx, dom.EtcdClient(), ddl.DDLOwnerKey, "upgrade bootstrap") + op, err = owner.GetOwnerOpValue(childCtx, dom.EtcdClient(), ddl.DDLOwnerKey) cancel() if err == nil && op.IsSyncedUpgradingState() { break diff --git a/pkg/session/test/session_test.go b/pkg/session/test/session_test.go index 87ae66cd46e51..b86e9d1d99e45 100644 --- a/pkg/session/test/session_test.go +++ b/pkg/session/test/session_test.go @@ -579,24 +579,24 @@ func TestMatchIdentity(t *testing.T) { // The MySQL matching rule is most specific to least specific. // So if I log in from 192.168.1.1 I should match that entry always. - identity, err := tk.Session().MatchIdentity("useridentity", "192.168.1.1") + identity, err := tk.Session().MatchIdentity(context.Background(), "useridentity", "192.168.1.1") require.NoError(t, err) require.Equal(t, "useridentity", identity.Username) require.Equal(t, "192.168.1.1", identity.Hostname) // If I log in from localhost, I should match localhost - identity, err = tk.Session().MatchIdentity("useridentity", "localhost") + identity, err = tk.Session().MatchIdentity(context.Background(), "useridentity", "localhost") require.NoError(t, err) require.Equal(t, "useridentity", identity.Username) require.Equal(t, "localhost", identity.Hostname) // If I log in from 192.168.1.2 I should match wildcard. - identity, err = tk.Session().MatchIdentity("useridentity", "192.168.1.2") + identity, err = tk.Session().MatchIdentity(context.Background(), "useridentity", "192.168.1.2") require.NoError(t, err) require.Equal(t, "useridentity", identity.Username) require.Equal(t, "%", identity.Hostname) - identity, err = tk.Session().MatchIdentity("useridentity", "127.0.0.1") + identity, err = tk.Session().MatchIdentity(context.Background(), "useridentity", "127.0.0.1") require.NoError(t, err) require.Equal(t, "useridentity", identity.Username) require.Equal(t, "localhost", identity.Hostname) @@ -606,7 +606,7 @@ func TestMatchIdentity(t *testing.T) { // entry in the privileges table (by reverse lookup). ips, err := net.LookupHost("example.com") require.NoError(t, err) - identity, err = tk.Session().MatchIdentity("useridentity", ips[0]) + identity, err = tk.Session().MatchIdentity(context.Background(), "useridentity", ips[0]) require.NoError(t, err) require.Equal(t, "useridentity", identity.Username) // FIXME: we *should* match example.com instead diff --git a/pkg/session/test/txn/BUILD.bazel b/pkg/session/test/txn/BUILD.bazel index 351b06e8e07fa..456c700f3123a 100644 --- a/pkg/session/test/txn/BUILD.bazel +++ b/pkg/session/test/txn/BUILD.bazel @@ -9,7 +9,7 @@ go_test( ], flaky = True, race = "on", - shard_count = 9, + shard_count = 10, deps = [ "//pkg/config", "//pkg/kv", diff --git a/pkg/session/test/txn/txn_test.go b/pkg/session/test/txn/txn_test.go index 8d960fcffaf0e..9a40530c76427 100644 --- a/pkg/session/test/txn/txn_test.go +++ b/pkg/session/test/txn/txn_test.go @@ -553,3 +553,29 @@ func TestMemBufferSnapshotRead(t *testing.T) { tk.MustExec("set session tidb_max_chunk_size=default;") tk.MustExec("set session tidb_index_join_batch_size = default") } + +func TestMemBufferCleanupMemoryLeak(t *testing.T) { + // Test if cleanup memory will cause a memory leak. + // When an in-txn statement fails, TiDB cleans up the mutations from this statement. + // If there's a memory leak, the memory usage could increase uncontrollably with retries. + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t(a varchar(255) primary key)") + key1 := strings.Repeat("a", 255) + key2 := strings.Repeat("b", 255) + tk.MustExec(`set global tidb_mem_oom_action='cancel'`) + tk.MustExec("set session tidb_mem_quota_query=10240") + tk.MustExec("begin") + tk.MustExec("insert into t values(?)", key2) + for i := 0; i < 100; i++ { + // The insert statement will fail because of the duplicate key error. + err := tk.ExecToErr("insert into t values(?), (?)", key1, key2) + require.Error(t, err) + if strings.Contains(err.Error(), "Duplicate") { + continue + } + require.NoError(t, err) + } + tk.MustExec("commit") +} diff --git a/pkg/session/test/variable/BUILD.bazel b/pkg/session/test/variable/BUILD.bazel index 3f0a3dabf64f4..4f19705c2dc7a 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", @@ -19,10 +19,13 @@ go_test( "//pkg/testkit/testmain", "//pkg/testkit/testsetup", "//pkg/util/dbterror/exeerrors", + "//pkg/util/logutil", "//pkg/util/memory", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//tikv", "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zapcore", ], ) diff --git a/pkg/session/test/variable/variable_test.go b/pkg/session/test/variable/variable_test.go index 957c880bcb48d..3d200251e2479 100644 --- a/pkg/session/test/variable/variable_test.go +++ b/pkg/session/test/variable/variable_test.go @@ -17,6 +17,7 @@ package variable import ( "context" "fmt" + "strconv" "strings" "testing" @@ -27,8 +28,11 @@ import ( "github.com/pingcap/tidb/pkg/store/copr" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util/dbterror/exeerrors" + "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/memory" "github.com/stretchr/testify/require" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" ) func TestForbidSettingBothTSVariable(t *testing.T) { @@ -369,3 +373,110 @@ func TestLastQueryInfo(t *testing.T) { tk.MustQuery("select @@tidb_last_query_info;").CheckWithFunc(testkit.Rows(`"ru_consumption":27`), checkMatch) tk.MustQuery("select @@tidb_last_query_info;").CheckWithFunc(testkit.Rows(`"ru_consumption":30`), checkMatch) } + +type mockZapCore struct { + zapcore.Core + fields []map[string]zapcore.Field +} + +func (mzc *mockZapCore) Enabled(zapcore.Level) bool { return true } + +func (mzc *mockZapCore) Check(ent zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry { + return ce.AddCore(ent, mzc) +} + +func (mzc *mockZapCore) Write(ent zapcore.Entry, fields []zapcore.Field) error { + if ent.Message == "GENERAL_LOG" { + m := make(map[string]zapcore.Field) + for _, field := range fields { + m[field.Key] = field + } + mzc.fields = append(mzc.fields, m) + } + return nil +} + +func TestMockZapCore(t *testing.T) { + mzc := mockZapCore{Core: zapcore.NewNopCore()} + zl := zap.New(&mzc) + zl.Info("First", zap.String("name", "foo")) // ignored + zl.Info("GENERAL_LOG") // no fields + sql := zap.String("sql", "select 1111") // 1 field + zl.Info("GENERAL_LOG", sql) + require.Len(t, mzc.fields, 2) + require.Len(t, mzc.fields[0], 0) + require.Len(t, mzc.fields[1], 1) + require.True(t, sql.Equals(mzc.fields[1]["sql"])) +} + +func TestGeneralLogNonzeroTxnStartTS(t *testing.T) { + // mock logutil.GeneralLogger + oldGL := logutil.GeneralLogger + mzc := mockZapCore{Core: zapcore.NewNopCore()} + logutil.GeneralLogger = zap.New(&mzc) + defer func() { logutil.GeneralLogger = oldGL }() + + // enable general log + oldVar := variable.ProcessGeneralLog.Swap(true) + defer variable.ProcessGeneralLog.Store(oldVar) + + store := testkit.CreateMockStore(t) + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t (id BIGINT PRIMARY KEY NOT NULL)") + sqlField := zap.String("sql", "insert t values (100)") + tk.MustExec(sqlField.String) + + getTxnStartTS := func() (int64, bool) { + for _, fields := range mzc.fields { + if sql, ok := fields["sql"]; ok && sql.Equals(sqlField) { + return fields["txnStartTS"].Integer, true + } + } + return 0, false + } + + ts, ok := getTxnStartTS() + require.True(t, ts > 0) + require.True(t, ok) +} + +func TestGeneralLogBinaryText(t *testing.T) { + oldGL := logutil.GeneralLogger + mzc := mockZapCore{Core: zapcore.NewNopCore()} + logutil.GeneralLogger = zap.New(&mzc) + defer func() { logutil.GeneralLogger = oldGL }() + + store := testkit.CreateMockStore(t) + + b := []byte{0x41, 0xf6, 0xec, 0x9a} + tk := testkit.NewTestKit(t, store) + tk.MustExec("set session tidb_general_log = 1") + tk.MustExec("select * /*+ no_quoted */ from mysql.user") + sqlBinary := fmt.Sprintf("select * /*+ yes_quoted */ from mysql.user where User = _binary '%s'", b) + tk.MustExec(sqlBinary) + + getSQLFields := func(s string) (sql zapcore.Field, originText zapcore.Field, ok bool) { + for _, fields := range mzc.fields { + if sql, ok := fields["sql"]; ok && strings.Contains(sql.String, s) { + return sql, fields["originText"], true + } + } + return zapcore.Field{}, zapcore.Field{}, false + } + + sql, originText, ok := getSQLFields("no_quoted") + require.True(t, ok) + require.NotEmpty(t, sql.String) + require.Empty(t, originText.String) + + sql, originText, ok = getSQLFields("yes_quote") + require.True(t, ok) + require.NotEmpty(t, sql.String) + require.NotEmpty(t, originText.String) + ot, err := strconv.Unquote(originText.String) + require.NoError(t, err) + require.Equal(t, sqlBinary, ot) +} diff --git a/pkg/session/testutil.go b/pkg/session/testutil.go index ea0a2f11b7ff7..fdf906f79e530 100644 --- a/pkg/session/testutil.go +++ b/pkg/session/testutil.go @@ -34,8 +34,6 @@ var ( GetBootstrapVersion = getBootstrapVersion // CurrentBootstrapVersion is used in test CurrentBootstrapVersion = currentBootstrapVersion - // UnsetStoreBootstrapped is used in test - UnsetStoreBootstrapped = unsetStoreBootstrapped ) // CreateStoreAndBootstrap creates a mock store and bootstrap it. diff --git a/pkg/session/tidb.go b/pkg/session/tidb.go index f0bc68aba465a..eb0c98a9fa638 100644 --- a/pkg/session/tidb.go +++ b/pkg/session/tidb.go @@ -20,7 +20,6 @@ package session import ( "context" - "sync" "sync/atomic" "time" @@ -48,9 +47,13 @@ import ( "github.com/pingcap/tidb/pkg/util/logutil" "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/pingcap/tidb/pkg/util/syncutil" + clientv3 "go.etcd.io/etcd/client/v3" "go.uber.org/zap" ) +// StoreBootstrappedKey is used by store.G/SetOption to store related bootstrap context for kv.Storage. +const StoreBootstrappedKey = "bootstrap" + type domainMap struct { mu syncutil.Mutex domains map[string]*domain.Domain @@ -60,6 +63,10 @@ type domainMap struct { // TODO decouple domain create from it, it's more clear to create domain explicitly // before any usage of it. func (dm *domainMap) Get(store kv.Storage) (d *domain.Domain, err error) { + return dm.getWithEtcdClient(store, nil) +} + +func (dm *domainMap) getWithEtcdClient(store kv.Storage, etcdClient *clientv3.Client) (d *domain.Domain, err error) { dm.mu.Lock() defer dm.mu.Unlock() @@ -88,7 +95,7 @@ func (dm *domainMap) Get(store kv.Storage) (d *domain.Domain, err error) { zap.Stringer("stats lease", statisticLease)) factory := createSessionFunc(store) sysFactory := createSessionWithDomainFunc(store) - d = domain.NewDomain(store, ddlLease, statisticLease, planReplayerGCLease, factory) + d = domain.NewDomainWithEtcdClient(store, ddlLease, statisticLease, planReplayerGCLease, factory, etcdClient) var ddlInjector func(ddl.DDL, ddl.Executor, *infoschema.InfoCache) *schematracker.Checker if injector, ok := store.(schematracker.StorageDDLInjector); ok { @@ -124,11 +131,6 @@ var ( domap = &domainMap{ domains: map[string]*domain.Domain{}, } - // store.UUID()-> IfBootstrapped - // TODO this memory flag is meaningless, a store is always bootstrapped once, - // we can always get the version from the store, remove it later. - storeBootstrapped = make(map[string]bool) - storeBootstrappedLock sync.Mutex // schemaLease is lease of info schema, we use this to check whether info schema // is valid in SchemaChecker. we also use half of it as info schema reload interval. @@ -148,21 +150,7 @@ var ( // TODO: Remove domap and storeBootstrapped. Use store.SetOption() to do it. func ResetStoreForWithTiKVTest(store kv.Storage) { domap.Delete(store) - unsetStoreBootstrapped(store.UUID()) -} - -func setStoreBootstrapped(storeUUID string) { - storeBootstrappedLock.Lock() - defer storeBootstrappedLock.Unlock() - storeBootstrapped[storeUUID] = true -} - -// unsetStoreBootstrapped delete store uuid from stored bootstrapped map. -// currently this function only used for test. -func unsetStoreBootstrapped(storeUUID string) { - storeBootstrappedLock.Lock() - defer storeBootstrappedLock.Unlock() - delete(storeBootstrapped, storeUUID) + store.SetOption(StoreBootstrappedKey, nil) } // SetSchemaLease changes the default schema lease time for DDL. diff --git a/pkg/session/txn.go b/pkg/session/txn.go index b65a969b28ea0..2b6c31d5dfc12 100644 --- a/pkg/session/txn.go +++ b/pkg/session/txn.go @@ -672,7 +672,7 @@ func (tf *txnFuture) wait() (kv.Transaction, error) { return tf.store.Begin(tikv.WithTxnScope(tf.txnScope), tikv.WithStartTS(startTS), tikv.WithPipelinedMemDB()) } return tf.store.Begin(tikv.WithTxnScope(tf.txnScope), tikv.WithStartTS(startTS)) - } else if config.GetGlobalConfig().Store == "unistore" { + } else if config.GetGlobalConfig().Store == config.StoreTypeUniStore { return nil, err } diff --git a/pkg/session/types/sesson_interface.go b/pkg/session/types/sesson_interface.go index d3dfdfa3eca06..f359cc00dd2ec 100644 --- a/pkg/session/types/sesson_interface.go +++ b/pkg/session/types/sesson_interface.go @@ -70,9 +70,9 @@ type Session interface { SetSessionManager(util.SessionManager) Close() Auth(user *auth.UserIdentity, auth, salt []byte, authConn conn.AuthConn) error - AuthWithoutVerification(user *auth.UserIdentity) bool - AuthPluginForUser(user *auth.UserIdentity) (string, error) - MatchIdentity(username, remoteHost string) (*auth.UserIdentity, error) + AuthWithoutVerification(ctx context.Context, user *auth.UserIdentity) bool + AuthPluginForUser(ctx context.Context, user *auth.UserIdentity) (string, error) + MatchIdentity(ctx context.Context, username, remoteHost string) (*auth.UserIdentity, error) // Return the information of the txn current running TxnInfo() *txninfo.TxnInfo // PrepareTxnCtx is exported for test. diff --git a/pkg/sessionctx/BUILD.bazel b/pkg/sessionctx/BUILD.bazel index 723a23f8b0fc0..2536dfeb64937 100644 --- a/pkg/sessionctx/BUILD.bazel +++ b/pkg/sessionctx/BUILD.bazel @@ -13,11 +13,9 @@ go_library( "//pkg/kv", "//pkg/lock/context", "//pkg/meta/model", - "//pkg/metrics", "//pkg/planner/planctx", "//pkg/session/cursor", "//pkg/sessionctx/sessionstates", - "//pkg/sessionctx/stmtctx", "//pkg/sessionctx/variable", "//pkg/statistics/handle/usage/indexusage", "//pkg/table/tblctx", @@ -27,7 +25,6 @@ go_library( "//pkg/util/sli", "//pkg/util/sqlexec", "//pkg/util/topsql/stmtstats", - "@com_github_pingcap_errors//:errors", "@com_github_tikv_client_go_v2//oracle", ], ) diff --git a/pkg/sessionctx/context.go b/pkg/sessionctx/context.go index 6f10e4ac5c1f7..da18fe9800664 100644 --- a/pkg/sessionctx/context.go +++ b/pkg/sessionctx/context.go @@ -16,10 +16,9 @@ package sessionctx import ( "context" + "iter" "sync" - "time" - "github.com/pingcap/errors" distsqlctx "github.com/pingcap/tidb/pkg/distsql/context" "github.com/pingcap/tidb/pkg/expression/exprctx" "github.com/pingcap/tidb/pkg/extension" @@ -27,11 +26,9 @@ import ( "github.com/pingcap/tidb/pkg/kv" tablelock "github.com/pingcap/tidb/pkg/lock/context" "github.com/pingcap/tidb/pkg/meta/model" - "github.com/pingcap/tidb/pkg/metrics" "github.com/pingcap/tidb/pkg/planner/planctx" "github.com/pingcap/tidb/pkg/session/cursor" "github.com/pingcap/tidb/pkg/sessionctx/sessionstates" - "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics/handle/usage/indexusage" "github.com/pingcap/tidb/pkg/table/tblctx" @@ -70,8 +67,11 @@ type InstancePlanCache interface { Get(key string, paramTypes any) (value any, ok bool) // Put puts the key and value into the cache. Put(key string, value, paramTypes any) (succ bool) + // All returns all cached values. + // Returned values are read-only, don't modify them. + All() (values []any) // Evict evicts some cached values. - Evict() (detailInfo string, numEvicted int) + Evict(evictAll bool) (detailInfo string, numEvicted int) // Size returns the number of cached values. Size() int64 // MemUsage returns the total memory usage of this plan cache. @@ -154,7 +154,7 @@ type Context interface { GetSessionPlanCache() SessionPlanCache // UpdateColStatsUsage updates the column stats usage. - UpdateColStatsUsage(predicateColumns []model.TableItemID) + UpdateColStatsUsage(predicateColumns iter.Seq[model.TableItemID]) // HasDirtyContent checks whether there's dirty update on the given table. HasDirtyContent(tid int64) bool @@ -244,42 +244,6 @@ const ( ) // ValidateSnapshotReadTS strictly validates that readTS does not exceed the PD timestamp -func ValidateSnapshotReadTS(ctx context.Context, sctx Context, readTS uint64) error { - latestTS, err := sctx.GetStore().GetOracle().GetLowResolutionTimestamp(ctx, &oracle.Option{TxnScope: oracle.GlobalTxnScope}) - // If we fail to get latestTS or the readTS exceeds it, get a timestamp from PD to double check - if err != nil || readTS > latestTS { - metrics.ValidateReadTSFromPDCount.Inc() - currentVer, err := sctx.GetStore().CurrentVersion(oracle.GlobalTxnScope) - if err != nil { - return errors.Errorf("fail to validate read timestamp: %v", err) - } - if readTS > currentVer.Ver { - return errors.Errorf("cannot set read timestamp to a future time") - } - } - return nil -} - -// How far future from now ValidateStaleReadTS allows at most -const allowedTimeFromNow = 100 * time.Millisecond - -// ValidateStaleReadTS validates that readTS does not exceed the current time not strictly. -func ValidateStaleReadTS(ctx context.Context, sc *stmtctx.StatementContext, store kv.Storage, readTS uint64) error { - currentTS, err := sc.GetStaleTSO() - if currentTS == 0 || err != nil { - currentTS, err = store.GetOracle().GetStaleTimestamp(ctx, oracle.GlobalTxnScope, 0) - } - // If we fail to calculate currentTS from local time, fallback to get a timestamp from PD - if err != nil { - metrics.ValidateReadTSFromPDCount.Inc() - currentVer, err := store.CurrentVersion(oracle.GlobalTxnScope) - if err != nil { - return errors.Errorf("fail to validate read timestamp: %v", err) - } - currentTS = currentVer.Ver - } - if oracle.GetTimeFromTS(readTS).After(oracle.GetTimeFromTS(currentTS).Add(allowedTimeFromNow)) { - return errors.Errorf("cannot set read timestamp to a future time") - } - return nil +func ValidateSnapshotReadTS(ctx context.Context, store kv.Storage, readTS uint64) error { + return store.GetOracle().ValidateSnapshotReadTS(ctx, readTS, &oracle.Option{TxnScope: oracle.GlobalTxnScope}) } diff --git a/pkg/sessionctx/stmtctx/stmtctx.go b/pkg/sessionctx/stmtctx/stmtctx.go index 209551719a42d..d80f0eae487d9 100644 --- a/pkg/sessionctx/stmtctx/stmtctx.go +++ b/pkg/sessionctx/stmtctx/stmtctx.go @@ -288,6 +288,8 @@ type StatementContext struct { planHint string planHintSet bool binaryPlan string + // indexForce is set if any table in the query has a force or use index applied + indexForce bool // To avoid cycle import, we use interface{} for the following two fields. // flatPlan should be a *plannercore.FlatPhysicalPlan if it's not nil flatPlan any @@ -732,6 +734,11 @@ func (sc *StatementContext) GetPlanHint() (string, bool) { return sc.planHint, sc.planHintSet } +// GetIndexForce gets the IndexForce boolean generated from the plan. +func (sc *StatementContext) GetIndexForce() bool { + return sc.indexForce +} + // InitDiskTracker initializes the sc.DiskTracker, use cache to avoid allocation. func (sc *StatementContext) InitDiskTracker(label int, bytesLimit int64) { memory.InitTracker(&sc.cache.DiskTracker, label, bytesLimit, &sc.cache.LogOnExceed[0]) @@ -750,6 +757,11 @@ func (sc *StatementContext) SetPlanHint(hint string) { sc.planHint = hint } +// SetIndexForce sets the hint for the plan. +func (sc *StatementContext) SetIndexForce() { + sc.indexForce = true +} + // PlanCacheType is the flag of plan cache type PlanCacheType int diff --git a/pkg/sessionctx/stmtctx/stmtctx_test.go b/pkg/sessionctx/stmtctx/stmtctx_test.go index 7809bbfb6386f..73af5c486e9c9 100644 --- a/pkg/sessionctx/stmtctx/stmtctx_test.go +++ b/pkg/sessionctx/stmtctx/stmtctx_test.go @@ -62,10 +62,12 @@ func TestCopTasksDetails(t *testing.T) { d := ctx.CopTasksDetails() require.Equal(t, 100, d.NumCopTasks) require.Equal(t, time.Second*101/2, d.AvgProcessTime) + require.Equal(t, time.Second*101/2*100, d.TotProcessTime) require.Equal(t, time.Second*91, d.P90ProcessTime) require.Equal(t, time.Second*100, d.MaxProcessTime) require.Equal(t, "100", d.MaxProcessAddress) require.Equal(t, time.Millisecond*101/2, d.AvgWaitTime) + require.Equal(t, time.Millisecond*101/2*100, d.TotWaitTime) require.Equal(t, time.Millisecond*91, d.P90WaitTime) require.Equal(t, time.Millisecond*100, d.MaxWaitTime) require.Equal(t, "100", d.MaxWaitAddress) @@ -261,6 +263,7 @@ func TestApproxRuntimeInfo(t *testing.T) { for _, detail := range details { timeSum += detail.TimeDetail.ProcessTime } + require.Equal(t, d.TotProcessTime, timeSum) require.Equal(t, d.AvgProcessTime, timeSum/time.Duration(n)) require.InEpsilon(t, d.P90ProcessTime.Nanoseconds(), details[n*9/10].TimeDetail.ProcessTime.Nanoseconds(), 0.05) require.Equal(t, d.MaxProcessTime, details[n-1].TimeDetail.ProcessTime) @@ -273,6 +276,7 @@ func TestApproxRuntimeInfo(t *testing.T) { for _, detail := range details { timeSum += detail.TimeDetail.WaitTime } + require.Equal(t, d.TotWaitTime, timeSum) require.Equal(t, d.AvgWaitTime, timeSum/time.Duration(n)) require.InEpsilon(t, d.P90WaitTime.Nanoseconds(), details[n*9/10].TimeDetail.WaitTime.Nanoseconds(), 0.05) require.Equal(t, d.MaxWaitTime, details[n-1].TimeDetail.WaitTime) diff --git a/pkg/sessionctx/variable/BUILD.bazel b/pkg/sessionctx/variable/BUILD.bazel index 63392efdf558f..5f326b6e4ecb6 100644 --- a/pkg/sessionctx/variable/BUILD.bazel +++ b/pkg/sessionctx/variable/BUILD.bazel @@ -61,6 +61,7 @@ go_library( "//pkg/util/servicescope", "//pkg/util/size", "//pkg/util/sqlkiller", + "//pkg/util/stmtsummary", "//pkg/util/stmtsummary/v2:stmtsummary", "//pkg/util/stringutil", "//pkg/util/tableutil", diff --git a/pkg/sessionctx/variable/noop.go b/pkg/sessionctx/variable/noop.go index bcfa6d63a0f0a..57976829ba281 100644 --- a/pkg/sessionctx/variable/noop.go +++ b/pkg/sessionctx/variable/noop.go @@ -547,7 +547,7 @@ var noopSysVars = []*SysVar{ {Scope: ScopeNone, Name: "report_port", Value: "3306"}, {Scope: ScopeGlobal | ScopeSession, Name: ShowOldTemporals, Value: Off, Type: TypeBool}, {Scope: ScopeGlobal, Name: "query_cache_limit", Value: "1048576"}, - {Scope: ScopeGlobal, Name: "innodb_buffer_pool_size", Value: "134217728"}, + {Scope: ScopeGlobal, Name: "innodb_buffer_pool_size", Value: "4294967296"}, {Scope: ScopeGlobal, Name: InnodbAdaptiveFlushing, Value: On, Type: TypeBool, AutoConvertNegativeBool: true}, {Scope: ScopeGlobal, Name: "innodb_monitor_enable", Value: ""}, {Scope: ScopeNone, Name: "date_format", Value: "%Y-%m-%d"}, diff --git a/pkg/sessionctx/variable/session.go b/pkg/sessionctx/variable/session.go index 29d304d133403..d28ff3da2ef5b 100644 --- a/pkg/sessionctx/variable/session.go +++ b/pkg/sessionctx/variable/session.go @@ -61,6 +61,7 @@ import ( "github.com/pingcap/tidb/pkg/util/replayer" "github.com/pingcap/tidb/pkg/util/rowcodec" "github.com/pingcap/tidb/pkg/util/sqlkiller" + "github.com/pingcap/tidb/pkg/util/stmtsummary" "github.com/pingcap/tidb/pkg/util/stringutil" "github.com/pingcap/tidb/pkg/util/tableutil" "github.com/pingcap/tidb/pkg/util/tiflash" @@ -812,6 +813,9 @@ type SessionVars struct { PlanCacheParams *PlanCacheParamList LastUpdateTime4PC types.Time + // The Cached Plan for this execution, it should be *plannercore.PlanCacheValue. + PlanCacheValue any + // ActiveRoles stores active roles for current user ActiveRoles []*auth.RoleIdentity @@ -1708,6 +1712,9 @@ type SessionVars struct { // ScatterRegion will scatter the regions for DDLs when it is "table" or "global", "" indicates not trigger scatter. ScatterRegion string + + // CacheStmtExecInfo is a cache for the statement execution information, used to reduce the overhead of memory allocation. + CacheStmtExecInfo *stmtsummary.StmtExecInfo } // GetSessionVars implements the `SessionVarsProvider` interface. @@ -3775,8 +3782,9 @@ func (s *SessionVars) GetNegateStrMatchDefaultSelectivity() float64 { // GetRelatedTableForMDL gets the related table for metadata lock. func (s *SessionVars) GetRelatedTableForMDL() *sync.Map { - s.TxnCtx.tdmLock.Lock() - defer s.TxnCtx.tdmLock.Unlock() + mu := &s.TxnCtx.tdmLock + mu.Lock() + defer mu.Unlock() if s.TxnCtx.relatedTableForMDL == nil { s.TxnCtx.relatedTableForMDL = new(sync.Map) } diff --git a/pkg/sessionctx/variable/sysvar.go b/pkg/sessionctx/variable/sysvar.go index 59c1c65453500..69b472311123c 100644 --- a/pkg/sessionctx/variable/sysvar.go +++ b/pkg/sessionctx/variable/sysvar.go @@ -26,6 +26,7 @@ import ( "sync/atomic" "time" + "github.com/docker/go-units" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/executor/join/joinversion" @@ -782,6 +783,23 @@ var defaultSysVars = []*SysVar{ SetDDLReorgBatchSize(int32(tidbOptPositiveInt32(val, DefTiDBDDLReorgBatchSize))) return nil }}, + {Scope: ScopeGlobal, Name: TiDBDDLReorgMaxWriteSpeed, Value: strconv.Itoa(DefTiDBDDLReorgMaxWriteSpeed), Type: TypeStr, + SetGlobal: func(_ context.Context, s *SessionVars, val string) error { + i64, err := units.RAMInBytes(val) + if err != nil { + return errors.Trace(err) + } + if i64 < 0 || i64 > units.PiB { + // Here we limit the max value to 1 PiB instead of math.MaxInt64, since: + // 1. it is large enough + // 2. units.RAMInBytes would first cast the size to a float, and may lose precision when the size is too large + return fmt.Errorf("invalid value for '%d', it should be within [%d, %d]", i64, 0, units.PiB) + } + DDLReorgMaxWriteSpeed.Store(i64) + return nil + }, GetGlobal: func(_ context.Context, sv *SessionVars) (string, error) { + return strconv.FormatInt(DDLReorgMaxWriteSpeed.Load(), 10), nil + }}, {Scope: ScopeGlobal, Name: TiDBDDLErrorCountLimit, Value: strconv.Itoa(DefTiDBDDLErrorCountLimit), Type: TypeUnsigned, MinValue: 0, MaxValue: math.MaxInt64, SetGlobal: func(_ context.Context, s *SessionVars, val string) error { SetDDLErrorCountLimit(TidbOptInt64(val, DefTiDBDDLErrorCountLimit)) return nil @@ -800,10 +818,11 @@ var defaultSysVars = []*SysVar{ return vars.ScatterRegion, nil }, Validation: func(vars *SessionVars, normalizedValue string, originalValue string, scope ScopeFlag) (string, error) { - if normalizedValue != ScatterOff && normalizedValue != ScatterTable && normalizedValue != ScatterGlobal { - return "", fmt.Errorf("invalid value for '%s', it should be either '%s', '%s' or '%s'", normalizedValue, ScatterOff, ScatterTable, ScatterGlobal) + lowerVal := strings.ToLower(normalizedValue) + if lowerVal != ScatterOff && lowerVal != ScatterTable && lowerVal != ScatterGlobal { + return "", fmt.Errorf("invalid value for '%s', it should be either '%s', '%s' or '%s'", lowerVal, ScatterOff, ScatterTable, ScatterGlobal) } - return normalizedValue, nil + return lowerVal, nil }, }, {Scope: ScopeGlobal, Name: TiDBEnableStmtSummary, Value: BoolToOnOff(DefTiDBEnableStmtSummary), Type: TypeBool, AllowEmpty: true, @@ -891,7 +910,7 @@ var defaultSysVars = []*SysVar{ return nil }}, {Scope: ScopeGlobal, Name: TiDBGOGCTunerMaxValue, Value: strconv.Itoa(DefTiDBGOGCMaxValue), - Type: TypeInt, MinValue: 10, SetGlobal: func(_ context.Context, s *SessionVars, val string) error { + Type: TypeInt, MinValue: 10, MaxValue: math.MaxInt32, SetGlobal: func(_ context.Context, s *SessionVars, val string) error { maxValue := TidbOptInt64(val, DefTiDBGOGCMaxValue) gctuner.SetMaxGCPercent(uint32(maxValue)) gctuner.GlobalMemoryLimitTuner.UpdateMemoryLimit() @@ -908,7 +927,7 @@ var defaultSysVars = []*SysVar{ return origin, nil }}, {Scope: ScopeGlobal, Name: TiDBGOGCTunerMinValue, Value: strconv.Itoa(DefTiDBGOGCMinValue), - Type: TypeInt, MinValue: 10, SetGlobal: func(_ context.Context, s *SessionVars, val string) error { + Type: TypeInt, MinValue: 10, MaxValue: math.MaxInt32, SetGlobal: func(_ context.Context, s *SessionVars, val string) error { minValue := TidbOptInt64(val, DefTiDBGOGCMinValue) gctuner.SetMinGCPercent(uint32(minValue)) gctuner.GlobalMemoryLimitTuner.UpdateMemoryLimit() @@ -1401,6 +1420,9 @@ var defaultSysVars = []*SysVar{ if str == "" || v < 0 { return errors.Errorf("invalid tidb_instance_plan_cache_max_mem_size value %s", val) } + if v < MinTiDBInstancePlanCacheMemSize { + return errors.Errorf("tidb_instance_plan_cache_max_mem_size should be at least 100MiB") + } InstancePlanCacheMaxMemSize.Store(int64(v)) return nil }}, @@ -3432,7 +3454,7 @@ var defaultSysVars = []*SysVar{ func GlobalSystemVariableInitialValue(varName, varVal string) string { switch varName { case TiDBEnableAsyncCommit, TiDBEnable1PC: - if config.GetGlobalConfig().Store == "tikv" { + if config.GetGlobalConfig().Store == config.StoreTypeTiKV { varVal = On } case TiDBMemOOMAction: diff --git a/pkg/sessionctx/variable/tidb_vars.go b/pkg/sessionctx/variable/tidb_vars.go index 4a5d54ffca1fa..da1ec04ded9fd 100644 --- a/pkg/sessionctx/variable/tidb_vars.go +++ b/pkg/sessionctx/variable/tidb_vars.go @@ -525,6 +525,9 @@ const ( // It can be: PRIORITY_LOW, PRIORITY_NORMAL, PRIORITY_HIGH TiDBDDLReorgPriority = "tidb_ddl_reorg_priority" + // TiDBDDLReorgMaxWriteSpeed defines the max write limitation for the lightning local backend + TiDBDDLReorgMaxWriteSpeed = "tidb_ddl_reorg_max_write_speed" + // TiDBEnableAutoIncrementInGenerated disables the mysql compatibility check on using auto-incremented columns in // expression indexes and generated columns described here https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html for details. TiDBEnableAutoIncrementInGenerated = "tidb_enable_auto_increment_in_generated" @@ -1324,6 +1327,7 @@ const ( DefTiDBDDLReorgBatchSize = 256 DefTiDBDDLFlashbackConcurrency = 64 DefTiDBDDLErrorCountLimit = 512 + DefTiDBDDLReorgMaxWriteSpeed = 0 DefTiDBMaxDeltaSchemaCount = 1024 DefTiDBPlacementMode = PlacementModeStrict DefTiDBEnableAutoIncrementInGenerated = false @@ -1441,7 +1445,7 @@ const ( DefTiDBEnablePrepPlanCacheMemoryMonitor = true DefTiDBPrepPlanCacheMemoryGuardRatio = 0.1 DefTiDBEnableDistTask = true - DefTiDBEnableFastCreateTable = false + DefTiDBEnableFastCreateTable = true DefTiDBSimplifiedMetrics = false DefTiDBEnablePaging = true DefTiFlashFineGrainedShuffleStreamCount = 0 @@ -1465,6 +1469,7 @@ const ( DefTiDBNonPreparedPlanCacheSize = 100 DefTiDBPlanCacheMaxPlanSize = 2 * size.MB DefTiDBInstancePlanCacheMaxMemSize = 100 * size.MB + MinTiDBInstancePlanCacheMemSize = 100 * size.MB DefTiDBInstancePlanCacheReservedPercentage = 0.1 // MaxDDLReorgBatchSize is exported for testing. MaxDDLReorgBatchSize int32 = 10240 @@ -1590,6 +1595,7 @@ var ( ddlFlashbackConcurrency int32 = DefTiDBDDLFlashbackConcurrency ddlErrorCountLimit int64 = DefTiDBDDLErrorCountLimit ddlReorgRowFormat int64 = DefTiDBRowFormatV2 + DDLReorgMaxWriteSpeed = atomic.NewInt64(DefTiDBDDLReorgMaxWriteSpeed) maxDeltaSchemaCount int64 = DefTiDBMaxDeltaSchemaCount // DDLSlowOprThreshold is the threshold for ddl slow operations, uint is millisecond. DDLSlowOprThreshold = config.GetGlobalConfig().Instance.DDLSlowOprThreshold diff --git a/pkg/sessiontxn/staleread/processor.go b/pkg/sessiontxn/staleread/processor.go index 78620657d2840..e1e87b958c345 100644 --- a/pkg/sessiontxn/staleread/processor.go +++ b/pkg/sessiontxn/staleread/processor.go @@ -31,7 +31,7 @@ import ( var _ Processor = &staleReadProcessor{} // StalenessTSEvaluator is a function to get staleness ts -type StalenessTSEvaluator func(sctx sessionctx.Context) (uint64, error) +type StalenessTSEvaluator func(ctx context.Context, sctx sessionctx.Context) (uint64, error) // Processor is an interface used to process stale read type Processor interface { @@ -101,7 +101,7 @@ func (p *baseProcessor) setEvaluatedTS(ts uint64) (err error) { return err } - return p.setEvaluatedValues(ts, is, func(sctx sessionctx.Context) (uint64, error) { + return p.setEvaluatedValues(ts, is, func(_ context.Context, sctx sessionctx.Context) (uint64, error) { return ts, nil }) } @@ -117,7 +117,7 @@ func (p *baseProcessor) setEvaluatedTSWithoutEvaluator(ts uint64) (err error) { } func (p *baseProcessor) setEvaluatedEvaluator(evaluator StalenessTSEvaluator) error { - ts, err := evaluator(p.sctx) + ts, err := evaluator(p.ctx, p.sctx) if err != nil { return err } @@ -168,10 +168,10 @@ func (p *staleReadProcessor) OnSelectTable(tn *ast.TableName) error { } // If `stmtAsOfTS` is not 0, it means we use 'select ... from xxx as of timestamp ...' - evaluateTS := func(sctx sessionctx.Context) (uint64, error) { - return parseAndValidateAsOf(context.Background(), p.sctx, tn.AsOf) + evaluateTS := func(ctx context.Context, sctx sessionctx.Context) (uint64, error) { + return parseAndValidateAsOf(ctx, p.sctx, tn.AsOf) } - stmtAsOfTS, err := evaluateTS(p.sctx) + stmtAsOfTS, err := evaluateTS(p.ctx, p.sctx) if err != nil { return err } @@ -201,7 +201,7 @@ func (p *staleReadProcessor) OnExecutePreparedStmt(preparedTSEvaluator Staleness var stmtTS uint64 if preparedTSEvaluator != nil { // If the `preparedTSEvaluator` is not nil, it means the prepared statement is stale read - if stmtTS, err = preparedTSEvaluator(p.sctx); err != nil { + if stmtTS, err = preparedTSEvaluator(p.ctx, p.sctx); err != nil { return err } } @@ -286,7 +286,7 @@ func parseAndValidateAsOf(ctx context.Context, sctx sessionctx.Context, asOf *as return 0, err } - if err = sessionctx.ValidateStaleReadTS(ctx, sctx.GetSessionVars().StmtCtx, sctx.GetStore(), ts); err != nil { + if err = sessionctx.ValidateSnapshotReadTS(ctx, sctx.GetStore(), ts); err != nil { return 0, err } @@ -299,8 +299,8 @@ func getTsEvaluatorFromReadStaleness(sctx sessionctx.Context) StalenessTSEvaluat return nil } - return func(sctx sessionctx.Context) (uint64, error) { - return CalculateTsWithReadStaleness(sctx, readStaleness) + return func(ctx context.Context, sctx sessionctx.Context) (uint64, error) { + return CalculateTsWithReadStaleness(ctx, sctx, readStaleness) } } diff --git a/pkg/sessiontxn/staleread/processor_test.go b/pkg/sessiontxn/staleread/processor_test.go index 9f6adc817a46d..441528aca1ce8 100644 --- a/pkg/sessiontxn/staleread/processor_test.go +++ b/pkg/sessiontxn/staleread/processor_test.go @@ -52,7 +52,7 @@ func (p *staleReadPoint) checkMatchProcessor(t *testing.T, processor staleread.P evaluator := processor.GetStalenessTSEvaluatorForPrepare() if hasEvaluator { require.NotNil(t, evaluator) - ts, err := evaluator(p.tk.Session()) + ts, err := evaluator(context.Background(), p.tk.Session()) require.NoError(t, err) require.Equal(t, processor.GetStalenessReadTS(), ts) } else { @@ -109,6 +109,7 @@ func TestStaleReadProcessorWithSelectTable(t *testing.T) { tn := astTableWithAsOf(t, "") p1 := genStaleReadPoint(t, tk) p2 := genStaleReadPoint(t, tk) + ctx := context.Background() // create local temporary table to check processor's infoschema will consider temporary table tk.MustExec("create temporary table test.t2(a int)") @@ -158,19 +159,19 @@ func TestStaleReadProcessorWithSelectTable(t *testing.T) { err = processor.OnSelectTable(tn) require.True(t, processor.IsStaleness()) require.Equal(t, int64(0), processor.GetStalenessInfoSchema().SchemaMetaVersion()) - expectedTS, err := staleread.CalculateTsWithReadStaleness(tk.Session(), -100*time.Second) + expectedTS, err := staleread.CalculateTsWithReadStaleness(ctx, tk.Session(), -100*time.Second) require.NoError(t, err) require.Equal(t, expectedTS, processor.GetStalenessReadTS()) evaluator := processor.GetStalenessTSEvaluatorForPrepare() - evaluatorTS, err := evaluator(tk.Session()) + evaluatorTS, err := evaluator(ctx, tk.Session()) require.NoError(t, err) require.Equal(t, expectedTS, evaluatorTS) tk.MustExec("set @@tidb_read_staleness=''") tk.MustExec("do sleep(0.01)") - evaluatorTS, err = evaluator(tk.Session()) + evaluatorTS, err = evaluator(ctx, tk.Session()) require.NoError(t, err) - expectedTS2, err := staleread.CalculateTsWithReadStaleness(tk.Session(), -100*time.Second) + expectedTS2, err := staleread.CalculateTsWithReadStaleness(ctx, tk.Session(), -100*time.Second) require.NoError(t, err) require.Equal(t, expectedTS2, evaluatorTS) @@ -217,11 +218,11 @@ func TestStaleReadProcessorWithSelectTable(t *testing.T) { err = processor.OnSelectTable(tn) require.True(t, processor.IsStaleness()) require.Equal(t, int64(0), processor.GetStalenessInfoSchema().SchemaMetaVersion()) - expectedTS, err = staleread.CalculateTsWithReadStaleness(tk.Session(), -5*time.Second) + expectedTS, err = staleread.CalculateTsWithReadStaleness(ctx, tk.Session(), -5*time.Second) require.NoError(t, err) require.Equal(t, expectedTS, processor.GetStalenessReadTS()) evaluator = processor.GetStalenessTSEvaluatorForPrepare() - evaluatorTS, err = evaluator(tk.Session()) + evaluatorTS, err = evaluator(ctx, tk.Session()) require.NoError(t, err) require.Equal(t, expectedTS, evaluatorTS) tk.MustExec("set @@tidb_read_staleness=''") @@ -234,13 +235,14 @@ func TestStaleReadProcessorWithExecutePreparedStmt(t *testing.T) { tk := testkit.NewTestKit(t, store) p1 := genStaleReadPoint(t, tk) //p2 := genStaleReadPoint(t, tk) + ctx := context.Background() // create local temporary table to check processor's infoschema will consider temporary table tk.MustExec("create temporary table test.t2(a int)") // execute prepared stmt with ts evaluator processor := createProcessor(t, tk.Session()) - err := processor.OnExecutePreparedStmt(func(sctx sessionctx.Context) (uint64, error) { + err := processor.OnExecutePreparedStmt(func(_ctx context.Context, sctx sessionctx.Context) (uint64, error) { return p1.ts, nil }) require.NoError(t, err) @@ -248,7 +250,7 @@ func TestStaleReadProcessorWithExecutePreparedStmt(t *testing.T) { // will get an error when ts evaluator fails processor = createProcessor(t, tk.Session()) - err = processor.OnExecutePreparedStmt(func(sctx sessionctx.Context) (uint64, error) { + err = processor.OnExecutePreparedStmt(func(_ctx context.Context, sctx sessionctx.Context) (uint64, error) { return 0, errors.New("mock error") }) require.Error(t, err) @@ -273,7 +275,7 @@ func TestStaleReadProcessorWithExecutePreparedStmt(t *testing.T) { // prepared ts is not allowed when @@txn_read_ts is set tk.MustExec(fmt.Sprintf("SET TRANSACTION READ ONLY AS OF TIMESTAMP '%s'", p1.dt)) processor = createProcessor(t, tk.Session()) - err = processor.OnExecutePreparedStmt(func(sctx sessionctx.Context) (uint64, error) { + err = processor.OnExecutePreparedStmt(func(_ctx context.Context, sctx sessionctx.Context) (uint64, error) { return p1.ts, nil }) require.Error(t, err) @@ -286,7 +288,7 @@ func TestStaleReadProcessorWithExecutePreparedStmt(t *testing.T) { err = processor.OnExecutePreparedStmt(nil) require.True(t, processor.IsStaleness()) require.Equal(t, int64(0), processor.GetStalenessInfoSchema().SchemaMetaVersion()) - expectedTS, err := staleread.CalculateTsWithReadStaleness(tk.Session(), -100*time.Second) + expectedTS, err := staleread.CalculateTsWithReadStaleness(ctx, tk.Session(), -100*time.Second) require.NoError(t, err) require.Equal(t, expectedTS, processor.GetStalenessReadTS()) tk.MustExec("set @@tidb_read_staleness=''") @@ -294,7 +296,7 @@ func TestStaleReadProcessorWithExecutePreparedStmt(t *testing.T) { // `@@tidb_read_staleness` will be ignored when `as of` or `@@tx_read_ts` tk.MustExec("set @@tidb_read_staleness=-100") processor = createProcessor(t, tk.Session()) - err = processor.OnExecutePreparedStmt(func(sctx sessionctx.Context) (uint64, error) { + err = processor.OnExecutePreparedStmt(func(_ctx context.Context, sctx sessionctx.Context) (uint64, error) { return p1.ts, nil }) require.NoError(t, err) @@ -337,7 +339,7 @@ func TestStaleReadProcessorWithExecutePreparedStmt(t *testing.T) { err = processor.OnExecutePreparedStmt(nil) require.True(t, processor.IsStaleness()) require.Equal(t, int64(0), processor.GetStalenessInfoSchema().SchemaMetaVersion()) - expectedTS, err = staleread.CalculateTsWithReadStaleness(tk.Session(), -5*time.Second) + expectedTS, err = staleread.CalculateTsWithReadStaleness(ctx, tk.Session(), -5*time.Second) require.NoError(t, err) require.Equal(t, expectedTS, processor.GetStalenessReadTS()) tk.MustExec("set @@tidb_read_staleness=''") @@ -377,7 +379,7 @@ func TestStaleReadProcessorInTxn(t *testing.T) { // return an error when execute prepared stmt with as of processor = createProcessor(t, tk.Session()) - err = processor.OnExecutePreparedStmt(func(sctx sessionctx.Context) (uint64, error) { + err = processor.OnExecutePreparedStmt(func(_ctx context.Context, sctx sessionctx.Context) (uint64, error) { return p1.ts, nil }) require.Error(t, err) diff --git a/pkg/sessiontxn/staleread/util.go b/pkg/sessiontxn/staleread/util.go index a02a6110e9d81..57320ddbbf274 100644 --- a/pkg/sessiontxn/staleread/util.go +++ b/pkg/sessiontxn/staleread/util.go @@ -67,15 +67,26 @@ func CalculateAsOfTsExpr(ctx context.Context, sctx planctx.PlanContext, tsExpr a } // CalculateTsWithReadStaleness calculates the TsExpr for readStaleness duration -func CalculateTsWithReadStaleness(sctx sessionctx.Context, readStaleness time.Duration) (uint64, error) { +func CalculateTsWithReadStaleness(ctx context.Context, sctx sessionctx.Context, readStaleness time.Duration) (uint64, error) { nowVal, err := expression.GetStmtTimestamp(sctx.GetExprCtx().GetEvalCtx()) if err != nil { return 0, err } tsVal := nowVal.Add(readStaleness) sc := sctx.GetSessionVars().StmtCtx - minTsVal := expression.GetStmtMinSafeTime(sc, sctx.GetStore(), sc.TimeZone()) - return oracle.GoTimeToTS(expression.CalAppropriateTime(tsVal, nowVal, minTsVal)), nil + minSafeTSVal := expression.GetStmtMinSafeTime(sc, sctx.GetStore(), sc.TimeZone()) + calculatedTime := expression.CalAppropriateTime(tsVal, nowVal, minSafeTSVal) + readTS := oracle.GoTimeToTS(calculatedTime) + if calculatedTime.After(minSafeTSVal) { + // If the final calculated exceeds the min safe ts, we are not sure whether the ts is safe to read (note that + // reading with a ts larger than PD's max allocated ts + 1 is unsafe and may break linearizability). + // So in this case, do an extra check on it. + err = sessionctx.ValidateSnapshotReadTS(ctx, sctx.GetStore(), readTS) + if err != nil { + return 0, err + } + } + return readTS, nil } // IsStmtStaleness indicates whether the current statement is staleness or not diff --git a/pkg/statistics/BUILD.bazel b/pkg/statistics/BUILD.bazel index 48146fd029700..cad48db7936fe 100644 --- a/pkg/statistics/BUILD.bazel +++ b/pkg/statistics/BUILD.bazel @@ -82,7 +82,7 @@ go_test( data = glob(["testdata/**"]), embed = [":statistics"], flaky = True, - shard_count = 37, + shard_count = 38, deps = [ "//pkg/config", "//pkg/meta/model", diff --git a/pkg/statistics/column.go b/pkg/statistics/column.go index 6cd2d11a9a97a..5c6c66e239926 100644 --- a/pkg/statistics/column.go +++ b/pkg/statistics/column.go @@ -260,3 +260,13 @@ func (c *Column) StatsAvailable() bool { // StatsVer, so we check NDV > 0 || NullCount > 0 for the case. return c.IsAnalyzed() || c.NDV > 0 || c.NullCount > 0 } + +// EmptyColumn creates an empty column object. It may be used for pseudo estimation or to stop loading unexisting stats. +func EmptyColumn(tid int64, pkIsHandle bool, colInfo *model.ColumnInfo) *Column { + return &Column{ + PhysicalID: tid, + Info: colInfo, + Histogram: *NewHistogram(colInfo.ID, 0, 0, 0, &colInfo.FieldType, 0, 0), + IsHandle: pkIsHandle && mysql.HasPriKeyFlag(colInfo.GetFlag()), + } +} diff --git a/pkg/statistics/handle/autoanalyze/autoanalyze.go b/pkg/statistics/handle/autoanalyze/autoanalyze.go index b25ac73977643..d752ffc143094 100644 --- a/pkg/statistics/handle/autoanalyze/autoanalyze.go +++ b/pkg/statistics/handle/autoanalyze/autoanalyze.go @@ -317,6 +317,11 @@ func (sa *statsAnalyze) CheckAnalyzeVersion(tblInfo *model.TableInfo, physicalID return statistics.CheckAnalyzeVerOnTable(tbl, version) } +// GetPriorityQueueSnapshot returns the stats priority queue snapshot. +func (sa *statsAnalyze) GetPriorityQueueSnapshot() (statstypes.PriorityQueueSnapshot, error) { + return sa.refresher.GetPriorityQueueSnapshot() +} + func (sa *statsAnalyze) handleAutoAnalyze(sctx sessionctx.Context) bool { defer func() { if r := recover(); r != nil { diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/BUILD.bazel b/pkg/statistics/handle/autoanalyze/priorityqueue/BUILD.bazel index 37e5f16d91eea..93559021972ab 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/BUILD.bazel +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/BUILD.bazel @@ -31,6 +31,7 @@ go_library( "//pkg/statistics/handle/util", "//pkg/util", "//pkg/util/intest", + "//pkg/util/logutil", "//pkg/util/timeutil", "@com_github_pingcap_errors//:errors", "@com_github_tikv_client_go_v2//oracle", diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory.go b/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory.go index 2bfdda71a9ce2..3a20597c02b91 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory.go @@ -54,11 +54,10 @@ func NewAnalysisJobFactory(sctx sessionctx.Context, autoAnalyzeRatio float64, cu // CreateNonPartitionedTableAnalysisJob creates a job for non-partitioned tables. func (f *AnalysisJobFactory) CreateNonPartitionedTableAnalysisJob( - tableSchema string, tblInfo *model.TableInfo, tblStats *statistics.Table, ) AnalysisJob { - if !tblStats.IsEligibleForAnalysis() { + if tblStats == nil || !tblStats.IsEligibleForAnalysis() { return nil } @@ -78,8 +77,6 @@ func (f *AnalysisJobFactory) CreateNonPartitionedTableAnalysisJob( } return NewNonPartitionedTableAnalysisJob( - tableSchema, - tblInfo.Name.O, tblInfo.ID, indexes, tableStatsVer, @@ -91,13 +88,11 @@ func (f *AnalysisJobFactory) CreateNonPartitionedTableAnalysisJob( // CreateStaticPartitionAnalysisJob creates a job for static partitions. func (f *AnalysisJobFactory) CreateStaticPartitionAnalysisJob( - tableSchema string, globalTblInfo *model.TableInfo, partitionID int64, - partitionName string, partitionStats *statistics.Table, ) AnalysisJob { - if !partitionStats.IsEligibleForAnalysis() { + if partitionStats == nil || !partitionStats.IsEligibleForAnalysis() { return nil } @@ -117,10 +112,7 @@ func (f *AnalysisJobFactory) CreateStaticPartitionAnalysisJob( } return NewStaticPartitionTableAnalysisJob( - tableSchema, - globalTblInfo.Name.O, globalTblInfo.ID, - partitionName, partitionID, indexes, tableStatsVer, @@ -132,12 +124,11 @@ func (f *AnalysisJobFactory) CreateStaticPartitionAnalysisJob( // CreateDynamicPartitionedTableAnalysisJob creates a job for dynamic partitioned tables. func (f *AnalysisJobFactory) CreateDynamicPartitionedTableAnalysisJob( - tableSchema string, globalTblInfo *model.TableInfo, globalTblStats *statistics.Table, partitionStats map[PartitionIDAndName]*statistics.Table, ) AnalysisJob { - if !globalTblStats.IsEligibleForAnalysis() { + if globalTblStats == nil || !globalTblStats.IsEligibleForAnalysis() { return nil } @@ -145,21 +136,19 @@ func (f *AnalysisJobFactory) CreateDynamicPartitionedTableAnalysisJob( tableStatsVer := f.sctx.GetSessionVars().AnalyzeVersion statistics.CheckAnalyzeVerOnTable(globalTblStats, &tableStatsVer) - avgChange, avgSize, minLastAnalyzeDuration, partitionNames := f.CalculateIndicatorsForPartitions(globalTblStats, partitionStats) + avgChange, avgSize, minLastAnalyzeDuration, partitionIDs := f.CalculateIndicatorsForPartitions(globalTblStats, partitionStats) partitionIndexes := f.CheckNewlyAddedIndexesNeedAnalyzeForPartitionedTable(globalTblInfo, partitionStats) // No need to analyze. // We perform a separate check because users may set the auto analyze ratio to 0, // yet still wish to analyze newly added indexes and tables that have not been analyzed. - if len(partitionNames) == 0 && len(partitionIndexes) == 0 { + if len(partitionIDs) == 0 && len(partitionIndexes) == 0 { return nil } return NewDynamicPartitionedTableAnalysisJob( - tableSchema, - globalTblInfo.Name.O, globalTblInfo.ID, - partitionNames, + partitionIDs, partitionIndexes, tableStatsVer, avgChange, @@ -225,14 +214,14 @@ func (f *AnalysisJobFactory) FindLastAnalyzeTime(tblStats *statistics.Table) tim } // CheckIndexesNeedAnalyze checks if the indexes need to be analyzed. -func (*AnalysisJobFactory) CheckIndexesNeedAnalyze(tblInfo *model.TableInfo, tblStats *statistics.Table) []string { +func (*AnalysisJobFactory) CheckIndexesNeedAnalyze(tblInfo *model.TableInfo, tblStats *statistics.Table) map[int64]struct{} { // If table is not analyzed, we need to analyze whole table. // So we don't need to check indexes. if !tblStats.IsAnalyzed() { return nil } - indexes := make([]string, 0, len(tblInfo.Indices)) + indexIDs := make(map[int64]struct{}, len(tblInfo.Indices)) // Check if missing index stats. for _, idx := range tblInfo.Indices { if idxStats := tblStats.GetIdx(idx.ID); idxStats == nil && !tblStats.ColAndIdxExistenceMap.HasAnalyzed(idx.ID, true) && idx.State == model.StatePublic { @@ -240,11 +229,11 @@ func (*AnalysisJobFactory) CheckIndexesNeedAnalyze(tblInfo *model.TableInfo, tbl if idx.VectorInfo != nil { continue } - indexes = append(indexes, idx.Name.O) + indexIDs[idx.ID] = struct{}{} } } - return indexes + return indexIDs } // CalculateIndicatorsForPartitions calculates the average change percentage, @@ -259,12 +248,12 @@ func (f *AnalysisJobFactory) CalculateIndicatorsForPartitions( avgChange float64, avgSize float64, avgLastAnalyzeDuration time.Duration, - partitionNames []string, + partitionIDs map[int64]struct{}, ) { totalChangePercent := 0.0 totalSize := 0.0 count := 0.0 - partitionNames = make([]string, 0, len(partitionStats)) + partitionIDs = make(map[int64]struct{}, len(partitionStats)) cols := float64(globalStats.ColAndIdxExistenceMap.ColNum()) intest.Assert(cols != 0, "Column count should not be 0") totalLastAnalyzeDuration := time.Duration(0) @@ -282,18 +271,18 @@ func (f *AnalysisJobFactory) CalculateIndicatorsForPartitions( totalSize += float64(tblStats.RealtimeCount) * cols lastAnalyzeDuration := f.GetTableLastAnalyzeDuration(tblStats) totalLastAnalyzeDuration += lastAnalyzeDuration - partitionNames = append(partitionNames, pIDAndName.Name) + partitionIDs[pIDAndName.ID] = struct{}{} count++ } - if len(partitionNames) == 0 { - return 0, 0, 0, partitionNames + if len(partitionIDs) == 0 { + return 0, 0, 0, partitionIDs } avgChange = totalChangePercent / count avgSize = totalSize / count avgLastAnalyzeDuration = totalLastAnalyzeDuration / time.Duration(count) - return avgChange, avgSize, avgLastAnalyzeDuration, partitionNames + return avgChange, avgSize, avgLastAnalyzeDuration, partitionIDs } // CheckNewlyAddedIndexesNeedAnalyzeForPartitionedTable checks if the indexes of the partitioned table need to be analyzed. @@ -302,8 +291,8 @@ func (f *AnalysisJobFactory) CalculateIndicatorsForPartitions( func (*AnalysisJobFactory) CheckNewlyAddedIndexesNeedAnalyzeForPartitionedTable( tblInfo *model.TableInfo, partitionStats map[PartitionIDAndName]*statistics.Table, -) map[string][]string { - partitionIndexes := make(map[string][]string, len(tblInfo.Indices)) +) map[int64][]int64 { + partitionIndexes := make(map[int64][]int64, len(tblInfo.Indices)) for _, idx := range tblInfo.Indices { // No need to analyze the index if it's not public. @@ -317,15 +306,15 @@ func (*AnalysisJobFactory) CheckNewlyAddedIndexesNeedAnalyzeForPartitionedTable( } // Find all the partitions that need to analyze this index. - names := make([]string, 0, len(partitionStats)) + ids := make([]int64, 0, len(partitionStats)) for pIDAndName, tblStats := range partitionStats { if idxStats := tblStats.GetIdx(idx.ID); idxStats == nil && !tblStats.ColAndIdxExistenceMap.HasAnalyzed(idx.ID, true) { - names = append(names, pIDAndName.Name) + ids = append(ids, pIDAndName.ID) } } - if len(names) > 0 { - partitionIndexes[idx.Name.O] = names + if len(ids) > 0 { + partitionIndexes[idx.ID] = ids } } diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory_test.go index eefd174213d84..a0646129c61ba 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/analysis_job_factory_test.go @@ -126,7 +126,7 @@ func TestCheckIndexesNeedAnalyze(t *testing.T) { name string tblInfo *model.TableInfo tblStats *statistics.Table - want []string + want map[int64]struct{} }{ { name: "Test Table not analyzed", @@ -168,7 +168,7 @@ func TestCheckIndexesNeedAnalyze(t *testing.T) { ColAndIdxExistenceMap: analyzedMap, LastAnalyzeVersion: 1, }, - want: []string{"index1"}, + want: map[int64]struct{}{1: {}}, }, } @@ -203,7 +203,7 @@ func TestCalculateIndicatorsForPartitions(t *testing.T) { wantAvgChangePercentage float64 wantAvgSize float64 wantAvgLastAnalyzeDuration time.Duration - wantPartitions []string + wantPartitions map[int64]struct{} }{ { name: "Test Table not analyzed", @@ -241,7 +241,7 @@ func TestCalculateIndicatorsForPartitions(t *testing.T) { wantAvgChangePercentage: 1, wantAvgSize: 2002, wantAvgLastAnalyzeDuration: 1800 * time.Second, - wantPartitions: []string{"p0", "p1"}, + wantPartitions: map[int64]struct{}{1: {}, 2: {}}, }, { name: "Test Table analyzed and only one partition meets the threshold", @@ -303,7 +303,7 @@ func TestCalculateIndicatorsForPartitions(t *testing.T) { wantAvgChangePercentage: 2, wantAvgSize: 2002, wantAvgLastAnalyzeDuration: 24 * time.Hour, - wantPartitions: []string{"p0"}, + wantPartitions: map[int64]struct{}{1: {}}, }, { name: "No partition meets the threshold", @@ -365,7 +365,7 @@ func TestCalculateIndicatorsForPartitions(t *testing.T) { wantAvgChangePercentage: 0, wantAvgSize: 0, wantAvgLastAnalyzeDuration: 0, - wantPartitions: []string{}, + wantPartitions: map[int64]struct{}{}, }, } for _, tt := range tests { @@ -382,9 +382,6 @@ func TestCalculateIndicatorsForPartitions(t *testing.T) { require.Equal(t, tt.wantAvgChangePercentage, gotAvgChangePercentage) require.Equal(t, tt.wantAvgSize, gotAvgSize) require.Equal(t, tt.wantAvgLastAnalyzeDuration, gotAvgLastAnalyzeDuration) - // Sort the partitions. - sort.Strings(tt.wantPartitions) - sort.Strings(gotPartitions) require.Equal(t, tt.wantPartitions, gotPartitions) }) } @@ -436,16 +433,20 @@ func TestCheckNewlyAddedIndexesNeedAnalyzeForPartitionedTable(t *testing.T) { factory := priorityqueue.NewAnalysisJobFactory(nil, 0, 0) partitionIndexes := factory.CheckNewlyAddedIndexesNeedAnalyzeForPartitionedTable(&tblInfo, partitionStats) - expected := map[string][]string{"index1": {"p0", "p1"}, "index2": {"p0"}} + expected := map[int64][]int64{1: {1, 2}, 2: {1}} require.Equal(t, len(expected), len(partitionIndexes)) for k, v := range expected { - sort.Strings(v) if val, ok := partitionIndexes[k]; ok { - sort.Strings(val) + sort.Slice(val, func(i, j int) bool { + return val[i] > val[j] + }) + sort.Slice(v, func(i, j int) bool { + return v[i] > v[j] + }) require.Equal(t, v, val) } else { - require.Fail(t, "key not found in partitionIndexes: "+k) + require.Failf(t, "key not found in partitionIndexes", "key: %d", k) } } } diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/calculator_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/calculator_test.go index 7a47cfd1f2207..35f65b5b139a4 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/calculator_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/calculator_test.go @@ -128,19 +128,21 @@ func TestGetSpecialEvent(t *testing.T) { pc := priorityqueue.NewPriorityCalculator() jobWithIndex1 := &priorityqueue.DynamicPartitionedTableAnalysisJob{ - PartitionIndexes: map[string][]string{ - "index1": {"p1", "p2"}, + PartitionIndexIDs: map[int64][]int64{ + 1: {1, 2}, }, } require.Equal(t, priorityqueue.EventNewIndex, pc.GetSpecialEvent(jobWithIndex1)) jobWithIndex2 := &priorityqueue.NonPartitionedTableAnalysisJob{ - Indexes: []string{"index1"}, + IndexIDs: map[int64]struct{}{ + 1: {}, + }, } require.Equal(t, priorityqueue.EventNewIndex, pc.GetSpecialEvent(jobWithIndex2)) jobWithoutIndex := &priorityqueue.DynamicPartitionedTableAnalysisJob{ - PartitionIndexes: map[string][]string{}, + PartitionIndexIDs: map[int64][]int64{}, } require.Equal(t, priorityqueue.EventNone, pc.GetSpecialEvent(jobWithoutIndex)) } diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/calculatoranalysis/calculator_analysis_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/calculatoranalysis/calculator_analysis_test.go index 31302e300edbf..870e13bee326e 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/calculatoranalysis/calculator_analysis_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/calculatoranalysis/calculator_analysis_test.go @@ -240,12 +240,12 @@ func (j *TestJob) Analyze(statsHandle types.StatsHandle, sysProcTracker sysproct } // RegisterSuccessHook implements AnalysisJob. -func (j *TestJob) RegisterSuccessHook(hook priorityqueue.JobHook) { +func (j *TestJob) RegisterSuccessHook(hook priorityqueue.SuccessJobHook) { panic("unimplemented") } // RegisterFailureHook implements AnalysisJob. -func (j *TestJob) RegisterFailureHook(hook priorityqueue.JobHook) { +func (j *TestJob) RegisterFailureHook(hook priorityqueue.FailureJobHook) { panic("unimplemented") } @@ -254,8 +254,8 @@ func (j *TestJob) GetWeight() float64 { panic("unimplemented") } -// IsValidToAnalyze implements AnalysisJob. -func (j *TestJob) IsValidToAnalyze(sctx sessionctx.Context) (bool, string) { +// ValidateAndPrepare implements AnalysisJob. +func (j *TestJob) ValidateAndPrepare(sctx sessionctx.Context) (bool, string) { panic("unimplemented") } @@ -289,3 +289,7 @@ func (j *TestJob) SetIndicators(indicators priorityqueue.Indicators) { func (j *TestJob) HasNewlyAddedIndex() bool { return false } + +func (j *TestJob) AsJSON() types.AnalysisJobJSON { + panic("unimplemented") +} 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 070c19a515707..3a550309119c6 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 @@ -35,50 +35,52 @@ const ( ) // DynamicPartitionedTableAnalysisJob is a TableAnalysisJob for analyzing dynamic pruned partitioned table. +// +//nolint:fieldalignment type DynamicPartitionedTableAnalysisJob struct { - // Only set when partitions's indexes need to be analyzed. - // It looks like: {"indexName": ["partitionName1", "partitionName2"]} - // This is only for newly added indexes. - // The reason why we need to record the partition names is that we need to analyze partitions in batch mode - // and we don't want to analyze the same partition multiple times. - // For example, the user may analyze some partitions manually, and we don't want to analyze them again. - PartitionIndexes map[string][]string + successHook SuccessJobHook + failureHook FailureJobHook - successHook JobHook - failureHook JobHook + GlobalTableID int64 + PartitionIDs map[int64]struct{} + PartitionIndexIDs map[int64][]int64 - TableSchema string - GlobalTableName string - // This will analyze all indexes and columns of the specified partitions. - Partitions []string // Some indicators to help us decide whether we need to analyze this table. Indicators - GlobalTableID int64 - // Analyze table with this version of statistics. TableStatsVer int // Weight is used to calculate the priority of the job. Weight float64 + + // Lazy initialized. + SchemaName string + GlobalTableName string + // This will analyze all indexes and columns of the specified partitions. + PartitionNames []string + // Only set when partitions's indexes need to be analyzed. + // It looks like: {"indexName": ["partitionName1", "partitionName2"]} + // This is only for newly added indexes. + // The reason why we need to record the partition names is that we need to analyze partitions in batch mode + // and we don't want to analyze the same partition multiple times. + // For example, the user may analyze some partitions manually, and we don't want to analyze them again. + PartitionIndexNames map[string][]string } // NewDynamicPartitionedTableAnalysisJob creates a new job for analyzing a dynamic partitioned table's partitions. func NewDynamicPartitionedTableAnalysisJob( - schema, tableName string, tableID int64, - partitions []string, - partitionIndexes map[string][]string, + partitionIDs map[int64]struct{}, + partitionIndexIDs map[int64][]int64, tableStatsVer int, changePercentage float64, tableSize float64, lastAnalysisDuration time.Duration, ) *DynamicPartitionedTableAnalysisJob { return &DynamicPartitionedTableAnalysisJob{ - GlobalTableID: tableID, - TableSchema: schema, - GlobalTableName: tableName, - Partitions: partitions, - PartitionIndexes: partitionIndexes, - TableStatsVer: tableStatsVer, + GlobalTableID: tableID, + PartitionIDs: partitionIDs, + PartitionIndexIDs: partitionIndexIDs, + TableStatsVer: tableStatsVer, Indicators: Indicators{ ChangePercentage: changePercentage, TableSize: tableSize, @@ -105,7 +107,7 @@ func (j *DynamicPartitionedTableAnalysisJob) Analyze( } } else { if j.failureHook != nil { - j.failureHook(j) + j.failureHook(j, true) } } }() @@ -122,12 +124,12 @@ func (j *DynamicPartitionedTableAnalysisJob) Analyze( } // RegisterSuccessHook registers a successHook function that will be called after the job can be marked as successful. -func (j *DynamicPartitionedTableAnalysisJob) RegisterSuccessHook(hook JobHook) { +func (j *DynamicPartitionedTableAnalysisJob) RegisterSuccessHook(hook SuccessJobHook) { j.successHook = hook } -// RegisterFailureHook registers a successHook function that will be called after the job can be marked as failed. -func (j *DynamicPartitionedTableAnalysisJob) RegisterFailureHook(hook JobHook) { +// RegisterFailureHook registers a failureHook function that will be called after the job can be marked as failed. +func (j *DynamicPartitionedTableAnalysisJob) RegisterFailureHook(hook FailureJobHook) { j.failureHook = hook } @@ -143,28 +145,82 @@ func (j *DynamicPartitionedTableAnalysisJob) SetIndicators(indicators Indicators // HasNewlyAddedIndex checks whether the job has newly added index. func (j *DynamicPartitionedTableAnalysisJob) HasNewlyAddedIndex() bool { - return len(j.PartitionIndexes) > 0 + return len(j.PartitionIndexIDs) > 0 } -// IsValidToAnalyze checks whether the table or partition is valid to analyze. -// We need to check each partition to determine whether the table is valid to analyze. -func (j *DynamicPartitionedTableAnalysisJob) IsValidToAnalyze( +// ValidateAndPrepare validates if the analysis job can run and prepares it for execution. +// For dynamic partitioned tables, it checks: +// - Schema exists +// - Table exists and is partitioned +// - All specified partitions exist +// - No recent failed analysis for any partition to avoid queue blocking +func (j *DynamicPartitionedTableAnalysisJob) ValidateAndPrepare( sctx sessionctx.Context, ) (bool, string) { + callFailureHook := func(needRetry bool) { + if j.failureHook != nil { + j.failureHook(j, needRetry) + } + } + is := sctx.GetDomainInfoSchema() + tableInfo, ok := is.TableInfoByID(j.GlobalTableID) + if !ok { + callFailureHook(false) + return false, tableNotExist + } + dbID := tableInfo.DBID + schema, ok := is.SchemaByID(dbID) + if !ok { + callFailureHook(false) + return false, schemaNotExist + } + partitionInfo := tableInfo.GetPartitionInfo() + if partitionInfo == nil { + callFailureHook(false) + return false, notPartitionedTable + } + partitionNames := make([]string, 0, len(j.PartitionIDs)) + for _, partition := range partitionInfo.Definitions { + if _, ok := j.PartitionIDs[partition.ID]; ok { + partitionNames = append(partitionNames, partition.Name.O) + } + } + partitionIndexNames := make(map[string][]string, len(j.PartitionIndexIDs)) + partitionIDToName := make(map[int64]string, len(partitionInfo.Definitions)) + for _, def := range partitionInfo.Definitions { + partitionIDToName[def.ID] = def.Name.O + } + for _, index := range tableInfo.Indices { + if partitionIDs, ok := j.PartitionIndexIDs[index.ID]; ok { + indexPartitions := make([]string, 0, len(partitionIDs)) + for _, partitionID := range partitionIDs { + if partitionName, ok := partitionIDToName[partitionID]; ok { + indexPartitions = append(indexPartitions, partitionName) + } + } + if len(indexPartitions) > 0 { + partitionIndexNames[index.Name.O] = indexPartitions + } + } + } + + j.SchemaName = schema.Name.O + j.GlobalTableName = tableInfo.Name.O + j.PartitionNames = partitionNames + j.PartitionIndexNames = partitionIndexNames + // Check whether the table or partition is valid to analyze. - if len(j.Partitions) > 0 || len(j.PartitionIndexes) > 0 { + if len(j.PartitionNames) > 0 || len(j.PartitionIndexNames) > 0 { // Any partition is invalid to analyze, the whole table is invalid to analyze. // Because we need to analyze partitions in batch mode. - partitions := append(j.Partitions, getPartitionNames(j.PartitionIndexes)...) + partitions := append(j.PartitionNames, getPartitionNames(j.PartitionIndexNames)...) if valid, failReason := isValidToAnalyze( sctx, - j.TableSchema, + j.SchemaName, j.GlobalTableName, partitions..., ); !valid { - if j.failureHook != nil { - j.failureHook(j) - } + callFailureHook(true) return false, failReason } } @@ -198,9 +254,9 @@ func (j *DynamicPartitionedTableAnalysisJob) String() string { "\tLastAnalysisDuration: %s\n"+ "\tWeight: %.6f\n", j.getAnalyzeType(), - strings.Join(j.Partitions, ", "), - j.PartitionIndexes, - j.TableSchema, j.GlobalTableName, + strings.Join(j.PartitionNames, ", "), + j.PartitionIndexNames, + j.SchemaName, j.GlobalTableName, j.GlobalTableID, j.TableStatsVer, j.ChangePercentage, j.TableSize, j.LastAnalysisDuration, j.Weight, ) @@ -216,8 +272,8 @@ func (j *DynamicPartitionedTableAnalysisJob) analyzePartitions( sysProcTracker sysproctrack.Tracker, ) bool { analyzePartitionBatchSize := int(variable.AutoAnalyzePartitionBatchSize.Load()) - needAnalyzePartitionNames := make([]any, 0, len(j.Partitions)) - for _, partition := range j.Partitions { + needAnalyzePartitionNames := make([]any, 0, len(j.PartitionNames)) + for _, partition := range j.PartitionNames { needAnalyzePartitionNames = append(needAnalyzePartitionNames, partition) } for i := 0; i < len(needAnalyzePartitionNames); i += analyzePartitionBatchSize { @@ -228,7 +284,7 @@ func (j *DynamicPartitionedTableAnalysisJob) analyzePartitions( } sql := getPartitionSQL("analyze table %n.%n partition", "", end-start) - params := append([]any{j.TableSchema, j.GlobalTableName}, needAnalyzePartitionNames[start:end]...) + params := append([]any{j.SchemaName, j.GlobalTableName}, needAnalyzePartitionNames[start:end]...) success := exec.AutoAnalyze(sctx, statsHandle, sysProcTracker, j.TableStatsVer, sql, params...) if !success { return false @@ -244,9 +300,11 @@ func (j *DynamicPartitionedTableAnalysisJob) analyzePartitionIndexes( sysProcTracker sysproctrack.Tracker, ) (success bool) { analyzePartitionBatchSize := int(variable.AutoAnalyzePartitionBatchSize.Load()) + // For version 2, analyze one index will analyze all other indexes and columns. + // For version 1, analyze one index will only analyze the specified index. + analyzeVersion := sctx.GetSessionVars().AnalyzeVersion -OnlyPickOneIndex: - for indexName, partitionNames := range j.PartitionIndexes { + for indexName, partitionNames := range j.PartitionIndexNames { needAnalyzePartitionNames := make([]any, 0, len(partitionNames)) for _, partition := range partitionNames { needAnalyzePartitionNames = append(needAnalyzePartitionNames, partition) @@ -259,13 +317,19 @@ OnlyPickOneIndex: } sql := getPartitionSQL("analyze table %n.%n partition", " index %n", end-start) - params := append([]any{j.TableSchema, j.GlobalTableName}, needAnalyzePartitionNames[start:end]...) + params := append([]any{j.SchemaName, j.GlobalTableName}, needAnalyzePartitionNames[start:end]...) params = append(params, indexName) success = exec.AutoAnalyze(sctx, statsHandle, sysProcTracker, j.TableStatsVer, sql, params...) + if !success { + return false + } + } + // For version 1, we need to analyze all indexes. + if analyzeVersion != 1 { // Halt execution after analyzing one index. // This is because analyzing a single index also analyzes all other indexes and columns. // Therefore, to avoid redundancy, we prevent multiple analyses of the same partition. - break OnlyPickOneIndex + break } } return @@ -300,3 +364,20 @@ func getPartitionNames(partitionIndexes map[string][]string) []string { } return names } + +// AsJSON converts the job to a JSON object. +func (j *DynamicPartitionedTableAnalysisJob) AsJSON() statstypes.AnalysisJobJSON { + partitionIDs := make([]int64, 0, len(j.PartitionIDs)) + for partition := range j.PartitionIDs { + partitionIDs = append(partitionIDs, partition) + } + return statstypes.AnalysisJobJSON{ + Type: string(j.getAnalyzeType()), + TableID: j.GlobalTableID, + PartitionIDs: partitionIDs, + PartitionIndexIDs: j.PartitionIndexIDs, + Weight: j.Weight, + Indicators: asJSONIndicators(j.Indicators), + HasNewlyAddedIndex: j.HasNewlyAddedIndex(), + } +} 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 02d73a63b9917..f753e633773d2 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 @@ -34,9 +34,9 @@ func TestAnalyzeDynamicPartitionedTable(t *testing.T) { tk.MustExec("create table t (a int, b int, index idx(a)) partition by range (a) (partition p0 values less than (2), partition p1 values less than (4))") tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3)") job := &priorityqueue.DynamicPartitionedTableAnalysisJob{ - TableSchema: "test", + SchemaName: "test", GlobalTableName: "t", - Partitions: []string{"p0", "p1"}, + PartitionNames: []string{"p0", "p1"}, TableStatsVer: 2, } @@ -68,12 +68,16 @@ func TestAnalyzeDynamicPartitionedTableIndexes(t *testing.T) { tk.MustExec("create table t (a int, b int, index idx(a), index idx1(b)) partition by range (a) (partition p0 values less than (2), partition p1 values less than (4))") tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3)") + tableInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + partitionInfo := tableInfo.Meta().GetPartitionInfo() + require.NotNil(t, partitionInfo) job := &priorityqueue.DynamicPartitionedTableAnalysisJob{ - TableSchema: "test", - GlobalTableName: "t", - PartitionIndexes: map[string][]string{ - "idx": {"p0", "p1"}, - "idx1": {"p0", "p1"}, + SchemaName: "test", + GlobalTableID: tableInfo.Meta().ID, + PartitionIndexIDs: map[int64][]int64{ + 1: {partitionInfo.Definitions[0].ID, partitionInfo.Definitions[1].ID}, + 2: {partitionInfo.Definitions[0].ID, partitionInfo.Definitions[1].ID}, }, TableStatsVer: 2, } @@ -90,6 +94,8 @@ func TestAnalyzeDynamicPartitionedTableIndexes(t *testing.T) { require.NotNil(t, tblStats.GetIdx(1)) require.False(t, tblStats.GetIdx(1).IsAnalyzed()) + valid, _ := job.ValidateAndPrepare(tk.Session()) + require.True(t, valid) job.Analyze(handle, dom.SysProcTracker()) // Check the result of analyze index. is = dom.InfoSchema() @@ -116,49 +122,56 @@ func TestAnalyzeDynamicPartitionedTableIndexes(t *testing.T) { require.Len(t, rows, 5) } -func TestIsValidToAnalyzeForDynamicPartitionedTable(t *testing.T) { - store := testkit.CreateMockStore(t) +func TestValidateAndPrepareForDynamicPartitionedTable(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") tk.MustExec(session.CreateAnalyzeJobs) + tk.MustExec("create database example_schema") + tk.MustExec("use example_schema") + 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) job := &priorityqueue.DynamicPartitionedTableAnalysisJob{ - TableSchema: "example_schema", - GlobalTableName: "example_table", - Partitions: []string{"p0", "p1"}, - Weight: 2, + SchemaName: "example_schema", + GlobalTableID: tableInfo.Meta().ID, + PartitionIDs: map[int64]struct{}{ + 113: {}, + 114: {}, + }, + Weight: 2, } initJobs(tk) - insertMultipleFinishedJobs(tk, job.GlobalTableName, "p0") + insertMultipleFinishedJobs(tk, "example_table", "p0") se := tk.Session() sctx := se.(sessionctx.Context) - valid, failReason := job.IsValidToAnalyze(sctx) + valid, failReason := job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) // Insert some failed jobs. // Just failed. now := tk.MustQuery("select now()").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.GlobalTableName, "p0", now) + insertFailedJobWithStartTime(tk, job.SchemaName, job.GlobalTableName, "p0", now) // Note: The failure reason is not checked in this test because the time duration can sometimes be inaccurate.(not now) - valid, _ = job.IsValidToAnalyze(sctx) + valid, _ = job.ValidateAndPrepare(sctx) require.False(t, valid) // Failed 10 seconds ago. startTime := tk.MustQuery("select now() - interval 10 second").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.GlobalTableName, "p0", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, job.GlobalTableName, "p0", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.False(t, valid) require.Equal(t, "last failed analysis duration is less than 2 times the average analysis duration", failReason) // Failed long long ago. startTime = tk.MustQuery("select now() - interval 300 day").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.GlobalTableName, "p0", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, job.GlobalTableName, "p0", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) // Smaller start time for p1. startTime = tk.MustQuery("select now() - interval 1 second").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.GlobalTableName, "p1", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, job.GlobalTableName, "p1", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.False(t, valid) require.Equal(t, "last failed analysis duration is less than 2 times the average analysis duration", failReason) } diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/heap_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/heap_test.go index 440d631389f60..13590237bd6a3 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/heap_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/heap_test.go @@ -37,7 +37,7 @@ type testHeapObject struct { val float64 } -func (t testHeapObject) IsValidToAnalyze(sctx sessionctx.Context) (bool, string) { +func (t testHeapObject) ValidateAndPrepare(sctx sessionctx.Context) (bool, string) { panic("implement me") } func (t testHeapObject) Analyze(statsHandle statstypes.StatsHandle, sysProcTracker sysproctrack.Tracker) error { @@ -61,10 +61,13 @@ func (t testHeapObject) SetIndicators(indicators Indicators) { func (t testHeapObject) GetTableID() int64 { return t.tableID } -func (t testHeapObject) RegisterSuccessHook(hook JobHook) { +func (t testHeapObject) RegisterSuccessHook(hook SuccessJobHook) { panic("implement me") } -func (t testHeapObject) RegisterFailureHook(hook JobHook) { +func (t testHeapObject) RegisterFailureHook(hook FailureJobHook) { + panic("implement me") +} +func (t testHeapObject) AsJSON() statstypes.AnalysisJobJSON { panic("implement me") } func (t testHeapObject) String() string { diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/job.go b/pkg/statistics/handle/autoanalyze/priorityqueue/job.go index ef217dd1d6028..8a2cc918cb5a4 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/job.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/job.go @@ -43,16 +43,21 @@ type Indicators struct { LastAnalysisDuration time.Duration } -// JobHook is the successHook function that will be called after the job is completed. -type JobHook func(job AnalysisJob) +// SuccessJobHook is the successHook function that will be called after the job is completed. +type SuccessJobHook func(job AnalysisJob) + +// FailureJobHook is the failureHook function that will be called after the job is failed. +type FailureJobHook func(job AnalysisJob, mustRetry bool) // AnalysisJob is the interface for the analysis job. type AnalysisJob interface { - // 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, - // we skip this table to avoid too much failed analysis. - IsValidToAnalyze( + // ValidateAndPrepare validates if the analysis job can run and prepares it for execution. + // Returns (true, "") if the job is valid and ready to run. + // Returns (false, reason) if the job should be skipped, where reason explains why: + // - Schema/table/partition doesn't exist + // - Table is not partitioned (for partition jobs) + // - Recent failed analysis (within 2x avg duration) to avoid queue blocking + ValidateAndPrepare( sctx sessionctx.Context, ) (bool, string) @@ -81,14 +86,24 @@ type AnalysisJob interface { GetTableID() int64 // RegisterSuccessHook registers a successHook function that will be called after the job can be marked as successful. - RegisterSuccessHook(hook JobHook) + RegisterSuccessHook(hook SuccessJobHook) + + // RegisterFailureHook registers a failureHook function that will be called after the job is marked as failed. + RegisterFailureHook(hook FailureJobHook) - // RegisterFailureHook registers a successHook function that will be called after the job is marked as failed. - RegisterFailureHook(hook JobHook) + // AsJSON converts the job to a JSON object. + AsJSON() statstypes.AnalysisJobJSON fmt.Stringer } +const ( + schemaNotExist = "schema does not exist" + tableNotExist = "table does not exist" + notPartitionedTable = "table is not a partitioned table" + partitionNotExist = "partition does not exist" +) + // 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, @@ -174,3 +189,12 @@ func IsDynamicPartitionedTableAnalysisJob(job AnalysisJob) bool { _, ok := job.(*DynamicPartitionedTableAnalysisJob) return ok } + +// asJSONIndicators converts the indicators to a JSON object. +func asJSONIndicators(indicators Indicators) statstypes.IndicatorsJSON { + return statstypes.IndicatorsJSON{ + ChangePercentage: fmt.Sprintf("%.2f%%", indicators.ChangePercentage*100), + TableSize: fmt.Sprintf("%.2f", indicators.TableSize), + LastAnalysisDuration: fmt.Sprintf("%v", indicators.LastAnalysisDuration), + } +} diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/job_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/job_test.go index d4c478f494b80..92b5a677201ff 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/job_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/job_test.go @@ -31,7 +31,7 @@ func TestStringer(t *testing.T) { name: "analyze non-partitioned table", job: &priorityqueue.NonPartitionedTableAnalysisJob{ TableID: 1, - TableSchema: "test_schema", + SchemaName: "test_schema", TableName: "test_table", TableStatsVer: 1, Weight: 1.999999, @@ -44,10 +44,13 @@ func TestStringer(t *testing.T) { { name: "analyze non-partitioned table index", job: &priorityqueue.NonPartitionedTableAnalysisJob{ - TableID: 2, - TableSchema: "test_schema", - TableName: "test_table", - Indexes: []string{"idx"}, + TableID: 2, + SchemaName: "test_schema", + TableName: "test_table", + IndexIDs: map[int64]struct{}{ + 1: {}, + }, + IndexNames: []string{"idx"}, TableStatsVer: 1, Weight: 1.999999, Indicators: priorityqueue.Indicators{ @@ -60,11 +63,15 @@ func TestStringer(t *testing.T) { name: "analyze dynamic partition", job: &priorityqueue.DynamicPartitionedTableAnalysisJob{ GlobalTableID: 3, - TableSchema: "test_schema", + SchemaName: "test_schema", GlobalTableName: "test_table", - Partitions: []string{"p0", "p1"}, - TableStatsVer: 1, - Weight: 1.999999, + PartitionNames: []string{"p0", "p1"}, + PartitionIDs: map[int64]struct{}{ + 1: {}, + 2: {}, + }, + TableStatsVer: 1, + Weight: 1.999999, Indicators: priorityqueue.Indicators{ ChangePercentage: 0.5, }, @@ -75,11 +82,15 @@ func TestStringer(t *testing.T) { name: "analyze dynamic partition's indexes", job: &priorityqueue.DynamicPartitionedTableAnalysisJob{ GlobalTableID: 4, - TableSchema: "test_schema", + SchemaName: "test_schema", GlobalTableName: "test_table", - PartitionIndexes: map[string][]string{ + PartitionIndexNames: map[string][]string{ "idx": {"p0", "p1"}, }, + PartitionIndexIDs: map[int64][]int64{ + 1: {1, 2}, + 2: {1, 2}, + }, TableStatsVer: 1, Weight: 1.999999, Indicators: priorityqueue.Indicators{ @@ -92,7 +103,7 @@ func TestStringer(t *testing.T) { name: "analyze static partition", job: &priorityqueue.StaticPartitionedTableAnalysisJob{ GlobalTableID: 5, - TableSchema: "test_schema", + SchemaName: "test_schema", GlobalTableName: "test_table", StaticPartitionName: "p0", StaticPartitionID: 6, @@ -108,13 +119,16 @@ func TestStringer(t *testing.T) { name: "analyze static partition's index", job: &priorityqueue.StaticPartitionedTableAnalysisJob{ GlobalTableID: 7, - TableSchema: "test_schema", + SchemaName: "test_schema", GlobalTableName: "test_table", StaticPartitionName: "p0", StaticPartitionID: 8, TableStatsVer: 1, Weight: 1.999999, - Indexes: []string{"idx"}, + IndexIDs: map[int64]struct{}{ + 1: {}, + }, + IndexNames: []string{"idx"}, Indicators: priorityqueue.Indicators{ ChangePercentage: 0.5, }, 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 5404c2359dfba..ad4b27e5f80d3 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 @@ -34,34 +34,37 @@ const ( ) // NonPartitionedTableAnalysisJob is a TableAnalysisJob for analyzing the physical table. +// +//nolint:fieldalignment type NonPartitionedTableAnalysisJob struct { - successHook JobHook - failureHook JobHook - TableSchema string - TableName string - // This is only for newly added indexes. - Indexes []string + successHook SuccessJobHook + failureHook FailureJobHook + + TableID int64 + IndexIDs map[int64]struct{} + Indicators - TableID int64 TableStatsVer int Weight float64 + + // Lazy initialized. + SchemaName string + TableName string + IndexNames []string } // NewNonPartitionedTableAnalysisJob creates a new TableAnalysisJob for analyzing the physical table. func NewNonPartitionedTableAnalysisJob( - schema, tableName string, tableID int64, - indexes []string, + indexIDs map[int64]struct{}, tableStatsVer int, changePercentage float64, tableSize float64, lastAnalysisDuration time.Duration, ) *NonPartitionedTableAnalysisJob { return &NonPartitionedTableAnalysisJob{ - TableSchema: schema, - TableName: tableName, TableID: tableID, - Indexes: indexes, + IndexIDs: indexIDs, TableStatsVer: tableStatsVer, Indicators: Indicators{ ChangePercentage: changePercentage, @@ -89,7 +92,7 @@ func (j *NonPartitionedTableAnalysisJob) Analyze( } } else { if j.failureHook != nil { - j.failureHook(j) + j.failureHook(j, true) } } }() @@ -106,34 +109,62 @@ func (j *NonPartitionedTableAnalysisJob) Analyze( } // RegisterSuccessHook registers a successHook function that will be called after the job can be marked as successful. -func (j *NonPartitionedTableAnalysisJob) RegisterSuccessHook(hook JobHook) { +func (j *NonPartitionedTableAnalysisJob) RegisterSuccessHook(hook SuccessJobHook) { j.successHook = hook } // RegisterFailureHook registers a failureHook function that will be called after the job can be marked as failed. -func (j *NonPartitionedTableAnalysisJob) RegisterFailureHook(hook JobHook) { +func (j *NonPartitionedTableAnalysisJob) RegisterFailureHook(hook FailureJobHook) { j.failureHook = hook } // HasNewlyAddedIndex checks whether the table has newly added indexes. func (j *NonPartitionedTableAnalysisJob) HasNewlyAddedIndex() bool { - return len(j.Indexes) > 0 + return len(j.IndexIDs) > 0 } -// IsValidToAnalyze checks whether the table is valid to analyze. -// We will check the last failed job and average analyze duration to determine whether the table is valid to analyze. -func (j *NonPartitionedTableAnalysisJob) IsValidToAnalyze( +// ValidateAndPrepare validates if the analysis job can run and prepares it for execution. +// For non-partitioned tables, it checks: +// - Schema exists +// - Table exists +// - No recent failed analysis to avoid queue blocking +func (j *NonPartitionedTableAnalysisJob) ValidateAndPrepare( sctx sessionctx.Context, ) (bool, string) { + callFailureHook := func(needRetry bool) { + if j.failureHook != nil { + j.failureHook(j, needRetry) + } + } + is := sctx.GetDomainInfoSchema() + tableInfo, ok := is.TableInfoByID(j.TableID) + if !ok { + callFailureHook(false) + return false, tableNotExist + } + dbID := tableInfo.DBID + schema, ok := is.SchemaByID(dbID) + if !ok { + callFailureHook(false) + return false, schemaNotExist + } + tableName := tableInfo.Name.O + indexNames := make([]string, 0, len(j.IndexIDs)) + for _, index := range tableInfo.Indices { + if _, ok := j.IndexIDs[index.ID]; ok { + indexNames = append(indexNames, index.Name.O) + } + } + + j.SchemaName = schema.Name.O + j.TableName = tableName + j.IndexNames = indexNames if valid, failReason := isValidToAnalyze( sctx, - j.TableSchema, + j.SchemaName, j.TableName, ); !valid { - if j.failureHook != nil { - j.failureHook(j) - } - + callFailureHook(true) return false, failReason } @@ -175,8 +206,8 @@ func (j *NonPartitionedTableAnalysisJob) String() string { "\tLastAnalysisDuration: %v\n"+ "\tWeight: %.6f\n", j.getAnalyzeType(), - strings.Join(j.Indexes, ", "), - j.TableSchema, j.TableName, j.TableID, j.TableStatsVer, + strings.Join(j.IndexNames, ", "), + j.SchemaName, j.TableName, j.TableID, j.TableStatsVer, j.ChangePercentage, j.TableSize, j.LastAnalysisDuration, j.Weight, ) } @@ -199,7 +230,7 @@ func (j *NonPartitionedTableAnalysisJob) analyzeTable( // GenSQLForAnalyzeTable generates the SQL for analyzing the specified table. func (j *NonPartitionedTableAnalysisJob) GenSQLForAnalyzeTable() (string, []any) { sql := "analyze table %n.%n" - params := []any{j.TableSchema, j.TableName} + params := []any{j.SchemaName, j.TableName} return sql, params } @@ -209,13 +240,25 @@ func (j *NonPartitionedTableAnalysisJob) analyzeIndexes( statsHandle statstypes.StatsHandle, sysProcTracker sysproctrack.Tracker, ) bool { - if len(j.Indexes) == 0 { + if len(j.IndexNames) == 0 { + return true + } + // For version 2, analyze one index will analyze all other indexes and columns. + // For version 1, analyze one index will only analyze the specified index. + analyzeVersion := sctx.GetSessionVars().AnalyzeVersion + if analyzeVersion == 1 { + for _, index := range j.IndexNames { + sql, params := j.GenSQLForAnalyzeIndex(index) + if !exec.AutoAnalyze(sctx, statsHandle, sysProcTracker, j.TableStatsVer, sql, params...) { + return false + } + } return true } // Only analyze the first index. // This is because analyzing a single index also analyzes all other indexes and columns. // Therefore, to avoid redundancy, we prevent multiple analyses of the same table. - firstIndex := j.Indexes[0] + firstIndex := j.IndexNames[0] sql, params := j.GenSQLForAnalyzeIndex(firstIndex) return exec.AutoAnalyze(sctx, statsHandle, sysProcTracker, j.TableStatsVer, sql, params...) } @@ -223,7 +266,23 @@ func (j *NonPartitionedTableAnalysisJob) analyzeIndexes( // GenSQLForAnalyzeIndex generates the SQL for analyzing the specified index. func (j *NonPartitionedTableAnalysisJob) GenSQLForAnalyzeIndex(index string) (string, []any) { sql := "analyze table %n.%n index %n" - params := []any{j.TableSchema, j.TableName, index} + params := []any{j.SchemaName, j.TableName, index} return sql, params } + +// AsJSON converts the job to a JSON object. +func (j *NonPartitionedTableAnalysisJob) AsJSON() statstypes.AnalysisJobJSON { + indexes := make([]int64, 0, len(j.IndexIDs)) + for index := range j.IndexIDs { + indexes = append(indexes, index) + } + return statstypes.AnalysisJobJSON{ + Type: string(j.getAnalyzeType()), + TableID: j.TableID, + IndexIDs: indexes, + Weight: j.Weight, + Indicators: asJSONIndicators(j.Indicators), + HasNewlyAddedIndex: j.HasNewlyAddedIndex(), + } +} 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 91cdb76d1eee3..9e446283ffe0a 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 @@ -28,8 +28,8 @@ import ( func TestGenSQLForNonPartitionedTable(t *testing.T) { job := &priorityqueue.NonPartitionedTableAnalysisJob{ - TableSchema: "test_schema", - TableName: "test_table", + SchemaName: "test_schema", + TableName: "test_table", } expectedSQL := "analyze table %n.%n" @@ -43,8 +43,8 @@ func TestGenSQLForNonPartitionedTable(t *testing.T) { func TestGenSQLForNonPartitionedTableIndex(t *testing.T) { job := &priorityqueue.NonPartitionedTableAnalysisJob{ - TableSchema: "test_schema", - TableName: "test_table", + SchemaName: "test_schema", + TableName: "test_table", } index := "test_index" @@ -66,7 +66,7 @@ func TestAnalyzeNonPartitionedTable(t *testing.T) { tk.MustExec("create table t (a int, b int, index idx(a))") tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3)") job := &priorityqueue.NonPartitionedTableAnalysisJob{ - TableSchema: "test", + SchemaName: "test", TableName: "t", TableStatsVer: 2, } @@ -95,10 +95,11 @@ func TestAnalyzeNonPartitionedIndexes(t *testing.T) { tk.MustExec("create table t (a int, b int, index idx(a), index idx1(b))") tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3)") + tblInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) job := &priorityqueue.NonPartitionedTableAnalysisJob{ - TableSchema: "test", - TableName: "t", - Indexes: []string{"idx", "idx1"}, + TableID: tblInfo.Meta().ID, + IndexIDs: map[int64]struct{}{1: {}, 2: {}}, TableStatsVer: 2, } handle := dom.StatsHandle() @@ -109,6 +110,9 @@ func TestAnalyzeNonPartitionedIndexes(t *testing.T) { tblStats := handle.GetTableStats(tbl.Meta()) require.False(t, tblStats.GetIdx(1).IsAnalyzed()) + valid, failReason := job.ValidateAndPrepare(tk.Session()) + require.True(t, valid) + require.Equal(t, "", failReason) job.Analyze(handle, dom.SysProcTracker()) // Check the result of analyze. is = dom.InfoSchema() @@ -125,73 +129,79 @@ func TestAnalyzeNonPartitionedIndexes(t *testing.T) { require.Len(t, rows, 1) } -func TestNonPartitionedTableIsValidToAnalyze(t *testing.T) { - store := testkit.CreateMockStore(t) +func TestNonPartitionedTableValidateAndPrepare(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") tk.MustExec(session.CreateAnalyzeJobs) + tk.MustExec("create schema example_schema") + tk.MustExec("use example_schema") + tk.MustExec("create table example_table1 (a int, b int, index idx(a))") + tableInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("example_schema"), model.NewCIStr("example_table1")) + require.NoError(t, err) job := &priorityqueue.NonPartitionedTableAnalysisJob{ - TableSchema: "example_schema", - TableName: "example_table1", + TableID: tableInfo.Meta().ID, TableStatsVer: 2, Weight: 3, } initJobs(tk) - insertMultipleFinishedJobs(tk, job.TableName, "") + insertMultipleFinishedJobs(tk, "example_table1", "") se := tk.Session() sctx := se.(sessionctx.Context) - valid, failReason := job.IsValidToAnalyze(sctx) + valid, failReason := job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) // Insert some failed jobs. // Just failed. now := tk.MustQuery("select now()").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.TableName, "", now) + insertFailedJobWithStartTime(tk, job.SchemaName, job.TableName, "", now) // Note: The failure reason is not checked in this test because the time duration can sometimes be inaccurate.(not now) - valid, _ = job.IsValidToAnalyze(sctx) + valid, _ = job.ValidateAndPrepare(sctx) require.False(t, valid) // Failed 10 seconds ago. startTime := tk.MustQuery("select now() - interval 10 second").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.TableName, "", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, job.TableName, "", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.False(t, valid) require.Equal(t, "last failed analysis duration is less than 2 times the average analysis duration", failReason) // Failed long long ago. startTime = tk.MustQuery("select now() - interval 300 day").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.TableName, "", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, job.TableName, "", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) } -func TestIsValidToAnalyzeWhenOnlyHasFailedAnalysisRecords(t *testing.T) { - store := testkit.CreateMockStore(t) +func TestValidateAndPrepareWhenOnlyHasFailedAnalysisRecords(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") tk.MustExec(session.CreateAnalyzeJobs) + tk.MustExec("create schema example_schema") + tk.MustExec("use example_schema") + tk.MustExec("create table example_table1 (a int, b int, index idx(a))") + tableInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("example_schema"), model.NewCIStr("example_table1")) + require.NoError(t, err) job := &priorityqueue.NonPartitionedTableAnalysisJob{ - TableSchema: "example_schema", - TableName: "example_table1", - Weight: 2, + TableID: tableInfo.Meta().ID, + Weight: 2, } se := tk.Session() sctx := se.(sessionctx.Context) - valid, failReason := job.IsValidToAnalyze(sctx) + valid, failReason := job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) // Failed long long ago. startTime := tk.MustQuery("select now() - interval 30 day").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.TableName, "", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, job.TableName, "", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) // Failed recently. tenSecondsAgo := tk.MustQuery("select now() - interval 10 second").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.TableName, "", tenSecondsAgo) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, job.TableName, "", tenSecondsAgo) + valid, failReason = job.ValidateAndPrepare(sctx) require.False(t, valid) require.Equal(t, "last failed analysis duration is less than 30m0s", failReason) } diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go b/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go index d7f5d21cc9482..39b75ed7af376 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/queue.go @@ -16,6 +16,7 @@ package priorityqueue import ( "context" + "sort" "sync" "time" @@ -32,6 +33,7 @@ import ( statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) @@ -43,6 +45,12 @@ const ( mustRetryJobRequeueInterval = time.Minute * 5 ) +// If the process takes longer than this threshold, we will log it as a slow log. +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")) + // 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. @@ -238,7 +246,6 @@ func (pq *AnalysisPriorityQueue) fetchAllTablesAndBuildAnalysisJobs() error { pi := tblInfo.GetPartitionInfo() if pi == nil { job := jobFactory.CreateNonPartitionedTableAnalysisJob( - db.O, tblInfo, pq.statsHandle.GetTableStatsForAutoAnalyze(tblInfo), ) @@ -261,10 +268,8 @@ func (pq *AnalysisPriorityQueue) fetchAllTablesAndBuildAnalysisJobs() error { if pruneMode == variable.Static { for pIDAndName, stats := range partitionStats { job := jobFactory.CreateStaticPartitionAnalysisJob( - db.O, tblInfo, pIDAndName.ID, - pIDAndName.Name, stats, ) err := pq.pushWithoutLock(job) @@ -274,7 +279,6 @@ func (pq *AnalysisPriorityQueue) fetchAllTablesAndBuildAnalysisJobs() error { } } else { job := jobFactory.CreateDynamicPartitionedTableAnalysisJob( - db.O, tblInfo, pq.statsHandle.GetPartitionStatsForAutoAnalyze(tblInfo, tblInfo.ID), partitionStats, @@ -312,13 +316,13 @@ func (pq *AnalysisPriorityQueue) run() { statslogutil.StatsLogger().Info("Priority queue stopped") return case <-dmlChangesFetchInterval.C: - statslogutil.StatsLogger().Info("Start to fetch DML changes of jobs") + queueSamplerLogger().Info("Start to fetch DML changes of tables") pq.ProcessDMLChanges() case <-timeRefreshInterval.C: - statslogutil.StatsLogger().Info("Start to refresh last analysis durations of jobs") + queueSamplerLogger().Info("Start to refresh last analysis durations of jobs") pq.RefreshLastAnalysisDuration() case <-mustRetryJobRequeueInterval.C: - statslogutil.StatsLogger().Info("Start to request must retry jobs") + queueSamplerLogger().Info("Start to requeue must retry jobs") pq.RequeueMustRetryJobs() } } @@ -334,7 +338,10 @@ func (pq *AnalysisPriorityQueue) ProcessDMLChanges() { if err := statsutil.CallWithSCtx(pq.statsHandle.SPool(), func(sctx sessionctx.Context) error { start := time.Now() defer func() { - statslogutil.StatsLogger().Info("DML changes processed", zap.Duration("duration", time.Since(start))) + duration := time.Since(start) + if duration > slowLogThreshold { + queueSamplerLogger().Info("DML changes processed", zap.Duration("duration", duration)) + } }() parameters := exec.GetAutoAnalyzeParameters(sctx) @@ -366,7 +373,7 @@ func (pq *AnalysisPriorityQueue) ProcessDMLChanges() { // Only update if we've seen a newer version if newMaxVersion > lastFetchTimestamp { - statslogutil.StatsLogger().Info("Updating last fetch timestamp", zap.Uint64("new_max_version", newMaxVersion)) + queueSamplerLogger().Info("Updating last fetch timestamp", zap.Uint64("new_max_version", newMaxVersion)) pq.syncFields.lastDMLUpdateFetchTimestamp = newMaxVersion } return nil @@ -394,12 +401,6 @@ func (pq *AnalysisPriorityQueue) processTableStats( return errors.Trace(err) } jobFactory := NewAnalysisJobFactory(sctx, autoAnalyzeRatio, currentTs) - // Check if the table is needed to be analyzed. - // Note: Unanalyzed tables will also be considered. - changePercent := jobFactory.CalculateChangePercentage(stats) - if changePercent == 0 { - return nil - } is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) pruneMode := variable.PartitionPruneMode(sctx.GetSessionVars().PartitionPruneMode.Load()) @@ -445,7 +446,6 @@ func (pq *AnalysisPriorityQueue) tryCreateJob( } tableInfo, ok := pq.statsHandle.TableInfoByID(is, stats.PhysicalID) - tableMeta := tableInfo.Meta() if !ok { statslogutil.StatsLogger().Warn( "Table info not found for table id", @@ -453,14 +453,7 @@ func (pq *AnalysisPriorityQueue) tryCreateJob( ) return nil } - schemaName, ok := is.SchemaNameByTableID(tableMeta.ID) - if !ok { - statslogutil.StatsLogger().Warn( - "Schema name not found for table id", - zap.Int64("tableID", stats.PhysicalID), - ) - return nil - } + tableMeta := tableInfo.Meta() partitionedTable := tableMeta.GetPartitionInfo() if partitionedTable == nil { // If the table is locked, we do not analyze it. @@ -468,7 +461,6 @@ func (pq *AnalysisPriorityQueue) tryCreateJob( return nil } job = jobFactory.CreateNonPartitionedTableAnalysisJob( - schemaName.O, tableMeta, stats, ) @@ -496,10 +488,8 @@ func (pq *AnalysisPriorityQueue) tryCreateJob( return nil } job = jobFactory.CreateStaticPartitionAnalysisJob( - schemaName.O, tableMeta, partitionDef.ID, - partitionDef.Name.O, stats, ) } else { @@ -530,7 +520,6 @@ func (pq *AnalysisPriorityQueue) tryCreateJob( } partitionStats := GetPartitionStats(pq.statsHandle, tableMeta, filteredPartitionDefs) job = jobFactory.CreateDynamicPartitionedTableAnalysisJob( - schemaName.O, tableMeta, // Get global stats for dynamic partitioned table. pq.statsHandle.GetTableStatsForAutoAnalyze(tableMeta), @@ -568,17 +557,7 @@ func (pq *AnalysisPriorityQueue) tryUpdateJob( partitionedTable := tableMeta.GetPartitionInfo() partitionDefs := partitionedTable.Definitions partitionStats := GetPartitionStats(pq.statsHandle, tableMeta, partitionDefs) - schemaName, ok := is.SchemaNameByTableID(tableMeta.ID) - if !ok { - statslogutil.StatsLogger().Warn( - "Schema name not found during updating job", - zap.Int64("tableID", stats.PhysicalID), - zap.String("job", oldJob.String()), - ) - return nil - } return jobFactory.CreateDynamicPartitionedTableAnalysisJob( - schemaName.O, tableMeta, stats, partitionStats, @@ -609,7 +588,10 @@ func (pq *AnalysisPriorityQueue) RequeueMustRetryJobs() { if err := statsutil.CallWithSCtx(pq.statsHandle.SPool(), func(sctx sessionctx.Context) error { start := time.Now() defer func() { - statslogutil.StatsLogger().Info("Must retry jobs requeued", zap.Duration("duration", time.Since(start))) + duration := time.Since(start) + if duration > slowLogThreshold { + queueSamplerLogger().Info("Must retry jobs requeued", zap.Duration("duration", duration)) + } }() is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) @@ -642,7 +624,10 @@ func (pq *AnalysisPriorityQueue) RefreshLastAnalysisDuration() { if err := statsutil.CallWithSCtx(pq.statsHandle.SPool(), func(sctx sessionctx.Context) error { start := time.Now() defer func() { - statslogutil.StatsLogger().Info("Last analysis duration refreshed", zap.Duration("duration", time.Since(start))) + duration := time.Since(start) + if duration > slowLogThreshold { + queueSamplerLogger().Info("Last analysis duration refreshed", zap.Duration("duration", duration)) + } }() jobs := pq.syncFields.inner.list() currentTs, err := statsutil.GetStartTS(sctx) @@ -659,7 +644,8 @@ func (pq *AnalysisPriorityQueue) RefreshLastAnalysisDuration() { zap.Int64("tableID", job.GetTableID()), zap.String("job", job.String()), ) - // TODO: Remove this after handling the DDL event. + // Delete the job from the queue since its table is missing. This is a safeguard - + // DDL events should have already cleaned up jobs for dropped tables. err := pq.syncFields.inner.delete(job) if err != nil { statslogutil.StatsLogger().Error("Failed to delete job from priority queue", @@ -667,6 +653,7 @@ func (pq *AnalysisPriorityQueue) RefreshLastAnalysisDuration() { zap.String("job", job.String()), ) } + continue } indicators.LastAnalysisDuration = jobFactory.GetTableLastAnalyzeDuration(tableStats) job.SetIndicators(indicators) @@ -767,14 +754,29 @@ func (pq *AnalysisPriorityQueue) Pop() (AnalysisJob, error) { job.RegisterSuccessHook(func(j AnalysisJob) { pq.syncFields.mu.Lock() defer pq.syncFields.mu.Unlock() + // During owner switch, the priority queue is closed and its fields are reset to nil. + // We allow running jobs to complete normally rather than stopping them, so this nil + // check is expected when the job finishes after the switch. + if pq.syncFields.runningJobs == nil { + return + } delete(pq.syncFields.runningJobs, j.GetTableID()) }) - job.RegisterFailureHook(func(j AnalysisJob) { + job.RegisterFailureHook(func(j AnalysisJob, needRetry bool) { pq.syncFields.mu.Lock() defer pq.syncFields.mu.Unlock() + // During owner switch, the priority queue is closed and its fields are reset to nil. + // We allow running jobs to complete normally rather than stopping them, so this nil check + // is expected when jobs finish after the switch. Failed jobs will be handled by the next + // initialization, so we can safely ignore them here. + if pq.syncFields.runningJobs == nil || pq.syncFields.mustRetryJobs == nil { + return + } // Mark the job as failed and remove it from the running jobs. delete(pq.syncFields.runningJobs, j.GetTableID()) - pq.syncFields.mustRetryJobs[j.GetTableID()] = struct{}{} + if needRetry { + pq.syncFields.mustRetryJobs[j.GetTableID()] = struct{}{} + } }) return job, nil } @@ -814,6 +816,38 @@ func (pq *AnalysisPriorityQueue) Len() (int, error) { return pq.syncFields.inner.len(), nil } +// Snapshot returns a snapshot of all the jobs in the priority queue. +func (pq *AnalysisPriorityQueue) Snapshot() ( + snapshot statstypes.PriorityQueueSnapshot, + err error, +) { + pq.syncFields.mu.RLock() + defer pq.syncFields.mu.RUnlock() + if !pq.syncFields.initialized { + return statstypes.PriorityQueueSnapshot{}, errors.New(notInitializedErrMsg) + } + + currentJobs := pq.syncFields.inner.list() + mustRetryTables := make([]int64, 0, len(pq.syncFields.mustRetryJobs)) + for tableID := range pq.syncFields.mustRetryJobs { + mustRetryTables = append(mustRetryTables, tableID) + } + + jsonJobs := make([]statstypes.AnalysisJobJSON, len(currentJobs)) + for i, job := range currentJobs { + jsonJobs[i] = job.AsJSON() + } + // Sort by the weight in descending order. + sort.Slice(jsonJobs, func(i, j int) bool { + return jsonJobs[i].Weight > jsonJobs[j].Weight + }) + + return statstypes.PriorityQueueSnapshot{ + CurrentJobs: jsonJobs, + MustRetryTables: mustRetryTables, + }, nil +} + // Close closes the priority queue. // Note: This function is thread-safe. func (pq *AnalysisPriorityQueue) Close() { @@ -828,4 +862,14 @@ func (pq *AnalysisPriorityQueue) Close() { pq.syncFields.cancel() } pq.wg.Wait() + + // Reset the initialized flag to allow the priority queue to be closed and re-initialized. + pq.syncFields.initialized = false + // The rest fields will be reset when the priority queue is initialized. + // But we do it here for double safety. + pq.syncFields.inner = nil + pq.syncFields.runningJobs = nil + pq.syncFields.mustRetryJobs = nil + pq.syncFields.lastDMLUpdateFetchTimestamp = 0 + pq.syncFields.cancel = nil } diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go index 740bdcbc6f7ab..de56a1f472e9d 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler.go @@ -71,6 +71,8 @@ func (pq *AnalysisPriorityQueue) HandleDDLEvent(_ context.Context, sctx sessionc err = pq.handleAlterTablePartitioningEvent(sctx, event) case model.ActionRemovePartitioning: err = pq.handleRemovePartitioningEvent(sctx, event) + case model.ActionDropSchema: + err = pq.handleDropSchemaEvent(sctx, event) default: // Ignore other DDL events. } @@ -406,3 +408,36 @@ func (pq *AnalysisPriorityQueue) handleRemovePartitioningEvent(sctx sessionctx.C // This might be improved in the future. return pq.recreateAndPushJobForTable(sctx, newSingleTableInfo) } + +func (pq *AnalysisPriorityQueue) handleDropSchemaEvent(_ sessionctx.Context, event *notifier.SchemaChangeEvent) error { + miniDBInfo := event.GetDropSchemaInfo() + for _, tbl := range miniDBInfo.Tables { + // For static partitioned tables. + for _, partition := range tbl.Partitions { + if err := pq.getAndDeleteJob(partition.ID); err != nil { + // Try best to delete as many tables as possible. + statslogutil.StatsLogger().Error( + "Failed to delete table from priority queue", + zap.Error(err), + zap.String("db", miniDBInfo.Name.O), + zap.Int64("tableID", tbl.ID), + zap.String("tableName", tbl.Name.O), + zap.Int64("partitionID", partition.ID), + zap.String("partitionName", partition.Name.O), + ) + } + } + // For non-partitioned tables or dynamic partitioned tables. + if err := pq.getAndDeleteJob(tbl.ID); err != nil { + // Try best to delete as many tables as possible. + statslogutil.StatsLogger().Error( + "Failed to delete table from priority queue", + zap.Error(err), + zap.String("db", miniDBInfo.Name.O), + zap.Int64("tableID", tbl.ID), + zap.String("tableName", tbl.Name.O), + ) + } + } + return nil +} diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler_test.go index 7bd86d9121887..2e82c1300e45b 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_ddl_handler_test.go @@ -106,6 +106,8 @@ func TestHandleDDLEventsWithRunningJobs(t *testing.T) { job1, err := pq.Pop() require.NoError(t, err) require.Equal(t, tbl1.Meta().ID, job1.GetTableID()) + valid, _ := job1.ValidateAndPrepare(tk.Session()) + require.True(t, valid) // Check if the running job is still in the queue. runningJobs = pq.GetRunningJobs() @@ -518,7 +520,7 @@ func TestExchangeTablePartition(t *testing.T) { testKit.MustExec("analyze table t2") require.NoError(t, h.Update(context.Background(), do.InfoSchema())) // Insert some data. - testKit.MustExec("insert into t1 values (1,2),(2,2)") + testKit.MustExec("insert into t1 values (1,2),(2,2),(3,3),(4,4)") testKit.MustExec("insert into t2 values (1,2)") require.NoError(t, h.DumpStatsDeltaToKV(true)) require.NoError(t, h.Update(context.Background(), do.InfoSchema())) @@ -740,6 +742,127 @@ func TestRemovePartitioning(t *testing.T) { require.True(t, isEmpty) } +func TestDropSchemaEventWithDynamicPartition(t *testing.T) { + store, do := testkit.CreateMockStoreAndDomain(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("create table t (c1 int, c2 int, index idx(c1, c2)) partition by range columns (c1) (partition p0 values less than (5), partition p1 values less than (10))") + is := do.InfoSchema() + tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + tableInfo := tbl.Meta() + h := do.StatsHandle() + // Analyze table. + testKit.MustExec("analyze table t") + require.NoError(t, h.Update(context.Background(), do.InfoSchema())) + // Insert some data. + testKit.MustExec("insert into t values (1,2),(2,2)") + require.NoError(t, h.DumpStatsDeltaToKV(true)) + require.NoError(t, h.Update(context.Background(), do.InfoSchema())) + // Create a non-partitioned table. + testKit.MustExec("create table t2 (c1 int, c2 int, index idx(c1, c2))") + testKit.MustExec("analyze table t2") + require.NoError(t, h.Update(context.Background(), do.InfoSchema())) + // Insert some data. + testKit.MustExec("insert into t2 values (1,2),(2,2)") + require.NoError(t, h.DumpStatsDeltaToKV(true)) + require.NoError(t, h.Update(context.Background(), do.InfoSchema())) + + statistics.AutoAnalyzeMinCnt = 0 + defer func() { + statistics.AutoAnalyzeMinCnt = 1000 + }() + + pq := priorityqueue.NewAnalysisPriorityQueue(h) + defer pq.Close() + require.NoError(t, pq.Initialize()) + isEmpty, err := pq.IsEmpty() + require.NoError(t, err) + require.False(t, isEmpty) + job, err := pq.Peek() + require.NoError(t, err) + require.Equal(t, tableInfo.ID, job.GetTableID()) + l, err := pq.Len() + require.NoError(t, err) + require.Equal(t, l, 2) + + // Drop schema. + testKit.MustExec("drop database test") + + // Find the drop schema event. + dropSchemaEvent := findEvent(h.DDLEventCh(), model.ActionDropSchema) + require.NotNil(t, dropSchemaEvent) + + // Handle the drop schema event. + require.NoError(t, h.HandleDDLEvent(dropSchemaEvent)) + + ctx := context.Background() + require.NoError(t, statsutil.CallWithSCtx( + h.SPool(), + func(sctx sessionctx.Context) error { + require.NoError(t, pq.HandleDDLEvent(ctx, sctx, dropSchemaEvent)) + return nil + }, statsutil.FlagWrapTxn), + ) + + // The table should be removed from the priority queue. + isEmpty, err = pq.IsEmpty() + require.NoError(t, err) + require.True(t, isEmpty) +} + +func TestDropSchemaEventWithStaticPartition(t *testing.T) { + store, do := testkit.CreateMockStoreAndDomain(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("create table t (c1 int, c2 int, index idx(c1, c2)) partition by range columns (c1) (partition p0 values less than (5), partition p1 values less than (10))") + testKit.MustExec("set global tidb_partition_prune_mode='static'") + h := do.StatsHandle() + // Insert some data. + testKit.MustExec("insert into t values (1,2),(6,6)") + require.NoError(t, h.DumpStatsDeltaToKV(true)) + require.NoError(t, h.Update(context.Background(), do.InfoSchema())) + + statistics.AutoAnalyzeMinCnt = 0 + defer func() { + statistics.AutoAnalyzeMinCnt = 1000 + }() + + pq := priorityqueue.NewAnalysisPriorityQueue(h) + defer pq.Close() + require.NoError(t, pq.Initialize()) + isEmpty, err := pq.IsEmpty() + require.NoError(t, err) + require.False(t, isEmpty) + l, err := pq.Len() + require.NoError(t, err) + require.Equal(t, l, 2) + + // Drop schema. + testKit.MustExec("drop database test") + + // Find the drop schema event. + dropSchemaEvent := findEvent(h.DDLEventCh(), model.ActionDropSchema) + require.NotNil(t, dropSchemaEvent) + + // Handle the drop schema event. + require.NoError(t, h.HandleDDLEvent(dropSchemaEvent)) + + ctx := context.Background() + require.NoError(t, statsutil.CallWithSCtx( + h.SPool(), + func(sctx sessionctx.Context) error { + require.NoError(t, pq.HandleDDLEvent(ctx, sctx, dropSchemaEvent)) + return nil + }, statsutil.FlagWrapTxn), + ) + + // The table should be removed from the priority queue. + isEmpty, err = pq.IsEmpty() + require.NoError(t, err) + require.True(t, isEmpty) +} + const tiflashReplicaLease = 600 * time.Millisecond func TestVectorIndexTriggerAutoAnalyze(t *testing.T) { @@ -781,3 +904,50 @@ func TestVectorIndexTriggerAutoAnalyze(t *testing.T) { // No event is found require.Nil(t, addIndexEvent) } + +func TestAddIndexTriggerAutoAnalyzeWithStatsVersion1(t *testing.T) { + store, do := testkit.CreateMockStoreAndDomain(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("set @@global.tidb_analyze_version=1;") + testKit.MustExec("use test") + testKit.MustExec("create table t (c1 int, c2 int, index idx(c1, c2)) partition by range columns (c1) (partition p0 values less than (5), partition p1 values less than (10))") + is := do.InfoSchema() + tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + tableInfo := tbl.Meta() + h := do.StatsHandle() + // Analyze table. + testKit.MustExec("analyze table t") + require.NoError(t, h.Update(context.Background(), do.InfoSchema())) + // Insert some data. + testKit.MustExec("insert into t values (1,2),(2,2)") + require.NoError(t, h.DumpStatsDeltaToKV(true)) + require.NoError(t, h.Update(context.Background(), do.InfoSchema())) + // Add two indexes. + testKit.MustExec("alter table t add index idx1(c1)") + testKit.MustExec("alter table t add index idx2(c2)") + + statistics.AutoAnalyzeMinCnt = 0 + defer func() { + statistics.AutoAnalyzeMinCnt = 1000 + }() + + pq := priorityqueue.NewAnalysisPriorityQueue(h) + defer pq.Close() + require.NoError(t, pq.Initialize()) + isEmpty, err := pq.IsEmpty() + require.NoError(t, err) + require.False(t, isEmpty) + job, err := pq.Peek() + require.NoError(t, err) + require.Equal(t, tableInfo.ID, job.GetTableID()) + valid, _ := job.ValidateAndPrepare(testKit.Session()) + require.True(t, valid) + require.NoError(t, job.Analyze(h, do.SysProcTracker())) + + // Check the stats of the indexes. + tableStats := h.GetTableStats(tableInfo) + require.True(t, tableStats.GetIdx(1).IsAnalyzed()) + require.True(t, tableStats.GetIdx(2).IsAnalyzed()) + require.True(t, tableStats.GetIdx(3).IsAnalyzed()) +} diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go index af6fc37e93a6a..0e32590ff6aa3 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/queue_test.go @@ -19,6 +19,7 @@ import ( "testing" "time" + "github.com/pingcap/tidb/pkg/meta/model" pmodel "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/statistics" @@ -217,6 +218,10 @@ func testProcessDMLChanges(t *testing.T, partitioned bool) { job2, err := pq.Pop() require.NoError(t, err) require.Equal(t, tbl2.Meta().ID, job2.GetTableID()) + valid, _ := job1.ValidateAndPrepare(tk.Session()) + require.True(t, valid) + valid, _ = job2.ValidateAndPrepare(tk.Session()) + require.True(t, valid) require.NoError(t, job1.Analyze(handle, dom.SysProcTracker())) require.NoError(t, job2.Analyze(handle, dom.SysProcTracker())) require.NoError(t, handle.Update(ctx, dom.InfoSchema())) @@ -330,6 +335,8 @@ func TestProcessDMLChangesWithRunningJobs(t *testing.T) { require.Equal(t, tbl2.Meta().ID, job2.GetTableID(), "t1 should not be in the queue since it's a running job") // Analyze the job. + valid, _ := job1.ValidateAndPrepare(tk.Session()) + require.True(t, valid) require.NoError(t, job1.Analyze(handle, dom.SysProcTracker())) // Add more rows to t1. @@ -380,7 +387,7 @@ func TestRequeueMustRetryJobs(t *testing.T) { require.NoError(t, err) require.NotNil(t, job) sctx := tk.Session().(sessionctx.Context) - ok, _ := job.IsValidToAnalyze(sctx) + ok, _ := job.ValidateAndPrepare(sctx) require.False(t, ok) // Insert more rows. @@ -582,3 +589,67 @@ func TestProcessDMLChangesWithLockedPartitionsAndStaticPruneMode(t *testing.T) { pid = tbl.Meta().Partition.Definitions[0].ID require.Equal(t, pid, job.GetTableID()) } + +func TestPQCanBeClosedAndReInitialized(t *testing.T) { + _, dom := testkit.CreateMockStoreAndDomain(t) + handle := dom.StatsHandle() + pq := priorityqueue.NewAnalysisPriorityQueue(handle) + defer pq.Close() + require.NoError(t, pq.Initialize()) + + // Close the priority queue. + pq.Close() + + // Check if the priority queue is closed. + require.False(t, pq.IsInitialized()) + + // Re-initialize the priority queue. + require.NoError(t, pq.Initialize()) + + // Check if the priority queue is initialized. + require.True(t, pq.IsInitialized()) +} + +func TestPQHandlesTableDeletionGracefully(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + handle := dom.StatsHandle() + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1 (a int)") + tk.MustExec("insert into t1 values (1)") + statistics.AutoAnalyzeMinCnt = 0 + defer func() { + statistics.AutoAnalyzeMinCnt = 1000 + }() + + ctx := context.Background() + require.NoError(t, handle.DumpStatsDeltaToKV(true)) + require.NoError(t, handle.Update(ctx, dom.InfoSchema())) + pq := priorityqueue.NewAnalysisPriorityQueue(handle) + defer pq.Close() + require.NoError(t, pq.Initialize()) + + // Check the priority queue is not empty. + l, err := pq.Len() + require.NoError(t, err) + require.NotEqual(t, 0, l) + + tbl, err := dom.InfoSchema().TableByName(ctx, pmodel.NewCIStr("test"), pmodel.NewCIStr("t1")) + require.NoError(t, err) + + // Drop the table and mock the table stats is removed from the cache. + tk.MustExec("drop table t1") + deleteEvent := findEvent(handle.DDLEventCh(), model.ActionDropTable) + require.NotNil(t, deleteEvent) + require.NoError(t, handle.HandleDDLEvent(deleteEvent)) + require.NoError(t, handle.Update(ctx, dom.InfoSchema())) + + // Make sure handle.Get() returns false. + _, ok := handle.Get(tbl.Meta().ID) + require.False(t, ok) + + require.NotPanics(t, func() { + pq.RefreshLastAnalysisDuration() + }) +} 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 f488e35398b50..7e1ec3983709d 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 @@ -34,43 +34,42 @@ const ( ) // StaticPartitionedTableAnalysisJob is a job for analyzing a static partitioned table. +// +//nolint:fieldalignment type StaticPartitionedTableAnalysisJob struct { - successHook JobHook - failureHook JobHook - TableSchema string - GlobalTableName string - StaticPartitionName string - // This is only for newly added indexes. - Indexes []string + successHook SuccessJobHook + failureHook FailureJobHook - Indicators GlobalTableID int64 StaticPartitionID int64 + IndexIDs map[int64]struct{} + Indicators TableStatsVer int Weight float64 + + // Lazy initialized. + SchemaName string + GlobalTableName string + StaticPartitionName string + IndexNames []string } // NewStaticPartitionTableAnalysisJob creates a job for analyzing a static partitioned table. func NewStaticPartitionTableAnalysisJob( - schema, globalTableName string, globalTableID int64, - partitionName string, partitionID int64, - indexes []string, + indexIDs map[int64]struct{}, tableStatsVer int, changePercentage float64, tableSize float64, lastAnalysisDuration time.Duration, ) *StaticPartitionedTableAnalysisJob { return &StaticPartitionedTableAnalysisJob{ - GlobalTableID: globalTableID, - TableSchema: schema, - GlobalTableName: globalTableName, - StaticPartitionID: partitionID, - StaticPartitionName: partitionName, - Indexes: indexes, - TableStatsVer: tableStatsVer, + GlobalTableID: globalTableID, + StaticPartitionID: partitionID, + IndexIDs: indexIDs, + TableStatsVer: tableStatsVer, Indicators: Indicators{ ChangePercentage: changePercentage, TableSize: tableSize, @@ -98,7 +97,7 @@ func (j *StaticPartitionedTableAnalysisJob) Analyze( } } else { if j.failureHook != nil { - j.failureHook(j) + j.failureHook(j, true) } } }() @@ -115,12 +114,12 @@ func (j *StaticPartitionedTableAnalysisJob) Analyze( } // RegisterSuccessHook registers a successHook function that will be called after the job can be marked as successful. -func (j *StaticPartitionedTableAnalysisJob) RegisterSuccessHook(hook JobHook) { +func (j *StaticPartitionedTableAnalysisJob) RegisterSuccessHook(hook SuccessJobHook) { j.successHook = hook } // RegisterFailureHook registers a failureHook function that will be called after the job can be marked as failed. -func (j *StaticPartitionedTableAnalysisJob) RegisterFailureHook(hook JobHook) { +func (j *StaticPartitionedTableAnalysisJob) RegisterFailureHook(hook FailureJobHook) { j.failureHook = hook } @@ -136,27 +135,74 @@ func (j *StaticPartitionedTableAnalysisJob) SetIndicators(indicators Indicators) // HasNewlyAddedIndex implements AnalysisJob. func (j *StaticPartitionedTableAnalysisJob) HasNewlyAddedIndex() bool { - return len(j.Indexes) > 0 + return len(j.IndexIDs) > 0 } -// IsValidToAnalyze checks whether the partition is valid to analyze. -// Only the specified static partition is checked. -func (j *StaticPartitionedTableAnalysisJob) IsValidToAnalyze( +// ValidateAndPrepare validates if the analysis job can run and prepares it for execution. +// For static partitioned tables, it checks: +// - Schema exists +// - Table exists and is partitioned +// - Specified partition exists +// - No recent failed analysis to avoid queue blocking +func (j *StaticPartitionedTableAnalysisJob) ValidateAndPrepare( sctx sessionctx.Context, ) (bool, string) { + callFailureHook := func(needRetry bool) { + if j.failureHook != nil { + j.failureHook(j, needRetry) + } + } + is := sctx.GetDomainInfoSchema() + tableInfo, ok := is.TableInfoByID(j.GlobalTableID) + if !ok { + callFailureHook(false) + return false, tableNotExist + } + dbID := tableInfo.DBID + schema, ok := is.SchemaByID(dbID) + if !ok { + callFailureHook(false) + return false, schemaNotExist + } + partitionInfo := tableInfo.GetPartitionInfo() + if partitionInfo == nil { + callFailureHook(false) + return false, notPartitionedTable + } + partitionName := "" + for _, partition := range partitionInfo.Definitions { + if partition.ID == j.StaticPartitionID { + partitionName = partition.Name.O + break + } + } + if partitionName == "" { + callFailureHook(false) + return false, partitionNotExist + } + indexNames := make([]string, 0, len(j.IndexIDs)) + for _, index := range tableInfo.Indices { + if _, ok := j.IndexIDs[index.ID]; ok { + indexNames = append(indexNames, index.Name.O) + } + } + + j.SchemaName = schema.Name.O + j.GlobalTableName = tableInfo.Name.O + j.StaticPartitionName = partitionName + j.IndexNames = indexNames + // Check whether the partition is valid to analyze. // For static partition table we only need to check the specified static partition. if j.StaticPartitionName != "" { partitionNames := []string{j.StaticPartitionName} if valid, failReason := isValidToAnalyze( sctx, - j.TableSchema, + j.SchemaName, j.GlobalTableName, partitionNames..., ); !valid { - if j.failureHook != nil { - j.failureHook(j) - } + callFailureHook(true) return false, failReason } } @@ -191,8 +237,8 @@ func (j *StaticPartitionedTableAnalysisJob) String() string { "\tLastAnalysisDuration: %s\n"+ "\tWeight: %.6f\n", j.getAnalyzeType(), - strings.Join(j.Indexes, ", "), - j.TableSchema, j.GlobalTableName, j.GlobalTableID, + strings.Join(j.IndexNames, ", "), + j.SchemaName, j.GlobalTableName, j.GlobalTableID, j.StaticPartitionName, j.StaticPartitionID, j.TableStatsVer, j.ChangePercentage, j.TableSize, j.LastAnalysisDuration, j.Weight, @@ -222,13 +268,25 @@ func (j *StaticPartitionedTableAnalysisJob) analyzeStaticPartitionIndexes( statsHandle statstypes.StatsHandle, sysProcTracker sysproctrack.Tracker, ) bool { - if len(j.Indexes) == 0 { + if len(j.IndexNames) == 0 { + return true + } + // For version 2, analyze one index will analyze all other indexes and columns. + // For version 1, analyze one index will only analyze the specified index. + analyzeVersion := sctx.GetSessionVars().AnalyzeVersion + if analyzeVersion == 1 { + for _, index := range j.IndexNames { + sql, params := j.GenSQLForAnalyzeStaticPartitionIndex(index) + if !exec.AutoAnalyze(sctx, statsHandle, sysProcTracker, j.TableStatsVer, sql, params...) { + return false + } + } return true } // Only analyze the first index. // This is because analyzing a single index also analyzes all other indexes and columns. // Therefore, to avoid redundancy, we prevent multiple analyses of the same partition. - firstIndex := j.Indexes[0] + firstIndex := j.IndexNames[0] sql, params := j.GenSQLForAnalyzeStaticPartitionIndex(firstIndex) return exec.AutoAnalyze(sctx, statsHandle, sysProcTracker, j.TableStatsVer, sql, params...) } @@ -236,7 +294,7 @@ func (j *StaticPartitionedTableAnalysisJob) analyzeStaticPartitionIndexes( // GenSQLForAnalyzeStaticPartition generates the SQL for analyzing the specified static partition. func (j *StaticPartitionedTableAnalysisJob) GenSQLForAnalyzeStaticPartition() (string, []any) { sql := "analyze table %n.%n partition %n" - params := []any{j.TableSchema, j.GlobalTableName, j.StaticPartitionName} + params := []any{j.SchemaName, j.GlobalTableName, j.StaticPartitionName} return sql, params } @@ -244,7 +302,23 @@ func (j *StaticPartitionedTableAnalysisJob) GenSQLForAnalyzeStaticPartition() (s // GenSQLForAnalyzeStaticPartitionIndex generates the SQL for analyzing the specified static partition index. func (j *StaticPartitionedTableAnalysisJob) GenSQLForAnalyzeStaticPartitionIndex(index string) (string, []any) { sql := "analyze table %n.%n partition %n index %n" - params := []any{j.TableSchema, j.GlobalTableName, j.StaticPartitionName, index} + params := []any{j.SchemaName, j.GlobalTableName, j.StaticPartitionName, index} return sql, params } + +// AsJSON converts the job to a JSON object. +func (j *StaticPartitionedTableAnalysisJob) AsJSON() statstypes.AnalysisJobJSON { + indexes := make([]int64, 0, len(j.IndexIDs)) + for index := range j.IndexIDs { + indexes = append(indexes, index) + } + return statstypes.AnalysisJobJSON{ + Type: string(j.getAnalyzeType()), + TableID: j.StaticPartitionID, + IndexIDs: indexes, + Weight: j.Weight, + Indicators: asJSONIndicators(j.Indicators), + HasNewlyAddedIndex: j.HasNewlyAddedIndex(), + } +} diff --git a/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job_test.go b/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job_test.go index 0444a8ba2a279..0d72b72d86910 100644 --- a/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job_test.go +++ b/pkg/statistics/handle/autoanalyze/priorityqueue/static_partitioned_table_analysis_job_test.go @@ -28,7 +28,7 @@ import ( func TestGenSQLForAnalyzeStaticPartitionedTable(t *testing.T) { job := &priorityqueue.StaticPartitionedTableAnalysisJob{ - TableSchema: "test_schema", + SchemaName: "test_schema", GlobalTableName: "test_table", StaticPartitionName: "p0", } @@ -44,7 +44,7 @@ func TestGenSQLForAnalyzeStaticPartitionedTable(t *testing.T) { func TestGenSQLForAnalyzeStaticPartitionedTableIndex(t *testing.T) { job := &priorityqueue.StaticPartitionedTableAnalysisJob{ - TableSchema: "test_schema", + SchemaName: "test_schema", GlobalTableName: "test_table", StaticPartitionName: "p0", } @@ -68,11 +68,15 @@ func TestAnalyzeStaticPartitionedTable(t *testing.T) { tk.MustExec("create table t (a int, b int, index idx(a)) partition by range (a) (partition p0 values less than (2), partition p1 values less than (4))") tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3)") + tableInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + partitionInfo := tableInfo.Meta().GetPartitionInfo() + require.NotNil(t, partitionInfo) + job := &priorityqueue.StaticPartitionedTableAnalysisJob{ - TableSchema: "test", - GlobalTableName: "t", - StaticPartitionName: "p0", - TableStatsVer: 2, + GlobalTableID: tableInfo.Meta().ID, + StaticPartitionID: partitionInfo.Definitions[0].ID, + TableStatsVer: 2, } // Before analyze the partition. @@ -84,6 +88,9 @@ func TestAnalyzeStaticPartitionedTable(t *testing.T) { tblStats := handle.GetPartitionStats(tbl.Meta(), pid) require.True(t, tblStats.Pseudo) + valid, failReason := job.ValidateAndPrepare(tk.Session()) + require.True(t, valid) + require.Equal(t, "", failReason) job.Analyze(handle, dom.SysProcTracker()) // Check the result of analyze. is = dom.InfoSchema() @@ -99,15 +106,17 @@ func TestAnalyzeStaticPartitionedTableIndexes(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, index idx(a), index idx1(b)) partition by range (a) (partition p0 values less than (2), partition p1 values less than (4))") tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3)") + tableInfo, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + partitionInfo := tableInfo.Meta().GetPartitionInfo() + require.NotNil(t, partitionInfo) job := &priorityqueue.StaticPartitionedTableAnalysisJob{ - TableSchema: "test", - GlobalTableName: "t", - StaticPartitionName: "p0", - Indexes: []string{"idx", "idx1"}, - TableStatsVer: 2, + GlobalTableID: tableInfo.Meta().ID, + StaticPartitionID: partitionInfo.Definitions[0].ID, + IndexIDs: map[int64]struct{}{1: {}, 2: {}}, + TableStatsVer: 2, } handle := dom.StatsHandle() // Before analyze indexes. @@ -118,6 +127,10 @@ func TestAnalyzeStaticPartitionedTableIndexes(t *testing.T) { tblStats := handle.GetPartitionStats(tbl.Meta(), pid) require.False(t, tblStats.GetIdx(1).IsAnalyzed()) + valid, failReason := job.ValidateAndPrepare(tk.Session()) + require.True(t, valid) + require.Equal(t, "", failReason) + job.Analyze(handle, dom.SysProcTracker()) // Check the result of analyze. is = dom.InfoSchema() @@ -135,54 +148,58 @@ func TestAnalyzeStaticPartitionedTableIndexes(t *testing.T) { require.Len(t, rows, 4) } -func TestStaticPartitionedTableIsValidToAnalyze(t *testing.T) { - store := testkit.CreateMockStore(t) +func TestStaticPartitionedTableValidateAndPrepare(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - tk.MustExec("use test") tk.MustExec(session.CreateAnalyzeJobs) + tk.MustExec("create schema example_schema") + tk.MustExec("use example_schema") + 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) job := &priorityqueue.StaticPartitionedTableAnalysisJob{ - TableSchema: "example_schema", - GlobalTableName: "example_table", - StaticPartitionName: "p0", - Weight: 2, + GlobalTableID: tableInfo.Meta().ID, + StaticPartitionID: partitionInfo.Definitions[0].ID, + Weight: 2, } initJobs(tk) - insertMultipleFinishedJobs(tk, job.GlobalTableName, "p0") - insertMultipleFinishedJobs(tk, job.GlobalTableName, "p1") + insertMultipleFinishedJobs(tk, "example_table", "p0") + insertMultipleFinishedJobs(tk, "example_table", "p1") se := tk.Session() sctx := se.(sessionctx.Context) - valid, failReason := job.IsValidToAnalyze(sctx) + valid, failReason := job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) // Insert some failed jobs. // Just failed. now := tk.MustQuery("select now()").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.GlobalTableName, "p0", now) + insertFailedJobWithStartTime(tk, job.SchemaName, "example_table", "p0", now) // Note: The failure reason is not checked in this test because the time duration can sometimes be inaccurate.(not now) - valid, _ = job.IsValidToAnalyze(sctx) + valid, _ = job.ValidateAndPrepare(sctx) require.False(t, valid) // Failed 10 seconds ago. startTime := tk.MustQuery("select now() - interval 10 second").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.GlobalTableName, "p0", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, "example_table", "p0", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.False(t, valid) require.Equal(t, "last failed analysis duration is less than 2 times the average analysis duration", failReason) // Failed long long ago. startTime = tk.MustQuery("select now() - interval 300 day").Rows()[0][0].(string) - insertFailedJobWithStartTime(tk, job.TableSchema, job.GlobalTableName, "p0", startTime) - valid, failReason = job.IsValidToAnalyze(sctx) + insertFailedJobWithStartTime(tk, job.SchemaName, "example_table", "p0", startTime) + valid, failReason = job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) // Do not affect other partitions. job = &priorityqueue.StaticPartitionedTableAnalysisJob{ - TableSchema: "example_schema", - GlobalTableName: "example_table", - StaticPartitionName: "p1", - Weight: 2, + GlobalTableID: tableInfo.Meta().ID, + StaticPartitionID: partitionInfo.Definitions[1].ID, + Weight: 2, } - valid, failReason = job.IsValidToAnalyze(sctx) + valid, failReason = job.ValidateAndPrepare(sctx) require.True(t, valid) require.Equal(t, "", failReason) } diff --git a/pkg/statistics/handle/autoanalyze/refresher/BUILD.bazel b/pkg/statistics/handle/autoanalyze/refresher/BUILD.bazel index b50565d9e3a77..b8c337db3ddc4 100644 --- a/pkg/statistics/handle/autoanalyze/refresher/BUILD.bazel +++ b/pkg/statistics/handle/autoanalyze/refresher/BUILD.bazel @@ -33,7 +33,7 @@ go_test( "worker_test.go", ], flaky = True, - shard_count = 9, + shard_count = 10, deps = [ ":refresher", "//pkg/parser/model", diff --git a/pkg/statistics/handle/autoanalyze/refresher/refresher.go b/pkg/statistics/handle/autoanalyze/refresher/refresher.go index 99e1c47cf3dfa..06cf3ca0b36a9 100644 --- a/pkg/statistics/handle/autoanalyze/refresher/refresher.go +++ b/pkg/statistics/handle/autoanalyze/refresher/refresher.go @@ -144,7 +144,7 @@ func (r *Refresher) AnalyzeHighestPriorityTables(sctx sessionctx.Context) bool { statslogutil.StatsLogger().Debug("Job already running, skipping", zap.Int64("tableID", job.GetTableID())) continue } - if valid, failReason := job.IsValidToAnalyze(sctx); !valid { + if valid, failReason := job.ValidateAndPrepare(sctx); !valid { statslogutil.SingletonStatsSamplerLogger().Info( "Table not ready for analysis", zap.String("reason", failReason), @@ -188,6 +188,11 @@ func (r *Refresher) AnalyzeHighestPriorityTables(sctx sessionctx.Context) bool { return false } +// GetPriorityQueueSnapshot returns the stats priority queue. +func (r *Refresher) GetPriorityQueueSnapshot() (statstypes.PriorityQueueSnapshot, error) { + return r.jobs.Snapshot() +} + func (r *Refresher) setAutoAnalysisTimeWindow( parameters map[string]string, ) error { @@ -256,6 +261,7 @@ func (*Refresher) OnBecomeOwner() { // OnRetireOwner is used to handle the event when the current TiDB instance retires from being the stats owner. func (r *Refresher) OnRetireOwner() { - // Stop the worker and close the queue. + // Theoretically we should stop the worker here, but stopping analysis jobs can be time-consuming. + // To avoid blocking etcd leader re-election, we only close the priority queue. r.jobs.Close() } diff --git a/pkg/statistics/handle/autoanalyze/refresher/refresher_test.go b/pkg/statistics/handle/autoanalyze/refresher/refresher_test.go index 4061fa9ef8c4b..c3c4d4aa58cb5 100644 --- a/pkg/statistics/handle/autoanalyze/refresher/refresher_test.go +++ b/pkg/statistics/handle/autoanalyze/refresher/refresher_test.go @@ -377,6 +377,53 @@ func TestAnalyzeHighestPriorityTablesConcurrently(t *testing.T) { require.Equal(t, int64(6), tblStats3.RealtimeCount) } +func TestDoNotRetryTableNotExistJob(t *testing.T) { + statistics.AutoAnalyzeMinCnt = 0 + defer func() { + statistics.AutoAnalyzeMinCnt = 1000 + }() + + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t1 (a int, b int, index idx(a))") + // Insert some data. + tk.MustExec("insert into t1 values (1, 1)") + handle := dom.StatsHandle() + require.NoError(t, handle.DumpStatsDeltaToKV(true)) + require.NoError(t, handle.Update(context.Background(), dom.InfoSchema())) + sysProcTracker := dom.SysProcTracker() + r := refresher.NewRefresher(handle, sysProcTracker, dom.DDLNotifier()) + defer r.Close() + + require.NoError(t, util.CallWithSCtx(handle.SPool(), func(sctx sessionctx.Context) error { + require.True(t, r.AnalyzeHighestPriorityTables(sctx)) + return nil + })) + require.Equal(t, 0, r.Len()) + r.WaitAutoAnalyzeFinishedForTest() + + // Insert more data. + tk.MustExec("insert into t1 values (4, 4), (5, 5), (6, 6)") + require.NoError(t, handle.DumpStatsDeltaToKV(true)) + require.NoError(t, handle.Update(context.Background(), dom.InfoSchema())) + + r.ProcessDMLChangesForTest() + require.Equal(t, 1, r.Len()) + + // Drop the database. + tk.MustExec("drop database test") + + require.NoError(t, util.CallWithSCtx(handle.SPool(), func(sctx sessionctx.Context) error { + require.False(t, r.AnalyzeHighestPriorityTables(sctx)) + return nil + })) + require.Equal(t, 0, r.Len()) + + r.ProcessDMLChangesForTest() + require.Equal(t, 0, r.Len()) +} + func TestAnalyzeHighestPriorityTablesWithFailedAnalysis(t *testing.T) { statistics.AutoAnalyzeMinCnt = 0 defer func() { diff --git a/pkg/statistics/handle/autoanalyze/refresher/worker_test.go b/pkg/statistics/handle/autoanalyze/refresher/worker_test.go index f92114b1b8f0c..40c4c87e28c21 100644 --- a/pkg/statistics/handle/autoanalyze/refresher/worker_test.go +++ b/pkg/statistics/handle/autoanalyze/refresher/worker_test.go @@ -42,14 +42,14 @@ func (m *mockAnalysisJob) Analyze(h statstypes.StatsHandle, t sysproctrack.Track time.Sleep(50 * time.Millisecond) // Simulate some work return nil } -func (m *mockAnalysisJob) RegisterSuccessHook(priorityqueue.JobHook) { +func (m *mockAnalysisJob) RegisterSuccessHook(priorityqueue.SuccessJobHook) { panic("not implemented") } -func (m *mockAnalysisJob) RegisterFailureHook(priorityqueue.JobHook) { +func (m *mockAnalysisJob) RegisterFailureHook(priorityqueue.FailureJobHook) { panic("not implemented") } func (m *mockAnalysisJob) String() string { return "mockAnalysisJob" } -func (m *mockAnalysisJob) IsValidToAnalyze(sessionctx.Context) (bool, string) { +func (m *mockAnalysisJob) ValidateAndPrepare(sessionctx.Context) (bool, string) { panic("not implemented") } func (m *mockAnalysisJob) SetWeight(weight float64) { @@ -67,6 +67,9 @@ func (m *mockAnalysisJob) GetIndicators() priorityqueue.Indicators { func (m *mockAnalysisJob) SetIndicators(indicators priorityqueue.Indicators) { panic("not implemented") } +func (m *mockAnalysisJob) AsJSON() statstypes.AnalysisJobJSON { + panic("not implemented") +} func TestWorker(t *testing.T) { _, dom := testkit.CreateMockStoreAndDomain(t) diff --git a/pkg/statistics/handle/bootstrap.go b/pkg/statistics/handle/bootstrap.go index 8504e18f3e53a..efde5b994aac2 100644 --- a/pkg/statistics/handle/bootstrap.go +++ b/pkg/statistics/handle/bootstrap.go @@ -134,7 +134,7 @@ func (*Handle) initStatsHistograms4ChunkLite(cache statstypes.StatsCache, iter * id := row.GetInt64(2) ndv := row.GetInt64(3) nullCount := row.GetInt64(5) - statsVer := row.GetInt64(7) + statsVer := row.GetInt64(8) // All the objects in the table share the same stats version. if statsVer != statistics.Version0 { table.StatsVer = int(statsVer) @@ -244,15 +244,20 @@ func (h *Handle) initStatsHistograms4Chunk(is infoschema.InfoSchema, cache stats Flag: row.GetInt64(10), StatsVer: statsVer, } - // primary key column has no stats info, because primary key's is_index is false. so it cannot load the topn - col.StatsLoadedStatus = statistics.NewStatsAllEvictedStatus() lastAnalyzePos.Copy(&col.LastAnalyzePos) table.SetCol(hist.ID, col) table.ColAndIdxExistenceMap.InsertCol(colInfo.ID, statsVer != statistics.Version0 || ndv > 0 || nullCount > 0) if statsVer != statistics.Version0 { // The LastAnalyzeVersion is added by ALTER table so its value might be 0. table.LastAnalyzeVersion = max(table.LastAnalyzeVersion, version) + // We will also set int primary key's loaded status to evicted. + col.StatsLoadedStatus = statistics.NewStatsAllEvictedStatus() + } else if col.NDV > 0 || col.NullCount > 0 { + // If NDV > 0 or NullCount > 0, we also treat it as the one having its statistics. See the comments of StatsAvailable in column.go. + // So we align its status as evicted too. + col.StatsLoadedStatus = statistics.NewStatsAllEvictedStatus() } + // Otherwise the column's stats is not initialized. } } if table != nil { @@ -261,8 +266,19 @@ func (h *Handle) initStatsHistograms4Chunk(is infoschema.InfoSchema, cache stats } } +// initStatsHistogramsSQLGen generates the SQL to load all stats_histograms records. +// We need to read all the records since we need to do initialization of table.ColAndIdxExistenceMap. +func initStatsHistogramsSQLGen(isPaging bool) string { + selectPrefix := "select /*+ ORDER_INDEX(mysql.stats_histograms,tbl) */ HIGH_PRIORITY table_id, is_index, hist_id, distinct_count, version, null_count, cm_sketch, tot_col_size, stats_ver, correlation, flag, last_analyze_pos from mysql.stats_histograms" + orderSuffix := " order by table_id" + if !isPaging { + return selectPrefix + orderSuffix + } + return selectPrefix + " where table_id >= %? and table_id < %?" + orderSuffix +} + func (h *Handle) initStatsHistogramsLite(ctx context.Context, cache statstypes.StatsCache) error { - sql := "select /*+ ORDER_INDEX(mysql.stats_histograms,tbl)*/ HIGH_PRIORITY table_id, is_index, hist_id, distinct_count, version, null_count, tot_col_size, stats_ver, correlation, flag, last_analyze_pos from mysql.stats_histograms order by table_id" + sql := initStatsHistogramsSQLGen(false) rc, err := util.Exec(h.initStatsCtx, sql) if err != nil { return errors.Trace(err) @@ -285,7 +301,7 @@ func (h *Handle) initStatsHistogramsLite(ctx context.Context, cache statstypes.S } func (h *Handle) initStatsHistograms(is infoschema.InfoSchema, cache statstypes.StatsCache) error { - sql := "select /*+ ORDER_INDEX(mysql.stats_histograms,tbl)*/ HIGH_PRIORITY table_id, is_index, hist_id, distinct_count, version, null_count, cm_sketch, tot_col_size, stats_ver, correlation, flag, last_analyze_pos from mysql.stats_histograms order by table_id" + sql := initStatsHistogramsSQLGen(false) rc, err := util.Exec(h.initStatsCtx, sql) if err != nil { return errors.Trace(err) @@ -319,10 +335,7 @@ func (h *Handle) initStatsHistogramsByPaging(is infoschema.InfoSchema, cache sta }() sctx := se.(sessionctx.Context) - // Why do we need to add `is_index=1` in the SQL? - // because it is aligned to the `initStatsTopN` function, which only loads the topn of the index too. - // the other will be loaded by sync load. - sql := "select HIGH_PRIORITY table_id, is_index, hist_id, distinct_count, version, null_count, cm_sketch, tot_col_size, stats_ver, correlation, flag, last_analyze_pos from mysql.stats_histograms where table_id >= %? and table_id < %? and is_index=1" + sql := initStatsHistogramsSQLGen(true) rc, err := util.Exec(sctx, sql, task.StartTid, task.EndTid) if err != nil { return errors.Trace(err) @@ -363,7 +376,7 @@ func (h *Handle) initStatsHistogramsConcurrency(is infoschema.InfoSchema, cache } func (*Handle) initStatsTopN4Chunk(cache statstypes.StatsCache, iter *chunk.Iterator4Chunk, totalMemory uint64) { - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { return } affectedIndexes := make(map[*statistics.Index]struct{}) @@ -401,8 +414,20 @@ func (*Handle) initStatsTopN4Chunk(cache statstypes.StatsCache, iter *chunk.Iter } } +// initStatsTopNSQLGen generates the SQL to load all stats_top_n records. +// We only need to load the indexes' since we only record the existence of columns in ColAndIdxExistenceMap. +// The stats of the column is not loaded during the bootstrap process. +func initStatsTopNSQLGen(isPaging bool) string { + selectPrefix := "select /*+ ORDER_INDEX(mysql.stats_top_n,tbl) */ HIGH_PRIORITY table_id, hist_id, value, count from mysql.stats_top_n where is_index = 1" + orderSuffix := " order by table_id" + if !isPaging { + return selectPrefix + orderSuffix + } + return selectPrefix + " and table_id >= %? and table_id < %?" + orderSuffix +} + func (h *Handle) initStatsTopN(cache statstypes.StatsCache, totalMemory uint64) error { - sql := "select /*+ ORDER_INDEX(mysql.stats_top_n,tbl)*/ HIGH_PRIORITY table_id, hist_id, value, count from mysql.stats_top_n where is_index = 1 order by table_id" + sql := initStatsTopNSQLGen(false) rc, err := util.Exec(h.initStatsCtx, sql) if err != nil { return errors.Trace(err) @@ -435,7 +460,7 @@ func (h *Handle) initStatsTopNByPaging(cache statstypes.StatsCache, task initsta } }() sctx := se.(sessionctx.Context) - sql := "select HIGH_PRIORITY table_id, hist_id, value, count from mysql.stats_top_n where is_index = 1 and table_id >= %? and table_id < %? order by table_id" + sql := initStatsTopNSQLGen(true) rc, err := util.Exec(sctx, sql, task.StartTid, task.EndTid) if err != nil { return errors.Trace(err) @@ -458,20 +483,20 @@ func (h *Handle) initStatsTopNByPaging(cache statstypes.StatsCache, task initsta } func (h *Handle) initStatsTopNConcurrency(cache statstypes.StatsCache, totalMemory uint64) error { - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { return nil } var maxTid = maxTidRecord.tid.Load() tid := int64(0) ls := initstats.NewRangeWorker("TopN", func(task initstats.Task) error { - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { return nil } return h.initStatsTopNByPaging(cache, task, totalMemory) }, uint64(maxTid), uint64(initStatsStep), initStatsPercentageInterval) ls.LoadStats() for tid <= maxTid { - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { break } ls.SendTask(initstats.Task{ @@ -619,8 +644,20 @@ func (*Handle) initStatsBuckets4Chunk(cache statstypes.StatsCache, iter *chunk.I } } +// initStatsBucketsSQLGen generates the SQL to load all stats_top_n records. +// We only need to load the indexes' since we only record the existence of columns in ColAndIdxExistenceMap. +// The stats of the column is not loaded during the bootstrap process. +func initStatsBucketsSQLGen(isPaging bool) string { + selectPrefix := "select /*+ ORDER_INDEX(mysql.stats_buckets,tbl) */ HIGH_PRIORITY table_id, is_index, hist_id, count, repeats, lower_bound, upper_bound, ndv from mysql.stats_buckets where is_index=1" + orderSuffix := " order by table_id" + if !isPaging { + return selectPrefix + orderSuffix + } + return selectPrefix + " and table_id >= %? and table_id < %?" + orderSuffix +} + func (h *Handle) initStatsBuckets(cache statstypes.StatsCache, totalMemory uint64) error { - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { return nil } if config.GetGlobalConfig().Performance.ConcurrentlyInitStats { @@ -629,7 +666,7 @@ func (h *Handle) initStatsBuckets(cache statstypes.StatsCache, totalMemory uint6 return errors.Trace(err) } } else { - sql := "select /*+ ORDER_INDEX(mysql.stats_buckets,tbl)*/ HIGH_PRIORITY table_id, is_index, hist_id, count, repeats, lower_bound, upper_bound, ndv from mysql.stats_buckets order by table_id, is_index, hist_id, bucket_id" + sql := initStatsBucketsSQLGen(false) rc, err := util.Exec(h.initStatsCtx, sql) if err != nil { return errors.Trace(err) @@ -668,7 +705,7 @@ func (h *Handle) initStatsBucketsByPaging(cache statstypes.StatsCache, task init } }() sctx := se.(sessionctx.Context) - sql := "select HIGH_PRIORITY table_id, is_index, hist_id, count, repeats, lower_bound, upper_bound, ndv from mysql.stats_buckets where table_id >= %? and table_id < %? order by table_id, is_index, hist_id, bucket_id" + sql := initStatsBucketsSQLGen(true) rc, err := util.Exec(sctx, sql, task.StartTid, task.EndTid) if err != nil { return errors.Trace(err) @@ -691,13 +728,13 @@ func (h *Handle) initStatsBucketsByPaging(cache statstypes.StatsCache, task init } func (h *Handle) initStatsBucketsConcurrency(cache statstypes.StatsCache, totalMemory uint64) error { - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { return nil } var maxTid = maxTidRecord.tid.Load() tid := int64(0) ls := initstats.NewRangeWorker("bucket", func(task initstats.Task) error { - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { return nil } return h.initStatsBucketsByPaging(cache, task) @@ -709,7 +746,7 @@ func (h *Handle) initStatsBucketsConcurrency(cache statstypes.StatsCache, totalM EndTid: tid + initStatsStep, }) tid += initStatsStep - if isFullCache(cache, totalMemory) { + if IsFullCacheFunc(cache, totalMemory) { break } } @@ -719,8 +756,10 @@ func (h *Handle) initStatsBucketsConcurrency(cache statstypes.StatsCache, totalM // InitStatsLite initiates the stats cache. The function is liter and faster than InitStats. // 1. Basic stats meta data is loaded.(count, modify count, etc.) -// 2. Column/index stats are loaded. (only histogram) +// 2. Column/index stats are marked as existing or not by initializing the table.ColAndIdxExistenceMap, based on data from mysql.stats_histograms) // 3. TopN, Bucket, FMSketch are not loaded. +// And to work with auto analyze's needs, we need to read all the tables' stats meta into memory. +// The sync/async load of the stats or other process haven't done a full initialization of the table.ColAndIdxExistenceMap. So we need to it here. func (h *Handle) InitStatsLite(ctx context.Context) (err error) { defer func() { _, err1 := util.Exec(h.initStatsCtx, "commit") @@ -750,7 +789,10 @@ func (h *Handle) InitStatsLite(ctx context.Context) (err error) { // InitStats initiates the stats cache. // 1. Basic stats meta data is loaded.(count, modify count, etc.) -// 2. Column/index stats are loaded. (histogram, topn, buckets, FMSketch) +// 2. Index stats are fully loaded. (histogram, topn, buckets) +// 2. Column stats are marked as existing or not by initializing the table.ColAndIdxExistenceMap, based on data from mysql.stats_histograms) +// To work with auto-analyze's needs, we need to read all stats meta info into memory. +// The sync/async load of the stats or other process haven't done a full initialization of the table.ColAndIdxExistenceMap. So we need to it here. func (h *Handle) InitStats(ctx context.Context, is infoschema.InfoSchema) (err error) { totalMemory, err := memory.MemTotal() if err != nil { @@ -809,6 +851,9 @@ func (h *Handle) InitStats(ctx context.Context, is infoschema.InfoSchema) (err e return nil } +// IsFullCacheFunc is whether the cache is full or not. but we can only change it when to test +var IsFullCacheFunc func(cache statstypes.StatsCache, total uint64) bool = isFullCache + func isFullCache(cache statstypes.StatsCache, total uint64) bool { memQuota := variable.StatsCacheMemQuota.Load() return (uint64(cache.MemConsumed()) >= total/4) || (cache.MemConsumed() >= memQuota && memQuota != 0) diff --git a/pkg/statistics/handle/cache/bench_test.go b/pkg/statistics/handle/cache/bench_test.go index 7990a1f8a47fa..aaf4e64fd433a 100644 --- a/pkg/statistics/handle/cache/bench_test.go +++ b/pkg/statistics/handle/cache/bench_test.go @@ -35,7 +35,9 @@ func benchCopyAndUpdate(b *testing.B, c types.StatsCache) { defer wg.Done() t1 := testutil.NewMockStatisticsTable(1, 1, true, false, false) t1.PhysicalID = rand.Int63() - c.UpdateStatsCache([]*statistics.Table{t1}, nil) + c.UpdateStatsCache(types.CacheUpdate{ + Updated: []*statistics.Table{t1}, + }) }() } wg.Wait() @@ -51,7 +53,9 @@ func benchPutGet(b *testing.B, c types.StatsCache) { defer wg.Done() t1 := testutil.NewMockStatisticsTable(1, 1, true, false, false) t1.PhysicalID = rand.Int63() - c.UpdateStatsCache([]*statistics.Table{t1}, nil) + c.UpdateStatsCache(types.CacheUpdate{ + Updated: []*statistics.Table{t1}, + }) }(i) } for i := 0; i < b.N; i++ { @@ -73,7 +77,9 @@ func benchGet(b *testing.B, c types.StatsCache) { defer w.Done() t1 := testutil.NewMockStatisticsTable(1, 1, true, false, false) t1.PhysicalID = rand.Int63() - c.UpdateStatsCache([]*statistics.Table{t1}, nil) + c.UpdateStatsCache(types.CacheUpdate{ + Updated: []*statistics.Table{t1}, + }) }(i) } w.Wait() diff --git a/pkg/statistics/handle/cache/internal/inner.go b/pkg/statistics/handle/cache/internal/inner.go index 607de40de7d34..dc6b1d0af5371 100644 --- a/pkg/statistics/handle/cache/internal/inner.go +++ b/pkg/statistics/handle/cache/internal/inner.go @@ -41,4 +41,6 @@ type StatsCacheInner interface { SetCapacity(int64) // Close stops the cache Close() + // TriggerEvict triggers the cache to evict some items + TriggerEvict() } diff --git a/pkg/statistics/handle/cache/internal/lfu/lfu_cache.go b/pkg/statistics/handle/cache/internal/lfu/lfu_cache.go index f3e93454b16cc..4a16300e4b8c4 100644 --- a/pkg/statistics/handle/cache/internal/lfu/lfu_cache.go +++ b/pkg/statistics/handle/cache/internal/lfu/lfu_cache.go @@ -251,3 +251,8 @@ func (s *LFU) addCost(v int64) { newv := s.cost.Add(v) metrics.CostGauge.Set(float64(newv)) } + +// TriggerEvict implements statsCacheInner +func (s *LFU) TriggerEvict() { + s.triggerEvict() +} diff --git a/pkg/statistics/handle/cache/internal/mapcache/map_cache.go b/pkg/statistics/handle/cache/internal/mapcache/map_cache.go index 37144b1c70128..8be0d8e08ed7e 100644 --- a/pkg/statistics/handle/cache/internal/mapcache/map_cache.go +++ b/pkg/statistics/handle/cache/internal/mapcache/map_cache.go @@ -131,3 +131,6 @@ func (*MapCache) SetCapacity(int64) {} // Close implements StatsCacheInner func (*MapCache) Close() {} + +// TriggerEvict implements statsCacheInner +func (*MapCache) TriggerEvict() {} diff --git a/pkg/statistics/handle/cache/stats_table_row_cache.go b/pkg/statistics/handle/cache/stats_table_row_cache.go index 9b4360282b2ac..8e10d259b02c1 100644 --- a/pkg/statistics/handle/cache/stats_table_row_cache.go +++ b/pkg/statistics/handle/cache/stats_table_row_cache.go @@ -239,28 +239,27 @@ func getColLengthTables(sctx sessionctx.Context, tableIDs ...int64) (map[tableHi // GetDataAndIndexLength gets the data and index length of the table. func (c *StatsTableRowCache) GetDataAndIndexLength(info *model.TableInfo, physicalID int64, rowCount uint64) (dataLength, indexLength uint64) { - columnLength := make(map[string]uint64, len(info.Columns)) - for _, col := range info.Columns { + columnLength := make([]uint64, len(info.Columns)) + for i, col := range info.Columns { if col.State != model.StatePublic { continue } - length := col.FieldType.StorageLength() - if length != types.VarStorageLen { - columnLength[col.Name.L] = rowCount * uint64(length) + var length uint64 + if storageLen := col.FieldType.StorageLength(); storageLen != types.VarStorageLen { + length = rowCount * uint64(storageLen) } else { - length := c.GetColLength(tableHistID{tableID: physicalID, histID: col.ID}) - columnLength[col.Name.L] = length + length = c.GetColLength(tableHistID{tableID: physicalID, histID: col.ID}) } - } - for _, length := range columnLength { dataLength += length + columnLength[i] = length } + for _, idx := range info.Indices { if idx.State != model.StatePublic { continue } if info.GetPartitionInfo() != nil { - // Global indexes calcuated in table level. + // Global indexes calculated in table level. if idx.Global && info.ID != physicalID { continue } @@ -271,7 +270,7 @@ func (c *StatsTableRowCache) GetDataAndIndexLength(info *model.TableInfo, physic } for _, col := range idx.Columns { if col.Length == types.UnspecifiedLength { - indexLength += columnLength[col.Name.L] + indexLength += columnLength[col.Offset] } else { indexLength += rowCount * uint64(col.Length) } diff --git a/pkg/statistics/handle/cache/statscache.go b/pkg/statistics/handle/cache/statscache.go index c6078fa0005c4..a6c6979cd87ed 100644 --- a/pkg/statistics/handle/cache/statscache.go +++ b/pkg/statistics/handle/cache/statscache.go @@ -16,6 +16,8 @@ package cache import ( "context" + "slices" + "strconv" "sync/atomic" "time" @@ -64,19 +66,35 @@ func NewStatsCacheImplForTest() (types.StatsCache, error) { } // Update reads stats meta from store and updates the stats map. -func (s *StatsCacheImpl) Update(ctx context.Context, is infoschema.InfoSchema) error { +func (s *StatsCacheImpl) Update(ctx context.Context, is infoschema.InfoSchema, tableAndPartitionIDs ...int64) error { start := time.Now() lastVersion := s.GetNextCheckVersionWithOffset() var ( - rows []chunk.Row - err error + skipMoveForwardStatsCache bool + rows []chunk.Row + err error ) if err := util.CallWithSCtx(s.statsHandle.SPool(), func(sctx sessionctx.Context) error { - rows, _, err = util.ExecRows( - sctx, - "SELECT version, table_id, modify_count, count, snapshot from mysql.stats_meta where version > %? order by version", - lastVersion, - ) + query := "SELECT version, table_id, modify_count, count, snapshot from mysql.stats_meta where version > %? " + args := []any{lastVersion} + + if len(tableAndPartitionIDs) > 0 { + // When updating specific tables, we skip incrementing the max stats version to avoid missing + // delta updates for other tables. The max version only advances when doing a full update. + skipMoveForwardStatsCache = true + // Sort and deduplicate the table IDs to remove duplicates + slices.Sort(tableAndPartitionIDs) + tableAndPartitionIDs = slices.Compact(tableAndPartitionIDs) + // Convert table IDs to strings since the SQL executor only accepts string arrays for IN clauses + tableStringIDs := make([]string, 0, len(tableAndPartitionIDs)) + for _, tableID := range tableAndPartitionIDs { + tableStringIDs = append(tableStringIDs, strconv.FormatInt(tableID, 10)) + } + query += "and table_id in (%?) " + args = append(args, tableStringIDs) + } + query += "order by version" + rows, _, err = util.ExecRows(sctx, query, args...) return err }); err != nil { return errors.Trace(err) @@ -150,7 +168,13 @@ func (s *StatsCacheImpl) Update(ctx context.Context, is infoschema.InfoSchema) e tables = append(tables, tbl) } - s.UpdateStatsCache(tables, deletedTableIDs) + s.UpdateStatsCache(types.CacheUpdate{ + Updated: tables, + Deleted: deletedTableIDs, + Options: types.UpdateOptions{ + SkipMoveForward: skipMoveForwardStatsCache, + }, + }) dur := time.Since(start) tidbmetrics.StatsDeltaLoadHistogram.Observe(dur.Seconds()) return nil @@ -191,12 +215,12 @@ func (s *StatsCacheImpl) replace(newCache *StatsCache) { } // UpdateStatsCache updates the cache with the new cache. -func (s *StatsCacheImpl) UpdateStatsCache(tables []*statistics.Table, deletedIDs []int64) { +func (s *StatsCacheImpl) UpdateStatsCache(cacheUpdate types.CacheUpdate) { if enableQuota := config.GetGlobalConfig().Performance.EnableStatsCacheMemQuota; enableQuota { - s.Load().Update(tables, deletedIDs) + s.Load().Update(cacheUpdate.Updated, cacheUpdate.Deleted, cacheUpdate.Options.SkipMoveForward) } else { // TODO: remove this branch because we will always enable quota. - newCache := s.Load().CopyAndUpdate(tables, deletedIDs) + newCache := s.Load().CopyAndUpdate(cacheUpdate.Updated, cacheUpdate.Deleted) s.replace(newCache) } } @@ -235,6 +259,11 @@ func (s *StatsCacheImpl) Put(id int64, t *statistics.Table) { s.Load().put(id, t) } +// TriggerEvict triggers the cache to evict some items. +func (s *StatsCacheImpl) TriggerEvict() { + s.Load().TriggerEvict() +} + // MaxTableStatsVersion returns the version of the current cache, which is defined as // the max table stats version the cache has in its lifecycle. func (s *StatsCacheImpl) MaxTableStatsVersion() uint64 { @@ -261,7 +290,7 @@ func (s *StatsCacheImpl) UpdateStatsHealthyMetrics() { distribution := make([]int64, 9) uneligibleAnalyze := 0 for _, tbl := range s.Values() { - distribution[4]++ // total table count + distribution[7]++ // total table count isEligibleForAnalysis := tbl.IsEligibleForAnalysis() if !isEligibleForAnalysis { uneligibleAnalyze++ diff --git a/pkg/statistics/handle/cache/statscacheinner.go b/pkg/statistics/handle/cache/statscacheinner.go index c8fbbbfbf0f57..b2ae6aeca61aa 100644 --- a/pkg/statistics/handle/cache/statscacheinner.go +++ b/pkg/statistics/handle/cache/statscacheinner.go @@ -163,7 +163,7 @@ func (sc *StatsCache) CopyAndUpdate(tables []*statistics.Table, deletedIDs []int } // Update updates the new statistics table cache. -func (sc *StatsCache) Update(tables []*statistics.Table, deletedIDs []int64) { +func (sc *StatsCache) Update(tables []*statistics.Table, deletedIDs []int64, skipMoveForwardStatsCache bool) { for _, tbl := range tables { id := tbl.PhysicalID metrics.UpdateCounter.Inc() @@ -174,10 +174,17 @@ func (sc *StatsCache) Update(tables []*statistics.Table, deletedIDs []int64) { sc.c.Del(id) } - // update the maxTblStatsVer - for _, t := range tables { - if oldVersion := sc.maxTblStatsVer.Load(); t.Version > oldVersion { - sc.maxTblStatsVer.CompareAndSwap(oldVersion, t.Version) + if !skipMoveForwardStatsCache { + // update the maxTblStatsVer + for _, t := range tables { + if oldVersion := sc.maxTblStatsVer.Load(); t.Version > oldVersion { + sc.maxTblStatsVer.CompareAndSwap(oldVersion, t.Version) + } } } } + +// TriggerEvict triggers the cache to evict some items. +func (sc *StatsCache) TriggerEvict() { + sc.c.TriggerEvict() +} diff --git a/pkg/statistics/handle/ddl/BUILD.bazel b/pkg/statistics/handle/ddl/BUILD.bazel index 9fd64c0c3a183..3851b8590f1e7 100644 --- a/pkg/statistics/handle/ddl/BUILD.bazel +++ b/pkg/statistics/handle/ddl/BUILD.bazel @@ -35,7 +35,7 @@ go_test( timeout = "short", srcs = ["ddl_test.go"], flaky = True, - shard_count = 19, + shard_count = 20, deps = [ ":ddl", "//pkg/ddl/notifier", diff --git a/pkg/statistics/handle/ddl/ddl.go b/pkg/statistics/handle/ddl/ddl.go index 06db70af0f9c5..62d3a60603436 100644 --- a/pkg/statistics/handle/ddl/ddl.go +++ b/pkg/statistics/handle/ddl/ddl.go @@ -180,6 +180,19 @@ func (h *ddlHandlerImpl) HandleDDLEvent(s *notifier.SchemaChangeEvent) error { return h.statsWriter.UpdateStatsVersion() case model.ActionAddIndex: // No need to update the stats meta for the adding index event. + case model.ActionDropSchema: + miniDBInfo := s.GetDropSchemaInfo() + intest.Assert(miniDBInfo != nil) + for _, table := range miniDBInfo.Tables { + // Try best effort to update the stats meta version for gc. + if err := h.statsWriter.UpdateStatsMetaVersionForGC(table.ID); err != nil { + logutil.StatsLogger().Error( + "Failed to update stats meta version for gc", + zap.Int64("tableID", table.ID), + zap.Error(err), + ) + } + } default: intest.Assert(false) logutil.StatsLogger().Error("Unhandled schema change event", zap.Stringer("type", s)) diff --git a/pkg/statistics/handle/ddl/ddl_test.go b/pkg/statistics/handle/ddl/ddl_test.go index cc59d536c98d5..5cfe11a0968bd 100644 --- a/pkg/statistics/handle/ddl/ddl_test.go +++ b/pkg/statistics/handle/ddl/ddl_test.go @@ -1306,6 +1306,44 @@ func TestAddPartitioning(t *testing.T) { ) } +func TestDropSchema(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + + tk.MustExec("use test") + tk.MustExec("create table t (c1 int)") + h := dom.StatsHandle() + tk.MustExec("insert into t values (1)") + require.NoError(t, h.DumpStatsDeltaToKV(true)) + + is := dom.InfoSchema() + tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + tableInfo := tbl.Meta() + // Check the current stats meta version. + rows := tk.MustQuery( + "select version from mysql.stats_meta where table_id = ?", + tableInfo.ID, + ).Rows() + require.Len(t, rows, 1) + version := rows[0][0].(string) + + tk.MustExec("drop database test") + + // Handle the drop schema event. + dropSchemaEvent := findEvent(h.DDLEventCh(), model.ActionDropSchema) + err = h.HandleDDLEvent(dropSchemaEvent) + require.NoError(t, err) + + // Check the stats meta version after drop schema. + rows = tk.MustQuery( + "select version from mysql.stats_meta where table_id = ?", + tableInfo.ID, + ).Rows() + require.Len(t, rows, 1) + require.NotEqual(t, version, rows[0][0].(string)) +} + func findEvent(eventCh <-chan *notifier.SchemaChangeEvent, eventType model.ActionType) *notifier.SchemaChangeEvent { // Find the target event. for { diff --git a/pkg/statistics/handle/ddl/drop_partition.go b/pkg/statistics/handle/ddl/drop_partition.go index 0e7ad60e8cbe0..439b65c1b9469 100644 --- a/pkg/statistics/handle/ddl/drop_partition.go +++ b/pkg/statistics/handle/ddl/drop_partition.go @@ -15,15 +15,8 @@ package ddl import ( - "context" - - "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/ddl/notifier" - "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/sessionctx/variable" - "github.com/pingcap/tidb/pkg/statistics/handle/lockstats" - "github.com/pingcap/tidb/pkg/statistics/handle/storage" "github.com/pingcap/tidb/pkg/statistics/handle/util" ) @@ -46,47 +39,3 @@ func (h *ddlHandlerImpl) onDropPartitions(t *notifier.SchemaChangeEvent) error { return nil } - -func updateGlobalTableStats4DropPartition( - ctx context.Context, - sctx sessionctx.Context, - globalTableInfo *model.TableInfo, - droppedPartitionInfo *model.PartitionInfo, -) error { - count := int64(0) - for _, def := range droppedPartitionInfo.Definitions { - // Get the count and modify count of the partition. - tableCount, _, _, err := storage.StatsMetaCountAndModifyCount(ctx, sctx, def.ID) - if err != nil { - return err - } - count += tableCount - } - if count == 0 { - return nil - } - - lockedTables, err := lockstats.QueryLockedTables(ctx, sctx) - if err != nil { - return errors.Trace(err) - } - isLocked := false - if _, ok := lockedTables[globalTableInfo.ID]; ok { - isLocked = true - } - startTS, err := util.GetStartTS(sctx) - if err != nil { - return errors.Trace(err) - } - - // Because we drop the partition, we should subtract the count from the global stats. - delta := -count - return errors.Trace(storage.UpdateStatsMeta( - ctx, - sctx, - startTS, - variable.TableDelta{Count: count, Delta: delta}, - globalTableInfo.ID, - isLocked, - )) -} diff --git a/pkg/statistics/handle/ddl/exchange_partition.go b/pkg/statistics/handle/ddl/exchange_partition.go index 3534c7965b1cf..1b8488b9eb4c9 100644 --- a/pkg/statistics/handle/ddl/exchange_partition.go +++ b/pkg/statistics/handle/ddl/exchange_partition.go @@ -15,17 +15,9 @@ package ddl import ( - "context" - - "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/ddl/notifier" - "github.com/pingcap/tidb/pkg/infoschema" - "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/statistics/handle/logutil" - "github.com/pingcap/tidb/pkg/statistics/handle/storage" "github.com/pingcap/tidb/pkg/statistics/handle/util" - "go.uber.org/zap" ) func (h *ddlHandlerImpl) onExchangeAPartition(t *notifier.SchemaChangeEvent) error { @@ -42,126 +34,3 @@ func (h *ddlHandlerImpl) onExchangeAPartition(t *notifier.SchemaChangeEvent) err ) }, util.FlagWrapTxn) } - -func updateGlobalTableStats4ExchangePartition( - ctx context.Context, - sctx sessionctx.Context, - globalTableInfo *model.TableInfo, - originalPartInfo *model.PartitionInfo, - originalTableInfo *model.TableInfo, -) error { - partCount, partModifyCount, tableCount, tableModifyCount, err := getCountsAndModifyCounts( - ctx, - sctx, - originalPartInfo.Definitions[0].ID, - originalTableInfo.ID, - ) - if err != nil { - return errors.Trace(err) - } - - // The count of the partition should be added to the table. - // The formula is: total_count = original_table_count - original_partition_count + new_table_count. - // So the delta is : new_table_count - original_partition_count. - countDelta := tableCount - partCount - // Initially, the sum of tableCount and partCount represents - // the operation of deleting the partition and adding the table. - // Therefore, they are considered as modifyCountDelta. - // Next, since the old partition no longer belongs to the table, - // the modify count of the partition should be subtracted. - // The modify count of the table should be added as we are adding the table as a partition. - modifyCountDelta := (tableCount + partCount) - partModifyCount + tableModifyCount - - if modifyCountDelta == 0 && countDelta == 0 { - return nil - } - - // Update the global stats. - is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) - globalTableSchema, ok := infoschema.SchemaByTable(is, globalTableInfo) - if !ok { - return errors.Errorf("schema not found for table %s", globalTableInfo.Name.O) - } - if err = updateStatsWithCountDeltaAndModifyCountDelta( - ctx, - sctx, - globalTableInfo.ID, countDelta, modifyCountDelta, - ); err != nil { - fields := exchangePartitionLogFields( - globalTableSchema.Name.O, - globalTableInfo, - originalPartInfo.Definitions[0], - originalTableInfo, - countDelta, modifyCountDelta, - partCount, - partModifyCount, - tableCount, - tableModifyCount, - ) - fields = append(fields, zap.Error(err)) - logutil.StatsLogger().Error( - "Update global stats after exchange partition failed", - fields..., - ) - return errors.Trace(err) - } - logutil.StatsLogger().Info( - "Update global stats after exchange partition", - exchangePartitionLogFields( - globalTableSchema.Name.O, - globalTableInfo, - originalPartInfo.Definitions[0], - originalTableInfo, - countDelta, modifyCountDelta, - partCount, - partModifyCount, - tableCount, - tableModifyCount, - )..., - ) - return nil -} - -func getCountsAndModifyCounts( - ctx context.Context, - sctx sessionctx.Context, - partitionID, tableID int64, -) (partCount, partModifyCount, tableCount, tableModifyCount int64, err error) { - partCount, partModifyCount, _, err = storage.StatsMetaCountAndModifyCount(ctx, sctx, partitionID) - if err != nil { - return - } - - tableCount, tableModifyCount, _, err = storage.StatsMetaCountAndModifyCount(ctx, sctx, tableID) - if err != nil { - return - } - - return -} - -func exchangePartitionLogFields( - globalTableSchemaName string, - globalTableInfo *model.TableInfo, - originalPartDef model.PartitionDefinition, - originalTableInfo *model.TableInfo, - countDelta, modifyCountDelta, - partCount, partModifyCount, - tableCount, tableModifyCount int64, -) []zap.Field { - return []zap.Field{ - zap.String("globalTableSchema", globalTableSchemaName), - zap.Int64("globalTableID", globalTableInfo.ID), - zap.String("globalTableName", globalTableInfo.Name.O), - zap.Int64("countDelta", countDelta), - zap.Int64("modifyCountDelta", modifyCountDelta), - zap.Int64("partitionID", originalPartDef.ID), - zap.String("partitionName", originalPartDef.Name.O), - zap.Int64("partitionCount", partCount), - zap.Int64("partitionModifyCount", partModifyCount), - zap.Int64("tableID", originalTableInfo.ID), - zap.String("tableName", originalTableInfo.Name.O), - zap.Int64("tableCount", tableCount), - zap.Int64("tableModifyCount", tableModifyCount), - } -} diff --git a/pkg/statistics/handle/ddl/subscriber.go b/pkg/statistics/handle/ddl/subscriber.go index 66fcb3a1eba37..2004c5f83ca2d 100644 --- a/pkg/statistics/handle/ddl/subscriber.go +++ b/pkg/statistics/handle/ddl/subscriber.go @@ -19,10 +19,12 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/ddl/notifier" + "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/sessionctx" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics/handle/history" + "github.com/pingcap/tidb/pkg/statistics/handle/lockstats" "github.com/pingcap/tidb/pkg/statistics/handle/logutil" "github.com/pingcap/tidb/pkg/statistics/handle/storage" "github.com/pingcap/tidb/pkg/statistics/handle/types" @@ -31,21 +33,19 @@ import ( "go.uber.org/zap" ) -type handler struct { +type subscriber struct { statsCache types.StatsCache } -// NewHandlerAndRegister creates a new handler and registers it to the DDL -// notifier. -func NewHandlerAndRegister( +// NewSubscriber creates a new subscriber. +func NewSubscriber( statsCache types.StatsCache, - registry *notifier.DDLNotifier, -) { - h := handler{statsCache: statsCache} - registry.RegisterHandler(notifier.StatsMetaHandlerID, h.handle) +) *subscriber { + h := subscriber{statsCache: statsCache} + return &h } -func (h handler) handle( +func (h subscriber) handle( ctx context.Context, sctx sessionctx.Context, change *notifier.SchemaChangeEvent, @@ -235,6 +235,19 @@ func (h handler) handle( return errors.Trace(storage.UpdateStatsVersion(ctx, sctx)) case model.ActionAddIndex: // No need to update the stats meta for the adding index event. + case model.ActionDropSchema: + miniDBInfo := change.GetDropSchemaInfo() + intest.Assert(miniDBInfo != nil) + for _, table := range miniDBInfo.Tables { + // Try best effort to update the stats meta version for gc. + if err := h.delayedDeleteStats4PhysicalID(ctx, sctx, table.ID); err != nil { + logutil.StatsLogger().Error( + "Failed to update stats meta version for gc", + zap.Int64("tableID", table.ID), + zap.Error(err), + ) + } + } default: intest.Assert(false) logutil.StatsLogger().Error("Unhandled schema change event", @@ -243,7 +256,7 @@ func (h handler) handle( return nil } -func (h handler) insertStats4PhysicalID( +func (h subscriber) insertStats4PhysicalID( ctx context.Context, sctx sessionctx.Context, info *model.TableInfo, @@ -256,7 +269,7 @@ func (h handler) insertStats4PhysicalID( return errors.Trace(h.recordHistoricalStatsMeta(ctx, sctx, id, startTS)) } -func (h handler) recordHistoricalStatsMeta( +func (h subscriber) recordHistoricalStatsMeta( ctx context.Context, sctx sessionctx.Context, id int64, @@ -287,7 +300,7 @@ func (h handler) recordHistoricalStatsMeta( ) } -func (h handler) delayedDeleteStats4PhysicalID( +func (h subscriber) delayedDeleteStats4PhysicalID( ctx context.Context, sctx sessionctx.Context, id int64, @@ -299,7 +312,7 @@ func (h handler) delayedDeleteStats4PhysicalID( return errors.Trace(h.recordHistoricalStatsMeta(ctx, sctx, id, startTS)) } -func (h handler) insertStats4Col( +func (h subscriber) insertStats4Col( ctx context.Context, sctx sessionctx.Context, physicalID int64, @@ -351,3 +364,285 @@ func getEnableHistoricalStats( GetGlobalSysVar(variable.TiDBEnableHistoricalStats) return variable.TiDBOptOn(val), errors.Trace(err) } + +func updateGlobalTableStats4DropPartition( + ctx context.Context, + sctx sessionctx.Context, + globalTableInfo *model.TableInfo, + droppedPartitionInfo *model.PartitionInfo, +) error { + count := int64(0) + for _, def := range droppedPartitionInfo.Definitions { + // Get the count and modify count of the partition. + tableCount, _, _, err := storage.StatsMetaCountAndModifyCount(ctx, sctx, def.ID) + if err != nil { + return err + } + count += tableCount + } + if count == 0 { + return nil + } + + lockedTables, err := lockstats.QueryLockedTables(ctx, sctx) + if err != nil { + return errors.Trace(err) + } + isLocked := false + if _, ok := lockedTables[globalTableInfo.ID]; ok { + isLocked = true + } + startTS, err := util.GetStartTS(sctx) + if err != nil { + return errors.Trace(err) + } + + // Because we drop the partition, we should subtract the count from the global stats. + delta := -count + return errors.Trace(storage.UpdateStatsMeta( + ctx, + sctx, + startTS, + variable.TableDelta{Count: count, Delta: delta}, + globalTableInfo.ID, + isLocked, + )) +} + +func updateGlobalTableStats4ExchangePartition( + ctx context.Context, + sctx sessionctx.Context, + globalTableInfo *model.TableInfo, + originalPartInfo *model.PartitionInfo, + originalTableInfo *model.TableInfo, +) error { + partCount, partModifyCount, tableCount, tableModifyCount, err := getCountsAndModifyCounts( + ctx, + sctx, + originalPartInfo.Definitions[0].ID, + originalTableInfo.ID, + ) + if err != nil { + return errors.Trace(err) + } + + // The count of the partition should be added to the table. + // The formula is: total_count = original_table_count - original_partition_count + new_table_count. + // So the delta is : new_table_count - original_partition_count. + countDelta := tableCount - partCount + // Initially, the sum of tableCount and partCount represents + // the operation of deleting the partition and adding the table. + // Therefore, they are considered as modifyCountDelta. + // Next, since the old partition no longer belongs to the table, + // the modify count of the partition should be subtracted. + // The modify count of the table should be added as we are adding the table as a partition. + modifyCountDelta := (tableCount + partCount) - partModifyCount + tableModifyCount + + if modifyCountDelta == 0 && countDelta == 0 { + return nil + } + + // Update the global stats. + is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + globalTableSchema, ok := infoschema.SchemaByTable(is, globalTableInfo) + if !ok { + return errors.Errorf("schema not found for table %s", globalTableInfo.Name.O) + } + if err = updateStatsWithCountDeltaAndModifyCountDelta( + ctx, + sctx, + globalTableInfo.ID, countDelta, modifyCountDelta, + ); err != nil { + fields := exchangePartitionLogFields( + globalTableSchema.Name.O, + globalTableInfo, + originalPartInfo.Definitions[0], + originalTableInfo, + countDelta, modifyCountDelta, + partCount, + partModifyCount, + tableCount, + tableModifyCount, + ) + fields = append(fields, zap.Error(err)) + logutil.StatsLogger().Error( + "Update global stats after exchange partition failed", + fields..., + ) + return errors.Trace(err) + } + logutil.StatsLogger().Info( + "Update global stats after exchange partition", + exchangePartitionLogFields( + globalTableSchema.Name.O, + globalTableInfo, + originalPartInfo.Definitions[0], + originalTableInfo, + countDelta, modifyCountDelta, + partCount, + partModifyCount, + tableCount, + tableModifyCount, + )..., + ) + return nil +} + +func getCountsAndModifyCounts( + ctx context.Context, + sctx sessionctx.Context, + partitionID, tableID int64, +) (partCount, partModifyCount, tableCount, tableModifyCount int64, err error) { + partCount, partModifyCount, _, err = storage.StatsMetaCountAndModifyCount(ctx, sctx, partitionID) + if err != nil { + return + } + + tableCount, tableModifyCount, _, err = storage.StatsMetaCountAndModifyCount(ctx, sctx, tableID) + if err != nil { + return + } + + return +} + +func exchangePartitionLogFields( + globalTableSchemaName string, + globalTableInfo *model.TableInfo, + originalPartDef model.PartitionDefinition, + originalTableInfo *model.TableInfo, + countDelta, modifyCountDelta, + partCount, partModifyCount, + tableCount, tableModifyCount int64, +) []zap.Field { + return []zap.Field{ + zap.String("globalTableSchema", globalTableSchemaName), + zap.Int64("globalTableID", globalTableInfo.ID), + zap.String("globalTableName", globalTableInfo.Name.O), + zap.Int64("countDelta", countDelta), + zap.Int64("modifyCountDelta", modifyCountDelta), + zap.Int64("partitionID", originalPartDef.ID), + zap.String("partitionName", originalPartDef.Name.O), + zap.Int64("partitionCount", partCount), + zap.Int64("partitionModifyCount", partModifyCount), + zap.Int64("tableID", originalTableInfo.ID), + zap.String("tableName", originalTableInfo.Name.O), + zap.Int64("tableCount", tableCount), + zap.Int64("tableModifyCount", tableModifyCount), + } +} + +func updateGlobalTableStats4TruncatePartition( + ctx context.Context, + sctx sessionctx.Context, + globalTableInfo *model.TableInfo, + droppedPartInfo *model.PartitionInfo, +) error { + count := int64(0) + partitionIDs := make([]int64, 0, len(droppedPartInfo.Definitions)) + partitionNames := make([]string, 0, len(droppedPartInfo.Definitions)) + for _, def := range droppedPartInfo.Definitions { + // Get the count and modify count of the partition. + tableCount, _, _, err := storage.StatsMetaCountAndModifyCount(ctx, sctx, def.ID) + if err != nil { + return errors.Trace(err) + } + count += tableCount + partitionIDs = append(partitionIDs, def.ID) + partitionNames = append(partitionNames, def.Name.O) + } + + if count == 0 { + return nil + } + + is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) + globalTableSchema, ok := infoschema.SchemaByTable(is, globalTableInfo) + if !ok { + return errors.Errorf("schema not found for table %s", globalTableInfo.Name.O) + } + lockedTables, err := lockstats.QueryLockedTables(ctx, sctx) + if err != nil { + return errors.Trace(err) + } + isLocked := false + if _, ok := lockedTables[globalTableInfo.ID]; ok { + isLocked = true + } + startTS, err := util.GetStartTS(sctx) + if err != nil { + return errors.Trace(err) + } + + // Because we drop the partition, we should subtract the count from the global stats. + // Note: We don't need to subtract the modify count from the global stats. + // For example: + // 1. The partition has 100 rows. + // 2. We deleted 100 rows from the partition. + // 3. The global stats has `count - 100 rows` and 100 modify count. + // 4. We drop the partition. + // 5. The global stats should not be `count` and 0 modify count. We need to keep the modify count. + delta := -count + err = storage.UpdateStatsMeta( + ctx, + sctx, + startTS, + variable.TableDelta{Count: count, Delta: delta}, + globalTableInfo.ID, + isLocked, + ) + if err != nil { + fields := truncatePartitionsLogFields( + globalTableSchema, + globalTableInfo, + partitionIDs, + partitionNames, + count, + delta, + startTS, + isLocked, + ) + fields = append(fields, zap.Error(err)) + logutil.StatsLogger().Error("Update global stats after truncate partition failed", + fields..., + ) + return errors.Trace(err) + } + + logutil.StatsLogger().Info("Update global stats after truncate partition", + truncatePartitionsLogFields( + globalTableSchema, + globalTableInfo, + partitionIDs, + partitionNames, + count, + delta, + startTS, + isLocked, + )..., + ) + return nil +} + +func truncatePartitionsLogFields( + globalTableSchema *model.DBInfo, + globalTableInfo *model.TableInfo, + partitionIDs []int64, + partitionNames []string, + count int64, + delta int64, + startTS uint64, + isLocked bool, +) []zap.Field { + return []zap.Field{ + zap.String("schema", globalTableSchema.Name.O), + zap.Int64("tableID", globalTableInfo.ID), + zap.String("tableName", globalTableInfo.Name.O), + zap.Int64s("partitionIDs", partitionIDs), + zap.Strings("partitionNames", partitionNames), + zap.Int64("count", count), + zap.Int64("delta", delta), + zap.Uint64("startTS", startTS), + zap.Bool("isLocked", isLocked), + } +} diff --git a/pkg/statistics/handle/ddl/truncate_partition.go b/pkg/statistics/handle/ddl/truncate_partition.go index 6be705acae010..f3708167e6f1d 100644 --- a/pkg/statistics/handle/ddl/truncate_partition.go +++ b/pkg/statistics/handle/ddl/truncate_partition.go @@ -15,19 +15,9 @@ package ddl import ( - "context" - - "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/ddl/notifier" - "github.com/pingcap/tidb/pkg/infoschema" - "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/sessionctx" - "github.com/pingcap/tidb/pkg/sessionctx/variable" - "github.com/pingcap/tidb/pkg/statistics/handle/lockstats" - "github.com/pingcap/tidb/pkg/statistics/handle/logutil" - "github.com/pingcap/tidb/pkg/statistics/handle/storage" "github.com/pingcap/tidb/pkg/statistics/handle/util" - "go.uber.org/zap" ) func (h *ddlHandlerImpl) onTruncatePartitions(t *notifier.SchemaChangeEvent) error { @@ -62,118 +52,3 @@ func (h *ddlHandlerImpl) onTruncatePartitions(t *notifier.SchemaChangeEvent) err return nil } - -func updateGlobalTableStats4TruncatePartition( - ctx context.Context, - sctx sessionctx.Context, - globalTableInfo *model.TableInfo, - droppedPartInfo *model.PartitionInfo, -) error { - count := int64(0) - partitionIDs := make([]int64, 0, len(droppedPartInfo.Definitions)) - partitionNames := make([]string, 0, len(droppedPartInfo.Definitions)) - for _, def := range droppedPartInfo.Definitions { - // Get the count and modify count of the partition. - tableCount, _, _, err := storage.StatsMetaCountAndModifyCount(ctx, sctx, def.ID) - if err != nil { - return errors.Trace(err) - } - count += tableCount - partitionIDs = append(partitionIDs, def.ID) - partitionNames = append(partitionNames, def.Name.O) - } - - if count == 0 { - return nil - } - - is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) - globalTableSchema, ok := infoschema.SchemaByTable(is, globalTableInfo) - if !ok { - return errors.Errorf("schema not found for table %s", globalTableInfo.Name.O) - } - lockedTables, err := lockstats.QueryLockedTables(ctx, sctx) - if err != nil { - return errors.Trace(err) - } - isLocked := false - if _, ok := lockedTables[globalTableInfo.ID]; ok { - isLocked = true - } - startTS, err := util.GetStartTS(sctx) - if err != nil { - return errors.Trace(err) - } - - // Because we drop the partition, we should subtract the count from the global stats. - // Note: We don't need to subtract the modify count from the global stats. - // For example: - // 1. The partition has 100 rows. - // 2. We deleted 100 rows from the partition. - // 3. The global stats has `count - 100 rows` and 100 modify count. - // 4. We drop the partition. - // 5. The global stats should not be `count` and 0 modify count. We need to keep the modify count. - delta := -count - err = storage.UpdateStatsMeta( - ctx, - sctx, - startTS, - variable.TableDelta{Count: count, Delta: delta}, - globalTableInfo.ID, - isLocked, - ) - if err != nil { - fields := truncatePartitionsLogFields( - globalTableSchema, - globalTableInfo, - partitionIDs, - partitionNames, - count, - delta, - startTS, - isLocked, - ) - fields = append(fields, zap.Error(err)) - logutil.StatsLogger().Error("Update global stats after truncate partition failed", - fields..., - ) - return errors.Trace(err) - } - - logutil.StatsLogger().Info("Update global stats after truncate partition", - truncatePartitionsLogFields( - globalTableSchema, - globalTableInfo, - partitionIDs, - partitionNames, - count, - delta, - startTS, - isLocked, - )..., - ) - return nil -} - -func truncatePartitionsLogFields( - globalTableSchema *model.DBInfo, - globalTableInfo *model.TableInfo, - partitionIDs []int64, - partitionNames []string, - count int64, - delta int64, - startTS uint64, - isLocked bool, -) []zap.Field { - return []zap.Field{ - zap.String("schema", globalTableSchema.Name.O), - zap.Int64("tableID", globalTableInfo.ID), - zap.String("tableName", globalTableInfo.Name.O), - zap.Int64s("partitionIDs", partitionIDs), - zap.Strings("partitionNames", partitionNames), - zap.Int64("count", count), - zap.Int64("delta", delta), - zap.Uint64("startTS", startTS), - zap.Bool("isLocked", isLocked), - } -} diff --git a/pkg/statistics/handle/handle.go b/pkg/statistics/handle/handle.go index b74ca839a1f64..d986dfdafba22 100644 --- a/pkg/statistics/handle/handle.go +++ b/pkg/statistics/handle/handle.go @@ -184,7 +184,9 @@ func (h *Handle) getPartitionStats(tblInfo *model.TableInfo, pid int64, returnPs tbl = statistics.PseudoTable(tblInfo, false, true) tbl.PhysicalID = pid if tblInfo.GetPartitionInfo() == nil || h.Len() < 64 { - h.UpdateStatsCache([]*statistics.Table{tbl}, nil) + h.UpdateStatsCache(types.CacheUpdate{ + Updated: []*statistics.Table{tbl}, + }) } return tbl } diff --git a/pkg/statistics/handle/handletest/BUILD.bazel b/pkg/statistics/handle/handletest/BUILD.bazel index 886357c5f6500..2884f52b182f1 100644 --- a/pkg/statistics/handle/handletest/BUILD.bazel +++ b/pkg/statistics/handle/handletest/BUILD.bazel @@ -9,7 +9,7 @@ go_test( ], flaky = True, race = "on", - shard_count = 33, + shard_count = 34, deps = [ "//pkg/config", "//pkg/domain", diff --git a/pkg/statistics/handle/handletest/handle_test.go b/pkg/statistics/handle/handletest/handle_test.go index 5307cf95ca866..2fea656d8ae92 100644 --- a/pkg/statistics/handle/handletest/handle_test.go +++ b/pkg/statistics/handle/handletest/handle_test.go @@ -1414,6 +1414,7 @@ func TestInitStatsLite(t *testing.T) { require.NoError(t, h.InitStatsLite(context.Background())) statsTbl1 := h.GetTableStats(tblInfo) checkAllEvicted(t, statsTbl1) + require.Equal(t, int(statistics.Version2), statsTbl1.StatsVer) { // internal.AssertTableEqual(t, statsTbl0, statsTbl1) // statsTbl0 is loaded when the cache has pseudo table. @@ -1489,3 +1490,31 @@ func TestSkipMissingPartitionStats(t *testing.T) { return false }) } + +func TestStatsCacheUpdateTimeout(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic'") + tk.MustExec("set @@tidb_skip_missing_partition_stats = 1") + tk.MustExec("create table t (a int, b int, c int, index idx_b(b)) partition by range (a) (partition p0 values less than (100), partition p1 values less than (200), partition p2 values less than (300))") + tk.MustExec("insert into t values (1,1,1), (2,2,2), (101,101,101), (102,102,102), (201,201,201), (202,202,202)") + analyzehelper.TriggerPredicateColumnsCollection(t, tk, store, "t", "a", "b", "c") + h := dom.StatsHandle() + require.NoError(t, h.DumpStatsDeltaToKV(true)) + tk.MustExec("analyze table t partition p0, p1") + tbl, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tblInfo := tbl.Meta() + globalStats := h.GetTableStats(tblInfo) + require.Equal(t, 6, int(globalStats.RealtimeCount)) + require.Equal(t, 2, int(globalStats.ModifyCount)) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/statistics/handle/util/ExecRowsTimeout", "return()")) + defer func() { + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/statistics/handle/util/ExecRowsTimeout")) + }() + require.Error(t, h.Update(context.Background(), dom.InfoSchema())) + globalStats2 := h.GetTableStats(tblInfo) + require.Equal(t, 6, int(globalStats2.RealtimeCount)) + require.Equal(t, 2, int(globalStats2.ModifyCount)) +} diff --git a/pkg/statistics/handle/handletest/initstats/BUILD.bazel b/pkg/statistics/handle/handletest/initstats/BUILD.bazel new file mode 100644 index 0000000000000..c5c3b99b15a86 --- /dev/null +++ b/pkg/statistics/handle/handletest/initstats/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "initstats_test", + timeout = "short", + srcs = [ + "load_stats_test.go", + "main_test.go", + ], + flaky = True, + deps = [ + "//pkg/config", + "//pkg/parser/model", + "//pkg/statistics/handle", + "//pkg/statistics/handle/types", + "//pkg/testkit", + "//pkg/testkit/testsetup", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/pkg/statistics/handle/handletest/initstats/load_stats_test.go b/pkg/statistics/handle/handletest/initstats/load_stats_test.go new file mode 100644 index 0000000000000..38a708c133d9c --- /dev/null +++ b/pkg/statistics/handle/handletest/initstats/load_stats_test.go @@ -0,0 +1,103 @@ +// Copyright 2024 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 initstats + +import ( + "context" + "fmt" + "testing" + + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/statistics/handle" + "github.com/pingcap/tidb/pkg/statistics/handle/types" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/stretchr/testify/require" +) + +func TestConcurrentlyInitStatsWithMemoryLimit(t *testing.T) { + restore := config.RestoreFunc() + defer restore() + config.UpdateGlobal(func(conf *config.Config) { + conf.Performance.LiteInitStats = false + conf.Performance.ConcurrentlyInitStats = true + }) + handle.IsFullCacheFunc = func(cache types.StatsCache, total uint64) bool { + return true + } + testConcurrentlyInitStats(t) +} + +func TestConcurrentlyInitStatsWithoutMemoryLimit(t *testing.T) { + restore := config.RestoreFunc() + defer restore() + config.UpdateGlobal(func(conf *config.Config) { + conf.Performance.LiteInitStats = false + conf.Performance.ConcurrentlyInitStats = true + }) + handle.IsFullCacheFunc = func(cache types.StatsCache, total uint64) bool { + return false + } + testConcurrentlyInitStats(t) +} + +func testConcurrentlyInitStats(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("set global tidb_analyze_column_options='ALL'") + tk.MustExec("create table t1 (a int, b int, c int, primary key(c))") + tk.MustExec("insert into t1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,7,8)") + tk.MustExec("analyze table t1") + for i := 2; i < 10; i++ { + tk.MustExec(fmt.Sprintf("create table t%v (a int, b int, c int, primary key(c))", i)) + tk.MustExec(fmt.Sprintf("insert into t%v select * from t1", i)) + tk.MustExec(fmt.Sprintf("analyze table t%v all columns", i)) + } + h := dom.StatsHandle() + is := dom.InfoSchema() + h.Clear() + require.Equal(t, h.MemConsumed(), int64(0)) + require.NoError(t, h.InitStats(context.Background(), is)) + 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) + stats, ok := h.StatsCache.Get(tbl.Meta().ID) + require.True(t, ok) + for _, col := range stats.GetColSlice() { + require.True(t, col.IsAllEvicted()) + require.False(t, col.IsFullLoad()) + } + } + for i := 1; i < 10; i++ { + tk.MustQuery(fmt.Sprintf("explain select * from t%v where a = 1", i)).CheckNotContain("pseudo") + } + for i := 1; i < 10; i++ { + tk.MustQuery(fmt.Sprintf("explain select * from t%v where b = 1", i)).CheckNotContain("pseudo") + } + for i := 1; i < 10; i++ { + tk.MustQuery(fmt.Sprintf("explain select * from t%v where c >= 1", i)).CheckNotContain("pseudo") + } + 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) + stats, ok := h.StatsCache.Get(tbl.Meta().ID) + require.True(t, ok) + for _, col := range stats.GetColSlice() { + require.True(t, col.IsFullLoad()) + require.False(t, col.IsAllEvicted()) + } + } +} diff --git a/pkg/statistics/handle/handletest/initstats/main_test.go b/pkg/statistics/handle/handletest/initstats/main_test.go new file mode 100644 index 0000000000000..13d11c7eaef3f --- /dev/null +++ b/pkg/statistics/handle/handletest/initstats/main_test.go @@ -0,0 +1,34 @@ +// Copyright 2024 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 initstats + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/testkit/testsetup" + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + 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("go.opencensus.io/stats/view.(*worker).start"), + } + testsetup.SetupForCommonTest() + goleak.VerifyTestMain(m, opts...) +} diff --git a/pkg/statistics/handle/handletest/lockstats/BUILD.bazel b/pkg/statistics/handle/handletest/lockstats/BUILD.bazel index f97197ce34b67..4e83ece10b940 100644 --- a/pkg/statistics/handle/handletest/lockstats/BUILD.bazel +++ b/pkg/statistics/handle/handletest/lockstats/BUILD.bazel @@ -19,6 +19,7 @@ go_test( "//pkg/statistics", "//pkg/testkit", "//pkg/testkit/testsetup", + "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", "@org_uber_go_goleak//:goleak", ], diff --git a/pkg/statistics/handle/handletest/lockstats/lock_table_stats_test.go b/pkg/statistics/handle/handletest/lockstats/lock_table_stats_test.go index 69854b2dc7ba8..78db5372acdac 100644 --- a/pkg/statistics/handle/handletest/lockstats/lock_table_stats_test.go +++ b/pkg/statistics/handle/handletest/lockstats/lock_table_stats_test.go @@ -21,6 +21,7 @@ import ( "testing" "time" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" @@ -60,6 +61,17 @@ func TestLockAndUnlockTableStats(t *testing.T) { require.Nil(t, err) require.Equal(t, 1, len(lockedTables)) + // Insert a new row to the table. + tk.MustExec("insert into t(a, b) values(3,'c')") + // Enable the failpoint to test the historical stats meta is not recorded. + err = failpoint.Enable( + "github.com/pingcap/tidb/pkg/statistics/handle/usage/panic-when-record-historical-stats-meta", + "1*return(true)", + ) + require.NoError(t, err) + // Dump stats delta to KV. + require.NotPanics(t, func() { handle.DumpStatsDeltaToKV(true) }) + tk.MustExec("unlock stats t") rows = tk.MustQuery(selectTableLockSQL).Rows() num, _ = strconv.Atoi(rows[0][0].(string)) @@ -67,7 +79,7 @@ func TestLockAndUnlockTableStats(t *testing.T) { tk.MustExec("analyze table test.t") tblStats2 := handle.GetTableStats(tbl) - require.Equal(t, int64(2), tblStats2.RealtimeCount) + require.Equal(t, int64(3), tblStats2.RealtimeCount) } func TestLockAndUnlockPartitionedTableStats(t *testing.T) { diff --git a/pkg/statistics/handle/handletest/statstest/BUILD.bazel b/pkg/statistics/handle/handletest/statstest/BUILD.bazel index 19f2699e1570b..36c52aa38cf04 100644 --- a/pkg/statistics/handle/handletest/statstest/BUILD.bazel +++ b/pkg/statistics/handle/handletest/statstest/BUILD.bazel @@ -9,7 +9,7 @@ go_test( ], flaky = True, race = "on", - shard_count = 12, + shard_count = 13, deps = [ "//pkg/config", "//pkg/parser/model", diff --git a/pkg/statistics/handle/handletest/statstest/stats_test.go b/pkg/statistics/handle/handletest/statstest/stats_test.go index 5167c8e706604..728f89a69e07e 100644 --- a/pkg/statistics/handle/handletest/statstest/stats_test.go +++ b/pkg/statistics/handle/handletest/statstest/stats_test.go @@ -31,6 +31,38 @@ import ( "github.com/stretchr/testify/require" ) +func TestStatsCacheProcess(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("create table t (c1 int, c2 int)") + testKit.MustExec("insert into t values(1, 2)") + analyzehelper.TriggerPredicateColumnsCollection(t, testKit, store, "t", "c1", "c2") + do := dom + is := do.InfoSchema() + tbl, err := is.TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tableInfo := tbl.Meta() + statsTbl := do.StatsHandle().GetTableStats(tableInfo) + require.True(t, statsTbl.Pseudo) + require.Zero(t, statsTbl.Version) + currentVersion := do.StatsHandle().MaxTableStatsVersion() + testKit.MustExec("analyze table t") + statsTbl = do.StatsHandle().GetTableStats(tableInfo) + require.False(t, statsTbl.Pseudo) + require.NotZero(t, statsTbl.Version) + require.Equal(t, currentVersion, do.StatsHandle().MaxTableStatsVersion()) + newVersion := do.StatsHandle().GetNextCheckVersionWithOffset() + require.Equal(t, currentVersion, newVersion, "analyze should not move forward the stats cache version") + + // Insert more rows + testKit.MustExec("insert into t values(2, 3)") + require.NoError(t, do.StatsHandle().DumpStatsDeltaToKV(true)) + require.NoError(t, do.StatsHandle().Update(context.Background(), is)) + newVersion = do.StatsHandle().MaxTableStatsVersion() + require.NotEqual(t, currentVersion, newVersion, "update with no table should move forward the stats cache version") +} + func TestStatsCache(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) testKit := testkit.NewTestKit(t, store) @@ -273,6 +305,9 @@ func TestInitStats(t *testing.T) { require.NoError(t, h.Update(context.Background(), is)) // Index and pk are loaded. needed := fmt.Sprintf(`Table:%v RealtimeCount:6 +column:1 ndv:6 totColSize:0 +column:2 ndv:6 totColSize:6 +column:3 ndv:6 totColSize:6 index:1 ndv:6 num: 1 lower_bound: 1 upper_bound: 1 repeats: 1 ndv: 0 num: 1 lower_bound: 2 upper_bound: 2 repeats: 1 ndv: 0 @@ -331,7 +366,7 @@ func TestInitStatsVer2(t *testing.T) { }() config.GetGlobalConfig().Performance.LiteInitStats = false config.GetGlobalConfig().Performance.ConcurrentlyInitStats = false - initStatsVer2(t, false) + initStatsVer2(t) } func TestInitStatsVer2Concurrency(t *testing.T) { @@ -343,18 +378,21 @@ func TestInitStatsVer2Concurrency(t *testing.T) { }() config.GetGlobalConfig().Performance.LiteInitStats = false config.GetGlobalConfig().Performance.ConcurrentlyInitStats = true - initStatsVer2(t, true) + initStatsVer2(t) } -func initStatsVer2(t *testing.T, isConcurrency bool) { +func initStatsVer2(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) tk.MustExec("use test") tk.MustExec("set @@session.tidb_analyze_version=2") - tk.MustExec("create table t(a int, b int, c int, index idx(a), index idxab(a, b))") + tk.MustExec("create table t(a int, b int, c int, d int, index idx(a), index idxab(a, b))") + dom.StatsHandle().HandleDDLEvent(<-dom.StatsHandle().DDLEventCh()) analyzehelper.TriggerPredicateColumnsCollection(t, tk, store, "t", "c") - tk.MustExec("insert into t values(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (4, 4, 4), (4, 4, 4)") + tk.MustExec("insert into t values(1, 1, 1, 1), (2, 2, 2, 2), (3, 3, 3, 3), (4, 4, 4, 4), (4, 4, 4, 4), (4, 4, 4, 4)") tk.MustExec("analyze table t with 2 topn, 3 buckets") + tk.MustExec("alter table t add column e int default 1") + dom.StatsHandle().HandleDDLEvent(<-dom.StatsHandle().DDLEventCh()) h := dom.StatsHandle() is := dom.InfoSchema() tbl, err := is.TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) @@ -366,16 +404,15 @@ func initStatsVer2(t *testing.T, isConcurrency bool) { h.Clear() require.NoError(t, h.InitStats(context.Background(), is)) table0 := h.GetTableStats(tbl.Meta()) - if isConcurrency { - require.Equal(t, uint8(0x3), table0.GetIdx(1).LastAnalyzePos.GetBytes()[0]) - require.Equal(t, uint8(0x3), table0.GetIdx(2).LastAnalyzePos.GetBytes()[0]) - } else { - require.Equal(t, uint8(0x33), table0.GetCol(1).LastAnalyzePos.GetBytes()[0]) - require.Equal(t, uint8(0x33), table0.GetCol(2).LastAnalyzePos.GetBytes()[0]) - require.Equal(t, uint8(0x33), table0.GetCol(3).LastAnalyzePos.GetBytes()[0]) - require.Equal(t, uint8(0x3), table0.GetIdx(1).LastAnalyzePos.GetBytes()[0]) - require.Equal(t, uint8(0x3), table0.GetIdx(2).LastAnalyzePos.GetBytes()[0]) - } + require.Equal(t, 5, table0.ColNum()) + require.True(t, table0.GetCol(1).IsAllEvicted()) + require.True(t, table0.GetCol(2).IsAllEvicted()) + require.True(t, table0.GetCol(3).IsAllEvicted()) + require.True(t, !table0.GetCol(4).IsStatsInitialized()) + require.True(t, table0.GetCol(5).IsStatsInitialized()) + require.Equal(t, 2, table0.IdxNum()) + require.Equal(t, uint8(0x3), table0.GetIdx(1).LastAnalyzePos.GetBytes()[0]) + require.Equal(t, uint8(0x3), table0.GetIdx(2).LastAnalyzePos.GetBytes()[0]) h.Clear() require.NoError(t, h.InitStats(context.Background(), is)) table1 := h.GetTableStats(tbl.Meta()) diff --git a/pkg/statistics/handle/history/BUILD.bazel b/pkg/statistics/handle/history/BUILD.bazel index 1a1a44f789cea..209c161a93952 100644 --- a/pkg/statistics/handle/history/BUILD.bazel +++ b/pkg/statistics/handle/history/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "//pkg/statistics/handle/storage", "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/util/logutil", "@com_github_pingcap_errors//:errors", "@org_uber_go_zap//:zap", diff --git a/pkg/statistics/handle/history/history_stats.go b/pkg/statistics/handle/history/history_stats.go index 1382d6ddbde4f..e8b394157a5ec 100644 --- a/pkg/statistics/handle/history/history_stats.go +++ b/pkg/statistics/handle/history/history_stats.go @@ -24,7 +24,8 @@ import ( "github.com/pingcap/tidb/pkg/statistics/handle/cache" "github.com/pingcap/tidb/pkg/statistics/handle/storage" "github.com/pingcap/tidb/pkg/statistics/handle/types" - "github.com/pingcap/tidb/pkg/statistics/handle/util" + handleutil "github.com/pingcap/tidb/pkg/statistics/handle/util" + statsutil "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) @@ -44,7 +45,7 @@ func NewStatsHistory(statsHandle types.StatsHandle, // RecordHistoricalStatsToStorage records the given table's stats data to mysql.stats_history func (sh *statsHistoryImpl) RecordHistoricalStatsToStorage(dbName string, tableInfo *model.TableInfo, physicalID int64, isPartition bool) (uint64, error) { - var js *util.JSONTable + var js *statsutil.JSONTable var err error if isPartition { js, err = sh.statsHandle.TableStatsToJSON(dbName, tableInfo, physicalID, 0) @@ -59,10 +60,10 @@ func (sh *statsHistoryImpl) RecordHistoricalStatsToStorage(dbName string, tableI return 0, nil } var version uint64 - err = util.CallWithSCtx(sh.statsHandle.SPool(), func(sctx sessionctx.Context) error { + err = handleutil.CallWithSCtx(sh.statsHandle.SPool(), func(sctx sessionctx.Context) error { version, err = RecordHistoricalStatsToStorage(sctx, physicalID, js) return err - }, util.FlagWrapTxn) + }, handleutil.FlagWrapTxn) return version, err } @@ -80,12 +81,12 @@ func (sh *statsHistoryImpl) RecordHistoricalStatsMeta(tableID int64, version uin return } } - err := util.CallWithSCtx(sh.statsHandle.SPool(), func(sctx sessionctx.Context) error { + err := handleutil.CallWithSCtx(sh.statsHandle.SPool(), func(sctx sessionctx.Context) error { if !sctx.GetSessionVars().EnableHistoricalStats { return nil } - return RecordHistoricalStatsMeta(util.StatsCtx, sctx, tableID, version, source) - }, util.FlagWrapTxn) + return RecordHistoricalStatsMeta(handleutil.StatsCtx, sctx, tableID, version, source) + }, handleutil.FlagWrapTxn) if err != nil { // just log the error, hide the error from the outside caller. logutil.BgLogger().Error("record historical stats meta failed", zap.Int64("table-id", tableID), @@ -97,7 +98,7 @@ func (sh *statsHistoryImpl) RecordHistoricalStatsMeta(tableID int64, version uin // CheckHistoricalStatsEnable checks whether historical stats is enabled. func (sh *statsHistoryImpl) CheckHistoricalStatsEnable() (enable bool, err error) { - err = util.CallWithSCtx(sh.statsHandle.SPool(), func(sctx sessionctx.Context) error { + err = handleutil.CallWithSCtx(sh.statsHandle.SPool(), func(sctx sessionctx.Context) error { enable = sctx.GetSessionVars().EnableHistoricalStats return nil }) @@ -115,7 +116,7 @@ func RecordHistoricalStatsMeta( if tableID == 0 || version == 0 { return errors.Errorf("tableID %d, version %d are invalid", tableID, version) } - rows, _, err := util.ExecRowsWithCtx( + rows, _, err := handleutil.ExecRowsWithCtx( ctx, sctx, "select modify_count, count from mysql.stats_meta where table_id = %? and version = %?", @@ -131,7 +132,7 @@ func RecordHistoricalStatsMeta( modifyCount, count := rows[0].GetInt64(0), rows[0].GetInt64(1) const sql = "REPLACE INTO mysql.stats_meta_history(table_id, modify_count, count, version, source, create_time) VALUES (%?, %?, %?, %?, %?, NOW())" - if _, err := util.ExecWithCtx( + if _, err := handleutil.ExecWithCtx( ctx, sctx, sql, @@ -152,7 +153,7 @@ func RecordHistoricalStatsMeta( const maxColumnSize = 5 << 20 // RecordHistoricalStatsToStorage records the given table's stats data to mysql.stats_history -func RecordHistoricalStatsToStorage(sctx sessionctx.Context, physicalID int64, js *util.JSONTable) (uint64, error) { +func RecordHistoricalStatsToStorage(sctx sessionctx.Context, physicalID int64, js *statsutil.JSONTable) (uint64, error) { version := uint64(0) if len(js.Partitions) == 0 { version = js.Version @@ -170,7 +171,7 @@ func RecordHistoricalStatsToStorage(sctx sessionctx.Context, physicalID int64, j const sql = "INSERT INTO mysql.stats_history(table_id, stats_data, seq_no, version, create_time) VALUES (%?, %?, %?, %?, %?)" + "ON DUPLICATE KEY UPDATE stats_data=%?, create_time=%?" for i := 0; i < len(blocks); i++ { - if _, err = util.Exec(sctx, sql, physicalID, blocks[i], i, version, ts, blocks[i], ts); err != nil { + if _, err = handleutil.Exec(sctx, sql, physicalID, blocks[i], i, version, ts, blocks[i], ts); err != nil { return 0, errors.Trace(err) } } diff --git a/pkg/statistics/handle/metrics/metrics.go b/pkg/statistics/handle/metrics/metrics.go index 34841146a625e..7502b26d72be2 100644 --- a/pkg/statistics/handle/metrics/metrics.go +++ b/pkg/statistics/handle/metrics/metrics.go @@ -34,16 +34,15 @@ func init() { // InitMetricsVars init statistics metrics vars. func InitMetricsVars() { StatsHealthyGauges = []prometheus.Gauge{ - metrics.StatsHealthyGauge.WithLabelValues("[0,50)"), - metrics.StatsHealthyGauge.WithLabelValues("[50,55)"), - metrics.StatsHealthyGauge.WithLabelValues("[55,60)"), - metrics.StatsHealthyGauge.WithLabelValues("[60,70)"), - metrics.StatsHealthyGauge.WithLabelValues("[70,80)"), - metrics.StatsHealthyGauge.WithLabelValues("[80,100)"), - metrics.StatsHealthyGauge.WithLabelValues("[100,100]"), - // [0,100] should always be the last - metrics.StatsHealthyGauge.WithLabelValues("[0,100]"), - metrics.StatsHealthyGauge.WithLabelValues("unneeded analyze"), + metrics.StatsHealthyGauge.WithLabelValues("[0,50)"), // 0 + metrics.StatsHealthyGauge.WithLabelValues("[50,55)"), // 1 + metrics.StatsHealthyGauge.WithLabelValues("[55,60)"), // 2 + metrics.StatsHealthyGauge.WithLabelValues("[60,70)"), // 3 + metrics.StatsHealthyGauge.WithLabelValues("[70,80)"), // 4 + metrics.StatsHealthyGauge.WithLabelValues("[80,100)"), // 5 + metrics.StatsHealthyGauge.WithLabelValues("[100,100]"), // 6 + metrics.StatsHealthyGauge.WithLabelValues("[0,100]"), // 7 + metrics.StatsHealthyGauge.WithLabelValues("unneeded analyze"), // 8 } DumpHistoricalStatsSuccessCounter = metrics.HistoricalStatsCounter.WithLabelValues("dump", "success") diff --git a/pkg/statistics/handle/storage/BUILD.bazel b/pkg/statistics/handle/storage/BUILD.bazel index f8a6f26b0b03c..72412b217a56d 100644 --- a/pkg/statistics/handle/storage/BUILD.bazel +++ b/pkg/statistics/handle/storage/BUILD.bazel @@ -32,6 +32,7 @@ go_library( "//pkg/statistics/handle/types", "//pkg/statistics/handle/usage/predicatecolumn", "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/types", "//pkg/util/chunk", "//pkg/util/compress", @@ -58,7 +59,7 @@ go_test( "stats_read_writer_test.go", ], flaky = True, - shard_count = 23, + shard_count = 24, deps = [ ":storage", "//pkg/domain", @@ -70,10 +71,12 @@ go_test( "//pkg/statistics/handle/internal", "//pkg/statistics/handle/types", "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/testkit", "//pkg/testkit/analyzehelper", "//pkg/types", "//pkg/util", + "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", ], ) diff --git a/pkg/statistics/handle/storage/dump_test.go b/pkg/statistics/handle/storage/dump_test.go index 805202c566f85..4c42b8ebb8f52 100644 --- a/pkg/statistics/handle/storage/dump_test.go +++ b/pkg/statistics/handle/storage/dump_test.go @@ -34,6 +34,7 @@ import ( "github.com/pingcap/tidb/pkg/statistics/handle/storage" statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" handleutil "github.com/pingcap/tidb/pkg/statistics/handle/util" + statsutil "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/util" "github.com/stretchr/testify/require" @@ -120,7 +121,7 @@ func TestConversion(t *testing.T) { requireTableEqual(t, loadTblInStorage, tbl) } -func getStatsJSON(t *testing.T, dom *domain.Domain, db, tableName string) *handleutil.JSONTable { +func getStatsJSON(t *testing.T, dom *domain.Domain, db, tableName string) *statsutil.JSONTable { is := dom.InfoSchema() h := dom.StatsHandle() require.Nil(t, h.Update(context.Background(), is)) @@ -158,7 +159,7 @@ func TestDumpGlobalStats(t *testing.T) { stats := getStatsJSON(t, dom, "test", "t") require.NotNil(t, stats.Partitions["p0"]) require.NotNil(t, stats.Partitions["p1"]) - require.Nil(t, stats.Partitions[handleutil.TiDBGlobalStats]) + require.Nil(t, stats.Partitions[statsutil.TiDBGlobalStats]) // global-stats is existed tk.MustExec("set @@tidb_partition_prune_mode = 'dynamic'") @@ -166,7 +167,7 @@ func TestDumpGlobalStats(t *testing.T) { stats = getStatsJSON(t, dom, "test", "t") require.NotNil(t, stats.Partitions["p0"]) require.NotNil(t, stats.Partitions["p1"]) - require.NotNil(t, stats.Partitions[handleutil.TiDBGlobalStats]) + require.NotNil(t, stats.Partitions[statsutil.TiDBGlobalStats]) } func TestLoadGlobalStats(t *testing.T) { @@ -308,12 +309,12 @@ func TestLoadPartitionStatsErrPanic(t *testing.T) { jsonTbl, err := dom.StatsHandle().DumpStatsToJSON("test", tableInfo, nil, true) require.NoError(t, err) - ctx := context.WithValue(context.Background(), storage.TestLoadStatsErr{}, func(tableInfo *model.TableInfo, physicalID int64, jsonTbl *handleutil.JSONTable) error { + ctx := context.WithValue(context.Background(), storage.TestLoadStatsErr{}, func(tableInfo *model.TableInfo, physicalID int64, jsonTbl *statsutil.JSONTable) error { return errors.New("ERROR") }) err = dom.StatsHandle().LoadStatsFromJSON(ctx, dom.InfoSchema(), jsonTbl, 0) require.ErrorContains(t, err, "ERROR") - ctx = context.WithValue(context.Background(), storage.TestLoadStatsErr{}, func(tableInfo *model.TableInfo, physicalID int64, jsonTbl *handleutil.JSONTable) error { + ctx = context.WithValue(context.Background(), storage.TestLoadStatsErr{}, func(tableInfo *model.TableInfo, physicalID int64, jsonTbl *statsutil.JSONTable) error { panic("PANIC") }) err = dom.StatsHandle().LoadStatsFromJSON(ctx, dom.InfoSchema(), jsonTbl, 0) @@ -506,7 +507,7 @@ func TestDumpVer2Stats(t *testing.T) { jsonBytes, err := json.MarshalIndent(dumpJSONTable, "", " ") require.NoError(t, err) - loadJSONTable := &handleutil.JSONTable{} + loadJSONTable := &statsutil.JSONTable{} err = json.Unmarshal(jsonBytes, loadJSONTable) require.NoError(t, err) @@ -558,7 +559,7 @@ func TestLoadStatsForNewCollation(t *testing.T) { jsonBytes, err := json.MarshalIndent(dumpJSONTable, "", " ") require.NoError(t, err) - loadJSONTable := &handleutil.JSONTable{} + loadJSONTable := &statsutil.JSONTable{} err = json.Unmarshal(jsonBytes, loadJSONTable) require.NoError(t, err) @@ -603,7 +604,7 @@ func TestJSONTableToBlocks(t *testing.T) { dumpJSONTable, err := h.DumpStatsToJSON("test", tableInfo.Meta(), nil, true) require.NoError(t, err) // the slice is generated from a map loop, which is randomly - slices.SortFunc(dumpJSONTable.PredicateColumns, func(a, b *handleutil.JSONPredicateColumn) int { + slices.SortFunc(dumpJSONTable.PredicateColumns, func(a, b *statsutil.JSONPredicateColumn) int { return cmp.Compare(a.ID, b.ID) }) jsOrigin, _ := json.Marshal(dumpJSONTable) @@ -615,7 +616,7 @@ func TestJSONTableToBlocks(t *testing.T) { require.NoError(t, err) jsConverted, err := storage.BlocksToJSONTable(dumpJSONBlocks) // the slice is generated from a map loop, which is randomly - slices.SortFunc(jsConverted.PredicateColumns, func(a, b *handleutil.JSONPredicateColumn) int { + slices.SortFunc(jsConverted.PredicateColumns, func(a, b *statsutil.JSONPredicateColumn) int { return cmp.Compare(a.ID, b.ID) }) require.NoError(t, err) @@ -676,7 +677,7 @@ func TestLoadStatsFromOldVersion(t *testing.T) { "modify_count": 256, "partitions": null }` - jsonTbl := &handleutil.JSONTable{} + jsonTbl := &statsutil.JSONTable{} require.NoError(t, json.Unmarshal([]byte(statsJSONFromOldVersion), jsonTbl)) require.NoError(t, h.LoadStatsFromJSON(context.Background(), is, jsonTbl, 0)) tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) @@ -716,7 +717,7 @@ PARTITION BY RANGE ( a ) ( tk.MustExec("analyze table t2") statsCnt := 0 - persistStats(ctx, t, dom, "test", "t1", func(ctx context.Context, jsonTable *handleutil.JSONTable, physicalID int64) error { + persistStats(ctx, t, dom, "test", "t1", func(ctx context.Context, jsonTable *statsutil.JSONTable, physicalID int64) error { require.True(t, physicalID > 0) require.NotNil(t, jsonTable) require.NotNil(t, jsonTable.PredicateColumns) @@ -725,7 +726,7 @@ PARTITION BY RANGE ( a ) ( }) require.Equal(t, statsCnt, 5) statsCnt = 0 - persistStats(ctx, t, dom, "test", "t2", func(ctx context.Context, jsonTable *handleutil.JSONTable, physicalID int64) error { + persistStats(ctx, t, dom, "test", "t2", func(ctx context.Context, jsonTable *statsutil.JSONTable, physicalID int64) error { require.True(t, physicalID > 0) require.NotNil(t, jsonTable) require.NotNil(t, jsonTable.PredicateColumns) diff --git a/pkg/statistics/handle/storage/gc.go b/pkg/statistics/handle/storage/gc.go index 0d12327857952..9b42a224ff02e 100644 --- a/pkg/statistics/handle/storage/gc.go +++ b/pkg/statistics/handle/storage/gc.go @@ -22,6 +22,7 @@ import ( "time" "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/parser/terror" "github.com/pingcap/tidb/pkg/sessionctx" @@ -91,6 +92,10 @@ func GCStats( return nil } + failpoint.Inject("injectGCStatsLastTSOffset", func(val failpoint.Value) { + offset = uint64(val.(int)) + }) + // Get the last gc time. gcVer := now - offset lastGC, err := getLastGCTimestamp(sctx) @@ -266,29 +271,36 @@ func removeDeletedExtendedStats(sctx sessionctx.Context, version uint64) (err er } // gcTableStats GC this table's stats. +// The GC of a table will be a two-phase process: +// 1. Delete the column/index's stats from storage. Then other TiDB nodes will be aware that those stats are deleted. +// 2. Then delete the record in stats_meta. func gcTableStats(sctx sessionctx.Context, statsHandler types.StatsHandle, is infoschema.InfoSchema, physicalID int64) error { + tbl, ok := statsHandler.TableInfoByID(is, physicalID) rows, _, err := util.ExecRows(sctx, "select is_index, hist_id from mysql.stats_histograms where table_id = %?", physicalID) if err != nil { return errors.Trace(err) } - // The table has already been deleted in stats and acknowledged to all tidb, - // we can safely remove the meta info now. - if len(rows) == 0 { + if !ok { + if len(rows) > 0 { + // It's the first time to run into it. Delete column/index stats to notify other TiDB nodes. + logutil.BgLogger().Info("remove stats in GC due to dropped table", zap.Int64("tableID", physicalID)) + return util.WrapTxn(sctx, func(sctx sessionctx.Context) error { + return errors.Trace(DeleteTableStatsFromKV(sctx, []int64{physicalID})) + }) + } + // len(rows) == 0 => The table's stats is empty. + // The table has already been deleted in stats and acknowledged to all tidb, + // We can safely remove the meta info now. _, _, err = util.ExecRows(sctx, "delete from mysql.stats_meta where table_id = %?", physicalID) if err != nil { return errors.Trace(err) } cache.TableRowStatsCache.Invalidate(physicalID) + return nil } - tbl, ok := statsHandler.TableInfoByID(is, physicalID) - if !ok { - logutil.BgLogger().Info("remove stats in GC due to dropped table", zap.Int64("table_id", physicalID)) - return util.WrapTxn(sctx, func(sctx sessionctx.Context) error { - return errors.Trace(DeleteTableStatsFromKV(sctx, []int64{physicalID})) - }) - } + tblInfo := tbl.Meta() for _, row := range rows { isIndex, histID := row.GetInt64(0), row.GetInt64(1) diff --git a/pkg/statistics/handle/storage/gc_test.go b/pkg/statistics/handle/storage/gc_test.go index 42dd3d39a1137..3c480100e54fb 100644 --- a/pkg/statistics/handle/storage/gc_test.go +++ b/pkg/statistics/handle/storage/gc_test.go @@ -15,9 +15,12 @@ package storage_test import ( + "context" "testing" "time" + "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/testkit" "github.com/pingcap/tidb/pkg/testkit/analyzehelper" @@ -174,3 +177,27 @@ func TestDeleteAnalyzeJobs(t *testing.T) { rows = testKit.MustQuery("show analyze status").Rows() require.Equal(t, 0, len(rows)) } + +func TestExtremCaseOfGC(t *testing.T) { + // This case tests that there's no records in mysql.stats_histograms but this table is not deleted in fact. + // We should not delete the record in mysql.stats_meta. + store, dom := testkit.CreateMockStoreAndDomain(t) + testKit := testkit.NewTestKit(t, store) + testKit.MustExec("use test") + testKit.MustExec("create table t(a int, b int)") + testKit.MustExec("insert into t values (1,2),(3,4)") + testKit.MustExec("analyze table t") + tbl, err := dom.InfoSchema().TableByName(context.TODO(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + tid := tbl.Meta().ID + rs := testKit.MustQuery("select * from mysql.stats_meta where table_id = ?", tid) + require.Len(t, rs.Rows(), 1) + rs = testKit.MustQuery("select * from mysql.stats_histograms where table_id = ?", tid) + require.Len(t, rs.Rows(), 0) + h := dom.StatsHandle() + failpoint.Enable("github.com/pingcap/tidb/pkg/statistics/handle/storage/injectGCStatsLastTSOffset", `return(0)`) + h.GCStats(dom.InfoSchema(), time.Second*3) + rs = testKit.MustQuery("select * from mysql.stats_meta where table_id = ?", tid) + require.Len(t, rs.Rows(), 1) + failpoint.Disable("github.com/pingcap/tidb/pkg/statistics/handle/storage/injectGCStatsLastTSOffset") +} diff --git a/pkg/statistics/handle/storage/json.go b/pkg/statistics/handle/storage/json.go index 39ceb3a37c296..144fda1416450 100644 --- a/pkg/statistics/handle/storage/json.go +++ b/pkg/statistics/handle/storage/json.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/statistics" statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/util" + statsutil "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/types" compressutil "github.com/pingcap/tidb/pkg/util/compress" "github.com/pingcap/tidb/pkg/util/logutil" @@ -34,13 +35,13 @@ import ( "go.uber.org/zap" ) -func dumpJSONExtendedStats(statsColl *statistics.ExtendedStatsColl) []*util.JSONExtendedStats { +func dumpJSONExtendedStats(statsColl *statistics.ExtendedStatsColl) []*statsutil.JSONExtendedStats { if statsColl == nil || len(statsColl.Stats) == 0 { return nil } - stats := make([]*util.JSONExtendedStats, 0, len(statsColl.Stats)) + stats := make([]*statsutil.JSONExtendedStats, 0, len(statsColl.Stats)) for name, item := range statsColl.Stats { - js := &util.JSONExtendedStats{ + js := &statsutil.JSONExtendedStats{ StatsName: name, ColIDs: item.ColIDs, Tp: item.Tp, @@ -52,7 +53,7 @@ func dumpJSONExtendedStats(statsColl *statistics.ExtendedStatsColl) []*util.JSON return stats } -func extendedStatsFromJSON(statsColl []*util.JSONExtendedStats) *statistics.ExtendedStatsColl { +func extendedStatsFromJSON(statsColl []*statsutil.JSONExtendedStats) *statistics.ExtendedStatsColl { if len(statsColl) == 0 { return nil } @@ -69,8 +70,8 @@ func extendedStatsFromJSON(statsColl []*util.JSONExtendedStats) *statistics.Exte return stats } -func dumpJSONCol(hist *statistics.Histogram, cmsketch *statistics.CMSketch, topn *statistics.TopN, fmsketch *statistics.FMSketch, statsVer *int64) *util.JSONColumn { - jsonCol := &util.JSONColumn{ +func dumpJSONCol(hist *statistics.Histogram, cmsketch *statistics.CMSketch, topn *statistics.TopN, fmsketch *statistics.FMSketch, statsVer *int64) *statsutil.JSONColumn { + jsonCol := &statsutil.JSONColumn{ Histogram: statistics.HistogramToProto(hist), NullCount: hist.NullCount, TotColSize: hist.TotColSize, @@ -94,15 +95,15 @@ func GenJSONTableFromStats( tableInfo *model.TableInfo, tbl *statistics.Table, colStatsUsage map[model.TableItemID]statstypes.ColStatsTimeInfo, -) (*util.JSONTable, error) { +) (*statsutil.JSONTable, error) { tracker := memory.NewTracker(memory.LabelForAnalyzeMemory, -1) tracker.AttachTo(sctx.GetSessionVars().MemTracker) defer tracker.Detach() - jsonTbl := &util.JSONTable{ + jsonTbl := &statsutil.JSONTable{ DatabaseName: dbName, TableName: tableInfo.Name.L, - Columns: make(map[string]*util.JSONColumn, tbl.ColNum()), - Indices: make(map[string]*util.JSONColumn, tbl.IdxNum()), + Columns: make(map[string]*statsutil.JSONColumn, tbl.ColNum()), + Indices: make(map[string]*statsutil.JSONColumn, tbl.IdxNum()), Count: tbl.RealtimeCount, ModifyCount: tbl.ModifyCount, Version: tbl.Version, @@ -151,9 +152,9 @@ func GenJSONTableFromStats( s := t.String() return &s } - jsonColStatsUsage := make([]*util.JSONPredicateColumn, 0, len(colStatsUsage)) + jsonColStatsUsage := make([]*statsutil.JSONPredicateColumn, 0, len(colStatsUsage)) for id, usage := range colStatsUsage { - jsonCol := &util.JSONPredicateColumn{ + jsonCol := &statsutil.JSONPredicateColumn{ ID: id.ID, LastUsedAt: nilIfNil(usage.LastUsedAt), LastAnalyzedAt: nilIfNil(usage.LastAnalyzedAt), @@ -167,7 +168,7 @@ func GenJSONTableFromStats( } // TableStatsFromJSON loads statistic from JSONTable and return the Table of statistic. -func TableStatsFromJSON(tableInfo *model.TableInfo, physicalID int64, jsonTbl *util.JSONTable) (*statistics.Table, error) { +func TableStatsFromJSON(tableInfo *model.TableInfo, physicalID int64, jsonTbl *statsutil.JSONTable) (*statistics.Table, error) { newHistColl := *statistics.NewHistColl(physicalID, true, jsonTbl.Count, jsonTbl.ModifyCount, len(jsonTbl.Columns), len(jsonTbl.Indices)) tbl := &statistics.Table{ HistColl: newHistColl, @@ -263,7 +264,7 @@ func TableStatsFromJSON(tableInfo *model.TableInfo, physicalID int64, jsonTbl *u } // JSONTableToBlocks convert JSONTable to json, then compresses it to blocks by gzip. -func JSONTableToBlocks(jsTable *util.JSONTable, blockSize int) ([][]byte, error) { +func JSONTableToBlocks(jsTable *statsutil.JSONTable, blockSize int) ([][]byte, error) { data, err := json.Marshal(jsTable) if err != nil { return nil, errors.Trace(err) @@ -291,7 +292,7 @@ func JSONTableToBlocks(jsTable *util.JSONTable, blockSize int) ([][]byte, error) } // BlocksToJSONTable convert gzip-compressed blocks to JSONTable -func BlocksToJSONTable(blocks [][]byte) (*util.JSONTable, error) { +func BlocksToJSONTable(blocks [][]byte) (*statsutil.JSONTable, error) { if len(blocks) == 0 { return nil, errors.New("Block empty error") } @@ -315,7 +316,7 @@ func BlocksToJSONTable(blocks [][]byte) (*util.JSONTable, error) { if err != nil { return nil, errors.Trace(err) } - jsonTbl := util.JSONTable{} + jsonTbl := statsutil.JSONTable{} err = json.Unmarshal(jsonStr, &jsonTbl) if err != nil { return nil, errors.Trace(err) @@ -324,7 +325,7 @@ func BlocksToJSONTable(blocks [][]byte) (*util.JSONTable, error) { } // TableHistoricalStatsToJSON converts the historical stats of a table to JSONTable. -func TableHistoricalStatsToJSON(sctx sessionctx.Context, physicalID int64, snapshot uint64) (jt *util.JSONTable, exist bool, err error) { +func TableHistoricalStatsToJSON(sctx sessionctx.Context, physicalID int64, snapshot uint64) (jt *statsutil.JSONTable, exist bool, err error) { // get meta version rows, _, err := util.ExecRows(sctx, "select distinct version from mysql.stats_meta_history where table_id = %? and version <= %? order by version desc limit 1", physicalID, snapshot) if err != nil { diff --git a/pkg/statistics/handle/storage/read.go b/pkg/statistics/handle/storage/read.go index 5ca9b8d1f1787..e41b832c3ffee 100644 --- a/pkg/statistics/handle/storage/read.go +++ b/pkg/statistics/handle/storage/read.go @@ -539,8 +539,11 @@ func TableStatsFromStorage(sctx sessionctx.Context, snapshot uint64, tableInfo * table.RealtimeCount = realtimeCount rows, _, err := util.ExecRows(sctx, "select table_id, is_index, hist_id, distinct_count, version, null_count, tot_col_size, stats_ver, flag, correlation, last_analyze_pos from mysql.stats_histograms where table_id = %?", tableID) + if err != nil { + return nil, err + } // Check deleted table. - if err != nil || len(rows) == 0 { + if len(rows) == 0 { return nil, nil } for _, row := range rows { @@ -556,6 +559,7 @@ func TableStatsFromStorage(sctx sessionctx.Context, snapshot uint64, tableInfo * return nil, err } } + table.ColAndIdxExistenceMap.SetChecked() return ExtendedStatsFromStorage(sctx, table, tableID, loadAll) } @@ -631,30 +635,41 @@ func CleanFakeItemsForShowHistInFlights(statsCache statstypes.StatsCache) int { } func loadNeededColumnHistograms(sctx sessionctx.Context, statsHandle statstypes.StatsHandle, col model.TableItemID, loadFMSketch bool, fullLoad bool) (err error) { - tbl, ok := statsHandle.Get(col.TableID) + statsTbl, ok := statsHandle.Get(col.TableID) if !ok { return nil } - - var colInfo *model.ColumnInfo - _, loadNeeded, analyzed := tbl.ColumnIsLoadNeeded(col.ID, true) - if !loadNeeded || !analyzed { - asyncload.AsyncLoadHistogramNeededItems.Delete(col) - return nil - } - // Now, we cannot init the column info in the ColAndIdxExistenceMap when to disable lite-init-stats. // so we have to get the column info from the domain. is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) - tblInfo, ok := statsHandle.TableInfoByID(is, col.TableID) + tbl, ok := statsHandle.TableInfoByID(is, col.TableID) if !ok { return nil } - colInfo = tblInfo.Meta().GetColumnByID(col.ID) + tblInfo := tbl.Meta() + colInfo := tblInfo.GetColumnByID(col.ID) if colInfo == nil { asyncload.AsyncLoadHistogramNeededItems.Delete(col) return nil } + + _, loadNeeded, analyzed := statsTbl.ColumnIsLoadNeeded(col.ID, true) + if !loadNeeded || !analyzed { + // If this column is not analyzed yet and we don't have it in memory. + // We create a fake one for the pseudo estimation. + // Otherwise, it will trigger the sync/async load again, even if the column has not been analyzed. + if loadNeeded && !analyzed { + fakeCol := statistics.EmptyColumn(tblInfo.ID, tblInfo.PKIsHandle, colInfo) + statsTbl = statsTbl.Copy() + statsTbl.SetCol(col.ID, fakeCol) + statsHandle.UpdateStatsCache(statstypes.CacheUpdate{ + Updated: []*statistics.Table{statsTbl}, + }) + } + asyncload.AsyncLoadHistogramNeededItems.Delete(col) + return nil + } + hg, _, statsVer, _, err := HistMetaFromStorageWithHighPriority(sctx, &col, colInfo) if hg == nil || err != nil { asyncload.AsyncLoadHistogramNeededItems.Delete(col) @@ -689,29 +704,31 @@ func loadNeededColumnHistograms(sctx sessionctx.Context, statsHandle statstypes. CMSketch: cms, TopN: topN, FMSketch: fms, - IsHandle: tblInfo.Meta().PKIsHandle && mysql.HasPriKeyFlag(colInfo.GetFlag()), + IsHandle: tblInfo.PKIsHandle && mysql.HasPriKeyFlag(colInfo.GetFlag()), StatsVer: statsVer, } // Reload the latest stats cache, otherwise the `updateStatsCache` may fail with high probability, because functions // like `GetPartitionStats` called in `fmSketchFromStorage` would have modified the stats cache already. - tbl, ok = statsHandle.Get(col.TableID) + statsTbl, ok = statsHandle.Get(col.TableID) if !ok { return nil } - tbl = tbl.Copy() + statsTbl = statsTbl.Copy() if colHist.StatsAvailable() { if fullLoad { colHist.StatsLoadedStatus = statistics.NewStatsFullLoadStatus() } else { colHist.StatsLoadedStatus = statistics.NewStatsAllEvictedStatus() } - tbl.LastAnalyzeVersion = max(tbl.LastAnalyzeVersion, colHist.LastUpdateVersion) if statsVer != statistics.Version0 { - tbl.StatsVer = int(statsVer) + statsTbl.LastAnalyzeVersion = max(statsTbl.LastAnalyzeVersion, colHist.LastUpdateVersion) + statsTbl.StatsVer = int(statsVer) } } - tbl.SetCol(col.ID, colHist) - statsHandle.UpdateStatsCache([]*statistics.Table{tbl}, nil) + statsTbl.SetCol(col.ID, colHist) + statsHandle.UpdateStatsCache(statstypes.CacheUpdate{ + Updated: []*statistics.Table{statsTbl}, + }) asyncload.AsyncLoadHistogramNeededItems.Delete(col) if col.IsSyncLoadFailed { logutil.BgLogger().Warn("Hist for column should already be loaded as sync but not found.", @@ -770,10 +787,12 @@ func loadNeededIndexHistograms(sctx sessionctx.Context, is infoschema.InfoSchema tbl = tbl.Copy() if idxHist.StatsVer != statistics.Version0 { tbl.StatsVer = int(idxHist.StatsVer) + tbl.LastAnalyzeVersion = max(tbl.LastAnalyzeVersion, idxHist.LastUpdateVersion) } tbl.SetIdx(idx.ID, idxHist) - tbl.LastAnalyzeVersion = max(tbl.LastAnalyzeVersion, idxHist.LastUpdateVersion) - statsHandle.UpdateStatsCache([]*statistics.Table{tbl}, nil) + statsHandle.UpdateStatsCache(statstypes.CacheUpdate{ + Updated: []*statistics.Table{tbl}, + }) if idx.IsSyncLoadFailed { logutil.BgLogger().Warn("Hist for index should already be loaded as sync but not found.", zap.Int64("table_id", idx.TableID), diff --git a/pkg/statistics/handle/storage/stats_read_writer.go b/pkg/statistics/handle/storage/stats_read_writer.go index 96d16c18c04db..26eaa6ffd3107 100644 --- a/pkg/statistics/handle/storage/stats_read_writer.go +++ b/pkg/statistics/handle/storage/stats_read_writer.go @@ -35,6 +35,7 @@ import ( statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" "github.com/pingcap/tidb/pkg/statistics/handle/usage/predicatecolumn" "github.com/pingcap/tidb/pkg/statistics/handle/util" + statsutil "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/sqlexec" @@ -277,14 +278,16 @@ func (s *statsReadWriter) ReloadExtendedStatistics() error { } tables = append(tables, t) } - s.statsHandler.UpdateStatsCache(tables, nil) + s.statsHandler.UpdateStatsCache(statstypes.CacheUpdate{ + Updated: tables, + }) return nil }, util.FlagWrapTxn) } // DumpStatsToJSON dumps statistic to json. func (s *statsReadWriter) DumpStatsToJSON(dbName string, tableInfo *model.TableInfo, - historyStatsExec sqlexec.RestrictedSQLExecutor, dumpPartitionStats bool) (*util.JSONTable, error) { + historyStatsExec sqlexec.RestrictedSQLExecutor, dumpPartitionStats bool) (*statsutil.JSONTable, error) { var snapshot uint64 if historyStatsExec != nil { sctx := historyStatsExec.(sessionctx.Context) @@ -301,7 +304,7 @@ func (s *statsReadWriter) DumpHistoricalStatsBySnapshot( tableInfo *model.TableInfo, snapshot uint64, ) ( - jt *util.JSONTable, + jt *statsutil.JSONTable, fallbackTbls []string, err error, ) { @@ -328,10 +331,10 @@ func (s *statsReadWriter) DumpHistoricalStatsBySnapshot( } return jt, fallbackTbls, err } - jsonTbl := &util.JSONTable{ + jsonTbl := &statsutil.JSONTable{ DatabaseName: dbName, TableName: tableInfo.Name.L, - Partitions: make(map[string]*util.JSONTable, len(pi.Definitions)), + Partitions: make(map[string]*statsutil.JSONTable, len(pi.Definitions)), } for _, def := range pi.Definitions { tbl, fallback, err := s.getTableHistoricalStatsToJSONWithFallback(dbName, tableInfo, def.ID, snapshot) @@ -352,7 +355,7 @@ func (s *statsReadWriter) DumpHistoricalStatsBySnapshot( } // dump its global-stats if existed if tbl != nil { - jsonTbl.Partitions[util.TiDBGlobalStats] = tbl + jsonTbl.Partitions[statsutil.TiDBGlobalStats] = tbl } return jsonTbl, fallbackTbls, nil } @@ -403,7 +406,7 @@ func (s *statsReadWriter) PersistStatsBySnapshot( } // DumpStatsToJSONBySnapshot dumps statistic to json. -func (s *statsReadWriter) DumpStatsToJSONBySnapshot(dbName string, tableInfo *model.TableInfo, snapshot uint64, dumpPartitionStats bool) (*util.JSONTable, error) { +func (s *statsReadWriter) DumpStatsToJSONBySnapshot(dbName string, tableInfo *model.TableInfo, snapshot uint64, dumpPartitionStats bool) (*statsutil.JSONTable, error) { pruneMode, err := util.GetCurrentPruneMode(s.statsHandler.SPool()) if err != nil { return nil, err @@ -413,10 +416,10 @@ func (s *statsReadWriter) DumpStatsToJSONBySnapshot(dbName string, tableInfo *mo if pi == nil { return s.TableStatsToJSON(dbName, tableInfo, tableInfo.ID, snapshot) } - jsonTbl := &util.JSONTable{ + jsonTbl := &statsutil.JSONTable{ DatabaseName: dbName, TableName: tableInfo.Name.L, - Partitions: make(map[string]*util.JSONTable, len(pi.Definitions)), + Partitions: make(map[string]*statsutil.JSONTable, len(pi.Definitions)), } // dump partition stats only if in static mode or enable dumpPartitionStats flag in dynamic mode if !isDynamicMode || dumpPartitionStats { @@ -437,7 +440,7 @@ func (s *statsReadWriter) DumpStatsToJSONBySnapshot(dbName string, tableInfo *mo return nil, errors.Trace(err) } if tbl != nil { - jsonTbl.Partitions[util.TiDBGlobalStats] = tbl + jsonTbl.Partitions[statsutil.TiDBGlobalStats] = tbl } return jsonTbl, nil } @@ -450,7 +453,7 @@ func (s *statsReadWriter) getTableHistoricalStatsToJSONWithFallback( physicalID int64, snapshot uint64, ) ( - *util.JSONTable, + *statsutil.JSONTable, bool, error, ) { @@ -469,7 +472,7 @@ func (s *statsReadWriter) getTableHistoricalStatsToJSONWithFallback( return jt, false, nil } -func (s *statsReadWriter) tableHistoricalStatsToJSON(physicalID int64, snapshot uint64) (jt *util.JSONTable, exist bool, err error) { +func (s *statsReadWriter) tableHistoricalStatsToJSON(physicalID int64, snapshot uint64) (jt *statsutil.JSONTable, exist bool, err error) { err = util.CallWithSCtx(s.statsHandler.SPool(), func(sctx sessionctx.Context) error { jt, exist, err = TableHistoricalStatsToJSON(sctx, physicalID, snapshot) return err @@ -478,12 +481,12 @@ func (s *statsReadWriter) tableHistoricalStatsToJSON(physicalID int64, snapshot } // TableStatsToJSON dumps statistic to json. -func (s *statsReadWriter) TableStatsToJSON(dbName string, tableInfo *model.TableInfo, physicalID int64, snapshot uint64) (*util.JSONTable, error) { +func (s *statsReadWriter) TableStatsToJSON(dbName string, tableInfo *model.TableInfo, physicalID int64, snapshot uint64) (*statsutil.JSONTable, error) { tbl, err := s.TableStatsFromStorage(tableInfo, physicalID, true, snapshot) if err != nil || tbl == nil { return nil, err } - var jsonTbl *util.JSONTable + var jsonTbl *statsutil.JSONTable err = util.CallWithSCtx(s.statsHandler.SPool(), func(sctx sessionctx.Context) error { tbl.Version, tbl.ModifyCount, tbl.RealtimeCount, err = StatsMetaByTableIDFromStorage(sctx, physicalID, snapshot) if err != nil { @@ -539,7 +542,7 @@ func (s *statsReadWriter) LoadStatsFromJSONConcurrently( loadFunc := s.loadStatsFromJSON if intest.InTest && ctx.Value(TestLoadStatsErr{}) != nil { - loadFunc = ctx.Value(TestLoadStatsErr{}).(func(*model.TableInfo, int64, *util.JSONTable) error) + loadFunc = ctx.Value(TestLoadStatsErr{}).(func(*model.TableInfo, int64, *statsutil.JSONTable) error) } err := loadFunc(tableInfo, tbl.PhysicalID, tbl.JSONTable) @@ -563,7 +566,7 @@ func (s *statsReadWriter) LoadStatsFromJSONConcurrently( // LoadStatsFromJSONNoUpdate will load statistic from JSONTable, and save it to the storage. func (s *statsReadWriter) LoadStatsFromJSONNoUpdate(ctx context.Context, is infoschema.InfoSchema, - jsonTbl *util.JSONTable, concurrencyForPartition int) error { + jsonTbl *statsutil.JSONTable, concurrencyForPartition int) error { table, err := is.TableByName(context.Background(), pmodel.NewCIStr(jsonTbl.DatabaseName), pmodel.NewCIStr(jsonTbl.TableName)) if err != nil { return errors.Trace(err) @@ -589,7 +592,7 @@ func (s *statsReadWriter) LoadStatsFromJSONNoUpdate(ctx context.Context, is info } // load global-stats if existed - if globalStats, ok := jsonTbl.Partitions[util.TiDBGlobalStats]; ok { + if globalStats, ok := jsonTbl.Partitions[statsutil.TiDBGlobalStats]; ok { taskCh <- &statstypes.PartitionStatisticLoadTask{ PhysicalID: tableInfo.ID, JSONTable: globalStats, @@ -606,14 +609,14 @@ func (s *statsReadWriter) LoadStatsFromJSONNoUpdate(ctx context.Context, is info // LoadStatsFromJSON will load statistic from JSONTable, and save it to the storage. // In final, it will also udpate the stats cache. func (s *statsReadWriter) LoadStatsFromJSON(ctx context.Context, is infoschema.InfoSchema, - jsonTbl *util.JSONTable, concurrencyForPartition int) error { + jsonTbl *statsutil.JSONTable, concurrencyForPartition int) error { if err := s.LoadStatsFromJSONNoUpdate(ctx, is, jsonTbl, concurrencyForPartition); err != nil { return errors.Trace(err) } return errors.Trace(s.statsHandler.Update(ctx, is)) } -func (s *statsReadWriter) loadStatsFromJSON(tableInfo *model.TableInfo, physicalID int64, jsonTbl *util.JSONTable) error { +func (s *statsReadWriter) loadStatsFromJSON(tableInfo *model.TableInfo, physicalID int64, jsonTbl *statsutil.JSONTable) error { tbl, err := TableStatsFromJSON(tableInfo, physicalID, jsonTbl) if err != nil { return errors.Trace(err) @@ -658,7 +661,7 @@ func (s *statsReadWriter) loadStatsFromJSON(tableInfo *model.TableInfo, physical } // SaveColumnStatsUsageToStorage saves column statistics usage information for a table into mysql.column_stats_usage. -func (s *statsReadWriter) SaveColumnStatsUsageToStorage(physicalID int64, predicateColumns []*util.JSONPredicateColumn) error { +func (s *statsReadWriter) SaveColumnStatsUsageToStorage(physicalID int64, predicateColumns []*statsutil.JSONPredicateColumn) error { return util.CallWithSCtx(s.statsHandler.SPool(), func(sctx sessionctx.Context) error { colStatsUsage := make(map[model.TableItemID]statstypes.ColStatsTimeInfo, len(predicateColumns)) for _, col := range predicateColumns { diff --git a/pkg/statistics/handle/storage/update.go b/pkg/statistics/handle/storage/update.go index ed196b03c62fd..008388ed76a67 100644 --- a/pkg/statistics/handle/storage/update.go +++ b/pkg/statistics/handle/storage/update.go @@ -211,7 +211,9 @@ func removeExtendedStatsItem(statsCache types.StatsCache, } newTbl := tbl.Copy() delete(newTbl.ExtendedStats.Stats, statsName) - statsCache.UpdateStatsCache([]*statistics.Table{newTbl}, nil) + statsCache.UpdateStatsCache(types.CacheUpdate{ + Updated: []*statistics.Table{newTbl}, + }) } var changeGlobalStatsTables = []string{ diff --git a/pkg/statistics/handle/syncload/BUILD.bazel b/pkg/statistics/handle/syncload/BUILD.bazel index 97a428d3a8323..e220c1aadfeec 100644 --- a/pkg/statistics/handle/syncload/BUILD.bazel +++ b/pkg/statistics/handle/syncload/BUILD.bazel @@ -14,10 +14,10 @@ go_library( "//pkg/parser/mysql", "//pkg/sessionctx", "//pkg/sessionctx/stmtctx", + "//pkg/sessionctx/variable", "//pkg/statistics", "//pkg/statistics/handle/storage", "//pkg/statistics/handle/types", - "//pkg/table", "//pkg/types", "//pkg/util", "//pkg/util/intest", @@ -35,7 +35,7 @@ go_test( srcs = ["stats_syncload_test.go"], flaky = True, race = "on", - shard_count = 5, + shard_count = 8, deps = [ ":syncload", "//pkg/config", diff --git a/pkg/statistics/handle/syncload/stats_syncload.go b/pkg/statistics/handle/syncload/stats_syncload.go index bbee5713b92fc..695a69643830a 100644 --- a/pkg/statistics/handle/syncload/stats_syncload.go +++ b/pkg/statistics/handle/syncload/stats_syncload.go @@ -30,10 +30,10 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "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/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/storage" statstypes "github.com/pingcap/tidb/pkg/statistics/handle/types" - "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/intest" @@ -43,7 +43,7 @@ import ( ) // RetryCount is the max retry count for a sync load task. -const RetryCount = 3 +const RetryCount = 2 // GetSyncLoadConcurrencyByCPU returns the concurrency of sync load by CPU. func GetSyncLoadConcurrencyByCPU() int { @@ -113,9 +113,13 @@ func (s *statsSyncLoad) SendLoadRequests(sc *stmtctx.StatementContext, neededHis select { case s.StatsLoad.NeededItemsCh <- task: metrics.SyncLoadDedupCounter.Inc() - result, ok := <-task.ResultCh - intest.Assert(ok, "task.ResultCh cannot be closed") - return result, nil + select { + case <-timer.C: + return nil, errors.New("sync load took too long to return") + case result, ok := <-task.ResultCh: + intest.Assert(ok, "task.ResultCh cannot be closed") + return result, nil + } case <-timer.C: return nil, errors.New("sync load stats channel is full and timeout sending task to channel") } @@ -300,31 +304,40 @@ func (s *statsSyncLoad) handleOneItemTask(task *statstypes.NeededItemTask) (err s.statsHandle.SPool().Put(se) } }() + var skipTypes map[string]struct{} + val, err := sctx.GetSessionVars().GlobalVarsAccessor.GetGlobalSysVar(variable.TiDBAnalyzeSkipColumnTypes) + if err != nil { + logutil.BgLogger().Warn("failed to get global variable", zap.Error(err)) + } else { + skipTypes = variable.ParseAnalyzeSkipColumnTypes(val) + } + item := task.Item.TableItemID - tbl, ok := s.statsHandle.Get(item.TableID) + statsTbl, ok := s.statsHandle.Get(item.TableID) if !ok { return nil } is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) - tblInfo, ok := s.statsHandle.TableInfoByID(is, item.TableID) + tbl, ok := s.statsHandle.TableInfoByID(is, item.TableID) if !ok { return nil } - isPkIsHandle := tblInfo.Meta().PKIsHandle + tblInfo := tbl.Meta() + isPkIsHandle := tblInfo.PKIsHandle wrapper := &statsWrapper{} if item.IsIndex { - index, loadNeeded := tbl.IndexIsLoadNeeded(item.ID) + index, loadNeeded := statsTbl.IndexIsLoadNeeded(item.ID) if !loadNeeded { return nil } if index != nil { wrapper.idxInfo = index.Info } else { - wrapper.idxInfo = tblInfo.Meta().FindIndexByID(item.ID) + wrapper.idxInfo = tblInfo.FindIndexByID(item.ID) } } else { - col, loadNeeded, analyzed := tbl.ColumnIsLoadNeeded(item.ID, task.Item.FullLoad) + col, loadNeeded, analyzed := statsTbl.ColumnIsLoadNeeded(item.ID, task.Item.FullLoad) if !loadNeeded { return nil } @@ -333,21 +346,25 @@ func (s *statsSyncLoad) handleOneItemTask(task *statstypes.NeededItemTask) (err } else { // Now, we cannot init the column info in the ColAndIdxExistenceMap when to disable lite-init-stats. // so we have to get the column info from the domain. - wrapper.colInfo = tblInfo.Meta().GetColumnByID(item.ID) + wrapper.colInfo = tblInfo.GetColumnByID(item.ID) } + if skipTypes != nil { + _, skip := skipTypes[types.TypeToStr(wrapper.colInfo.FieldType.GetType(), wrapper.colInfo.FieldType.GetCharset())] + if skip { + return nil + } + } + // If this column is not analyzed yet and we don't have it in memory. // We create a fake one for the pseudo estimation. + // Otherwise, it will trigger the sync/async load again, even if the column has not been analyzed. if loadNeeded && !analyzed { - wrapper.col = &statistics.Column{ - PhysicalID: item.TableID, - Info: wrapper.colInfo, - Histogram: *statistics.NewHistogram(item.ID, 0, 0, 0, &wrapper.colInfo.FieldType, 0, 0), - IsHandle: isPkIsHandle && mysql.HasPriKeyFlag(wrapper.colInfo.GetFlag()), - } + wrapper.col = statistics.EmptyColumn(item.TableID, isPkIsHandle, wrapper.colInfo) s.updateCachedItem(tblInfo, item, wrapper.col, wrapper.idx, task.Item.FullLoad) return nil } } + failpoint.Inject("handleOneItemTaskPanic", nil) t := time.Now() needUpdate := false wrapper, err = s.readStatsForOneItem(sctx, item, wrapper, isPkIsHandle, task.Item.FullLoad) @@ -393,7 +410,8 @@ func (*statsSyncLoad) readStatsForOneItem(sctx sessionctx.Context, item model.Ta } if hg == nil { logutil.BgLogger().Warn("fail to get hist meta for this histogram, possibly a deleted one", zap.Int64("table_id", item.TableID), - zap.Int64("hist_id", item.ID), zap.Bool("is_index", item.IsIndex)) + zap.Int64("hist_id", item.ID), zap.Bool("is_index", item.IsIndex), + ) return nil, errGetHistMeta } if item.IsIndex { @@ -543,7 +561,7 @@ func (*statsSyncLoad) writeToResultChan(resultCh chan stmtctx.StatsLoadResult, r } // updateCachedItem updates the column/index hist to global statsCache. -func (s *statsSyncLoad) updateCachedItem(tblInfo table.Table, item model.TableItemID, colHist *statistics.Column, idxHist *statistics.Index, fullLoaded bool) (updated bool) { +func (s *statsSyncLoad) updateCachedItem(tblInfo *model.TableInfo, item model.TableItemID, colHist *statistics.Column, idxHist *statistics.Index, fullLoaded bool) (updated bool) { s.StatsLoad.Lock() defer s.StatsLoad.Unlock() // Reload the latest stats cache, otherwise the `updateStatsCache` may fail with high probability, because functions @@ -555,13 +573,13 @@ func (s *statsSyncLoad) updateCachedItem(tblInfo table.Table, item model.TableIt if !tbl.ColAndIdxExistenceMap.Checked() { tbl = tbl.Copy() for _, col := range tbl.HistColl.GetColSlice() { - if tblInfo.Meta().FindColumnByID(col.ID) == nil { + if tblInfo.FindColumnByID(col.ID) == nil { tbl.HistColl.DelCol(col.ID) tbl.ColAndIdxExistenceMap.DeleteColAnalyzed(col.ID) } } for _, idx := range tbl.HistColl.GetIdxSlice() { - if tblInfo.Meta().FindIndexByID(idx.ID) == nil { + if tblInfo.FindIndexByID(idx.ID) == nil { tbl.HistColl.DelIdx(idx.ID) tbl.ColAndIdxExistenceMap.DeleteIdxAnalyzed(idx.ID) } @@ -604,6 +622,8 @@ func (s *statsSyncLoad) updateCachedItem(tblInfo table.Table, item model.TableIt tbl.StatsVer = statistics.Version0 } } - s.statsHandle.UpdateStatsCache([]*statistics.Table{tbl}, nil) + s.statsHandle.UpdateStatsCache(statstypes.CacheUpdate{ + Updated: []*statistics.Table{tbl}, + }) return true } diff --git a/pkg/statistics/handle/syncload/stats_syncload_test.go b/pkg/statistics/handle/syncload/stats_syncload_test.go index 51cf1ff8d98f6..e7860270130ea 100644 --- a/pkg/statistics/handle/syncload/stats_syncload_test.go +++ b/pkg/statistics/handle/syncload/stats_syncload_test.go @@ -48,13 +48,29 @@ func TestSyncLoadSkipUnAnalyzedItems(t *testing.T) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/statistics/handle/syncload/assertSyncLoadItems", `return(0)`)) tk.MustQuery("trace plan select * from t where a > 10") failpoint.Disable("github.com/pingcap/tidb/pkg/statistics/handle/syncload/assertSyncLoadItems") - tk.MustExec("analyze table t1") + tk.MustExec("analyze table t1 all columns") // one column would be loaded require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/statistics/handle/syncload/assertSyncLoadItems", `return(1)`)) tk.MustQuery("trace plan select * from t1 where a > 10") failpoint.Disable("github.com/pingcap/tidb/pkg/statistics/handle/syncload/assertSyncLoadItems") } +func TestSyncLoadSkipAnalyzSkipColumnItems(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t") + tk.MustExec("create table t(`id` bigint(20) NOT NULL AUTO_INCREMENT,content text,PRIMARY KEY (`id`))") + h := dom.StatsHandle() + h.SetLease(1) + + tk.MustExec("analyze table t") + tk.MustExec("set @@session.tidb_analyze_skip_column_types = 'json, text, blob'") // text is not default. + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/statistics/handle/syncload/handleOneItemTaskPanic", `panic`)) + tk.MustQuery("trace plan select * from t where content ='ab'") + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/statistics/handle/syncload/handleOneItemTaskPanic")) +} + func TestConcurrentLoadHist(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) @@ -349,3 +365,119 @@ func TestRetry(t *testing.T) { } require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/statistics/handle/syncload/mockReadStatsForOneFail")) } + +func TestSendLoadRequestsWaitTooLong(t *testing.T) { + originConfig := config.GetGlobalConfig() + newConfig := config.NewConfig() + newConfig.Performance.StatsLoadConcurrency = -1 // no worker to consume channel + newConfig.Performance.StatsLoadQueueSize = 10000 + config.StoreGlobalConfig(newConfig) + defer config.StoreGlobalConfig(originConfig) + store, dom := testkit.CreateMockStoreAndDomain(t) + + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("create table t(a int, b int, c int, primary key(a), key idx(b,c))") + tk.MustExec("insert into t values (1,1,1),(2,2,2),(3,3,3)") + + oriLease := dom.StatsHandle().Lease() + dom.StatsHandle().SetLease(1) + defer func() { + dom.StatsHandle().SetLease(oriLease) + }() + tk.MustExec("analyze table t all columns") + h := dom.StatsHandle() + is := dom.InfoSchema() + tbl, err := is.TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + tableInfo := tbl.Meta() + neededColumns := make([]model.StatsLoadItem, 0, len(tableInfo.Columns)) + for _, col := range tableInfo.Columns { + neededColumns = append(neededColumns, model.StatsLoadItem{TableItemID: model.TableItemID{TableID: tableInfo.ID, ID: col.ID, IsIndex: false}, FullLoad: true}) + } + stmtCtx := stmtctx.NewStmtCtx() + timeout := time.Nanosecond * 100 + require.NoError(t, h.SendLoadRequests(stmtCtx, neededColumns, timeout)) + for _, resultCh := range stmtCtx.StatsLoad.ResultCh { + rs1 := <-resultCh + require.Error(t, rs1.Err) + } + stmtCtx1 := stmtctx.NewStmtCtx() + require.NoError(t, h.SendLoadRequests(stmtCtx1, neededColumns, timeout)) + for _, resultCh := range stmtCtx1.StatsLoad.ResultCh { + rs1 := <-resultCh + require.Error(t, rs1.Err) + } +} + +func TestSyncLoadOnObjectWhichCanNotFoundInStorage(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, c int, primary key(a))") + h := dom.StatsHandle() + // Skip create table event. + <-h.DDLEventCh() + tk.MustExec("insert into t values (1,1,1),(2,2,2),(3,3,3)") + tk.MustExec("analyze table t columns a, b") + tbl, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, h.InitStatsLite(context.TODO())) + require.NoError(t, err) + require.NotNil(t, tbl) + tblInfo := tbl.Meta() + statsTbl, ok := h.Get(tblInfo.ID) + require.True(t, ok) + // Only a and b. + require.Equal(t, 2, statsTbl.ColAndIdxExistenceMap.ColNum()) + require.True(t, statsTbl.ColAndIdxExistenceMap.HasAnalyzed(tblInfo.Columns[0].ID, false)) + require.True(t, statsTbl.ColAndIdxExistenceMap.HasAnalyzed(tblInfo.Columns[1].ID, false)) + require.False(t, statsTbl.ColAndIdxExistenceMap.Has(tblInfo.Columns[2].ID, false)) + + // Do some DDL, one successfully handled by handleDDLEvent, the other not. + tk.MustExec("alter table t add column d int default 2") + require.NoError(t, h.HandleDDLEvent(<-h.DDLEventCh())) + require.NoError(t, h.Update(context.Background(), dom.InfoSchema())) + tbl, err = dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + require.NotNil(t, tbl) + tblInfo = tbl.Meta() + statsTbl, ok = h.Get(tblInfo.ID) + require.True(t, ok) + require.True(t, statsTbl.ColAndIdxExistenceMap.Has(tblInfo.Columns[3].ID, false)) + require.True(t, statsTbl.ColAndIdxExistenceMap.HasAnalyzed(tblInfo.Columns[3].ID, false)) + + // Try sync load. + tk.MustExec("select * from t where a >= 1 and b = 2 and c = 3 and d = 4") + require.Eventually(t, func() bool { + statsTbl, ok = h.Get(tblInfo.ID) + require.True(t, ok) + return statsTbl.ColNum() == 3 + }, 5*time.Second, 100*time.Millisecond) + require.True(t, statsTbl.GetCol(tblInfo.Columns[0].ID).IsFullLoad()) + require.True(t, statsTbl.GetCol(tblInfo.Columns[1].ID).IsFullLoad()) + require.True(t, statsTbl.GetCol(tblInfo.Columns[3].ID).IsFullLoad()) + require.Nil(t, statsTbl.GetCol(tblInfo.Columns[2].ID)) + _, loadNeeded, analyzed := statsTbl.ColumnIsLoadNeeded(tblInfo.Columns[2].ID, false) + // After the sync load. The column without any thing in storage should not be marked as loadNeeded any more. + require.False(t, loadNeeded) + require.False(t, analyzed) + + // Analyze c then test sync load again + tk.MustExec("analyze table t columns a, b, c") + require.NoError(t, h.InitStatsLite(context.TODO())) + tk.MustExec("select * from t where a >= 1 and b = 2 and c = 3 and d = 4") + require.Eventually(t, func() bool { + statsTbl, ok = h.Get(tblInfo.ID) + require.True(t, ok) + return statsTbl.ColNum() == 4 + }, 5*time.Second, 100*time.Millisecond) + // a, b, d's status is not changed. + require.True(t, statsTbl.GetCol(tblInfo.Columns[0].ID).IsFullLoad()) + require.True(t, statsTbl.GetCol(tblInfo.Columns[1].ID).IsFullLoad()) + require.True(t, statsTbl.GetCol(tblInfo.Columns[3].ID).IsFullLoad()) + // c's stats is loaded. + _, loadNeeded, analyzed = statsTbl.ColumnIsLoadNeeded(tblInfo.Columns[2].ID, false) + require.False(t, loadNeeded) + require.True(t, analyzed) + require.True(t, statsTbl.GetCol(tblInfo.Columns[2].ID).IsFullLoad()) +} diff --git a/pkg/statistics/handle/types/BUILD.bazel b/pkg/statistics/handle/types/BUILD.bazel index 7f9388ad78bc4..bcde603a92455 100644 --- a/pkg/statistics/handle/types/BUILD.bazel +++ b/pkg/statistics/handle/types/BUILD.bazel @@ -16,6 +16,7 @@ go_library( "//pkg/statistics", "//pkg/statistics/handle/usage/indexusage", "//pkg/statistics/handle/util", + "//pkg/statistics/util", "//pkg/types", "//pkg/util", "//pkg/util/sqlexec", diff --git a/pkg/statistics/handle/types/interfaces.go b/pkg/statistics/handle/types/interfaces.go index c6112bb08bc14..6cd80e3434731 100644 --- a/pkg/statistics/handle/types/interfaces.go +++ b/pkg/statistics/handle/types/interfaces.go @@ -28,7 +28,8 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/stmtctx" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/statistics/handle/usage/indexusage" - statsutil "github.com/pingcap/tidb/pkg/statistics/handle/util" + handleutil "github.com/pingcap/tidb/pkg/statistics/handle/util" + statsutil "github.com/pingcap/tidb/pkg/statistics/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/sqlexec" @@ -118,7 +119,36 @@ type StatsHistory interface { RecordHistoricalStatsToStorage(dbName string, tableInfo *model.TableInfo, physicalID int64, isPartition bool) (uint64, error) } +// PriorityQueueSnapshot is the snapshot of the stats priority queue. +type PriorityQueueSnapshot struct { + CurrentJobs []AnalysisJobJSON `json:"current_jobs"` + MustRetryTables []int64 `json:"must_retry_tables"` +} + +// AnalysisJobJSON represents the JSON format of an AnalysisJob. +// +//nolint:fieldalignment +type AnalysisJobJSON struct { + Type string `json:"type"` + TableID int64 `json:"table_id"` + Weight float64 `json:"weight"` + PartitionIDs []int64 `json:"partition_ids"` + IndexIDs []int64 `json:"index_ids"` + PartitionIndexIDs map[int64][]int64 `json:"partition_index_ids"` + Indicators IndicatorsJSON `json:"indicators"` + HasNewlyAddedIndex bool `json:"has_newly_added_index"` +} + +// IndicatorsJSON represents the JSON format of Indicators. +type IndicatorsJSON struct { + ChangePercentage string `json:"change_percentage"` + TableSize string `json:"table_size"` + LastAnalysisDuration string `json:"last_analysis_duration"` +} + // StatsAnalyze is used to handle auto-analyze and manage analyze jobs. +// We need to read all the tables's last_analyze_time, modified_count, and row_count into memory. +// Because the current auto analyze' scheduling needs the whole information. type StatsAnalyze interface { owner.Listener @@ -161,10 +191,29 @@ type StatsAnalyze interface { // CheckAnalyzeVersion checks whether all the statistics versions of this table's columns and indexes are the same. CheckAnalyzeVersion(tblInfo *model.TableInfo, physicalIDs []int64, version *int) bool + // GetPriorityQueueSnapshot returns the stats priority queue. + GetPriorityQueueSnapshot() (PriorityQueueSnapshot, error) + // Close closes the analyze worker. Close() } +// CacheUpdate encapsulates changes to be made to the stats cache +type CacheUpdate struct { + Updated []*statistics.Table + Deleted []int64 + Options UpdateOptions +} + +// UpdateOptions contains configuration for cache updates +type UpdateOptions struct { + // SkipMoveForward controls whether to skip updating the cache's max version number. + // When true, the cache max version number stays unchanged even after updates. + // This improves performance when analyzing a small number of tables by avoiding + // unnecessary full cache reloads that would normally be triggered by version changes. + SkipMoveForward bool +} + // StatsCache is used to manage all table statistics in memory. type StatsCache interface { // Close closes this cache. @@ -174,7 +223,8 @@ type StatsCache interface { Clear() // Update reads stats meta from store and updates the stats map. - Update(ctx context.Context, is infoschema.InfoSchema) error + // To work with auto-analyze's needs, we'll update all table's stats meta into memory. + Update(ctx context.Context, is infoschema.InfoSchema, tableAndPartitionIDs ...int64) error // MemConsumed returns its memory usage. MemConsumed() (size int64) @@ -185,8 +235,8 @@ type StatsCache interface { // Put puts this table stats into the cache. Put(tableID int64, t *statistics.Table) - // UpdateStatsCache updates the cache. - UpdateStatsCache(addedTables []*statistics.Table, deletedTableIDs []int64) + // UpdateStatsCache applies a batch of changes to the cache + UpdateStatsCache(update CacheUpdate) // GetNextCheckVersionWithOffset returns the last version with offset. // It is used to fetch updated statistics from the stats meta table. @@ -210,6 +260,9 @@ type StatsCache interface { // UpdateStatsHealthyMetrics updates stats healthy distribution metrics according to stats cache. UpdateStatsHealthyMetrics() + + // TriggerEvict triggers the cache to evict some items + TriggerEvict() } // StatsLockTable is the table info of which will be locked. @@ -474,16 +527,16 @@ type DDL interface { // StatsHandle is used to manage TiDB Statistics. type StatsHandle interface { // Pool is used to get a session or a goroutine to execute stats updating. - statsutil.Pool + handleutil.Pool // AutoAnalyzeProcIDGenerator is used to generate auto analyze proc ID. - statsutil.AutoAnalyzeProcIDGenerator + handleutil.AutoAnalyzeProcIDGenerator // LeaseGetter is used to get stats lease. - statsutil.LeaseGetter + handleutil.LeaseGetter // TableInfoGetter is used to get table meta info. - statsutil.TableInfoGetter + handleutil.TableInfoGetter // GetTableStats retrieves the statistics table from cache, and the cache will be updated by a goroutine. GetTableStats(tblInfo *model.TableInfo) *statistics.Table diff --git a/pkg/statistics/handle/usage/BUILD.bazel b/pkg/statistics/handle/usage/BUILD.bazel index 1f8ea04e0b14c..9a02fa38858d7 100644 --- a/pkg/statistics/handle/usage/BUILD.bazel +++ b/pkg/statistics/handle/usage/BUILD.bazel @@ -22,8 +22,10 @@ go_library( "//pkg/statistics/handle/util", "//pkg/types", "//pkg/util", + "//pkg/util/intest", "//pkg/util/sqlescape", "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", ], ) diff --git a/pkg/statistics/handle/usage/session_stats_collect.go b/pkg/statistics/handle/usage/session_stats_collect.go index a1979c9b31568..352a26dc1b9bc 100644 --- a/pkg/statistics/handle/usage/session_stats_collect.go +++ b/pkg/statistics/handle/usage/session_stats_collect.go @@ -16,12 +16,14 @@ package usage import ( "cmp" + "iter" "slices" "strings" "sync" "time" "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/metrics" @@ -31,6 +33,7 @@ import ( utilstats "github.com/pingcap/tidb/pkg/statistics/handle/util" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/sqlescape" ) @@ -127,8 +130,13 @@ func (s *statsUsageImpl) DumpStatsDeltaToKV(dumpAll bool) error { // For a partitioned table, we will update its global-stats as well. func (s *statsUsageImpl) dumpTableStatCountToKV(is infoschema.InfoSchema, physicalTableID int64, delta variable.TableDelta) (updated bool, err error) { statsVersion := uint64(0) + isLocked := false defer func() { - if err == nil && statsVersion != 0 { + // Only record the historical stats meta when the table is not locked because all stats meta are stored in the locked table. + if err == nil && statsVersion != 0 && !isLocked { + failpoint.Inject("panic-when-record-historical-stats-meta", func() { + panic("panic when record historical stats meta") + }) s.statsHandle.RecordHistoricalStatsMeta(physicalTableID, statsVersion, "flush stats", false) } }() @@ -169,6 +177,7 @@ func (s *statsUsageImpl) dumpTableStatCountToKV(is infoschema.InfoSchema, physic isPartitionLocked = true } tableOrPartitionLocked := isTableLocked || isPartitionLocked + isLocked = tableOrPartitionLocked if err = storage.UpdateStatsMeta(utilstats.StatsCtx, sctx, statsVersion, delta, physicalTableID, tableOrPartitionLocked); err != nil { return err @@ -199,6 +208,7 @@ func (s *statsUsageImpl) dumpTableStatCountToKV(is infoschema.InfoSchema, physic if _, ok := lockedTables[physicalTableID]; ok { isTableLocked = true } + isLocked = isTableLocked if err = storage.UpdateStatsMeta(utilstats.StatsCtx, sctx, statsVersion, delta, physicalTableID, isTableLocked); err != nil { return err @@ -310,10 +320,10 @@ func (s *SessionStatsItem) ClearForTest() { } // UpdateColStatsUsage updates the last time when the column stats are used(needed). -func (s *SessionStatsItem) UpdateColStatsUsage(colMap map[model.TableItemID]time.Time) { +func (s *SessionStatsItem) UpdateColStatsUsage(colItems iter.Seq[model.TableItemID], updateTime time.Time) { s.Lock() defer s.Unlock() - s.statsUsage.Merge(colMap) + s.statsUsage.MergeRawData(colItems, updateTime) } // SessionStatsList is a list of SessionStatsItem, which is used to collect stats usage and table delta information from sessions. @@ -520,3 +530,16 @@ func (m *StatsUsage) Merge(other map[model.TableItemID]time.Time) { } } } + +// MergeRawData merges the new data passed by iterator. +func (m *StatsUsage) MergeRawData(raw iter.Seq[model.TableItemID], updateTime time.Time) { + m.lock.Lock() + defer m.lock.Unlock() + for item := range raw { + // TODO: Remove this assertion once it has been confirmed to operate correctly over a period of time. + intest.Assert(!item.IsIndex, "predicate column should only be table column") + if mt, ok := m.usage[item]; !ok || mt.Before(updateTime) { + m.usage[item] = updateTime + } + } +} diff --git a/pkg/statistics/handle/util/BUILD.bazel b/pkg/statistics/handle/util/BUILD.bazel index e1336b51b545f..a40c702ffb6b6 100644 --- a/pkg/statistics/handle/util/BUILD.bazel +++ b/pkg/statistics/handle/util/BUILD.bazel @@ -13,7 +13,6 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/infoschema", - "//pkg/infoschema/context", "//pkg/kv", "//pkg/meta/model", "//pkg/parser/terror", @@ -29,7 +28,7 @@ go_library( "//pkg/util/sqlexec", "//pkg/util/sqlexec/mock", "@com_github_pingcap_errors//:errors", - "@com_github_pingcap_tipb//go-tipb", + "@com_github_pingcap_failpoint//:failpoint", "@com_github_tiancaiamao_gp//:gp", "@com_github_tikv_client_go_v2//oracle", "@org_golang_x_exp//maps", diff --git a/pkg/statistics/handle/util/table_info.go b/pkg/statistics/handle/util/table_info.go index 7fccc41cd1e28..746dc257b0089 100644 --- a/pkg/statistics/handle/util/table_info.go +++ b/pkg/statistics/handle/util/table_info.go @@ -16,12 +16,9 @@ package util import ( "context" - "sync" "github.com/pingcap/tidb/pkg/infoschema" - infoschemacontext "github.com/pingcap/tidb/pkg/infoschema/context" "github.com/pingcap/tidb/pkg/table" - "github.com/pingcap/tidb/pkg/util/intest" ) // TableInfoGetter is used to get table meta info. @@ -33,44 +30,20 @@ type TableInfoGetter interface { // tableInfoGetterImpl is used to get table meta info. type tableInfoGetterImpl struct { - // pid2tid is the map from partition ID to table ID. - pid2tid map[int64]int64 - // schemaVersion is the version of information schema when `pid2tid` is built. - schemaVersion int64 - mu sync.RWMutex } // NewTableInfoGetter creates a TableInfoGetter. func NewTableInfoGetter() TableInfoGetter { - return &tableInfoGetterImpl{pid2tid: map[int64]int64{}} + return &tableInfoGetterImpl{} } // TableInfoByID returns the table info specified by the physicalID. // If the physicalID is corresponding to a partition, return its parent table. -func (c *tableInfoGetterImpl) TableInfoByID(is infoschema.InfoSchema, physicalID int64) (table.Table, bool) { - c.mu.Lock() - defer c.mu.Unlock() - if is.SchemaMetaVersion() != c.schemaVersion { - c.schemaVersion = is.SchemaMetaVersion() - c.pid2tid = buildPartitionID2TableID(is) +func (*tableInfoGetterImpl) TableInfoByID(is infoschema.InfoSchema, physicalID int64) (table.Table, bool) { + tbl, ok := is.TableByID(context.Background(), physicalID) + if ok { + return tbl, true } - if id, ok := c.pid2tid[physicalID]; ok { - return is.TableByID(context.Background(), id) - } - return is.TableByID(context.Background(), physicalID) -} - -func buildPartitionID2TableID(is infoschema.InfoSchema) map[int64]int64 { - mapper := make(map[int64]int64) - rs := is.ListTablesWithSpecialAttribute(infoschemacontext.PartitionAttribute) - for _, db := range rs { - for _, tbl := range db.TableInfos { - pi := tbl.GetPartitionInfo() - intest.AssertNotNil(pi) - for _, def := range pi.Definitions { - mapper[def.ID] = tbl.ID - } - } - } - return mapper + tbl, _, _ = is.FindTableByPartitionID(physicalID) + return tbl, tbl != nil } diff --git a/pkg/statistics/handle/util/util.go b/pkg/statistics/handle/util/util.go index a0540d1409096..e01ed16ca52a1 100644 --- a/pkg/statistics/handle/util/util.go +++ b/pkg/statistics/handle/util/util.go @@ -15,13 +15,12 @@ package util import ( - "cmp" "context" - "slices" "strconv" "time" "github.com/pingcap/errors" + "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/terror" @@ -34,7 +33,6 @@ import ( "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/sqlexec" "github.com/pingcap/tidb/pkg/util/sqlexec/mock" - "github.com/pingcap/tipb/go-tipb" "github.com/tikv/client-go/v2/oracle" ) @@ -49,9 +47,6 @@ const ( StatsMetaHistorySourceSchemaChange = "schema change" // StatsMetaHistorySourceExtendedStats indicates stats history meta source from extended stats StatsMetaHistorySourceExtendedStats = "extended stats" - - // TiDBGlobalStats represents the global-stats for a partitioned table. - TiDBGlobalStats = "global" ) var ( @@ -235,6 +230,9 @@ func ExecWithCtx( // ExecRows is a helper function to execute sql and return rows and fields. func ExecRows(sctx sessionctx.Context, sql string, args ...any) (rows []chunk.Row, fields []*resolve.ResultField, err error) { + failpoint.Inject("ExecRowsTimeout", func() { + failpoint.Return(nil, nil, errors.New("inject timeout error")) + }) return ExecRowsWithCtx(StatsCtx, sctx, sql, args...) } @@ -268,71 +266,6 @@ func DurationToTS(d time.Duration) uint64 { return oracle.ComposeTS(d.Nanoseconds()/int64(time.Millisecond), 0) } -// JSONTable is used for dumping statistics. -type JSONTable struct { - Columns map[string]*JSONColumn `json:"columns"` - Indices map[string]*JSONColumn `json:"indices"` - Partitions map[string]*JSONTable `json:"partitions"` - DatabaseName string `json:"database_name"` - TableName string `json:"table_name"` - ExtStats []*JSONExtendedStats `json:"ext_stats"` - PredicateColumns []*JSONPredicateColumn `json:"predicate_columns"` - Count int64 `json:"count"` - ModifyCount int64 `json:"modify_count"` - Version uint64 `json:"version"` - IsHistoricalStats bool `json:"is_historical_stats"` -} - -// Sort is used to sort the object in the JSONTable. it is used for testing to avoid flaky test. -func (j *JSONTable) Sort() { - slices.SortFunc(j.PredicateColumns, func(a, b *JSONPredicateColumn) int { - return cmp.Compare(a.ID, b.ID) - }) -} - -// JSONExtendedStats is used for dumping extended statistics. -type JSONExtendedStats struct { - StatsName string `json:"stats_name"` - StringVals string `json:"string_vals"` - ColIDs []int64 `json:"cols"` - ScalarVals float64 `json:"scalar_vals"` - Tp uint8 `json:"type"` -} - -// JSONColumn is used for dumping statistics. -type JSONColumn struct { - Histogram *tipb.Histogram `json:"histogram"` - CMSketch *tipb.CMSketch `json:"cm_sketch"` - FMSketch *tipb.FMSketch `json:"fm_sketch"` - // StatsVer is a pointer here since the old version json file would not contain version information. - StatsVer *int64 `json:"stats_ver"` - NullCount int64 `json:"null_count"` - TotColSize int64 `json:"tot_col_size"` - LastUpdateVersion uint64 `json:"last_update_version"` - Correlation float64 `json:"correlation"` -} - -// TotalMemoryUsage returns the total memory usage of this column. -func (col *JSONColumn) TotalMemoryUsage() (size int64) { - if col.Histogram != nil { - size += int64(col.Histogram.Size()) - } - if col.CMSketch != nil { - size += int64(col.CMSketch.Size()) - } - if col.FMSketch != nil { - size += int64(col.FMSketch.Size()) - } - return size -} - -// JSONPredicateColumn contains the information of the columns used in the predicate. -type JSONPredicateColumn struct { - LastUsedAt *string `json:"last_used_at"` - LastAnalyzedAt *string `json:"last_analyzed_at"` - ID int64 `json:"id"` -} - // IsSpecialGlobalIndex checks a index is a special global index or not. // A special global index is one that is a global index and has virtual generated columns or prefix columns. func IsSpecialGlobalIndex(idx *model.IndexInfo, tblInfo *model.TableInfo) bool { diff --git a/pkg/statistics/histogram.go b/pkg/statistics/histogram.go index 92c6d3b19b0da..fc3b948f27aaa 100644 --- a/pkg/statistics/histogram.go +++ b/pkg/statistics/histogram.go @@ -772,8 +772,8 @@ func HistogramToProto(hg *Histogram) *tipb.Histogram { for i := 0; i < hg.Len(); i++ { bkt := &tipb.Bucket{ Count: hg.Buckets[i].Count, - LowerBound: hg.GetLower(i).GetBytes(), - UpperBound: hg.GetUpper(i).GetBytes(), + LowerBound: DeepSlice(hg.GetLower(i).GetBytes()), + UpperBound: DeepSlice(hg.GetUpper(i).GetBytes()), Repeats: hg.Buckets[i].Repeat, Ndv: &hg.Buckets[i].NDV, } @@ -782,6 +782,13 @@ func HistogramToProto(hg *Histogram) *tipb.Histogram { return protoHg } +// DeepSlice sallowly clones a slice. +func DeepSlice[T any](s []T) []T { + r := make([]T, len(s)) + copy(r, s) + return r +} + // HistogramFromProto converts Histogram from its protobuf representation. // Note that we will set BytesDatum for the lower/upper bound in the bucket, the decode will // be after all histograms merged. diff --git a/pkg/statistics/integration_test.go b/pkg/statistics/integration_test.go index 8d55f04ab6bd5..6f498c125ec60 100644 --- a/pkg/statistics/integration_test.go +++ b/pkg/statistics/integration_test.go @@ -590,3 +590,25 @@ func TestGlobalIndexWithAnalyzeVersion1AndHistoricalStats(t *testing.T) { // Each analyze will only generate one record tk.MustQuery(fmt.Sprintf("select count(*) from mysql.stats_history where table_id=%d", tblID)).Equal(testkit.Rows("10")) } + +func TestLastAnalyzeVersionNotChangedWithAsyncStatsLoad(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + tk := testkit.NewTestKit(t, store) + + tk.MustExec("set @@tidb_stats_load_sync_wait = 0;") + tk.MustExec("use test") + tk.MustExec("create table t(a int, b int);") + require.NoError(t, dom.StatsHandle().HandleDDLEvent(<-dom.StatsHandle().DDLEventCh())) + require.NoError(t, dom.StatsHandle().Update(context.Background(), dom.InfoSchema())) + tk.MustExec("insert into t values (1, 1);") + err := dom.StatsHandle().DumpStatsDeltaToKV(true) + require.NoError(t, err) + tk.MustExec("alter table t add column c int default 1;") + dom.StatsHandle().HandleDDLEvent(<-dom.StatsHandle().DDLEventCh()) + tk.MustExec("select * from t where a = 1 or b = 1 or c = 1;") + require.NoError(t, dom.StatsHandle().LoadNeededHistograms(dom.InfoSchema())) + result := tk.MustQuery("show stats_meta where table_name = 't'") + require.Len(t, result.Rows(), 1) + // The last analyze time. + require.Equal(t, "", result.Rows()[0][6]) +} diff --git a/pkg/statistics/table.go b/pkg/statistics/table.go index 02fc3b8f6b30b..91734dfed013c 100644 --- a/pkg/statistics/table.go +++ b/pkg/statistics/table.go @@ -84,6 +84,7 @@ type Table struct { // ColAndIdxExistenceMap is the meta map for statistics.Table. // It can tell whether a column/index really has its statistics. So we won't send useless kv request when we do online stats loading. +// We use this map to decide the stats status of a column/index. So it should be fully initialized before we check whether a column/index is analyzed or not. type ColAndIdxExistenceMap struct { checked bool colAnalyzed map[int64]bool @@ -127,6 +128,16 @@ func (m *ColAndIdxExistenceMap) HasAnalyzed(id int64, isIndex bool) bool { return ok && analyzed } +// Has checks whether a column/index stats exists. +func (m *ColAndIdxExistenceMap) Has(id int64, isIndex bool) bool { + if isIndex { + _, ok := m.idxAnalyzed[id] + return ok + } + _, ok := m.colAnalyzed[id] + return ok +} + // InsertCol inserts a column with its meta into the map. func (m *ColAndIdxExistenceMap) InsertCol(id int64, analyzed bool) { m.colAnalyzed[id] = analyzed @@ -811,35 +822,35 @@ func (t *Table) GetStatsHealthy() (int64, bool) { } // ColumnIsLoadNeeded checks whether the column needs trigger the async/sync load. -// The Column should be visible in the table and really has analyzed statistics in the stroage. +// The Column should be visible in the table and really has analyzed statistics in the storage. // Also, if the stats has been loaded into the memory, we also don't need to load it. // We return the Column together with the checking result, to avoid accessing the map multiple times. -// The first bool is whether we have it in memory. The second bool is whether this column has stats in the system table or not. +// The first bool is whether we need to load it into memory. The second bool is whether this column has stats in the system table or not. func (t *Table) ColumnIsLoadNeeded(id int64, fullLoad bool) (*Column, bool, bool) { if t.Pseudo { return nil, false, false } - // when we use non-lite init stats, it cannot init the stats for common columns. - // so we need to foce to load the stats. + hasAnalyzed := t.ColAndIdxExistenceMap.HasAnalyzed(id, false) col, ok := t.columns[id] if !ok { - return nil, true, true - } - if t.ColAndIdxExistenceMap.Checked() { - return nil, true, true + // If The column have no stats object in memory. We need to check it by existence map. + // If existence map says it even has no unitialized record in storage, we don't need to do anything. => Has=false, HasAnalyzed=false + // If existence map says it has analyzed stats, we need to load it from storage. => Has=true, HasAnalyzed=true + // If existence map says it has no analyzed stats but have a uninitialized record in storage, we need to also create a fake object. => Has=true, HasAnalyzed=false + return nil, t.ColAndIdxExistenceMap.Has(id, false), hasAnalyzed } - hasAnalyzed := t.ColAndIdxExistenceMap.HasAnalyzed(id, false) // If it's not analyzed yet. + // The real check condition: !ok && !hashAnalyzed.(Has must be true since we've have the memory object so we should have the storage object) + // After this check, we will always have ok && hasAnalyzed. if !hasAnalyzed { return nil, false, false } // Restore the condition from the simplified form: - // 1. !ok && hasAnalyzed => need load - // 2. ok && hasAnalyzed && fullLoad && !col.IsFullLoad => need load - // 3. ok && hasAnalyzed && !fullLoad && !col.statsInitialized => need load - if !ok || (fullLoad && !col.IsFullLoad()) || (!fullLoad && !col.statsInitialized) { + // 1. ok && hasAnalyzed && fullLoad && !col.IsFullLoad => need load + // 2. ok && hasAnalyzed && !fullLoad && !col.statsInitialized => need load + if (fullLoad && !col.IsFullLoad()) || (!fullLoad && !col.statsInitialized) { return col, true, true } diff --git a/pkg/statistics/util/BUILD.bazel b/pkg/statistics/util/BUILD.bazel new file mode 100644 index 0000000000000..a2a342b24bff8 --- /dev/null +++ b/pkg/statistics/util/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "util", + srcs = ["json_objects.go"], + importpath = "github.com/pingcap/tidb/pkg/statistics/util", + visibility = ["//visibility:public"], + deps = ["@com_github_pingcap_tipb//go-tipb"], +) diff --git a/pkg/statistics/util/json_objects.go b/pkg/statistics/util/json_objects.go new file mode 100644 index 0000000000000..4cc7c0bae9490 --- /dev/null +++ b/pkg/statistics/util/json_objects.go @@ -0,0 +1,92 @@ +// Copyright 2024 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 ( + "cmp" + "slices" + + "github.com/pingcap/tipb/go-tipb" +) + +const ( + // TiDBGlobalStats represents the global-stats for a partitioned table. + TiDBGlobalStats = "global" +) + +// JSONTable is used for dumping statistics. +type JSONTable struct { + Columns map[string]*JSONColumn `json:"columns"` + Indices map[string]*JSONColumn `json:"indices"` + Partitions map[string]*JSONTable `json:"partitions"` + DatabaseName string `json:"database_name"` + TableName string `json:"table_name"` + ExtStats []*JSONExtendedStats `json:"ext_stats"` + PredicateColumns []*JSONPredicateColumn `json:"predicate_columns"` + Count int64 `json:"count"` + ModifyCount int64 `json:"modify_count"` + Version uint64 `json:"version"` + IsHistoricalStats bool `json:"is_historical_stats"` +} + +// Sort is used to sort the object in the JSONTable. it is used for testing to avoid flaky test. +func (j *JSONTable) Sort() { + slices.SortFunc(j.PredicateColumns, func(a, b *JSONPredicateColumn) int { + return cmp.Compare(a.ID, b.ID) + }) +} + +// JSONExtendedStats is used for dumping extended statistics. +type JSONExtendedStats struct { + StatsName string `json:"stats_name"` + StringVals string `json:"string_vals"` + ColIDs []int64 `json:"cols"` + ScalarVals float64 `json:"scalar_vals"` + Tp uint8 `json:"type"` +} + +// JSONColumn is used for dumping statistics. +type JSONColumn struct { + Histogram *tipb.Histogram `json:"histogram"` + CMSketch *tipb.CMSketch `json:"cm_sketch"` + FMSketch *tipb.FMSketch `json:"fm_sketch"` + // StatsVer is a pointer here since the old version json file would not contain version information. + StatsVer *int64 `json:"stats_ver"` + NullCount int64 `json:"null_count"` + TotColSize int64 `json:"tot_col_size"` + LastUpdateVersion uint64 `json:"last_update_version"` + Correlation float64 `json:"correlation"` +} + +// TotalMemoryUsage returns the total memory usage of this column. +func (col *JSONColumn) TotalMemoryUsage() (size int64) { + if col.Histogram != nil { + size += int64(col.Histogram.Size()) + } + if col.CMSketch != nil { + size += int64(col.CMSketch.Size()) + } + if col.FMSketch != nil { + size += int64(col.FMSketch.Size()) + } + return size +} + +// JSONPredicateColumn contains the information of the columns used in the predicate. +type JSONPredicateColumn struct { + LastUsedAt *string `json:"last_used_at"` + LastAnalyzedAt *string `json:"last_analyzed_at"` + ID int64 `json:"id"` +} diff --git a/pkg/store/BUILD.bazel b/pkg/store/BUILD.bazel index a62f479d4d58e..9aa0a1e3167da 100644 --- a/pkg/store/BUILD.bazel +++ b/pkg/store/BUILD.bazel @@ -2,15 +2,23 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "store", - srcs = ["store.go"], + srcs = [ + "etcd.go", + "store.go", + ], importpath = "github.com/pingcap/tidb/pkg/store", visibility = ["//visibility:public"], deps = [ + "//pkg/config", "//pkg/kv", "//pkg/util", "//pkg/util/logutil", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_kvproto//pkg/pdpb", + "@io_etcd_go_etcd_client_v3//:client", + "@org_golang_google_grpc//:grpc", + "@org_golang_google_grpc//backoff", + "@org_golang_google_grpc//keepalive", "@org_uber_go_zap//:zap", ], ) @@ -20,6 +28,7 @@ go_test( timeout = "short", srcs = [ "batch_coprocessor_test.go", + "etcd_test.go", "main_test.go", "store_test.go", ], @@ -27,6 +36,7 @@ go_test( flaky = True, shard_count = 23, deps = [ + "//pkg/config", "//pkg/domain", "//pkg/kv", "//pkg/store/mockstore", diff --git a/pkg/store/copr/batch_coprocessor.go b/pkg/store/copr/batch_coprocessor.go index 5a1847e99ae86..b28d5a812c494 100644 --- a/pkg/store/copr/batch_coprocessor.go +++ b/pkg/store/copr/batch_coprocessor.go @@ -1115,6 +1115,13 @@ func (c *CopClient) sendBatch(ctx context.Context, req *kv.Request, vars *tikv.V ctx = context.WithValue(ctx, tikv.TxnStartKey(), req.StartTs) bo := backoff.NewBackofferWithVars(ctx, copBuildTaskMaxBackoff, vars) + if req.MaxExecutionTime > 0 { + // If MaxExecutionTime is set, we need to set the deadline for the whole batch coprocessor request context. + ctxWithTimeout, cancel := context.WithTimeout(bo.GetCtx(), time.Duration(req.MaxExecutionTime)*time.Millisecond) + defer cancel() + bo.TiKVBackoffer().SetCtx(ctxWithTimeout) + } + var tasks []*batchCopTask var err error if req.PartitionIDAndRanges != nil { diff --git a/pkg/store/copr/copr_test/coprocessor_test.go b/pkg/store/copr/copr_test/coprocessor_test.go index 97897c36eb883..ae2236958396e 100644 --- a/pkg/store/copr/copr_test/coprocessor_test.go +++ b/pkg/store/copr/copr_test/coprocessor_test.go @@ -265,7 +265,7 @@ func TestBuildCopIteratorWithRunawayChecker(t *testing.T) { sql := "select * from t" group1 := "rg1" - checker := manager.DeriveChecker(group1, sql, "", "", time.Now()) + checker := manager.DeriveChecker(group1, sql, "test", "test", time.Now()) manager.AddWatch(&runaway.QuarantineRecord{ ID: 1, ResourceGroupName: group1, diff --git a/pkg/store/copr/coprocessor.go b/pkg/store/copr/coprocessor.go index ca9866073a371..de7c50e72d496 100644 --- a/pkg/store/copr/coprocessor.go +++ b/pkg/store/copr/coprocessor.go @@ -349,6 +349,13 @@ func buildCopTasks(bo *Backoffer, ranges *KeyRanges, opt *buildCopTaskOpt) ([]*c } }) + if req.MaxExecutionTime > 0 { + // If the request has a MaxExecutionTime, we need to set the deadline of the context. + ctxWithTimeout, cancel := context.WithTimeout(bo.GetCtx(), time.Duration(req.MaxExecutionTime)*time.Millisecond) + defer cancel() + bo.TiKVBackoffer().SetCtx(ctxWithTimeout) + } + // TODO(youjiali1995): is there any request type that needn't be split by buckets? locs, err := cache.SplitKeyRangesByBuckets(bo, ranges) if err != nil { @@ -939,8 +946,6 @@ func (sender *copIteratorTaskSender) run(connID uint64, checker resourcegroup.Ru func (it *copIterator) recvFromRespCh(ctx context.Context, respCh <-chan *copResponse) (resp *copResponse, ok bool, exit bool) { failpoint.InjectCall("CtxCancelBeforeReceive", ctx) - ticker := time.NewTicker(3 * time.Second) - defer ticker.Stop() for { select { case resp, ok = <-respCh: @@ -959,17 +964,6 @@ func (it *copIterator) recvFromRespCh(ctx context.Context, respCh <-chan *copRes case <-it.finishCh: exit = true return - case <-ticker.C: - killed := atomic.LoadUint32(it.vars.Killed) - if killed != 0 { - logutil.Logger(ctx).Info( - "a killed signal is received", - zap.Uint32("signal", killed), - ) - resp = &copResponse{err: derr.ErrQueryInterrupted} - ok = true - return - } case <-ctx.Done(): // We select the ctx.Done() in the thread of `Next` instead of in the worker to avoid the cost of `WithCancel`. if atomic.CompareAndSwapUint32(&it.closed, 0, 1) { diff --git a/pkg/store/driver/BUILD.bazel b/pkg/store/driver/BUILD.bazel index a220d9fb786a4..46d90bca7ab50 100644 --- a/pkg/store/driver/BUILD.bazel +++ b/pkg/store/driver/BUILD.bazel @@ -45,6 +45,8 @@ go_test( flaky = True, shard_count = 8, deps = [ + "//pkg/config", + "//pkg/ddl", "//pkg/domain", "//pkg/kv", "//pkg/meta/model", diff --git a/pkg/store/driver/error/error.go b/pkg/store/driver/error/error.go index 914b02a2c76a2..16ac48af5d0b0 100644 --- a/pkg/store/driver/error/error.go +++ b/pkg/store/driver/error/error.go @@ -101,6 +101,11 @@ func ToTiDBErr(err error) error { return kv.ErrEntryTooLarge.GenWithStackByArgs(entryTooLarge.Limit, entryTooLarge.Size) } + var keyTooLarge *tikverr.ErrKeyTooLarge + if stderrs.As(err, &keyTooLarge) { + return kv.ErrKeyTooLarge.GenWithStackByArgs(keyTooLarge.KeySize) + } + if stderrs.Is(err, tikverr.ErrInvalidTxn) { return kv.ErrInvalidTxn } diff --git a/pkg/store/driver/error/error_test.go b/pkg/store/driver/error/error_test.go index b6d3a288d7edb..fd84bc4290241 100644 --- a/pkg/store/driver/error/error_test.go +++ b/pkg/store/driver/error/error_test.go @@ -15,6 +15,7 @@ package error //nolint: predeclared import ( + "math" "testing" "github.com/pingcap/errors" @@ -52,3 +53,16 @@ func TestConvertError(t *testing.T) { assert.True(t, errors.ErrorEqual(tidbErr, terror.ErrResultUndetermined)) } } + +func TestMemBufferOversizeError(t *testing.T) { + err2str := map[error]string{ + &tikverr.ErrTxnTooLarge{Size: 100}: "Transaction is too large, size: 100", + &tikverr.ErrEntryTooLarge{Limit: 10, Size: 20}: "entry too large, the max entry size is 10, the size of data is 20", + &tikverr.ErrKeyTooLarge{KeySize: math.MaxUint16 + 1}: "key is too large, the size of given key is 65536", + } + for err, errString := range err2str { + tidbErr := ToTiDBErr(err) + assert.NotNil(t, tidbErr) + assert.Contains(t, tidbErr.Error(), errString) + } +} diff --git a/pkg/store/driver/main_test.go b/pkg/store/driver/main_test.go index ca425561c5245..56145ea2f31b4 100644 --- a/pkg/store/driver/main_test.go +++ b/pkg/store/driver/main_test.go @@ -20,6 +20,8 @@ import ( "fmt" "testing" + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/session" @@ -61,7 +63,8 @@ func createTiKVStore(t *testing.T) (kv.Storage, *domain.Domain) { var d TiKVDriver store, err := d.Open(fmt.Sprintf("tikv://%s", *pdAddrs)) require.NoError(t, err) - + config.GetGlobalConfig().Store = config.StoreTypeTiKV + require.NoError(t, ddl.StartOwnerManager(context.Background(), store)) // clear storage txn, err := store.Begin() require.NoError(t, err) @@ -80,6 +83,7 @@ func createTiKVStore(t *testing.T) (kv.Storage, *domain.Domain) { t.Cleanup(func() { dom.Close() + ddl.CloseOwnerManager() require.NoError(t, store.Close()) }) diff --git a/pkg/store/driver/tikv_driver.go b/pkg/store/driver/tikv_driver.go index b1eae2664f7f2..da1318e06a6ed 100644 --- a/pkg/store/driver/tikv_driver.go +++ b/pkg/store/driver/tikv_driver.go @@ -254,6 +254,21 @@ type tikvStore struct { gcWorker *gcworker.GCWorker coprStore *copr.Store codec tikv.Codec + opts sync.Map +} + +// GetOption wraps around sync.Map. +func (s *tikvStore) GetOption(k any) (any, bool) { + return s.opts.Load(k) +} + +// SetOption wraps around sync.Map. +func (s *tikvStore) SetOption(k, v any) { + if v == nil { + s.opts.Delete(k) + } else { + s.opts.Store(k, v) + } } // Name gets the name of the storage engine diff --git a/pkg/store/etcd.go b/pkg/store/etcd.go new file mode 100644 index 0000000000000..dc53a23abcb16 --- /dev/null +++ b/pkg/store/etcd.go @@ -0,0 +1,85 @@ +// Copyright 2024 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 store + +import ( + "time" + + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/kv" + clientv3 "go.etcd.io/etcd/client/v3" + "go.uber.org/zap" + "google.golang.org/grpc" + "google.golang.org/grpc/backoff" + "google.golang.org/grpc/keepalive" +) + +// NewEtcdCli creates a new clientv3.Client from store if the store support it. +// the returned client might be nil. +// TODO currently uni-store/mock-tikv/tikv all implements EtcdBackend while they don't support actually. +// refactor this part. +func NewEtcdCli(store kv.Storage) (*clientv3.Client, error) { + etcdStore, addrs, err := GetEtcdAddrs(store) + if err != nil { + return nil, err + } + if len(addrs) == 0 { + return nil, nil + } + cli, err := NewEtcdCliWithAddrs(addrs, etcdStore) + if err != nil { + return nil, err + } + return cli, nil +} + +// GetEtcdAddrs gets the etcd addrs from store if the store support it. +func GetEtcdAddrs(store kv.Storage) (kv.EtcdBackend, []string, error) { + etcdStore, ok := store.(kv.EtcdBackend) + if !ok { + return nil, nil, nil + } + addrs, err := etcdStore.EtcdAddrs() + if err != nil { + return nil, nil, err + } + return etcdStore, addrs, nil +} + +// NewEtcdCliWithAddrs creates a new clientv3.Client with specified addrs and etcd backend. +func NewEtcdCliWithAddrs(addrs []string, ebd kv.EtcdBackend) (*clientv3.Client, error) { + cfg := config.GetGlobalConfig() + etcdLogCfg := zap.NewProductionConfig() + etcdLogCfg.Level = zap.NewAtomicLevelAt(zap.ErrorLevel) + backoffCfg := backoff.DefaultConfig + backoffCfg.MaxDelay = 3 * time.Second + cli, err := clientv3.New(clientv3.Config{ + LogConfig: &etcdLogCfg, + Endpoints: addrs, + AutoSyncInterval: 30 * time.Second, + DialTimeout: 5 * time.Second, + DialOptions: []grpc.DialOption{ + grpc.WithConnectParams(grpc.ConnectParams{ + Backoff: backoffCfg, + }), + grpc.WithKeepaliveParams(keepalive.ClientParameters{ + Time: time.Duration(cfg.TiKVClient.GrpcKeepAliveTime) * time.Second, + Timeout: time.Duration(cfg.TiKVClient.GrpcKeepAliveTimeout) * time.Second, + }), + }, + TLS: ebd.TLSConfig(), + }) + return cli, err +} diff --git a/pkg/store/etcd_test.go b/pkg/store/etcd_test.go new file mode 100644 index 0000000000000..ef83a6596b676 --- /dev/null +++ b/pkg/store/etcd_test.go @@ -0,0 +1,48 @@ +// Copyright 2024 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 store + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/kv" + "github.com/stretchr/testify/require" +) + +type mockEtcdBackend struct { + kv.Storage + kv.EtcdBackend + pdAddrs []string +} + +func (mebd *mockEtcdBackend) EtcdAddrs() ([]string, error) { + return mebd.pdAddrs, nil +} + +func TestNewEtcdCliGetEtcdAddrs(t *testing.T) { + etcdStore, addrs, err := GetEtcdAddrs(nil) + require.NoError(t, err) + require.Empty(t, addrs) + require.Nil(t, etcdStore) + + etcdStore, addrs, err = GetEtcdAddrs(&mockEtcdBackend{pdAddrs: []string{"localhost:2379"}}) + require.NoError(t, err) + require.Equal(t, []string{"localhost:2379"}, addrs) + require.NotNil(t, etcdStore) + + cli, err := NewEtcdCli(nil) + require.NoError(t, err) + require.Nil(t, cli) +} diff --git a/pkg/store/helper/helper.go b/pkg/store/helper/helper.go index 9a13377d62967..d1993f92c39dc 100644 --- a/pkg/store/helper/helper.go +++ b/pkg/store/helper/helper.go @@ -76,6 +76,8 @@ type Storage interface { GetLockWaits() ([]*deadlockpb.WaitForEntry, error) GetCodec() tikv.Codec GetPDHTTPClient() pd.Client + GetOption(any) (any, bool) + SetOption(any, any) } // Helper is a middleware to get some information from tikv/pd. It can be used for TiDB's http api or mem table. diff --git a/pkg/store/mockstore/BUILD.bazel b/pkg/store/mockstore/BUILD.bazel index dd683ec168f81..fb5696ecebd82 100644 --- a/pkg/store/mockstore/BUILD.bazel +++ b/pkg/store/mockstore/BUILD.bazel @@ -19,6 +19,7 @@ go_library( "//pkg/testkit/testenv", "@com_github_otiai10_copy//:copy", "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_kvproto//pkg/keyspacepb", "@com_github_pingcap_kvproto//pkg/metapb", "@com_github_tikv_client_go_v2//testutils", "@com_github_tikv_client_go_v2//tikv", diff --git a/pkg/store/mockstore/mockcopr/executor_test.go b/pkg/store/mockstore/mockcopr/executor_test.go index 75a9f4a5abff9..211e67d0fd024 100644 --- a/pkg/store/mockstore/mockcopr/executor_test.go +++ b/pkg/store/mockstore/mockcopr/executor_test.go @@ -52,7 +52,7 @@ func TestResolvedLargeTxnLocks(t *testing.T) { tikvStore, err := tikv.NewTestTiKVStore(rpcClient, pdClient, nil, nil, 0) require.NoError(t, err) - store, err := mockstorage.NewMockStorage(tikvStore) + store, err := mockstorage.NewMockStorage(tikvStore, nil) require.NoError(t, err) defer func() { require.NoError(t, store.Close()) diff --git a/pkg/store/mockstore/mockstorage/BUILD.bazel b/pkg/store/mockstore/mockstorage/BUILD.bazel index c1d8def37a69e..67323fdddaf46 100644 --- a/pkg/store/mockstore/mockstorage/BUILD.bazel +++ b/pkg/store/mockstore/mockstorage/BUILD.bazel @@ -11,6 +11,7 @@ go_library( "//pkg/store/driver/txn", "//pkg/store/helper", "@com_github_pingcap_kvproto//pkg/deadlock", + "@com_github_pingcap_kvproto//pkg/keyspacepb", "@com_github_tikv_client_go_v2//config", "@com_github_tikv_client_go_v2//tikv", ], diff --git a/pkg/store/mockstore/mockstorage/storage.go b/pkg/store/mockstore/mockstorage/storage.go index bb65a4d714560..ca70712d8e69c 100644 --- a/pkg/store/mockstore/mockstorage/storage.go +++ b/pkg/store/mockstore/mockstorage/storage.go @@ -17,8 +17,10 @@ package mockstorage import ( "context" "crypto/tls" + "sync" deadlockpb "github.com/pingcap/kvproto/pkg/deadlock" + "github.com/pingcap/kvproto/pkg/keyspacepb" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/store/copr" driver "github.com/pingcap/tidb/pkg/store/driver/txn" @@ -33,24 +35,40 @@ var _ helper.Storage = &mockStorage{} type mockStorage struct { *tikv.KVStore *copr.Store + opts sync.Map memCache kv.MemManager LockWaits []*deadlockpb.WaitForEntry + + keyspaceMeta *keyspacepb.KeyspaceMeta } // NewMockStorage wraps tikv.KVStore as kv.Storage. -func NewMockStorage(tikvStore *tikv.KVStore) (kv.Storage, error) { +func NewMockStorage(tikvStore *tikv.KVStore, keyspaceMeta *keyspacepb.KeyspaceMeta) (kv.Storage, error) { coprConfig := config.DefaultConfig().TiKVClient.CoprCache coprStore, err := copr.NewStore(tikvStore, &coprConfig) if err != nil { return nil, err } return &mockStorage{ - KVStore: tikvStore, - Store: coprStore, - memCache: kv.NewCacheDB(), + KVStore: tikvStore, + Store: coprStore, + memCache: kv.NewCacheDB(), + keyspaceMeta: keyspaceMeta, }, nil } +func (s *mockStorage) GetOption(k any) (any, bool) { + return s.opts.Load(k) +} + +func (s *mockStorage) SetOption(k, v any) { + if v == nil { + s.opts.Delete(k) + } else { + s.opts.Store(k, v) + } +} + func (s *mockStorage) EtcdAddrs() ([]string, error) { return nil, nil } @@ -126,8 +144,18 @@ func (s *mockStorage) Close() error { } func (s *mockStorage) GetCodec() tikv.Codec { + if s.keyspaceMeta == nil { + pdClient := s.KVStore.GetPDClient() + pdCodecCli := tikv.NewCodecPDClient(tikv.ModeTxn, pdClient) + return pdCodecCli.GetCodec() + } + + // Get API V2 codec. pdClient := s.KVStore.GetPDClient() - pdCodecCli := tikv.NewCodecPDClient(tikv.ModeTxn, pdClient) + pdCodecCli, err := tikv.NewCodecPDClientWithKeyspace(tikv.ModeTxn, pdClient, s.keyspaceMeta.Name) + if err != nil { + panic(err) + } return pdCodecCli.GetCodec() } diff --git a/pkg/store/mockstore/mockstore.go b/pkg/store/mockstore/mockstore.go index acf805c04e371..2f9147a24e8bb 100644 --- a/pkg/store/mockstore/mockstore.go +++ b/pkg/store/mockstore/mockstore.go @@ -23,6 +23,7 @@ import ( cp "github.com/otiai10/copy" "github.com/pingcap/errors" + "github.com/pingcap/kvproto/pkg/keyspacepb" "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/kv" @@ -42,7 +43,7 @@ func (d MockTiKVDriver) Open(path string) (kv.Storage, error) { if err != nil { return nil, errors.Trace(err) } - if !strings.EqualFold(u.Scheme, "mocktikv") { + if config.StoreType(strings.ToLower(u.Scheme)) != config.StoreTypeMockTiKV { return nil, errors.Errorf("Uri scheme expected(mocktikv) but found (%s)", u.Scheme) } @@ -64,7 +65,7 @@ func (d EmbedUnistoreDriver) Open(path string) (kv.Storage, error) { if err != nil { return nil, errors.Trace(err) } - if !strings.EqualFold(u.Scheme, "unistore") { + if config.StoreType(strings.ToLower(u.Scheme)) != config.StoreTypeUniStore { return nil, errors.Errorf("Uri scheme expected(unistore) but found (%s)", u.Scheme) } @@ -99,6 +100,7 @@ type mockOptions struct { ddlCheckerHijack bool tikvOptions []tikv.Option pdAddrs []string + keyspaceMeta *keyspacepb.KeyspaceMeta } // MockTiKVStoreOption is used to control some behavior of mock tikv. @@ -199,6 +201,13 @@ func WithMockTiFlash(nodes int) MockTiKVStoreOption { ) } +// WithKeyspaceMeta lets user set the keyspace meta. +func WithKeyspaceMeta(keyspaceMeta *keyspacepb.KeyspaceMeta) MockTiKVStoreOption { + return func(c *mockOptions) { + c.keyspaceMeta = keyspaceMeta + } +} + // DDLCheckerInjector is used to break import cycle. var DDLCheckerInjector func(kv.Storage) kv.Storage diff --git a/pkg/store/mockstore/tikv.go b/pkg/store/mockstore/tikv.go index eb56eae38f0a4..ff8e5a12dd7fb 100644 --- a/pkg/store/mockstore/tikv.go +++ b/pkg/store/mockstore/tikv.go @@ -39,5 +39,5 @@ func newMockTikvStore(opt *mockOptions) (kv.Storage, error) { if err != nil { return nil, err } - return mockstorage.NewMockStorage(kvstore) + return mockstorage.NewMockStorage(kvstore, opt.keyspaceMeta) } diff --git a/pkg/store/mockstore/unistore.go b/pkg/store/mockstore/unistore.go index 36161729952a6..bf68f4417b865 100644 --- a/pkg/store/mockstore/unistore.go +++ b/pkg/store/mockstore/unistore.go @@ -33,12 +33,22 @@ func newUnistore(opts *mockOptions) (kv.Storage, error) { Client: pdClient, } - kvstore, err := tikv.NewTestTiKVStore( - newClientRedirector(client), pdClient, - opts.clientHijacker, opts.pdClientHijacker, - opts.txnLocalLatches, opts.tikvOptions...) - if err != nil { - return nil, err + var kvstore *tikv.KVStore + if opts.keyspaceMeta == nil { + kvstore, err = tikv.NewTestTiKVStore( + newClientRedirector(client), pdClient, + opts.clientHijacker, opts.pdClientHijacker, + opts.txnLocalLatches, opts.tikvOptions...) + if err != nil { + return nil, err + } + } else { + kvstore, err = tikv.NewTestKeyspaceTiKVStore(newClientRedirector(client), + pdClient, opts.clientHijacker, opts.pdClientHijacker, opts.txnLocalLatches, *opts.keyspaceMeta) + if err != nil { + return nil, err + } } - return mockstorage.NewMockStorage(kvstore) + + return mockstorage.NewMockStorage(kvstore, opts.keyspaceMeta) } diff --git a/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go b/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go index 4fafa3c82887c..67c382f1a9f2f 100644 --- a/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go +++ b/pkg/store/mockstore/unistore/cophandler/cop_handler_test.go @@ -265,8 +265,7 @@ func (dagBuilder *dagBuilder) addSelection(expr *tipb.Expr) *dagBuilder { dagBuilder.executors = append(dagBuilder.executors, &tipb.Executor{ Tp: tipb.ExecType_TypeSelection, Selection: &tipb.Selection{ - Conditions: []*tipb.Expr{expr}, - XXX_unrecognized: nil, + Conditions: []*tipb.Expr{expr}, }, }) return dagBuilder diff --git a/pkg/store/mockstore/unistore/cophandler/mpp.go b/pkg/store/mockstore/unistore/cophandler/mpp.go index c516af69cdd89..615add9453d79 100644 --- a/pkg/store/mockstore/unistore/cophandler/mpp.go +++ b/pkg/store/mockstore/unistore/cophandler/mpp.go @@ -384,6 +384,7 @@ func (b *mppExecBuilder) buildMPPJoin(pb *tipb.Join, children []*tipb.Executor) if err != nil { return nil, errors.Trace(err) } + e.baseMPPExec.children = []mppExec{leftCh, rightCh} if pb.JoinType == tipb.JoinType_TypeLeftOuterJoin { for _, tp := range rightCh.getFieldTypes() { tp.DelFlag(mysql.NotNullFlag) diff --git a/pkg/store/mockstore/unistore/cophandler/mpp_exec.go b/pkg/store/mockstore/unistore/cophandler/mpp_exec.go index 7d53134db94e5..566071dcfa0c9 100644 --- a/pkg/store/mockstore/unistore/cophandler/mpp_exec.go +++ b/pkg/store/mockstore/unistore/cophandler/mpp_exec.go @@ -666,6 +666,7 @@ func (e *exchSenderExec) next() (*chunk.Chunk, error) { } else if !(chk != nil && chk.NumRows() != 0) { return nil, nil } + e.execSummary.updateOnlyRows(chk.NumRows()) if e.exchangeTp == tipb.ExchangeType_Hash { rows := chk.NumRows() targetChunks := make([]*chunk.Chunk, 0, len(e.tunnels)) @@ -767,6 +768,9 @@ func (e *exchRecvExec) next() (*chunk.Chunk, error) { e.chk = nil }() } + if e.chk != nil { + e.execSummary.updateOnlyRows(e.chk.NumRows()) + } return e.chk, nil } @@ -984,6 +988,7 @@ func (e *joinExec) next() (*chunk.Chunk, error) { if e.idx < len(e.reservedRows) { idx := e.idx e.idx++ + e.execSummary.updateOnlyRows(e.reservedRows[idx].Chunk().NumRows()) return e.reservedRows[idx].Chunk(), nil } eof, err := e.fetchRows() diff --git a/pkg/store/mockstore/unistore/metrics/BUILD.bazel b/pkg/store/mockstore/unistore/metrics/BUILD.bazel index 6bdf2886c5fa1..5a3030445fd17 100644 --- a/pkg/store/mockstore/unistore/metrics/BUILD.bazel +++ b/pkg/store/mockstore/unistore/metrics/BUILD.bazel @@ -5,5 +5,8 @@ go_library( srcs = ["metrics.go"], importpath = "github.com/pingcap/tidb/pkg/store/mockstore/unistore/metrics", visibility = ["//visibility:public"], - deps = ["@com_github_prometheus_client_golang//prometheus"], + deps = [ + "//pkg/config", + "@com_github_prometheus_client_golang//prometheus", + ], ) diff --git a/pkg/store/mockstore/unistore/metrics/metrics.go b/pkg/store/mockstore/unistore/metrics/metrics.go index 7c4d9497ab1a2..70ed84940d3ba 100644 --- a/pkg/store/mockstore/unistore/metrics/metrics.go +++ b/pkg/store/mockstore/unistore/metrics/metrics.go @@ -15,11 +15,12 @@ package metrics import ( + "github.com/pingcap/tidb/pkg/config" "github.com/prometheus/client_golang/prometheus" ) const ( - namespace = "unistore" + namespace = string(config.StoreTypeUniStore) raft = "raft" ) diff --git a/pkg/store/mockstore/unistore/pd.go b/pkg/store/mockstore/unistore/pd.go index 7960b3c9a0ba0..d6faa9c4f326c 100644 --- a/pkg/store/mockstore/unistore/pd.go +++ b/pkg/store/mockstore/unistore/pd.go @@ -49,15 +49,38 @@ type pdClient struct { // After using PD http client, we should impl mock PD service discovery // which needs PD server HTTP address. addrs []string + + keyspaceNameMap map[string]keyspacepb.KeyspaceMeta + keyspaceIDMap map[uint32]keyspacepb.KeyspaceMeta +} + +func makeKeyspace() (map[string]keyspacepb.KeyspaceMeta, map[uint32]keyspacepb.KeyspaceMeta) { + keyspaceNameMap := make(map[string]keyspacepb.KeyspaceMeta) + keyspaceIDMap := make(map[uint32]keyspacepb.KeyspaceMeta) + + // keyspace id = 2 + keyspaceMeta2 := keyspacepb.KeyspaceMeta{Id: 2, Name: "test_ks_name2"} + keyspaceNameMap[keyspaceMeta2.Name] = keyspaceMeta2 + keyspaceIDMap[keyspaceMeta2.Id] = keyspaceMeta2 + + // keyspace id = 3 + keyspaceMeta3 := keyspacepb.KeyspaceMeta{Id: 3, Name: "test_ks_name3"} + keyspaceNameMap[keyspaceMeta3.Name] = keyspaceMeta3 + keyspaceIDMap[keyspaceMeta3.Id] = keyspaceMeta3 + + return keyspaceNameMap, keyspaceIDMap } func newPDClient(pd *us.MockPD, addrs []string) *pdClient { + keyspaceNameMap, keyspaceIDMap := makeKeyspace() return &pdClient{ MockPD: pd, ResourceManagerClient: infosync.NewMockResourceManagerClient(), serviceSafePoints: make(map[string]uint64), globalConfig: make(map[string]string), addrs: addrs, + keyspaceNameMap: keyspaceNameMap, + keyspaceIDMap: keyspaceIDMap, } } @@ -306,7 +329,10 @@ func (c *pdClient) GetAllKeyspaces(ctx context.Context, startID uint32, limit ui // LoadKeyspace loads and returns target keyspace's metadata. func (c *pdClient) LoadKeyspace(ctx context.Context, name string) (*keyspacepb.KeyspaceMeta, error) { - return nil, nil + if keyspaceMeta, exists := c.keyspaceNameMap[name]; exists { + return &keyspaceMeta, nil + } + return nil, errors.New(pdpb.ErrorType_ENTRY_NOT_FOUND.String()) } // WatchKeyspaces watches keyspace meta changes. diff --git a/pkg/store/mockstore/unistore/tikv/mvcc.go b/pkg/store/mockstore/unistore/tikv/mvcc.go index da16e70539faf..5f1d85f68d4f7 100644 --- a/pkg/store/mockstore/unistore/tikv/mvcc.go +++ b/pkg/store/mockstore/unistore/tikv/mvcc.go @@ -1191,7 +1191,10 @@ func (store *MVCCStore) buildPrewriteLock(reqCtx *requestCtx, m *kvrpcpb.Mutatio } lock.Op = uint8(kvrpcpb.Op_Put) } - if rowcodec.IsRowKey(m.Key) && lock.Op == uint8(kvrpcpb.Op_Put) { + // In the write path, remove the keyspace prefix + // to ensure compatibility with the key parsing implemented in the mock. + tempKey := rowcodec.RemoveKeyspacePrefix(m.Key) + if rowcodec.IsRowKey(tempKey) && lock.Op == uint8(kvrpcpb.Op_Put) { if !rowcodec.IsNewFormat(m.Value) { reqCtx.buf, err = encodeFromOldRow(m.Value, reqCtx.buf) if err != nil { diff --git a/pkg/store/store.go b/pkg/store/store.go index 20cd6520b398f..84722c48aa202 100644 --- a/pkg/store/store.go +++ b/pkg/store/store.go @@ -21,27 +21,31 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/kvproto/pkg/pdpb" + "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/util" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) -var stores = make(map[string]kv.Driver) +var stores = make(map[config.StoreType]kv.Driver) var storesLock sync.RWMutex // Register registers a kv storage with unique name and its associated Driver. -func Register(name string, driver kv.Driver) error { +// TODO: remove this function and use driver directly, TiDB is not a SDK. +func Register(tp config.StoreType, driver kv.Driver) error { storesLock.Lock() defer storesLock.Unlock() - name = strings.ToLower(name) + if !tp.Valid() { + return errors.Errorf("invalid storage type %s", tp) + } - if _, ok := stores[name]; ok { - return errors.Errorf("%s is already registered", name) + if _, ok := stores[tp]; ok { + return errors.Errorf("%s is already registered", tp) } - stores[name] = driver + stores[tp] = driver return nil } @@ -66,7 +70,7 @@ func newStoreWithRetry(path string, maxRetries int) (kv.Storage, error) { } name := strings.ToLower(storeURL.Scheme) - d, ok := loadDriver(name) + d, ok := loadDriver(config.StoreType(name)) if !ok { return nil, errors.Errorf("invalid uri format, storage %s is not registered", name) } @@ -86,10 +90,10 @@ func newStoreWithRetry(path string, maxRetries int) (kv.Storage, error) { return s, errors.Trace(err) } -func loadDriver(name string) (kv.Driver, bool) { +func loadDriver(tp config.StoreType) (kv.Driver, bool) { storesLock.RLock() defer storesLock.RUnlock() - d, ok := stores[name] + d, ok := stores[tp] return d, ok } diff --git a/pkg/store/store_test.go b/pkg/store/store_test.go index 6185c3bab03a6..acddfbe3cc426 100644 --- a/pkg/store/store_test.go +++ b/pkg/store/store_test.go @@ -23,6 +23,7 @@ import ( "testing" "time" + "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/stretchr/testify/require" @@ -738,8 +739,8 @@ func TestIsolationMultiInc(t *testing.T) { func TestRetryOpenStore(t *testing.T) { begin := time.Now() - require.NoError(t, Register("dummy", &brokenStore{})) - store, err := newStoreWithRetry("dummy://dummy-store", 3) + require.NoError(t, Register(config.StoreTypeMockTiKV, &brokenStore{})) + store, err := newStoreWithRetry("mocktikv://dummy-store", 3) if store != nil { defer func() { require.NoError(t, store.Close()) @@ -750,22 +751,13 @@ func TestRetryOpenStore(t *testing.T) { require.GreaterOrEqual(t, uint64(elapse), uint64(3*time.Second)) } -func TestOpenStore(t *testing.T) { - require.NoError(t, Register("open", &brokenStore{})) - store, err := newStoreWithRetry(":", 3) - if store != nil { - defer func() { - require.NoError(t, store.Close()) - }() - } - require.Error(t, err) -} - func TestRegister(t *testing.T) { err := Register("retry", &brokenStore{}) + require.ErrorContains(t, err, "invalid storage") + err = Register(config.StoreTypeMockTiKV, &brokenStore{}) require.NoError(t, err) - err = Register("retry", &brokenStore{}) - require.Error(t, err) + err = Register(config.StoreTypeMockTiKV, &brokenStore{}) + require.ErrorContains(t, err, "already registered") } func TestSetAssertion(t *testing.T) { diff --git a/pkg/table/column.go b/pkg/table/column.go index 4b20df2cab7ee..b71d2feff2f25 100644 --- a/pkg/table/column.go +++ b/pkg/table/column.go @@ -511,7 +511,10 @@ func (c *Column) CheckNotNull(data *types.Datum, rowCntInLoadData uint64) error // error is ErrWarnNullToNotnull. // Otherwise, the error is ErrColumnCantNull. // If BadNullAsWarning is true, it will append the error as a warning, else return the error. -func (c *Column) HandleBadNull(ec errctx.Context, d *types.Datum, rowCntInLoadData uint64) error { +func (c *Column) HandleBadNull( + ec errctx.Context, + d *types.Datum, + rowCntInLoadData uint64) error { if err := c.CheckNotNull(d, rowCntInLoadData); err != nil { if ec.HandleError(err) == nil { *d = GetZeroValue(c.ToInfo()) @@ -554,7 +557,7 @@ func GetColOriginDefaultValueWithoutStrictSQLMode(ctx expression.BuildContext, c // But CheckNoDefaultValueForInsert logic should only check before insert. func CheckNoDefaultValueForInsert(sc *stmtctx.StatementContext, col *model.ColumnInfo) error { if mysql.HasNoDefaultValueFlag(col.GetFlag()) && !col.DefaultIsExpr && col.GetDefaultValue() == nil && col.GetType() != mysql.TypeEnum { - ignoreErr := sc.ErrGroupLevel(errctx.ErrGroupBadNull) != errctx.LevelError + ignoreErr := sc.ErrGroupLevel(errctx.ErrGroupNoDefault) != errctx.LevelError if !ignoreErr { return ErrNoDefaultValue.GenWithStackByArgs(col.Name) } diff --git a/pkg/table/column_test.go b/pkg/table/column_test.go index b308f786b1841..90bc46eda80ac 100644 --- a/pkg/table/column_test.go +++ b/pkg/table/column_test.go @@ -485,7 +485,7 @@ func TestGetDefaultValue(t *testing.T) { ctx.GetSessionVars().SQLMode = mysql.DelSQLMode(defaultMode, mysql.ModeStrictAllTables|mysql.ModeStrictTransTables) } levels := sc.ErrLevels() - levels[errctx.ErrGroupBadNull] = errctx.ResolveErrLevel(false, !tt.strict) + levels[errctx.ErrGroupNoDefault] = errctx.ResolveErrLevel(false, !tt.strict) sc.SetErrLevels(levels) val, err := GetColDefaultValue(ctx, tt.colInfo) if err != nil { @@ -507,7 +507,7 @@ func TestGetDefaultValue(t *testing.T) { ctx.GetSessionVars().SQLMode = mysql.DelSQLMode(defaultMode, mysql.ModeStrictAllTables|mysql.ModeStrictTransTables) } levels := sc.ErrLevels() - levels[errctx.ErrGroupBadNull] = errctx.ResolveErrLevel(false, !tt.strict) + levels[errctx.ErrGroupNoDefault] = errctx.ResolveErrLevel(false, !tt.strict) sc.SetErrLevels(levels) val, err := GetColOriginDefaultValue(ctx, tt.colInfo) if err != nil { diff --git a/pkg/table/table.go b/pkg/table/table.go index e1e5183302f61..7ffdd011c716d 100644 --- a/pkg/table/table.go +++ b/pkg/table/table.go @@ -202,7 +202,7 @@ func (opt *UpdateRecordOpt) SkipWriteUntouchedIndices() bool { // GetAddRecordOpt creates a AddRecordOpt. func (opt *UpdateRecordOpt) GetAddRecordOpt() *AddRecordOpt { - return &AddRecordOpt{commonMutateOpt: opt.commonMutateOpt} + return &AddRecordOpt{commonMutateOpt: opt.commonMutateOpt, isUpdate: true} } // GetCreateIdxOpt creates a CreateIdxOpt. diff --git a/pkg/table/table_test.go b/pkg/table/table_test.go index 373fc3f49ff6e..466dc819f871a 100644 --- a/pkg/table/table_test.go +++ b/pkg/table/table_test.go @@ -60,12 +60,12 @@ func TestOptions(t *testing.T) { // NewUpdateRecordOpt without option updateOpt := NewUpdateRecordOpt() require.Equal(t, UpdateRecordOpt{}, *updateOpt) - require.Equal(t, AddRecordOpt{}, *(updateOpt.GetAddRecordOpt())) + require.Equal(t, AddRecordOpt{isUpdate: true}, *(updateOpt.GetAddRecordOpt())) require.Equal(t, CreateIdxOpt{}, *(updateOpt.GetCreateIdxOpt())) // NewUpdateRecordOpt with options updateOpt = NewUpdateRecordOpt(WithCtx(ctx)) require.Equal(t, UpdateRecordOpt{commonMutateOpt: commonMutateOpt{ctx: ctx}}, *updateOpt) - require.Equal(t, AddRecordOpt{commonMutateOpt: commonMutateOpt{ctx: ctx}}, *(updateOpt.GetAddRecordOpt())) + require.Equal(t, AddRecordOpt{commonMutateOpt: commonMutateOpt{ctx: ctx}, isUpdate: true}, *(updateOpt.GetAddRecordOpt())) require.Equal(t, CreateIdxOpt{commonMutateOpt: commonMutateOpt{ctx: ctx}}, *(updateOpt.GetCreateIdxOpt())) // NewCreateIdxOpt without option createIdxOpt := NewCreateIdxOpt() diff --git a/pkg/table/tables/index.go b/pkg/table/tables/index.go index 8a81bd1212138..e5436a6c1c78f 100644 --- a/pkg/table/tables/index.go +++ b/pkg/table/tables/index.go @@ -179,6 +179,15 @@ func (c *index) create(sctx table.MutateContext, txn kv.Transaction, indexedValu } writeBufs := sctx.GetMutateBuffers().GetWriteStmtBufs() skipCheck := opt.DupKeyCheck() == table.DupKeyCheckSkip + allowOverwriteOfOldGlobalIndex := false + if c.idxInfo.Global && c.tblInfo.Partition.DDLState == model.StateDeleteReorganization && + // TODO: Also do the same for DROP PARTITION + c.tblInfo.Partition.DDLAction == model.ActionTruncateTablePartition { + allowOverwriteOfOldGlobalIndex = true + if len(c.tblInfo.Partition.DroppingDefinitions) > 0 { + skipCheck = false + } + } evalCtx := sctx.GetExprCtx().GetEvalCtx() loc, ec := evalCtx.Location(), evalCtx.ErrCtx() for _, value := range indexedValues { @@ -255,6 +264,8 @@ func (c *index) create(sctx table.MutateContext, txn kv.Transaction, indexedValu tempVal := tablecodec.TempIndexValueElem{Value: idxVal, KeyVer: keyVer, Distinct: distinct} val = tempVal.Encode(nil) } + // during some step of add-index, such as in write-reorg state, this + // key is THE temp index key. err = txn.GetMemBuffer().Set(key, val) if err != nil { return nil, err @@ -281,7 +292,31 @@ func (c *index) create(sctx table.MutateContext, txn kv.Transaction, indexedValu } var value []byte - if c.tblInfo.TempTableType != model.TempTableNone { + if allowOverwriteOfOldGlobalIndex { + // In DeleteReorganization, overwrite Global Index keys pointing to + // old dropped/truncated partitions. + // Note that a partitioned table cannot be temporary table + value, err = txn.Get(ctx, key) + if err == nil && len(value) != 0 { + handle, errPart := tablecodec.DecodeHandleInIndexValue(value) + if errPart != nil { + return nil, errPart + } + if partHandle, ok := handle.(kv.PartitionHandle); ok { + for _, id := range c.tblInfo.Partition.IDsInDDLToIgnore() { + if id == partHandle.PartitionID { + // Simply overwrite it + err = txn.SetAssertion(key, kv.SetAssertUnknown) + if err != nil { + return nil, err + } + value = nil + break + } + } + } + } + } else if c.tblInfo.TempTableType != model.TempTableNone { // Always check key for temporary table because it does not write to TiKV value, err = txn.Get(ctx, key) } else if opt.DupKeyCheck() == table.DupKeyCheckLazy && !keyIsTempIdxKey { @@ -427,6 +462,8 @@ func (c *index) Delete(ctx table.MutateContext, txn kv.Transaction, indexedValue if err != nil { return err } + // The handle passed in may be a `PartitionHandle`, + // so we can't directly do comparation with them. if !h.Equal(oh) { okToDelete = false } diff --git a/pkg/table/tables/index_test.go b/pkg/table/tables/index_test.go index ad45594184985..047f664d8912d 100644 --- a/pkg/table/tables/index_test.go +++ b/pkg/table/tables/index_test.go @@ -179,7 +179,7 @@ func buildTableInfo(t *testing.T, sql string) *model.TableInfo { func TestGenIndexValueFromIndex(t *testing.T) { tblInfo := buildTableInfo(t, "create table a (a int primary key, b int not null, c text, unique key key_b(b));") tblInfo.State = model.StatePublic - tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc(), 0), tblInfo) + tbl, err := tables.TableFromMeta(lkv.NewPanickingAllocators(tblInfo.SepAutoInc()), tblInfo) require.NoError(t, err) sessionOpts := encode.SessionOptions{ diff --git a/pkg/table/tables/mutation_checker.go b/pkg/table/tables/mutation_checker.go index 7ac1fc12f60b5..f894e3d4e3562 100644 --- a/pkg/table/tables/mutation_checker.go +++ b/pkg/table/tables/mutation_checker.go @@ -88,6 +88,7 @@ func checkDataConsistency( extraIndexesLayout table.IndexesLayout, ) error { if t.Meta().GetPartitionInfo() != nil { + // TODO: Support check for partitions as well return nil } if txn.IsPipelined() { diff --git a/pkg/table/tables/partition.go b/pkg/table/tables/partition.go index a6b05f8f5c36c..b19df8706fa4e 100644 --- a/pkg/table/tables/partition.go +++ b/pkg/table/tables/partition.go @@ -128,9 +128,50 @@ func newPartitionedTable(tbl *TableCommon, tblInfo *model.TableInfo) (table.Part if err := initTableIndices(&ret.TableCommon); err != nil { return nil, errors.Trace(err) } + origIndices := ret.meta.Indices + DroppingDefinitionIndices := make([]*model.IndexInfo, 0, len(origIndices)) + AddingDefinitionIndices := make([]*model.IndexInfo, 0, len(origIndices)) + for _, idx := range origIndices { + newIdx, ok := pi.DDLChangedIndex[idx.ID] + if !ok { + // Untouched index + DroppingDefinitionIndices = append(DroppingDefinitionIndices, idx) + if pi.DDLState != model.StateDeleteReorganization { + // If pi.DDLState == DeleteReorg, then keep the StatePublic. + // Otherwise, set same state as DDLState. Like DeleteOnly is needed to + // set the correct assertion on the index. + idx = idx.Clone() + idx.State = pi.DDLState + } + AddingDefinitionIndices = append(AddingDefinitionIndices, idx) + continue + } + if newIdx { + AddingDefinitionIndices = append(AddingDefinitionIndices, idx) + } else { + DroppingDefinitionIndices = append(DroppingDefinitionIndices, idx) + } + } + tblInfo.Indices = origIndices + defer func() { ret.meta.Indices = origIndices }() + dropMap := make(map[int64]struct{}) + for _, def := range pi.DroppingDefinitions { + dropMap[def.ID] = struct{}{} + } + addMap := make(map[int64]struct{}) + for _, def := range pi.AddingDefinitions { + addMap[def.ID] = struct{}{} + } partitions := make(map[int64]*partition, len(pi.Definitions)) for _, p := range pi.Definitions { var t partition + if _, drop := dropMap[p.ID]; drop { + tblInfo.Indices = DroppingDefinitionIndices + } else if _, add := addMap[p.ID]; add { + tblInfo.Indices = AddingDefinitionIndices + } else { + tblInfo.Indices = origIndices + } err := initTableCommonWithIndices(&t.TableCommon, tblInfo, p.ID, tbl.Columns, tbl.allocs, tbl.Constraints) if err != nil { return nil, errors.Trace(err) @@ -139,21 +180,30 @@ func newPartitionedTable(tbl *TableCommon, tblInfo *model.TableInfo) (table.Part partitions[p.ID] = &t } ret.partitions = partitions - if pi.DDLAction != model.ActionReorganizePartition && - pi.DDLAction != model.ActionRemovePartitioning && - pi.DDLAction != model.ActionAlterTablePartitioning { + switch pi.DDLAction { + case model.ActionReorganizePartition, model.ActionRemovePartitioning, + model.ActionAlterTablePartitioning: + // continue after switch! + case model.ActionTruncateTablePartition: + for _, def := range pi.DroppingDefinitions { + p, err := initPartition(ret, def) + if err != nil { + return nil, err + } + partitions[def.ID] = p + } + fallthrough + default: return ret, nil } - // In StateWriteReorganization we are using the 'old' partition definitions + // In WriteReorganization we are using the 'old' partition definitions // and if any new change happens in DroppingDefinitions, it needs to be done // also in AddingDefinitions (with new evaluation of the new expression) - // In StateDeleteReorganization we are using the 'new' partition definitions + // In DeleteReorganization/Public we are using the 'new' partition definitions // and if any new change happens in AddingDefinitions, it needs to be done // also in DroppingDefinitions (since session running on schema version -1) - // should also see the changes - if pi.DDLState == model.StateDeleteReorganization { - origIdx := setIndexesState(ret, pi.DDLState) - defer unsetIndexesState(ret, origIdx) + // should also see the changes. + if pi.DDLState == model.StateDeleteReorganization || pi.DDLState == model.StatePublic { // TODO: Explicitly explain the different DDL/New fields! if pi.NewTableID != 0 { ret.reorgPartitionExpr, err = newPartitionExpr(tblInfo, pi.DDLType, pi.DDLExpr, pi.DDLColumns, pi.DroppingDefinitions) @@ -168,18 +218,18 @@ func newPartitionedTable(tbl *TableCommon, tblInfo *model.TableInfo) (table.Part ret.reorganizePartitions[def.ID] = nil } ret.doubleWritePartitions = make(map[int64]any, len(pi.DroppingDefinitions)) + tblInfo.Indices = DroppingDefinitionIndices for _, def := range pi.DroppingDefinitions { p, err := initPartition(ret, def) if err != nil { return nil, err } + p.skipAssert = true partitions[def.ID] = p ret.doubleWritePartitions[def.ID] = nil } } else { if len(pi.AddingDefinitions) > 0 { - origIdx := setIndexesState(ret, pi.DDLState) - defer unsetIndexesState(ret, origIdx) if pi.NewTableID != 0 { // REMOVE PARTITIONING or PARTITION BY ret.reorgPartitionExpr, err = newPartitionExpr(tblInfo, pi.DDLType, pi.DDLExpr, pi.DDLColumns, pi.AddingDefinitions) @@ -191,12 +241,14 @@ func newPartitionedTable(tbl *TableCommon, tblInfo *model.TableInfo) (table.Part return nil, errors.Trace(err) } ret.doubleWritePartitions = make(map[int64]any, len(pi.AddingDefinitions)) + tblInfo.Indices = AddingDefinitionIndices for _, def := range pi.AddingDefinitions { ret.doubleWritePartitions[def.ID] = nil p, err := initPartition(ret, def) if err != nil { return nil, err } + p.skipAssert = true partitions[def.ID] = p } } @@ -210,31 +262,6 @@ func newPartitionedTable(tbl *TableCommon, tblInfo *model.TableInfo) (table.Part return ret, nil } -func setIndexesState(t *partitionedTable, state model.SchemaState) []*model.IndexInfo { - orig := t.meta.Indices - t.meta.Indices = make([]*model.IndexInfo, 0, len(orig)) - for i := range orig { - t.meta.Indices = append(t.meta.Indices, orig[i].Clone()) - if t.meta.Indices[i].State == model.StatePublic { - switch state { - case model.StateDeleteOnly, model.StateNone: - t.meta.Indices[i].State = model.StateDeleteOnly - case model.StatePublic: - // Keep as is - default: - // use the 'StateWriteReorganization' here, since StateDeleteReorganization - // would skip index writes. - t.meta.Indices[i].State = model.StateWriteReorganization - } - } - } - return orig -} - -func unsetIndexesState(t *partitionedTable, orig []*model.IndexInfo) { - t.meta.Indices = orig -} - func initPartition(t *partitionedTable, def model.PartitionDefinition) (*partition, error) { var newPart partition err := initTableCommonWithIndices(&newPart.TableCommon, t.meta, def.ID, t.Columns, t.allocs, t.Constraints) @@ -1024,6 +1051,7 @@ func (lp *ForListPruning) LocatePartition(ctx exprctx.EvalContext, value int64, // LocatePartitionByRange locates partition by the range // Only could process `column op value` right now. func (lp *ForListPruning) LocatePartitionByRange(ctx exprctx.EvalContext, r *ranger.Range) (idxs map[int]struct{}, err error) { + idxs = make(map[int]struct{}) lowVal, highVal := r.LowVal[0], r.HighVal[0] if r.LowVal[0].Kind() == types.KindMinNotNull { lowVal = types.GetMinValue(lp.PruneExpr.GetType(ctx)) @@ -1033,15 +1061,27 @@ func (lp *ForListPruning) LocatePartitionByRange(ctx exprctx.EvalContext, r *ran highVal = types.GetMaxValue(lp.PruneExpr.GetType(ctx)) } - highInt64, _, err := lp.PruneExpr.EvalInt(ctx, chunk.MutRowFromDatums([]types.Datum{highVal}).ToRow()) + highInt64, isNull, err := lp.PruneExpr.EvalInt(ctx, chunk.MutRowFromDatums([]types.Datum{highVal}).ToRow()) if err != nil { return nil, err } + if isNull { + return nil, errors.Errorf("Internal error, `r.HighVal` cannot be null") + } - lowInt64, _, err := lp.PruneExpr.EvalInt(ctx, chunk.MutRowFromDatums([]types.Datum{lowVal}).ToRow()) + lowInt64, isNull, err := lp.PruneExpr.EvalInt(ctx, chunk.MutRowFromDatums([]types.Datum{lowVal}).ToRow()) if err != nil { return nil, err } + if isNull { + // If low value is null, add `lp.nullPartitionIdx` into idxs map. + if !r.LowExclude && lp.nullPartitionIdx != -1 { + idxs[lp.nullPartitionIdx] = struct{}{} + } else { + dt := types.GetMinValue(lp.PruneExpr.GetType(ctx)) + lowInt64 = dt.GetInt64() + } + } var lowKey, highKey uint64 @@ -1051,7 +1091,6 @@ func (lp *ForListPruning) LocatePartitionByRange(ctx exprctx.EvalContext, r *ran lowKey, highKey = codec.EncodeIntToCmpUint(lowInt64), codec.EncodeIntToCmpUint(highInt64) } - idxs = make(map[int]struct{}) lp.valueToPartitionIdxBTree.AscendRange(&btreeListItem{key: lowKey}, &btreeListItem{key: highKey}, func(item *btreeListItem) bool { if item.key == lowKey && r.LowExclude { return true @@ -1438,18 +1477,23 @@ func (t *partitionedTable) locateReorgPartition(ctx expression.EvalContext, r [] // all partitions will be reorganized, // so we can use the number in Dropping or AddingDefinitions, // depending on current state. - num := len(pi.AddingDefinitions) - if pi.DDLState == model.StateDeleteReorganization { - num = len(pi.DroppingDefinitions) + reorgDefs := pi.AddingDefinitions + switch pi.DDLAction { + case model.ActionReorganizePartition, model.ActionRemovePartitioning, model.ActionAlterTablePartitioning: + if pi.DDLState == model.StatePublic { + reorgDefs = pi.DroppingDefinitions + } + fallthrough + default: + if pi.DDLState == model.StateDeleteReorganization { + reorgDefs = pi.DroppingDefinitions + } } - idx, err := t.locatePartitionCommon(ctx, pi.DDLType, t.reorgPartitionExpr, uint64(num), columnsSet, r) + idx, err := t.locatePartitionCommon(ctx, pi.DDLType, t.reorgPartitionExpr, uint64(len(reorgDefs)), columnsSet, r) if err != nil { return 0, errors.Trace(err) } - if pi.DDLState == model.StateDeleteReorganization { - return pi.DroppingDefinitions[idx].ID, nil - } - return pi.AddingDefinitions[idx].ID, nil + return reorgDefs[idx].ID, nil } func (t *partitionedTable) locateRangeColumnPartition(ctx expression.EvalContext, partitionExpr *PartitionExpr, r []types.Datum) (int, error) { @@ -1545,7 +1589,7 @@ func (t *partitionedTable) locateHashPartition(ctx expression.EvalContext, partE data = r[col.Index] default: var err error - data, err = r[col.Index].ConvertTo(ctx.TypeCtx(), types.NewFieldType(mysql.TypeLong)) + data, err = r[col.Index].ConvertTo(ctx.TypeCtx(), types.NewFieldType(mysql.TypeLonglong)) if err != nil { return 0, err } @@ -1619,7 +1663,9 @@ func GetReorganizedPartitionedTable(t table.Table) (table.PartitionedTable, erro pi.Type = pi.DDLType pi.Expr = pi.DDLExpr pi.Columns = pi.DDLColumns - tblInfo.ID = pi.NewTableID + if pi.NewTableID != 0 { + tblInfo.ID = pi.NewTableID + } constraints, err := table.LoadCheckConstraint(tblInfo) if err != nil { @@ -1709,9 +1755,6 @@ func partitionedTableAddRecord(ctx table.MutateContext, txn kv.Transaction, t *p return nil, errors.WithStack(table.ErrRowDoesNotMatchGivenPartitionSet) } } - if t.Meta().Partition.HasTruncatingPartitionID(pid) { - return nil, errors.WithStack(dbterror.ErrInvalidDDLState.GenWithStack("the partition is in not in public")) - } exchangePartitionInfo := t.Meta().ExchangePartitionInfo if exchangePartitionInfo != nil && exchangePartitionInfo.ExchangePartitionDefID == pid && variable.EnableCheckConstraint.Load() { @@ -1725,7 +1768,7 @@ func partitionedTableAddRecord(ctx table.MutateContext, txn kv.Transaction, t *p if err != nil { return } - if t.Meta().Partition.DDLState == model.StateDeleteOnly { + if t.Meta().Partition.DDLState == model.StateDeleteOnly || t.Meta().Partition.DDLState == model.StatePublic { return } if _, ok := t.reorganizePartitions[pid]; ok { @@ -1735,6 +1778,10 @@ func partitionedTableAddRecord(ctx table.MutateContext, txn kv.Transaction, t *p return nil, errors.Trace(err) } tbl = t.getPartition(pid) + if !tbl.Meta().PKIsHandle && !tbl.Meta().IsCommonHandle { + // Preserve the _tidb_rowid also in the new partition! + r = append(r, types.NewIntDatum(recordID.IntValue())) + } recordID, err = tbl.addRecord(ctx, txn, r, opt) if err != nil { return @@ -1846,9 +1893,6 @@ func partitionedTableUpdateRecord(ctx table.MutateContext, txn kv.Transaction, t return errors.WithStack(table.ErrRowDoesNotMatchGivenPartitionSet) } } - if t.Meta().Partition.HasTruncatingPartitionID(to) { - return errors.WithStack(dbterror.ErrInvalidDDLState.GenWithStack("the partition is in not in public")) - } exchangePartitionInfo := t.Meta().ExchangePartitionInfo if exchangePartitionInfo != nil && exchangePartitionInfo.ExchangePartitionDefID == to && variable.EnableCheckConstraint.Load() { @@ -1862,6 +1906,7 @@ func partitionedTableUpdateRecord(ctx table.MutateContext, txn kv.Transaction, t sh := memBuffer.Staging() defer memBuffer.Cleanup(sh) + deleteOnly := t.Meta().Partition.DDLState == model.StateDeleteOnly || t.Meta().Partition.DDLState == model.StatePublic // The old and new data locate in different partitions. // Remove record from old partition and add record to new partition. if from != to { @@ -1907,7 +1952,7 @@ func partitionedTableUpdateRecord(ctx table.MutateContext, txn kv.Transaction, t return errors.Trace(err) } } - if newTo != 0 && t.Meta().GetPartitionInfo().DDLState != model.StateDeleteOnly { + if newTo != 0 && !deleteOnly { _, err = t.getPartition(newTo).addRecord(ctx, txn, newData, opt.GetAddRecordOpt()) if err != nil { return errors.Trace(err) @@ -1934,7 +1979,7 @@ func partitionedTableUpdateRecord(ctx table.MutateContext, txn kv.Transaction, t } if newTo == newFrom { tbl = t.getPartition(newTo) - if t.Meta().Partition.DDLState == model.StateDeleteOnly { + if deleteOnly { err = tbl.RemoveRecord(ctx, txn, h, currData) } else { err = tbl.updateRecord(ctx, txn, h, currData, newData, touched, opt) @@ -1950,7 +1995,7 @@ func partitionedTableUpdateRecord(ctx table.MutateContext, txn kv.Transaction, t if err != nil { return errors.Trace(err) } - if t.Meta().GetPartitionInfo().DDLState != model.StateDeleteOnly { + if !deleteOnly { tbl = t.getPartition(newTo) _, err = tbl.addRecord(ctx, txn, newData, opt.GetAddRecordOpt()) if err != nil { diff --git a/pkg/table/tables/tables.go b/pkg/table/tables/tables.go index ab270362bc25a..79fedefe90b3c 100644 --- a/pkg/table/tables/tables.go +++ b/pkg/table/tables/tables.go @@ -36,7 +36,6 @@ import ( "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/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/table/tblctx" @@ -83,6 +82,9 @@ type TableCommon struct { // recordPrefix and indexPrefix are generated using physicalTableID. recordPrefix kv.Key indexPrefix kv.Key + + // skipAssert is used for partitions that are in WriteOnly/DeleteOnly state. + skipAssert bool } // ResetColumnsCache implements testingKnob interface. @@ -408,31 +410,6 @@ func (t *TableCommon) RecordKey(h kv.Handle) kv.Key { return tablecodec.EncodeRecordKey(t.recordPrefix, h) } -// shouldAssert checks if the partition should be in consistent -// state and can have assertion. -func (t *TableCommon) shouldAssert(level variable.AssertionLevel) bool { - p := t.Meta().Partition - if p != nil { - // This disables asserting during Reorganize Partition. - switch level { - case variable.AssertionLevelFast: - // Fast option, just skip assertion for all partitions. - if p.DDLState != model.StateNone && p.DDLState != model.StatePublic { - return false - } - case variable.AssertionLevelStrict: - // Strict, only disable assertion for intermediate partitions. - // If there were an easy way to get from a TableCommon back to the partitioned table... - for i := range p.AddingDefinitions { - if t.physicalTableID == p.AddingDefinitions[i].ID { - return false - } - } - } - } - return true -} - // UpdateRecord implements table.Table UpdateRecord interface. // `touched` means which columns are really modified, used for secondary indices. // Length of `oldData` and `newData` equals to length of `t.WritableCols()`. @@ -518,7 +495,7 @@ func (t *TableCommon) updateRecord(sctx table.MutateContext, txn kv.Transaction, key := t.RecordKey(h) tc, ec := evalCtx.TypeCtx(), evalCtx.ErrCtx() - err = encodeRowBuffer.WriteMemBufferEncoded(sctx.GetRowEncodingConfig(), tc.Location(), ec, memBuffer, key) + err = encodeRowBuffer.WriteMemBufferEncoded(sctx.GetRowEncodingConfig(), tc.Location(), ec, memBuffer, key, h) if err != nil { return err } @@ -535,10 +512,10 @@ func (t *TableCommon) updateRecord(sctx table.MutateContext, txn kv.Transaction, } }) - if t.shouldAssert(sctx.TxnAssertionLevel()) { - err = txn.SetAssertion(key, kv.SetAssertExist) - } else { + if t.skipAssert { err = txn.SetAssertion(key, kv.SetAssertUnknown) + } else { + err = txn.SetAssertion(key, kv.SetAssertExist) } if err != nil { return err @@ -871,6 +848,8 @@ func (t *TableCommon) addRecord(sctx table.MutateContext, txn kv.Transaction, r _, err = txn.Get(ctx, key) } if err == nil { + // If Global Index and reorganization truncate/drop partition, old partition, + // Accept and set Assertion key to kv.SetAssertUnknown for overwrite instead dupErr := getDuplicateError(t.Meta(), recordID, r) return recordID, dupErr } else if !kv.ErrNotExist.Equal(err) { @@ -886,7 +865,7 @@ func (t *TableCommon) addRecord(sctx table.MutateContext, txn kv.Transaction, r } } - err = encodeRowBuffer.WriteMemBufferEncoded(sctx.GetRowEncodingConfig(), tc.Location(), ec, memBuffer, key, flags...) + err = encodeRowBuffer.WriteMemBufferEncoded(sctx.GetRowEncodingConfig(), tc.Location(), ec, memBuffer, key, recordID, flags...) if err != nil { return nil, err } @@ -1236,10 +1215,10 @@ func (t *TableCommon) removeRowData(ctx table.MutateContext, txn kv.Transaction, } } }) - if t.shouldAssert(ctx.TxnAssertionLevel()) { - err = txn.SetAssertion(key, kv.SetAssertExist) - } else { + if t.skipAssert { err = txn.SetAssertion(key, kv.SetAssertUnknown) + } else { + err = txn.SetAssertion(key, kv.SetAssertExist) } if err != nil { return err diff --git a/pkg/table/tables/test/partition/partition_test.go b/pkg/table/tables/test/partition/partition_test.go index 60b60c59a1e72..61e7ebac21c3c 100644 --- a/pkg/table/tables/test/partition/partition_test.go +++ b/pkg/table/tables/test/partition/partition_test.go @@ -2674,7 +2674,7 @@ func checkDMLInAllStates(t *testing.T, tk, tk2 *testkit.TestKit, schemaName, alt prevTbl, err := currSchema.TableByName(context.Background(), pmodel.NewCIStr(schemaName), pmodel.NewCIStr("t")) require.NoError(t, err) var hookErr error - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if hookErr != nil { // Enough to find a single error return @@ -3114,7 +3114,7 @@ func checkDMLInAllStates(t *testing.T, tk, tk2 *testkit.TestKit, schemaName, alt zap.Int("rows", len(pkMap)), zap.Stringer("SchemaState", job.SchemaState)) } }) - defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + defer testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") tk.MustExec(alterStr) require.NoError(t, hookErr) tk.MustExec(`admin check table t`) diff --git a/pkg/table/tblctx/buffers.go b/pkg/table/tblctx/buffers.go index 3cf537f2fc390..53a33fdaa648b 100644 --- a/pkg/table/tblctx/buffers.go +++ b/pkg/table/tblctx/buffers.go @@ -52,11 +52,11 @@ func (b *EncodeRowBuffer) AddColVal(colID int64, val types.Datum) { // WriteMemBufferEncoded writes the encoded row to the memBuffer. func (b *EncodeRowBuffer) WriteMemBufferEncoded( cfg RowEncodingConfig, loc *time.Location, ec errctx.Context, - memBuffer kv.MemBuffer, key kv.Key, flags ...kv.FlagsOp, + memBuffer kv.MemBuffer, key kv.Key, handle kv.Handle, flags ...kv.FlagsOp, ) error { var checksum rowcodec.Checksum if cfg.IsRowLevelChecksumEnabled { - checksum = rowcodec.RawChecksum{Key: key} + checksum = rowcodec.RawChecksum{Handle: handle} } stmtBufs := b.writeStmtBufs diff --git a/pkg/table/tblctx/buffers_test.go b/pkg/table/tblctx/buffers_test.go index 802f0f1bac19d..266c2bb8108e1 100644 --- a/pkg/table/tblctx/buffers_test.go +++ b/pkg/table/tblctx/buffers_test.go @@ -106,7 +106,7 @@ func TestEncodeRow(t *testing.T) { var checksum rowcodec.Checksum if cfg.IsRowLevelChecksumEnabled { - checksum = rowcodec.RawChecksum{Key: kv.Key("key1")} + checksum = rowcodec.RawChecksum{Handle: kv.IntHandle(1)} } expectedVal, err := tablecodec.EncodeRow( @@ -125,7 +125,7 @@ func TestEncodeRow(t *testing.T) { } err = buffer.WriteMemBufferEncoded( cfg, c.loc, errctx.StrictNoWarningContext, - memBuffer, kv.Key("key1"), c.flags..., + memBuffer, kv.Key("key1"), kv.IntHandle(1), c.flags..., ) require.NoError(t, err) memBuffer.AssertExpectations(t) @@ -166,7 +166,7 @@ func TestEncodeBufferReserve(t *testing.T) { require.Equal(t, 2, len(buffer.row)) require.NoError(t, buffer.WriteMemBufferEncoded(RowEncodingConfig{ RowEncoder: &rowcodec.Encoder{Enable: true}, - }, time.UTC, errctx.StrictNoWarningContext, mb, kv.Key("key1"))) + }, time.UTC, errctx.StrictNoWarningContext, mb, kv.Key("key1"), kv.IntHandle(1))) encodedCap := cap(buffer.writeStmtBufs.RowValBuf) require.Greater(t, encodedCap, 0) require.Equal(t, 4, len(buffer.writeStmtBufs.AddRowValues)) diff --git a/pkg/tablecodec/tablecodec.go b/pkg/tablecodec/tablecodec.go index 0674e74ff858a..821de58745174 100644 --- a/pkg/tablecodec/tablecodec.go +++ b/pkg/tablecodec/tablecodec.go @@ -325,14 +325,18 @@ func DecodeTableID(key kv.Key) int64 { // DecodeRowKey decodes the key and gets the handle. func DecodeRowKey(key kv.Key) (kv.Handle, error) { - if len(key) < RecordRowKeyLen || !hasTablePrefix(key) || !hasRecordPrefixSep(key[prefixLen-2:]) { - return kv.IntHandle(0), errInvalidKey.GenWithStack("invalid key - %q", key) + // In the read path, remove the keyspace prefix + // to ensure compatibility with the key parsing implemented in the mock. + tempKey := rowcodec.RemoveKeyspacePrefix(key) + + if len(tempKey) < RecordRowKeyLen || !hasTablePrefix(tempKey) || !hasRecordPrefixSep(tempKey[prefixLen-2:]) { + return kv.IntHandle(0), errInvalidKey.GenWithStack("invalid key - %q", tempKey) } - if len(key) == RecordRowKeyLen { - u := binary.BigEndian.Uint64(key[prefixLen:]) + if len(tempKey) == RecordRowKeyLen { + u := binary.BigEndian.Uint64(tempKey[prefixLen:]) return kv.IntHandle(codec.DecodeCmpUintToInt(u)), nil } - return kv.NewCommonHandle(key[prefixLen:]) + return kv.NewCommonHandle(tempKey[prefixLen:]) } // EncodeValue encodes a go value to bytes. @@ -952,7 +956,7 @@ func decodeIndexKvOldCollation(key, value []byte, hdStatus HandleStatus, buf []b } } else { // In unique int handle index. - handle = decodeIntHandleInIndexValue(value) + handle = DecodeIntHandleInIndexValue(value) resultValues, err = reEncodeHandleTo(handle, hdStatus == HandleIsUnsigned, buf, resultValues) if err != nil { return nil, errors.Trace(err) @@ -1031,11 +1035,11 @@ func decodeHandleInIndexKey(keySuffix []byte) (kv.Handle, error) { // DecodeHandleInIndexValue decodes handle in unqiue index value. func DecodeHandleInIndexValue(value []byte) (handle kv.Handle, err error) { if len(value) <= MaxOldEncodeValueLen { - return decodeIntHandleInIndexValue(value), nil + return DecodeIntHandleInIndexValue(value), nil } seg := SplitIndexValue(value) if len(seg.IntHandle) != 0 { - handle = decodeIntHandleInIndexValue(seg.IntHandle) + handle = DecodeIntHandleInIndexValue(seg.IntHandle) } if len(seg.CommonHandle) != 0 { handle, err = kv.NewCommonHandle(seg.CommonHandle) @@ -1053,8 +1057,8 @@ func DecodeHandleInIndexValue(value []byte) (handle kv.Handle, err error) { return handle, nil } -// decodeIntHandleInIndexValue uses to decode index value as int handle id. -func decodeIntHandleInIndexValue(data []byte) kv.Handle { +// DecodeIntHandleInIndexValue uses to decode index value as int handle id. +func DecodeIntHandleInIndexValue(data []byte) kv.Handle { return kv.IntHandle(binary.BigEndian.Uint64(data)) } @@ -1440,7 +1444,7 @@ func (v *TempIndexValueElem) DecodeOne(b []byte) (remain []byte, err error) { hLen := (uint16(b[0]) << 8) + uint16(b[1]) b = b[2:] if hLen == idLen { - v.Handle = decodeIntHandleInIndexValue(b[:idLen]) + v.Handle = DecodeIntHandleInIndexValue(b[:idLen]) } else { v.Handle, _ = kv.NewCommonHandle(b[:hLen]) } @@ -1911,7 +1915,7 @@ func decodeIndexKvGeneral(key, value []byte, colsLen int, hdStatus HandleStatus, if segs.IntHandle != nil { // In unique int handle index. - handle = decodeIntHandleInIndexValue(segs.IntHandle) + handle = DecodeIntHandleInIndexValue(segs.IntHandle) } else if segs.CommonHandle != nil { // In unique common handle index. handle, err = decodeHandleInIndexKey(segs.CommonHandle) diff --git a/pkg/testkit/BUILD.bazel b/pkg/testkit/BUILD.bazel index 90f87f5d49084..93e29f8184c73 100644 --- a/pkg/testkit/BUILD.bazel +++ b/pkg/testkit/BUILD.bazel @@ -14,6 +14,8 @@ go_library( importpath = "github.com/pingcap/tidb/pkg/testkit", visibility = ["//visibility:public"], deps = [ + "//pkg/config", + "//pkg/ddl", "//pkg/ddl/schematracker", "//pkg/domain", "//pkg/expression", diff --git a/pkg/testkit/mockstore.go b/pkg/testkit/mockstore.go index 30e6ca06ced28..896ca67f2d174 100644 --- a/pkg/testkit/mockstore.go +++ b/pkg/testkit/mockstore.go @@ -25,6 +25,8 @@ import ( "testing" "time" + "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/ddl/schematracker" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" @@ -53,11 +55,13 @@ func CreateMockStore(t testing.TB, opts ...mockstore.MockTiKVStoreOption) kv.Sto var err error store, err := d.Open("tikv://" + *WithTiKV) require.NoError(t, err) - + config.GetGlobalConfig().Store = config.StoreTypeTiKV + require.NoError(t, ddl.StartOwnerManager(context.Background(), store)) var dom *domain.Domain dom, err = session.BootstrapSession(store) t.Cleanup(func() { dom.Close() + ddl.CloseOwnerManager() err := store.Close() require.NoError(t, err) view.Stop() @@ -154,16 +158,6 @@ func (d *DistExecutionContext) TriggerOwnerChange() { } } -// AddDomain add 1 domain which is not ddl owner. -func (d *DistExecutionContext) AddDomain() { - d.mu.Lock() - defer d.mu.Unlock() - dom := bootstrap4DistExecution(d.t, d.Store, 500*time.Millisecond) - dom.InfoSyncer().SetSessionManager(d.domains[0].InfoSyncer().GetSessionManager()) - dom.DDL().OwnerManager().RetireOwner() - d.domains = append(d.domains, dom) -} - // Close cleanup running goroutines, release resources used. func (d *DistExecutionContext) Close() { d.t.Cleanup(func() { @@ -191,11 +185,6 @@ func (d *DistExecutionContext) GetDomain(idx int) *domain.Domain { return d.domains[idx] } -// GetDomainCnt get domain count. -func (d *DistExecutionContext) GetDomainCnt() int { - return len(d.domains) -} - // NewDistExecutionContext create DistExecutionContext for testing. func NewDistExecutionContext(t testing.TB, serverNum int) *DistExecutionContext { return NewDistExecutionContextWithLease(t, serverNum, 500*time.Millisecond) diff --git a/pkg/testkit/testkit.go b/pkg/testkit/testkit.go index eac57bf400518..048511e9d2866 100644 --- a/pkg/testkit/testkit.go +++ b/pkg/testkit/testkit.go @@ -530,7 +530,7 @@ func (tk *TestKit) MustGetDBError(sql string, dberr *terror.Error) { func (tk *TestKit) MustContainErrMsg(sql string, errStr any) { err := tk.ExecToErr(sql) tk.require.Error(err, "sql: %s", sql) - tk.require.Contains(err.Error(), errStr) + tk.require.Contains(err.Error(), errStr, "sql: %s", sql) } // MustMatchErrMsg executes a sql statement and assert its error message matching errRx. diff --git a/pkg/timer/tablestore/store.go b/pkg/timer/tablestore/store.go index bbc00f8646b70..1e0fdbcbc07b2 100644 --- a/pkg/timer/tablestore/store.go +++ b/pkg/timer/tablestore/store.go @@ -117,7 +117,7 @@ func (s *tableTimerStoreCore) List(ctx context.Context, cond api.Cond) ([]*api.T } defer back() - if sessVars := sctx.GetSessionVars(); sessVars.GetEnableIndexMerge() { + if sessVars := sctx.GetSessionVars(); !sessVars.GetEnableIndexMerge() { // Enable index merge is used to make sure filtering timers with tags quickly. // Currently, we are using multi-value index to index tags for timers which requires index merge enabled. // see: https://docs.pingcap.com/tidb/dev/choose-index#use-a-multi-valued-index diff --git a/pkg/ttl/cache/table.go b/pkg/ttl/cache/table.go index e9183185b4e4e..99d6d0d5cf957 100644 --- a/pkg/ttl/cache/table.go +++ b/pkg/ttl/cache/table.go @@ -40,7 +40,9 @@ import ( "github.com/pingcap/tidb/pkg/util/codec" "github.com/pingcap/tidb/pkg/util/collate" "github.com/pingcap/tidb/pkg/util/intest" + "github.com/pingcap/tidb/pkg/util/logutil" "github.com/tikv/client-go/v2/tikv" + "go.uber.org/zap" ) func getTableKeyColumns(tbl *model.TableInfo) ([]*model.ColumnInfo, []*types.FieldType, error) { @@ -448,9 +450,10 @@ func (t *PhysicalTable) splitRawKeyRanges(ctx context.Context, store tikv.Storag return nil, err } - regionsPerRange := len(regionIDs) / splitCnt - oversizeCnt := len(regionIDs) % splitCnt - ranges := make([]kv.KeyRange, 0, min(len(regionIDs), splitCnt)) + regionsCnt := len(regionIDs) + regionsPerRange := regionsCnt / splitCnt + oversizeCnt := regionsCnt % splitCnt + ranges := make([]kv.KeyRange, 0, min(regionsCnt, splitCnt)) for len(regionIDs) > 0 { startRegion, err := regionCache.LocateRegionByID(tikv.NewBackofferWithVars(ctx, 20000, nil), regionIDs[0]) @@ -483,6 +486,15 @@ func (t *PhysicalTable) splitRawKeyRanges(ctx context.Context, store tikv.Storag oversizeCnt-- regionIDs = regionIDs[endRegionIdx+1:] } + logutil.BgLogger().Info("TTL table raw key ranges split", + zap.Int("regionsCnt", regionsCnt), + zap.Int("shouldSplitCnt", splitCnt), + zap.Int("actualSplitCnt", len(ranges)), + zap.Int64("tableID", t.ID), + zap.String("db", t.Schema.O), + zap.String("table", t.Name.O), + zap.String("partition", t.Partition.O), + ) return ranges, nil } diff --git a/pkg/ttl/cache/task.go b/pkg/ttl/cache/task.go index 8ddb4c457593e..4ee6abbe83b91 100644 --- a/pkg/ttl/cache/task.go +++ b/pkg/ttl/cache/task.go @@ -87,9 +87,9 @@ const ( // TaskStatusWaiting means the task hasn't started TaskStatusWaiting TaskStatus = "waiting" // TaskStatusRunning means this task is running - TaskStatusRunning = "running" + TaskStatusRunning TaskStatus = "running" // TaskStatusFinished means this task has finished - TaskStatusFinished = "finished" + TaskStatusFinished TaskStatus = "finished" ) // TTLTask is a row recorded in mysql.tidb_ttl_task @@ -116,6 +116,9 @@ type TTLTaskState struct { ErrorRows uint64 `json:"error_rows"` ScanTaskErr string `json:"scan_task_err"` + + // When PreviousOwner != "", it means this task is resigned from another owner + PreviousOwner string `json:"prev_owner,omitempty"` } // RowToTTLTask converts a row into TTL task diff --git a/pkg/ttl/ttlworker/BUILD.bazel b/pkg/ttl/ttlworker/BUILD.bazel index df18effc77bec..d44ca296eb5ad 100644 --- a/pkg/ttl/ttlworker/BUILD.bazel +++ b/pkg/ttl/ttlworker/BUILD.bazel @@ -44,6 +44,7 @@ go_library( "//pkg/util/timeutil", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", + "@com_github_pingcap_log//:log", "@com_github_tikv_client_go_v2//tikv", "@com_github_tikv_client_go_v2//tikvrpc", "@io_etcd_go_etcd_client_v3//:client", @@ -62,6 +63,7 @@ go_test( "job_manager_integration_test.go", "job_manager_test.go", "scan_test.go", + "session_integration_test.go", "session_test.go", "task_manager_integration_test.go", "task_manager_test.go", @@ -82,7 +84,6 @@ go_test( "//pkg/parser/ast", "//pkg/parser/model", "//pkg/parser/mysql", - "//pkg/session", "//pkg/sessionctx", "//pkg/sessionctx/variable", "//pkg/statistics", @@ -100,6 +101,8 @@ go_test( "//pkg/util/chunk", "//pkg/util/logutil", "//pkg/util/mock", + "//pkg/util/sqlexec", + "//pkg/util/timeutil", "@com_github_google_uuid//:uuid", "@com_github_ngaut_pools//:pools", "@com_github_pingcap_errors//:errors", diff --git a/pkg/ttl/ttlworker/config.go b/pkg/ttl/ttlworker/config.go index 74a93e356efa0..d3c7cbc5c5474 100644 --- a/pkg/ttl/ttlworker/config.go +++ b/pkg/ttl/ttlworker/config.go @@ -18,6 +18,9 @@ import ( "time" "github.com/pingcap/failpoint" + "github.com/pingcap/tidb/pkg/kv" + "github.com/tikv/client-go/v2/tikv" + "github.com/tikv/client-go/v2/tikvrpc" ) const jobManagerLoopTickerInterval = 10 * time.Second @@ -32,7 +35,7 @@ const ttlJobTimeout = 6 * time.Hour const taskManagerLoopTickerInterval = time.Minute const ttlTaskHeartBeatTickerInterval = time.Minute -const ttlGCInterval = time.Hour +const ttlGCInterval = 10 * time.Minute func getCheckJobInterval() time.Duration { failpoint.Inject("check-job-interval", func(val failpoint.Value) time.Duration { @@ -96,3 +99,18 @@ func getCheckJobTriggeredInterval() time.Duration { }) return 2 * time.Second } + +func getScanSplitCnt(store kv.Storage) int { + tikvStore, ok := store.(tikv.Storage) + if !ok { + return splitScanCount + } + + if cache := tikvStore.GetRegionCache(); cache != nil { + if tikvCnt := len(cache.GetStoresByType(tikvrpc.TiKV)); tikvCnt > splitScanCount { + return tikvCnt + } + } + + return splitScanCount +} diff --git a/pkg/ttl/ttlworker/del.go b/pkg/ttl/ttlworker/del.go index 6fc4c93af5068..671560fc3a3b4 100644 --- a/pkg/ttl/ttlworker/del.go +++ b/pkg/ttl/ttlworker/del.go @@ -22,6 +22,7 @@ import ( "sync/atomic" "time" + "github.com/pingcap/log" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/ttl/cache" "github.com/pingcap/tidb/pkg/ttl/metrics" @@ -94,12 +95,12 @@ func (t *ttlDeleteTask) doDelete(ctx context.Context, rawSe session.Session) (re leftRows := t.rows defer func() { if len(leftRows) > 0 { - t.statistics.IncErrorRows(len(leftRows)) + retryRows = append(retryRows, leftRows...) } }() se := newTableSession(rawSe, t.tbl, t.expire) - for len(leftRows) > 0 { + for len(leftRows) > 0 && ctx.Err() == nil { maxBatch := variable.TTLDeleteBatchSize.Load() var delBatch [][]types.Datum if int64(len(leftRows)) < maxBatch { @@ -133,7 +134,6 @@ func (t *ttlDeleteTask) doDelete(ctx context.Context, rawSe session.Session) (re sqlInterval := time.Since(sqlStart) if err != nil { metrics.DeleteErrorDuration.Observe(sqlInterval.Seconds()) - needRetry = needRetry && ctx.Err() == nil logutil.BgLogger().Warn( "delete SQL in TTL failed", zap.Error(err), @@ -191,8 +191,14 @@ func (b *ttlDelRetryBuffer) RecordTaskResult(task *ttlDeleteTask, retryRows [][] } func (b *ttlDelRetryBuffer) DoRetry(do func(*ttlDeleteTask) [][]types.Datum) time.Duration { - for b.list.Len() > 0 { + l := b.list.Len() + // When `retryInterval==0`, to avoid the infinite retries, limit the max loop to the buffer length. + // It means one item only has one chance to retry in one `DoRetry` invoking. + for i := 0; i < l; i++ { ele := b.list.Front() + if ele == nil { + break + } item, ok := ele.Value.(*ttlDelRetryItem) if !ok { logutil.BgLogger().Error(fmt.Sprintf("invalid retry buffer item type: %T", ele)) @@ -214,6 +220,11 @@ func (b *ttlDelRetryBuffer) DoRetry(do func(*ttlDeleteTask) [][]types.Datum) tim return b.retryInterval } +// SetRetryInterval sets the retry interval of the buffer. +func (b *ttlDelRetryBuffer) SetRetryInterval(interval time.Duration) { + b.retryInterval = interval +} + // Drain drains a retry buffer. func (b *ttlDelRetryBuffer) Drain() { for ele := b.list.Front(); ele != nil; ele = ele.Next() { @@ -296,8 +307,37 @@ func (w *ttlDeleteWorker) loop() error { timer := time.NewTimer(w.retryBuffer.retryInterval) defer timer.Stop() - // drain retry buffer to make sure the statistics are correct - defer w.retryBuffer.Drain() + defer func() { + // Have a final try to delete all rows in retry buffer while the worker stops + // to avoid leaving any TTL rows undeleted when shrinking the delete worker. + if w.retryBuffer.Len() > 0 { + start := time.Now() + log.Info( + "try to delete TTL rows in del worker buffer immediately because the worker is going to stop", + zap.Int("bufferLen", w.retryBuffer.Len()), + ) + retryCtx, cancel := context.WithTimeout(context.Background(), time.Second*10) + defer cancel() + w.retryBuffer.SetRetryInterval(0) + w.retryBuffer.DoRetry(func(task *ttlDeleteTask) [][]types.Datum { + return task.doDelete(retryCtx, se) + }) + log.Info( + "delete TTL rows in del worker buffer finished", + zap.Duration("duration", time.Since(start)), + ) + } + + // drain retry buffer to make sure the statistics are correct + if w.retryBuffer.Len() > 0 { + log.Warn( + "some TTL rows are still in the buffer while the worker is going to stop, mark them as error", + zap.Int("bufferLen", w.retryBuffer.Len()), + ) + w.retryBuffer.Drain() + } + }() + for w.Status() == workerStatusRunning { tracer.EnterPhase(metrics.PhaseIdle) select { diff --git a/pkg/ttl/ttlworker/del_test.go b/pkg/ttl/ttlworker/del_test.go index 87b335b72fa5e..1c9f604ebecb2 100644 --- a/pkg/ttl/ttlworker/del_test.go +++ b/pkg/ttl/ttlworker/del_test.go @@ -179,6 +179,22 @@ func TestTTLDelRetryBuffer(t *testing.T) { require.Equal(t, 0, buffer.Len()) require.Equal(t, uint64(0), statics6.SuccessRows.Load()) require.Equal(t, uint64(7), statics6.ErrorRows.Load()) + + // test should only retry at most once for one item in a DoRetry call. + buffer2 := newTTLDelRetryBuffer() + buffer2.SetRetryInterval(0) + buffer2.maxRetry = math.MaxInt + task7, rows7, statics7 := createTask("t7") + buffer2.RecordTaskResult(task7, rows7[:8]) + require.Equal(t, 1, buffer2.Len()) + currentRetryFn := doRetryFail + buffer2.DoRetry(func(task *ttlDeleteTask) [][]types.Datum { + fn := currentRetryFn + currentRetryFn = shouldNotDoRetry + return fn(task) + }) + require.Equal(t, uint64(1), statics7.SuccessRows.Load()) + require.Equal(t, uint64(0), statics7.ErrorRows.Load()) } func TestTTLDeleteTaskDoDelete(t *testing.T) { @@ -269,7 +285,7 @@ func TestTTLDeleteTaskDoDelete(t *testing.T) { retryErrBatches: []int{1, 2, 4}, }, { - // some retries and some not + // some retries and some not and some are executed when ctx canceled batchCnt: 10, noRetryErrBatches: []int{3, 8, 9}, retryErrBatches: []int{1, 2, 4}, @@ -279,6 +295,7 @@ func TestTTLDeleteTaskDoDelete(t *testing.T) { } for _, c := range cases { + require.True(t, c.cancelCtxBatch >= 0 && c.cancelCtxBatch < c.batchCnt) ctx, cancel := context.WithCancel(context.Background()) if c.cancelCtx && c.cancelCtxBatch == 0 { cancel() @@ -298,16 +315,14 @@ func TestTTLDeleteTaskDoDelete(t *testing.T) { retryErrBatches = c.retryErrBatches nonRetryBatches = c.noRetryErrBatches retryRows := task.doDelete(ctx, s) - realBatchCnt := c.batchCnt - if c.cancelCtx { - realBatchCnt = c.cancelCtxBatch - } - require.LessOrEqual(t, realBatchCnt, c.batchCnt) // check SQLs - require.Equal(t, realBatchCnt, len(sqls)) expectedSQLs := make([]string, 0, len(sqls)) - for i := 0; i < realBatchCnt; i++ { + for i := 0; i < c.batchCnt; i++ { + if c.cancelCtx && i >= c.cancelCtxBatch { + break + } + batch := task.rows[i*delBatch : (i+1)*delBatch] idList := make([]string, 0, delBatch) for _, row := range batch { @@ -324,8 +339,8 @@ func TestTTLDeleteTaskDoDelete(t *testing.T) { // check retry rows var expectedRetryRows [][]types.Datum - for i := 0; i < realBatchCnt; i++ { - if slices.Contains(c.retryErrBatches, i) { + for i := 0; i < c.batchCnt; i++ { + if slices.Contains(c.retryErrBatches, i) || (c.cancelCtx && i >= c.cancelCtxBatch) { expectedRetryRows = append(expectedRetryRows, task.rows[i*delBatch:(i+1)*delBatch]...) } } @@ -334,7 +349,7 @@ func TestTTLDeleteTaskDoDelete(t *testing.T) { // check statistics var expectedErrRows uint64 for i := 0; i < c.batchCnt; i++ { - if i >= realBatchCnt || slices.Contains(c.noRetryErrBatches, i) { + if slices.Contains(c.noRetryErrBatches, i) && !(c.cancelCtx && i >= c.cancelCtxBatch) { expectedErrRows += uint64(delBatch) } } @@ -384,6 +399,7 @@ func TestTTLDeleteTaskWorker(t *testing.T) { t2 := newMockTTLTbl(t, "t2") t3 := newMockTTLTbl(t, "t3") t4 := newMockTTLTbl(t, "t4") + t5 := newMockTTLTbl(t, "t5") s := newMockSession(t) pool := newMockSessionPool(t) pool.se = s @@ -392,8 +408,11 @@ func TestTTLDeleteTaskWorker(t *testing.T) { sqlMap := make(map[string]int) t3Retried := make(chan struct{}) t4Retried := make(chan struct{}) + t5Executed := make(chan struct{}) s.executeSQL = func(ctx context.Context, sql string, args ...any) ([]chunk.Row, error) { - pool.lastSession.sessionInfoSchema = newMockInfoSchema(t1.TableInfo, t2.TableInfo, t3.TableInfo, t4.TableInfo) + pool.lastSession.sessionInfoSchema = newMockInfoSchema( + t1.TableInfo, t2.TableInfo, t3.TableInfo, t4.TableInfo, t5.TableInfo, + ) if strings.Contains(sql, "`t1`") { // success return nil, nil @@ -419,20 +438,35 @@ func TestTTLDeleteTaskWorker(t *testing.T) { // error and retry still error // this is to test the retry buffer should be drained after the delete worker stopped i := sqlMap[sql] - if i >= 2 { - // i >= 2 means t4 has retried once and records in retry buffer + if i == 2 { + // i == 2 means t4 has retried once and records in retry buffer close(t4Retried) } sqlMap[sql] = i + 1 return nil, errors.New("mockErr") } + if strings.Contains(sql, "`t5`") { + // error when the worker is running, + // success when flushing retry buffer while the worker stopping. + i := sqlMap[sql] + sqlMap[sql] = i + 1 + if ctx.Value("delWorker") != nil { + if i == 1 { + close(t5Executed) + } + return nil, errors.New("mockErr") + } + return nil, nil + } + require.FailNow(t, "") return nil, nil } delCh := make(chan *ttlDeleteTask) w := newDeleteWorker(delCh, pool) + w.ctx = context.WithValue(w.ctx, "delWorker", struct{}{}) w.retryBuffer.retryInterval = time.Millisecond w.retryBuffer.maxRetry = math.MaxInt require.Equal(t, workerStatusCreated, w.Status()) @@ -444,7 +478,7 @@ func TestTTLDeleteTaskWorker(t *testing.T) { }() tasks := make([]*ttlDeleteTask, 0) - for _, tbl := range []*cache.PhysicalTable{t1, t2, t3, t4} { + for _, tbl := range []*cache.PhysicalTable{t1, t2, t3, t4, t5} { task := &ttlDeleteTask{ tbl: tbl, expire: time.UnixMilli(0), @@ -476,8 +510,17 @@ func TestTTLDeleteTaskWorker(t *testing.T) { require.FailNow(t, "") } - // before stop, t4 should always retry without any error rows + select { + case <-t5Executed: + case <-time.After(time.Second): + require.FailNow(t, "") + } + + // before stop, t4, t5 should always retry without any error rows + require.Equal(t, uint64(0), tasks[3].statistics.SuccessRows.Load()) require.Equal(t, uint64(0), tasks[3].statistics.ErrorRows.Load()) + require.Equal(t, uint64(0), tasks[4].statistics.SuccessRows.Load()) + require.Equal(t, uint64(0), tasks[4].statistics.ErrorRows.Load()) w.Stop() require.NoError(t, w.WaitStopped(context.Background(), 10*time.Second)) @@ -490,6 +533,11 @@ func TestTTLDeleteTaskWorker(t *testing.T) { require.Equal(t, uint64(0), tasks[2].statistics.SuccessRows.Load()) require.Equal(t, uint64(3), tasks[2].statistics.ErrorRows.Load()) + // t4 should be error because the buffer flush error while the worker stopping. require.Equal(t, uint64(0), tasks[3].statistics.SuccessRows.Load()) require.Equal(t, uint64(3), tasks[3].statistics.ErrorRows.Load()) + + // t5 should be success because the buffer flush success while the worker stopping. + require.Equal(t, uint64(3), tasks[4].statistics.SuccessRows.Load()) + require.Equal(t, uint64(0), tasks[4].statistics.ErrorRows.Load()) } diff --git a/pkg/ttl/ttlworker/job_manager.go b/pkg/ttl/ttlworker/job_manager.go index 2f36f4033f4af..952ef84891093 100644 --- a/pkg/ttl/ttlworker/job_manager.go +++ b/pkg/ttl/ttlworker/job_manager.go @@ -64,8 +64,7 @@ const taskGCTemplate = `DELETE task FROM WHERE job.table_id IS NULL` const ttlJobHistoryGCTemplate = `DELETE FROM mysql.tidb_ttl_job_history WHERE create_time < CURDATE() - INTERVAL 90 DAY` -const ttlTableStatusGCWithoutIDTemplate = `DELETE FROM mysql.tidb_ttl_table_status WHERE current_job_status IS NULL` -const ttlTableStatusGCWithIDTemplate = ttlTableStatusGCWithoutIDTemplate + ` AND table_id NOT IN (%s)` +const ttlTableStatusGCWithoutIDTemplate = `DELETE FROM mysql.tidb_ttl_table_status WHERE (current_job_status IS NULL OR current_job_owner_hb_time < %?)` const timeFormat = time.DateTime @@ -81,15 +80,18 @@ func updateHeartBeatSQL(tableID int64, now time.Time, id string) (string, []any) return updateHeartBeatTemplate, []any{now.Format(timeFormat), tableID, id} } -func gcTTLTableStatusGCSQL(existIDs []int64) string { +func gcTTLTableStatusGCSQL(existIDs []int64, now time.Time) (string, []any) { existIDStrs := make([]string, 0, len(existIDs)) for _, id := range existIDs { existIDStrs = append(existIDStrs, strconv.Itoa(int(id))) } + + hbExpireTime := now.Add(-jobManagerLoopTickerInterval * 2) + args := []any{hbExpireTime.Format(timeFormat)} if len(existIDStrs) > 0 { - return fmt.Sprintf(ttlTableStatusGCWithIDTemplate, strings.Join(existIDStrs, ",")) + return ttlTableStatusGCWithoutIDTemplate + fmt.Sprintf(` AND table_id NOT IN (%s)`, strings.Join(existIDStrs, ",")), args } - return ttlTableStatusGCWithoutIDTemplate + return ttlTableStatusGCWithoutIDTemplate, args } // JobManager schedules and manages the ttl jobs on this instance @@ -219,15 +221,12 @@ func (m *JobManager) jobLoop() error { } case <-gcTicker: gcCtx, cancel := context.WithTimeout(m.ctx, ttlInternalSQLTimeout) - m.DoGC(gcCtx, se) + m.DoGC(gcCtx, se, now) cancel() // Job Schedule loop: case <-updateJobHeartBeatTicker: updateHeartBeatCtx, cancel := context.WithTimeout(m.ctx, ttlInternalSQLTimeout) - err = m.updateHeartBeat(updateHeartBeatCtx, se, now) - if err != nil { - logutil.Logger(m.ctx).Warn("fail to update job heart beat", zap.Error(err)) - } + m.updateHeartBeat(updateHeartBeatCtx, se, now) cancel() case <-jobCheckTicker: m.checkFinishedJob(se) @@ -270,10 +269,7 @@ func (m *JobManager) jobLoop() error { m.taskManager.resizeWorkersWithSysVar() case <-updateTaskHeartBeatTicker: updateHeartBeatCtx, cancel := context.WithTimeout(m.ctx, ttlInternalSQLTimeout) - err = m.taskManager.updateHeartBeat(updateHeartBeatCtx, se, now) - if err != nil { - logutil.Logger(m.ctx).Warn("fail to update task heart beat", zap.Error(err)) - } + m.taskManager.updateHeartBeat(updateHeartBeatCtx, se, now) cancel() case <-checkScanTaskFinishedTicker: if m.taskManager.handleScanFinishedTask() { @@ -368,13 +364,7 @@ func (m *JobManager) triggerTTLJob(requestID string, cmd *client.TriggerNewTTLJo return } - tz, err := se.GlobalTimeZone(m.ctx) - if err != nil { - responseErr(err) - return - } - - if !timeutil.WithinDayTimePeriod(variable.TTLJobScheduleWindowStartTime.Load(), variable.TTLJobScheduleWindowEndTime.Load(), se.Now().In(tz)) { + if !timeutil.WithinDayTimePeriod(variable.TTLJobScheduleWindowStartTime.Load(), variable.TTLJobScheduleWindowEndTime.Load(), se.Now()) { responseErr(errors.New("not in TTL job window")) return } @@ -577,11 +567,16 @@ j: } func (m *JobManager) rescheduleJobs(se session.Session, now time.Time) { - tz, err := se.GlobalTimeZone(m.ctx) - if err != nil { - terror.Log(err) - } else { - now = now.In(tz) + // Try to lock HB timeout jobs, to avoid the case that when the `tidb_ttl_job_enable = 'OFF'`, the HB timeout job will + // never be cancelled. + jobTables := m.readyForLockHBTimeoutJobTables(now) + // TODO: also consider to resume tables, but it's fine to left them there, as other nodes will take this job + // when the heart beat is not sent + for _, table := range jobTables { + logutil.Logger(m.ctx).Info("try lock new job", zap.Int64("tableID", table.ID)) + if _, err := m.lockHBTimeoutJob(m.ctx, se, table, now); err != nil { + logutil.Logger(m.ctx).Warn("failed to lock heartbeat timeout job", zap.Error(err)) + } } cancelJobs := false @@ -635,16 +630,6 @@ func (m *JobManager) rescheduleJobs(se session.Session, now time.Time) { } m.removeJob(job) } - - jobTables := m.readyForLockHBTimeoutJobTables(now) - // TODO: also consider to resume tables, but it's fine to left them there, as other nodes will take this job - // when the heart beat is not sent - for _, table := range jobTables { - logutil.Logger(m.ctx).Info("try lock new job", zap.Int64("tableID", table.ID)) - if _, err := m.lockHBTimeoutJob(m.ctx, se, table, now); err != nil { - logutil.Logger(m.ctx).Warn("failed to lock heartbeat timeout job", zap.Error(err)) - } - } } func (m *JobManager) localJobs() []*ttlJob { @@ -804,7 +789,7 @@ func (m *JobManager) lockNewJob(ctx context.Context, se session.Session, table * return errors.Wrapf(err, "execute sql: %s", sql) } - ranges, err := table.SplitScanRanges(ctx, m.store, splitScanCount) + ranges, err := table.SplitScanRanges(ctx, m.store, getScanSplitCnt(se.GetStore())) if err != nil { return errors.Wrap(err, "split scan ranges") } @@ -901,29 +886,42 @@ func (m *JobManager) appendLockedJob(id string, se session.Session, createTime t } // updateHeartBeat updates the heartbeat for all task with current instance as owner -func (m *JobManager) updateHeartBeat(ctx context.Context, se session.Session, now time.Time) error { +func (m *JobManager) updateHeartBeat(ctx context.Context, se session.Session, now time.Time) { for _, job := range m.localJobs() { - if job.createTime.Add(ttlJobTimeout).Before(now) { - logutil.Logger(m.ctx).Info("job is timeout", zap.String("jobID", job.id)) - summary, err := summarizeErr(errors.New("job is timeout")) - if err != nil { - logutil.Logger(m.ctx).Warn("fail to summarize job", zap.Error(err)) - } - err = job.finish(se, now, summary) - if err != nil { - logutil.Logger(m.ctx).Warn("fail to finish job", zap.Error(err)) - continue - } - m.removeJob(job) + err := m.updateHeartBeatForJob(ctx, se, now, job) + if err != nil { + logutil.Logger(m.ctx).Warn("fail to update heartbeat for job", zap.Error(err), zap.String("jobID", job.id)) } + } +} - intest.Assert(se.GetSessionVars().TimeZone.String() == now.Location().String()) - sql, args := updateHeartBeatSQL(job.tbl.ID, now, m.id) - _, err := se.ExecuteSQL(ctx, sql, args...) +func (m *JobManager) updateHeartBeatForJob(ctx context.Context, se session.Session, now time.Time, job *ttlJob) error { + if job.createTime.Add(ttlJobTimeout).Before(now) { + logutil.Logger(m.ctx).Info("job is timeout", zap.String("jobID", job.id)) + summary, err := summarizeErr(errors.New("job is timeout")) if err != nil { - return errors.Wrapf(err, "execute sql: %s", sql) + return errors.Wrapf(err, "fail to summarize job") } + err = job.finish(se, now, summary) + if err != nil { + return errors.Wrapf(err, "fail to finish job") + } + m.removeJob(job) + return nil } + + intest.Assert(se.GetSessionVars().TimeZone.String() == now.Location().String()) + sql, args := updateHeartBeatSQL(job.tbl.ID, now, m.id) + _, err := se.ExecuteSQL(ctx, sql, args...) + if err != nil { + return errors.Wrapf(err, "execute sql: %s", sql) + } + + if se.GetSessionVars().StmtCtx.AffectedRows() != 1 { + return errors.Errorf("fail to update job heartbeat, maybe the owner is not myself (%s), affected rows: %d", + m.id, se.GetSessionVars().StmtCtx.AffectedRows()) + } + return nil } @@ -1027,7 +1025,7 @@ func summarizeTaskResult(tasks []*cache.TTLTask) (*TTLSummary, error) { } // DoGC deletes some old TTL job histories and redundant scan tasks -func (m *JobManager) DoGC(ctx context.Context, se session.Session) { +func (m *JobManager) DoGC(ctx context.Context, se session.Session, now time.Time) { // Remove the table not exist in info schema cache. // Delete the table status before deleting the tasks. Therefore the related tasks if err := m.updateInfoSchemaCache(se); err == nil { @@ -1036,7 +1034,8 @@ func (m *JobManager) DoGC(ctx context.Context, se session.Session) { for id := range m.infoSchemaCache.Tables { existIDs = append(existIDs, id) } - if _, err := se.ExecuteSQL(ctx, gcTTLTableStatusGCSQL(existIDs)); err != nil { + sql, args := gcTTLTableStatusGCSQL(existIDs, now) + if _, err := se.ExecuteSQL(ctx, sql, args...); err != nil { logutil.Logger(ctx).Warn("fail to gc ttl table status", zap.Error(err)) } } else { diff --git a/pkg/ttl/ttlworker/job_manager_integration_test.go b/pkg/ttl/ttlworker/job_manager_integration_test.go index 4d5bcae36d771..f271c4518f5ff 100644 --- a/pkg/ttl/ttlworker/job_manager_integration_test.go +++ b/pkg/ttl/ttlworker/job_manager_integration_test.go @@ -33,7 +33,6 @@ import ( "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/parser/ast" pmodel "github.com/pingcap/tidb/pkg/parser/model" - dbsession "github.com/pingcap/tidb/pkg/session" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/statistics" "github.com/pingcap/tidb/pkg/testkit" @@ -53,15 +52,11 @@ import ( "go.uber.org/zap" ) -func sessionFactory(t *testing.T, store kv.Storage) func() session.Session { - return func() session.Session { - dbSession, err := dbsession.CreateSession4Test(store) - require.NoError(t, err) - se := session.NewSession(dbSession, dbSession, nil) +func sessionFactory(t *testing.T, dom *domain.Domain) func() session.Session { + pool := dom.SysSessionPool() - _, err = se.ExecuteSQL(context.Background(), "ROLLBACK") - require.NoError(t, err) - _, err = se.ExecuteSQL(context.Background(), "set tidb_retry_limit=0") + return func() session.Session { + se, err := ttlworker.GetSessionForTest(pool) require.NoError(t, err) return se @@ -112,7 +107,7 @@ func TestParallelLockNewJob(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) waitAndStopTTLManager(t, dom) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) testTable := &cache.PhysicalTable{ID: 2, TableInfo: &model.TableInfo{ID: 1, TTLInfo: &model.TTLInfo{IntervalExprStr: "1", IntervalTimeUnit: int(ast.TimeUnitDay), JobInterval: "1h"}}} // simply lock a new job @@ -166,7 +161,7 @@ func TestFinishJob(t *testing.T) { waitAndStopTTLManager(t, dom) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) testTable := &cache.PhysicalTable{ID: 2, Schema: pmodel.NewCIStr("db1"), TableInfo: &model.TableInfo{ID: 1, Name: pmodel.NewCIStr("t1"), TTLInfo: &model.TTLInfo{IntervalExprStr: "1", IntervalTimeUnit: int(ast.TimeUnitDay)}}} @@ -426,7 +421,7 @@ func TestTTLJobDisable(t *testing.T) { func TestSubmitJob(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) waitAndStopTTLManager(t, dom) @@ -505,20 +500,21 @@ func TestSubmitJob(t *testing.T) { func TestRescheduleJobs(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) waitAndStopTTLManager(t, dom) - now := time.Now() tk.MustExec("create table test.t (id int, created_at datetime) ttl = `created_at` + interval 1 minute ttl_job_interval = '1m'") table, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) require.NoError(t, err) ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnTTL) se := sessionFactory() - m := ttlworker.NewJobManager("manager-1", nil, store, nil, func() bool { + now := se.Now() + m := ttlworker.NewJobManager("manager-1", dom.SysSessionPool(), store, nil, func() bool { return true }) + defer m.TaskManager().ResizeWorkersToZero(t) m.TaskManager().ResizeWorkersWithSysVar() require.NoError(t, m.InfoSchemaCache().Update(se)) require.NoError(t, m.TableStatusCache().Update(context.Background(), se)) @@ -537,7 +533,8 @@ func TestRescheduleJobs(t *testing.T) { tk.MustQuery("select count(*) from mysql.tidb_ttl_task").Check(testkit.Rows("1")) // another manager should get this job, if the heart beat is not updated - anotherManager := ttlworker.NewJobManager("manager-2", nil, store, nil, nil) + anotherManager := ttlworker.NewJobManager("manager-2", dom.SysSessionPool(), store, nil, nil) + defer anotherManager.TaskManager().ResizeWorkersToZero(t) anotherManager.TaskManager().ResizeWorkersWithSysVar() require.NoError(t, anotherManager.InfoSchemaCache().Update(se)) require.NoError(t, anotherManager.TableStatusCache().Update(context.Background(), se)) @@ -556,18 +553,21 @@ func TestRescheduleJobs(t *testing.T) { // if the time leaves the time window, it'll finish the job tk.MustExec("set global tidb_ttl_job_schedule_window_start_time='23:58'") tk.MustExec("set global tidb_ttl_job_schedule_window_end_time='23:59'") - anotherManager.RescheduleJobs(se, time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, now.Nanosecond(), now.Location())) + rescheduleTime := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, now.Nanosecond(), now.Location()) + anotherManager.RescheduleJobs(se, rescheduleTime) + tkTZ := tk.Session().GetSessionVars().Location() tk.MustQuery("select last_job_summary->>'$.scan_task_err' from mysql.tidb_ttl_table_status").Check(testkit.Rows("out of TTL job schedule window")) + tk.MustQuery("select last_job_finish_time from mysql.tidb_ttl_table_status").Check(testkit.Rows(rescheduleTime.In(tkTZ).Format(time.DateTime))) } func TestRescheduleJobsAfterTableDropped(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) waitAndStopTTLManager(t, dom) - now := time.Now() + now := time.Now().In(time.UTC) createTableSQL := "create table test.t (id int, created_at datetime) ttl = `created_at` + interval 1 minute ttl_job_interval = '1m'" tk.MustExec("create table test.t (id int, created_at datetime) ttl = `created_at` + interval 1 minute ttl_job_interval = '1m'") table, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) @@ -584,7 +584,7 @@ func TestRescheduleJobsAfterTableDropped(t *testing.T) { } for i, rb := range removeBehaviors { se := sessionFactory() - m := ttlworker.NewJobManager("manager-1", nil, store, nil, func() bool { + m := ttlworker.NewJobManager("manager-1", dom.SysSessionPool(), store, nil, func() bool { return true }) m.TaskManager().ResizeWorkersWithSysVar() @@ -612,14 +612,16 @@ func TestRescheduleJobsAfterTableDropped(t *testing.T) { tk.MustExec(rb.resume) table, err = dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) require.NoError(t, err) - m.DoGC(context.TODO(), se) + m.DoGC(context.TODO(), se, now) + + m.TaskManager().ResizeWorkersToZero(t) } } func TestJobTimeout(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) waitAndStopTTLManager(t, dom) @@ -631,7 +633,7 @@ func TestJobTimeout(t *testing.T) { se := sessionFactory() now := se.Now() - m := ttlworker.NewJobManager("manager-1", nil, store, nil, func() bool { + m := ttlworker.NewJobManager("manager-1", dom.SysSessionPool(), store, nil, func() bool { return true }) m.TaskManager().ResizeWorkersWithSysVar() @@ -640,7 +642,7 @@ func TestJobTimeout(t *testing.T) { // submit job require.NoError(t, m.SubmitJob(se, tableID, tableID, "request1")) // set the worker to be empty, so none of the tasks will be scheduled - m.TaskManager().SetScanWorkers4Test([]ttlworker.Worker{}) + m.TaskManager().ResizeWorkersToZero(t) sql, args := cache.SelectFromTTLTableStatusWithID(table.Meta().ID) rows, err := se.ExecuteSQL(ctx, sql, args...) @@ -653,8 +655,10 @@ func TestJobTimeout(t *testing.T) { // there is already a task tk.MustQuery("select count(*) from mysql.tidb_ttl_task").Check(testkit.Rows("1")) - m2 := ttlworker.NewJobManager("manager-2", nil, store, nil, nil) + m2 := ttlworker.NewJobManager("manager-2", dom.SysSessionPool(), store, nil, nil) m2.TaskManager().ResizeWorkersWithSysVar() + defer m2.TaskManager().ResizeWorkersToZero(t) + require.NoError(t, m2.InfoSchemaCache().Update(se)) require.NoError(t, m2.TableStatusCache().Update(context.Background(), se)) // schedule jobs @@ -675,9 +679,11 @@ func TestJobTimeout(t *testing.T) { require.Equal(t, tableStatus.CurrentJobStartTime, newTableStatus.CurrentJobStartTime) require.Equal(t, tableStatus.CurrentJobTTLExpire, newTableStatus.CurrentJobTTLExpire) require.Equal(t, now.Unix(), newTableStatus.CurrentJobOwnerHBTime.Unix()) + // the `CurrentJobStatusUpdateTime` only has `s` precision, so use any format with only `s` precision and a TZ to compare. + require.Equal(t, now.Format(time.RFC3339), newTableStatus.CurrentJobStatusUpdateTime.Format(time.RFC3339)) // the timeout will be checked while updating heartbeat - require.NoError(t, m2.UpdateHeartBeat(ctx, se, now.Add(7*time.Hour))) + require.NoError(t, m2.UpdateHeartBeatForJob(ctx, se, now.Add(7*time.Hour), m2.RunningJobs()[0])) tk.MustQuery("select last_job_summary->>'$.scan_task_err' from mysql.tidb_ttl_table_status").Check(testkit.Rows("job is timeout")) tk.MustQuery("select count(*) from mysql.tidb_ttl_task").Check(testkit.Rows("0")) } @@ -685,7 +691,7 @@ func TestJobTimeout(t *testing.T) { func TestTriggerScanTask(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) se := sessionFactory() waitAndStopTTLManager(t, dom) @@ -775,7 +781,7 @@ func TestGCScanTasks(t *testing.T) { return true }) se := session.NewSession(tk.Session(), tk.Session(), func(_ session.Session) {}) - m.DoGC(context.TODO(), se) + m.DoGC(context.TODO(), se, se.Now()) tk.MustQuery("select job_id, scan_id from mysql.tidb_ttl_task order by job_id, scan_id asc").Check(testkit.Rows("1 1", "1 2")) } @@ -794,7 +800,7 @@ func TestGCTableStatus(t *testing.T) { return true }) se := session.NewSession(tk.Session(), tk.Session(), func(_ session.Session) {}) - m.DoGC(context.TODO(), se) + m.DoGC(context.TODO(), se, se.Now()) tk.MustQuery("select * from mysql.tidb_ttl_table_status").Check(nil) // insert a running table status without corresponding table @@ -808,7 +814,7 @@ func TestGCTableStatus(t *testing.T) { current_job_ttl_expire = NOW(), current_job_owner_hb_time = NOW() WHERE table_id = ?`, 1, 2024) - m.DoGC(context.TODO(), se) + m.DoGC(context.TODO(), se, se.Now()) // it'll not be removed tk.MustQuery("select current_job_id from mysql.tidb_ttl_table_status").Check(testkit.Rows("1")) } @@ -855,14 +861,14 @@ func TestGCTTLHistory(t *testing.T) { return true }) se := session.NewSession(tk.Session(), tk.Session(), func(_ session.Session) {}) - m.DoGC(context.TODO(), se) + m.DoGC(context.TODO(), se, se.Now()) tk.MustQuery("select job_id from mysql.tidb_ttl_job_history order by job_id asc").Check(testkit.Rows("1", "2", "3", "4", "5")) } func TestJobMetrics(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) waitAndStopTTLManager(t, dom) @@ -872,7 +878,7 @@ func TestJobMetrics(t *testing.T) { ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnTTL) se := sessionFactory() - m := ttlworker.NewJobManager("manager-1", nil, store, nil, func() bool { + m := ttlworker.NewJobManager("manager-1", dom.SysSessionPool(), store, nil, func() bool { return true }) m.TaskManager().ResizeWorkersWithSysVar() @@ -880,7 +886,7 @@ func TestJobMetrics(t *testing.T) { // submit job require.NoError(t, m.SubmitJob(se, table.Meta().ID, table.Meta().ID, "request1")) // set the worker to be empty, so none of the tasks will be scheduled - m.TaskManager().SetScanWorkers4Test([]ttlworker.Worker{}) + m.TaskManager().ResizeWorkersToZero(t) sql, args := cache.SelectFromTTLTableStatusWithID(table.Meta().ID) rows, err := se.ExecuteSQL(ctx, sql, args...) @@ -1304,7 +1310,7 @@ func TestFinishAndUpdateOwnerAtSameTime(t *testing.T) { waitAndStopTTLManager(t, dom) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) se := sessionFactory() tk.MustExec("use test") @@ -1349,7 +1355,7 @@ func TestFinishError(t *testing.T) { waitAndStopTTLManager(t, dom) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) se := sessionFactory() tk.MustExec("use test") @@ -1447,6 +1453,8 @@ func boostJobScheduleForTest(t *testing.T) func() { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ttl/ttlworker/update-info-schema-cache-interval", fmt.Sprintf("return(%d)", 100*time.Millisecond))) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ttl/ttlworker/task-manager-loop-interval", fmt.Sprintf("return(%d)", 100*time.Millisecond))) require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ttl/ttlworker/check-task-interval", fmt.Sprintf("return(%d)", 100*time.Millisecond))) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ttl/ttlworker/gc-interval", fmt.Sprintf("return(%d)", 100*time.Millisecond))) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/meta/model/overwrite-ttl-job-interval", fmt.Sprintf("return(%d)", 100*time.Millisecond))) return func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ttl/ttlworker/check-job-triggered-interval")) @@ -1457,5 +1465,157 @@ func boostJobScheduleForTest(t *testing.T) func() { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ttl/ttlworker/update-info-schema-cache-interval")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ttl/ttlworker/task-manager-loop-interval")) require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ttl/ttlworker/check-task-interval")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ttl/ttlworker/gc-interval")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/meta/model/overwrite-ttl-job-interval")) } } + +func TestDisableTTLAfterLoseHeartbeat(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + waitAndStopTTLManager(t, dom) + tk := testkit.NewTestKit(t, store) + + sessionFactory := sessionFactory(t, dom) + se := sessionFactory() + + tk.MustExec("use test") + tk.MustExec("CREATE TABLE t (id INT PRIMARY KEY, created_at DATETIME) TTL = created_at + INTERVAL 1 HOUR") + testTable, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + + ctx := context.Background() + m1 := ttlworker.NewJobManager("test-ttl-job-manager-1", nil, store, nil, nil) + m2 := ttlworker.NewJobManager("test-ttl-job-manager-2", nil, store, nil, nil) + + now := se.Now() + + acquireJob := func(now time.Time) { + require.NoError(t, m1.InfoSchemaCache().Update(se)) + require.NoError(t, m1.TableStatusCache().Update(ctx, se)) + require.NoError(t, m2.InfoSchemaCache().Update(se)) + require.NoError(t, m2.TableStatusCache().Update(ctx, se)) + _, err = m1.LockJob(context.Background(), se, m1.InfoSchemaCache().Tables[testTable.Meta().ID], now, uuid.NewString(), false) + require.NoError(t, err) + tk.MustQuery("select current_job_status from mysql.tidb_ttl_table_status").Check(testkit.Rows("running")) + } + t.Run("disable TTL globally after losing heartbeat", func(t *testing.T) { + // now the TTL job should be scheduled again + now = now.Add(time.Hour * 8) + acquireJob(now) + + // lose heartbeat. Simulate the situation that m1 doesn't update the hearbeat for 8 hours. + now = now.Add(time.Hour * 8) + + // stop the tidb_ttl_job_enable + tk.MustExec("set global tidb_ttl_job_enable = 'OFF'") + defer tk.MustExec("set global tidb_ttl_job_enable = 'ON'") + + // reschedule and try to get the job + require.NoError(t, m2.InfoSchemaCache().Update(se)) + require.NoError(t, m2.TableStatusCache().Update(ctx, se)) + m2.RescheduleJobs(se, now) + + // the job should have been cancelled + tk.MustQuery("select current_job_status from mysql.tidb_ttl_table_status").Check(testkit.Rows("")) + }) + + t.Run("disable TTL for a table after losing heartbeat", func(t *testing.T) { + // now the TTL job should be scheduled again + now = now.Add(time.Hour * 8) + acquireJob(now) + + // lose heartbeat. Simulate the situation that m1 doesn't update the hearbeat for 8 hours. + now = now.Add(time.Hour * 8) + + tk.MustExec("ALTER TABLE t TTL_ENABLE = 'OFF'") + defer tk.MustExec("ALTER TABLE t TTL_ENABLE = 'ON'") + + // reschedule and try to get the job + require.NoError(t, m2.InfoSchemaCache().Update(se)) + require.NoError(t, m2.TableStatusCache().Update(ctx, se)) + m2.RescheduleJobs(se, now) + + // the job cannot be cancelled, because it doesn't exist in the infoschema cache. + tk.MustQuery("select current_job_status from mysql.tidb_ttl_table_status").Check(testkit.Rows("running")) + + // run GC + m2.DoGC(ctx, se, now) + + // the job should have been cancelled + tk.MustQuery("select current_job_status, current_job_owner_hb_time from mysql.tidb_ttl_table_status").Check(testkit.Rows()) + }) + + t.Run("drop a TTL table after losing heartbeat", func(t *testing.T) { + // now the TTL job should be scheduled again + now = now.Add(time.Hour * 8) + acquireJob(now) + + // lose heartbeat. Simulate the situation that m1 doesn't update the hearbeat for 8 hours. + now = now.Add(time.Hour * 8) + + tk.MustExec("DROP TABLE t") + defer func() { + tk.MustExec("CREATE TABLE t (id INT PRIMARY KEY, created_at DATETIME) TTL = created_at + INTERVAL 1 HOUR") + testTable, err = dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t")) + require.NoError(t, err) + }() + + // reschedule and try to get the job + require.NoError(t, m2.InfoSchemaCache().Update(se)) + require.NoError(t, m2.TableStatusCache().Update(ctx, se)) + m2.RescheduleJobs(se, now) + + // the job cannot be cancelled, because it doesn't exist in the infoschema cache. + tk.MustQuery("select current_job_status from mysql.tidb_ttl_table_status").Check(testkit.Rows("running")) + + // run GC + m2.DoGC(ctx, se, now) + + // the job should have been cancelled + tk.MustQuery("select current_job_status, current_job_owner_hb_time from mysql.tidb_ttl_table_status").Check(testkit.Rows()) + }) +} + +func TestJobHeartBeatFailNotBlockOthers(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + waitAndStopTTLManager(t, dom) + tk := testkit.NewTestKit(t, store) + + sessionFactory := sessionFactory(t, dom) + se := sessionFactory() + + tk.MustExec("use test") + tk.MustExec("CREATE TABLE t1 (id INT PRIMARY KEY, created_at DATETIME) TTL = created_at + INTERVAL 1 HOUR") + tk.MustExec("CREATE TABLE t2 (id INT PRIMARY KEY, created_at DATETIME) TTL = created_at + INTERVAL 1 HOUR") + testTable1, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t1")) + require.NoError(t, err) + testTable2, err := dom.InfoSchema().TableByName(context.Background(), pmodel.NewCIStr("test"), pmodel.NewCIStr("t2")) + require.NoError(t, err) + + ctx := context.Background() + m := ttlworker.NewJobManager("test-ttl-job-manager-1", nil, store, nil, nil) + + now := se.Now() + // acquire two jobs + require.NoError(t, m.InfoSchemaCache().Update(se)) + require.NoError(t, m.TableStatusCache().Update(ctx, se)) + _, err = m.LockJob(context.Background(), se, m.InfoSchemaCache().Tables[testTable1.Meta().ID], now, uuid.NewString(), false) + require.NoError(t, err) + _, err = m.LockJob(context.Background(), se, m.InfoSchemaCache().Tables[testTable2.Meta().ID], now, uuid.NewString(), false) + require.NoError(t, err) + tk.MustQuery("select current_job_status from mysql.tidb_ttl_table_status").Check(testkit.Rows("running", "running")) + + // assign the first job to another manager + tk.MustExec("update mysql.tidb_ttl_table_status set current_job_owner_id = 'test-ttl-job-manager-2' where table_id = ?", testTable1.Meta().ID) + // the heartbeat of the first job will fail, but the second one will still success + now = now.Add(time.Hour) + require.Error(t, m.UpdateHeartBeatForJob(context.Background(), se, now, m.RunningJobs()[0])) + require.NoError(t, m.UpdateHeartBeatForJob(context.Background(), se, now, m.RunningJobs()[1])) + + now = now.Add(time.Hour) + m.UpdateHeartBeat(ctx, se, now) + tkTZ := tk.Session().GetSessionVars().Location() + tk.MustQuery("select table_id, current_job_owner_hb_time from mysql.tidb_ttl_table_status").Sort().Check(testkit.Rows( + fmt.Sprintf("%d %s", testTable1.Meta().ID, now.Add(-2*time.Hour).In(tkTZ).Format(time.DateTime)), + fmt.Sprintf("%d %s", testTable2.Meta().ID, now.In(tkTZ).Format(time.DateTime)))) +} diff --git a/pkg/ttl/ttlworker/job_manager_test.go b/pkg/ttl/ttlworker/job_manager_test.go index 1294ab1d973a8..e7437703dcde2 100644 --- a/pkg/ttl/ttlworker/job_manager_test.go +++ b/pkg/ttl/ttlworker/job_manager_test.go @@ -33,6 +33,8 @@ import ( "github.com/pingcap/tidb/pkg/util/chunk" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/tikv" + "github.com/tikv/client-go/v2/tikvrpc" ) func newTTLTableStatusRows(status ...*cache.TableStatus) []chunk.Row { @@ -194,8 +196,12 @@ func (m *JobManager) TaskManager() *taskManager { } // UpdateHeartBeat is an exported version of updateHeartBeat for test -func (m *JobManager) UpdateHeartBeat(ctx context.Context, se session.Session, now time.Time) error { - return m.updateHeartBeat(ctx, se, now) +func (m *JobManager) UpdateHeartBeat(ctx context.Context, se session.Session, now time.Time) { + m.updateHeartBeat(ctx, se, now) +} + +func (m *JobManager) UpdateHeartBeatForJob(ctx context.Context, se session.Session, now time.Time, job *ttlJob) error { + return m.updateHeartBeatForJob(ctx, se, now, job) } // ReportMetrics is an exported version of reportMetrics @@ -665,3 +671,18 @@ func TestLocalJobs(t *testing.T) { assert.Len(t, m.localJobs(), 1) assert.Equal(t, m.localJobs()[0].id, "1") } + +func TestSplitCnt(t *testing.T) { + require.Equal(t, 64, getScanSplitCnt(nil)) + require.Equal(t, 64, getScanSplitCnt(&mockKVStore{})) + + s := &mockTiKVStore{regionCache: tikv.NewRegionCache(nil)} + for i := uint64(1); i <= 128; i++ { + s.GetRegionCache().SetRegionCacheStore(i, "", "", tikvrpc.TiKV, 1, nil) + if i <= 64 { + require.Equal(t, 64, getScanSplitCnt(s)) + } else { + require.Equal(t, int(i), getScanSplitCnt(s)) + } + } +} diff --git a/pkg/ttl/ttlworker/scan.go b/pkg/ttl/ttlworker/scan.go index 9a01009e2f15b..a4a9f67248b35 100644 --- a/pkg/ttl/ttlworker/scan.go +++ b/pkg/ttl/ttlworker/scan.go @@ -81,14 +81,33 @@ type ttlScanTask struct { statistics *ttlStatistics } +// TaskTerminateReason indicates the reason why the task is terminated. +type TaskTerminateReason string + +const ( + // ReasonTaskFinished indicates the task is finished. + ReasonTaskFinished TaskTerminateReason = "finished" + // ReasonError indicates whether the task is terminated because of error. + ReasonError TaskTerminateReason = "error" + // ReasonWorkerStop indicates whether the task is terminated because the scan worker stops. + // We should reschedule this task in another worker or TiDB again. + ReasonWorkerStop TaskTerminateReason = "workerStop" +) + type ttlScanTaskExecResult struct { time time.Time task *ttlScanTask err error + // reason indicates why the task is terminated. + reason TaskTerminateReason } func (t *ttlScanTask) result(err error) *ttlScanTaskExecResult { - return &ttlScanTaskExecResult{time: time.Now(), task: t, err: err} + reason := ReasonTaskFinished + if err != nil { + reason = ReasonError + } + return &ttlScanTaskExecResult{time: time.Now(), task: t, err: err, reason: reason} } func (t *ttlScanTask) getDatumRows(rows []chunk.Row) [][]types.Datum { @@ -99,6 +118,17 @@ func (t *ttlScanTask) getDatumRows(rows []chunk.Row) [][]types.Datum { return datums } +func (t *ttlScanTask) taskLogger(l *zap.Logger) *zap.Logger { + return l.With( + zap.String("jobID", t.JobID), + zap.Int64("scanID", t.ScanID), + zap.Int64("tableID", t.TableID), + zap.String("db", t.tbl.Schema.O), + zap.String("table", t.tbl.Name.O), + zap.String("partition", t.tbl.Partition.O), + ) +} + func (t *ttlScanTask) doScan(ctx context.Context, delCh chan<- *ttlDeleteTask, sessPool util.SessionPool) *ttlScanTaskExecResult { // TODO: merge the ctx and the taskCtx in ttl scan task, to allow both "cancel" and gracefully stop workers // now, the taskCtx is only check at the beginning of every loop @@ -121,13 +151,7 @@ func (t *ttlScanTask) doScan(ctx context.Context, delCh chan<- *ttlDeleteTask, s case <-doScanFinished.Done(): return } - logger := logutil.BgLogger().With( - zap.Int64("tableID", t.TableID), - zap.String("table", t.tbl.Name.O), - zap.String("partition", t.tbl.Partition.O), - zap.String("jobID", t.JobID), - zap.Int64("scanID", t.ScanID), - ) + logger := t.taskLogger(logutil.BgLogger()) logger.Info("kill the running statement in scan task because the task or worker cancelled") rawSess.KillStmt() ticker := time.NewTicker(time.Minute) @@ -380,6 +404,10 @@ func (w *ttlScanWorker) handleScanTask(tracer *metrics.PhaseTracer, task *ttlSca result = task.result(nil) } + if result.reason == ReasonError && w.baseWorker.ctx.Err() != nil { + result.reason = ReasonWorkerStop + } + w.baseWorker.Lock() w.curTaskResult = result w.baseWorker.Unlock() diff --git a/pkg/ttl/ttlworker/scan_test.go b/pkg/ttl/ttlworker/scan_test.go index 88223b5231066..700da4c4e0f4d 100644 --- a/pkg/ttl/ttlworker/scan_test.go +++ b/pkg/ttl/ttlworker/scan_test.go @@ -21,6 +21,7 @@ import ( "time" "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/ttl/cache" @@ -72,8 +73,14 @@ func (w *mockScanWorker) checkPollResult(exist bool, err string) { require.Same(w.t, curTask, r.task) if err == "" { require.NoError(w.t, r.err) + require.Equal(w.t, ReasonTaskFinished, r.reason) } else { require.EqualError(w.t, r.err, err) + if w.ctx.Err() != nil { + require.Equal(w.t, ReasonWorkerStop, r.reason) + } else { + require.Equal(w.t, ReasonError, r.reason) + } } } } @@ -125,6 +132,14 @@ func (w *mockScanWorker) stopWithWait() { require.NoError(w.t, w.WaitStopped(context.TODO(), 10*time.Second)) } +func (w *mockScanWorker) SetInfoSchema(is infoschema.InfoSchema) { + w.sessPoll.se.sessionInfoSchema = is +} + +func (w *mockScanWorker) SetExecuteSQL(fn func(ctx context.Context, sql string, args ...any) ([]chunk.Row, error)) { + w.sessPoll.se.executeSQL = fn +} + func TestScanWorkerSchedule(t *testing.T) { origLimit := variable.TTLScanBatchSize.Load() variable.TTLScanBatchSize.Store(5) @@ -209,6 +224,43 @@ func TestScanWorkerScheduleWithFailedTask(t *testing.T) { w.checkWorkerStatus(workerStatusRunning, true, nil) } +func TestScanResultWhenWorkerStop(t *testing.T) { + tbl := newMockTTLTbl(t, "t1") + w := NewMockScanWorker(t) + defer w.sessPoll.AssertNoSessionInUse() + executeCh := make(chan struct{}) + w.sessPoll.se.sessionInfoSchema = newMockInfoSchema(tbl.TableInfo) + w.sessPoll.se.executeSQL = func(ctx context.Context, sql string, args ...any) ([]chunk.Row, error) { + close(executeCh) + select { + case <-ctx.Done(): + case <-time.After(10 * time.Second): + require.FailNow(t, "wait scan worker stop timeout") + } + return nil, nil + } + + w.Start() + task := &ttlScanTask{ + ctx: context.Background(), + tbl: tbl, + TTLTask: &cache.TTLTask{}, + statistics: &ttlStatistics{}, + } + require.NoError(t, w.Schedule(task)) + select { + case <-executeCh: + case <-time.After(time.Second): + require.FailNow(t, "wait executeSQL timeout") + } + w.stopWithWait() + w.checkWorkerStatus(workerStatusStopped, false, task) + msg := w.waitNotifyScanTaskEnd() + require.Equal(t, ReasonWorkerStop, msg.result.reason) + w.checkPollResult(true, msg.result.err.Error()) + w.checkWorkerStatus(workerStatusStopped, false, nil) +} + type mockScanTask struct { *ttlScanTask t *testing.T @@ -278,8 +330,10 @@ func (t *mockScanTask) runDoScanForTest(delTaskCnt int, errString string) *ttlSc require.Same(t.t, t.ttlScanTask, r.task) if errString == "" { require.NoError(t.t, r.err) + require.Equal(t.t, ReasonTaskFinished, r.reason) } else { require.EqualError(t.t, r.err, errString) + require.Equal(t.t, ReasonError, r.reason) } previousIdx := delTaskCnt diff --git a/pkg/ttl/ttlworker/session.go b/pkg/ttl/ttlworker/session.go index 24396d91bc32d..9b294193df8ec 100644 --- a/pkg/ttl/ttlworker/session.go +++ b/pkg/ttl/ttlworker/session.go @@ -87,7 +87,7 @@ func getSession(pool util.SessionPool) (session.Session, error) { originalIsolationReadEngines, restoreIsolationReadEngines := "", false se := session.NewSession(sctx, exec, func(se session.Session) { - _, err = se.ExecuteSQL(context.Background(), fmt.Sprintf("set tidb_retry_limit=%d", originalRetryLimit)) + _, err := se.ExecuteSQL(context.Background(), fmt.Sprintf("set tidb_retry_limit=%d", originalRetryLimit)) if err != nil { intest.AssertNoError(err) logutil.BgLogger().Error("fail to reset tidb_retry_limit", zap.Int64("originalRetryLimit", originalRetryLimit), zap.Error(err)) diff --git a/pkg/ttl/ttlworker/session_integration_test.go b/pkg/ttl/ttlworker/session_integration_test.go new file mode 100644 index 0000000000000..c2842e303a17b --- /dev/null +++ b/pkg/ttl/ttlworker/session_integration_test.go @@ -0,0 +1,161 @@ +// Copyright 2024 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 ttlworker_test + +import ( + "context" + "errors" + "strings" + "sync/atomic" + "testing" + + "github.com/ngaut/pools" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/pkg/ttl/ttlworker" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/sqlexec" + "github.com/stretchr/testify/require" + "go.uber.org/zap" +) + +type fault interface { + // shouldFault returns whether the session should fault this time. + shouldFault() bool +} + +var _ fault = &faultAfterCount{} + +type faultAfterCount struct { + faultCount int + + currentCount int +} + +func (f *faultAfterCount) shouldFault() bool { + if f.currentCount >= f.faultCount { + return true + } + + f.currentCount++ + return false +} + +// sessionWithFault is a session which will fail to execute SQL after successfully executing several SQLs. It's designed +// to trigger every possible branch of returning error from `Execute` +type sessionWithFault struct { + sessionctx.Context + + fault *atomic.Pointer[fault] +} + +// Close implements pools.Resource +func (s *sessionWithFault) Close() { + s.Context.(pools.Resource).Close() +} + +// GetSQLExecutor implements sessionctx.Context. +func (s *sessionWithFault) GetSQLExecutor() sqlexec.SQLExecutor { + return s +} + +// Execute implements sqlexec.SQLExecutor. +func (s *sessionWithFault) Execute(ctx context.Context, sql string) ([]sqlexec.RecordSet, error) { + if s.shouldFault(sql) { + return nil, errors.New("fault in test") + } + return s.Context.GetSQLExecutor().Execute(ctx, sql) +} + +// ExecuteStmt implements sqlexec.SQLExecutor. +func (s *sessionWithFault) ExecuteStmt(ctx context.Context, stmtNode ast.StmtNode) (sqlexec.RecordSet, error) { + if s.shouldFault(stmtNode.Text()) { + return nil, errors.New("fault in test") + } + return s.Context.GetSQLExecutor().ExecuteStmt(ctx, stmtNode) +} + +func (s *sessionWithFault) ExecuteInternal(ctx context.Context, sql string, args ...any) (sqlexec.RecordSet, error) { + if s.shouldFault(sql) { + return nil, errors.New("fault in test") + } + return s.Context.GetSQLExecutor().ExecuteInternal(ctx, sql, args...) +} + +func (s *sessionWithFault) shouldFault(sql string) bool { + if s.fault.Load() == nil { + return false + } + + // as a fault implementation may have side-effect, we should always call it before checking the SQL. + shouldFault := (*s.fault.Load()).shouldFault() + + // skip some local only sql, ref `getSession()` in `session.go` + if strings.HasPrefix(sql, "set tidb_") || strings.HasPrefix(sql, "set @@") { + return false + } + + return shouldFault +} + +type faultSessionPool struct { + util.SessionPool + + fault *atomic.Pointer[fault] +} + +func newFaultSessionPool(sp util.SessionPool) *faultSessionPool { + return &faultSessionPool{ + SessionPool: sp, + fault: &atomic.Pointer[fault]{}, + } +} + +// Get implements util.SessionPool. +func (f *faultSessionPool) Get() (pools.Resource, error) { + resource, err := f.SessionPool.Get() + if err != nil { + return nil, err + } + + return &sessionWithFault{ + Context: resource.(sessionctx.Context), + fault: f.fault, + }, nil +} + +// Put implements util.SessionPool. +func (f *faultSessionPool) Put(se pools.Resource) { + f.SessionPool.Put(se.(*sessionWithFault).Context.(pools.Resource)) +} + +func (f *faultSessionPool) setFault(ft fault) { + f.fault.Store(&ft) +} + +func TestGetSessionWithFault(t *testing.T) { + _, dom := testkit.CreateMockStoreAndDomain(t) + + pool := newFaultSessionPool(dom.SysSessionPool()) + + for i := 0; i < 50; i++ { + pool.setFault(&faultAfterCount{faultCount: i}) + se, err := ttlworker.GetSessionForTest(pool) + logutil.BgLogger().Info("get session", zap.Int("error after count", i), zap.Bool("session is nil", se == nil), zap.Bool("error is nil", err == nil)) + require.True(t, se != nil || err != nil) + } +} diff --git a/pkg/ttl/ttlworker/session_test.go b/pkg/ttl/ttlworker/session_test.go index fa1d42016b3da..59e0fcb437d01 100644 --- a/pkg/ttl/ttlworker/session_test.go +++ b/pkg/ttl/ttlworker/session_test.go @@ -25,6 +25,7 @@ import ( "github.com/ngaut/pools" "github.com/pingcap/tidb/pkg/infoschema" infoschemactx "github.com/pingcap/tidb/pkg/infoschema/context" + "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" @@ -184,6 +185,10 @@ func newMockSession(t *testing.T, tbl ...*cache.PhysicalTable) *mockSession { } } +func (s *mockSession) GetStore() kv.Storage { + return nil +} + func (s *mockSession) GetDomainInfoSchema() infoschemactx.MetaOnlyInfoSchema { return s.sessionInfoSchema } diff --git a/pkg/ttl/ttlworker/task_manager.go b/pkg/ttl/ttlworker/task_manager.go index fafd97247f608..a7bd2addc83fd 100644 --- a/pkg/ttl/ttlworker/task_manager.go +++ b/pkg/ttl/ttlworker/task_manager.go @@ -50,27 +50,43 @@ const setTTLTaskFinishedTemplate = `UPDATE mysql.tidb_ttl_task SET status = 'finished', status_update_time = %?, state = %? - WHERE job_id = %? AND scan_id = %?` + WHERE job_id = %? AND scan_id = %? AND status = 'running' AND owner_id = %?` -func setTTLTaskFinishedSQL(jobID string, scanID int64, state *cache.TTLTaskState, now time.Time) (string, []any, error) { +func setTTLTaskFinishedSQL(jobID string, scanID int64, state *cache.TTLTaskState, now time.Time, ownerID string) (string, []any, error) { stateStr, err := json.Marshal(state) if err != nil { return "", nil, err } - return setTTLTaskFinishedTemplate, []any{now.Format(timeFormat), string(stateStr), jobID, scanID}, nil + return setTTLTaskFinishedTemplate, []any{now.Format(timeFormat), string(stateStr), jobID, scanID, ownerID}, nil } -const updateTTLTaskHeartBeatTempalte = `UPDATE mysql.tidb_ttl_task +const updateTTLTaskHeartBeatTemplate = `UPDATE mysql.tidb_ttl_task SET state = %?, owner_hb_time = %? - WHERE job_id = %? AND scan_id = %?` + WHERE job_id = %? AND scan_id = %? AND owner_id = %?` + +func updateTTLTaskHeartBeatSQL(jobID string, scanID int64, now time.Time, state *cache.TTLTaskState, ownerID string) (string, []any, error) { + stateStr, err := json.Marshal(state) + if err != nil { + return "", nil, err + } + return updateTTLTaskHeartBeatTemplate, []any{string(stateStr), now.Format(timeFormat), jobID, scanID, ownerID}, nil +} + +const resignOwnerSQLTemplate = `UPDATE mysql.tidb_ttl_task + SET state = %?, + status = 'waiting', + owner_id = NULL, + status_update_time = %?, + owner_hb_time = NULL + WHERE job_id = %? AND scan_id = %? AND owner_id = %?` -func updateTTLTaskHeartBeatSQL(jobID string, scanID int64, now time.Time, state *cache.TTLTaskState) (string, []any, error) { +func resignOwnerSQL(jobID string, scanID int64, now time.Time, state *cache.TTLTaskState, ownerID string) (string, []any, error) { stateStr, err := json.Marshal(state) if err != nil { return "", nil, err } - return updateTTLTaskHeartBeatTempalte, []any{string(stateStr), now.Format(timeFormat), jobID, scanID}, nil + return resignOwnerSQLTemplate, []any{string(stateStr), now.Format(timeFormat), jobID, scanID, ownerID}, nil } const countRunningTasks = "SELECT count(1) FROM mysql.tidb_ttl_task WHERE status = 'running'" @@ -160,6 +176,9 @@ func (m *taskManager) resizeScanWorkers(count int) error { jobID = curTask.JobID scanID = curTask.ScanID scanErr = errors.New("timeout to cancel scan task") + + result = curTask.result(scanErr) + result.reason = ReasonWorkerStop } task := findTaskWithID(m.runningTasks, jobID, scanID) @@ -192,6 +211,8 @@ func (m *taskManager) resizeDelWorkers(count int) error { return err } +var waitWorkerStopTimeout = 30 * time.Second + // resizeWorkers scales the worker, and returns the full set of workers as the first return value. If there are workers // stopped, return the stopped worker in the second return value func (m *taskManager) resizeWorkers(workers []worker, count int, factory func() worker) ([]worker, []worker, error) { @@ -204,9 +225,9 @@ func (m *taskManager) resizeWorkers(workers []worker, count int, factory func() var errs error // don't use `m.ctx` here, because when shutdown the server, `m.ctx` has already been cancelled - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), waitWorkerStopTimeout) for _, w := range workers[count:] { - err := w.WaitStopped(ctx, 30*time.Second) + err := w.WaitStopped(ctx, waitWorkerStopTimeout) if err != nil { logutil.Logger(m.ctx).Warn("fail to stop ttl worker", zap.Error(err)) errs = multierr.Append(errs, err) @@ -290,7 +311,11 @@ func (m *taskManager) rescheduleTasks(se session.Session, now time.Time) { loop: for _, t := range tasks { - logger := logutil.Logger(m.ctx).With(zap.String("jobID", t.JobID), zap.Int64("scanID", t.ScanID)) + logger := logutil.Logger(m.ctx).With( + zap.String("jobID", t.JobID), + zap.Int64("scanID", t.ScanID), + zap.Int64("tableID", t.TableID), + ) task, err := m.lockScanTask(se, t, now) if err != nil { @@ -303,7 +328,7 @@ loop: // don't step into the next step to avoid exceeding the limit break loop } - logutil.Logger(m.ctx).Warn("fail to lock scan task", zap.Error(err)) + logger.Warn("fail to lock scan task", zap.Error(err)) continue } @@ -317,7 +342,19 @@ loop: continue } - logger.Info("scheduled ttl task") + var prevTotalRows, prevSuccessRows, prevErrorRows uint64 + if state := task.TTLTask.State; state != nil { + prevTotalRows = state.TotalRows + prevSuccessRows = state.SuccessRows + prevErrorRows = state.ErrorRows + } + + logger.Info( + "scheduled ttl task", + zap.Uint64("prevTotalRows", prevTotalRows), + zap.Uint64("prevSuccessRows", prevSuccessRows), + zap.Uint64("prevErrorRows", prevErrorRows), + ) m.runningTasks = append(m.runningTasks, task) if len(idleScanWorkers) == 0 { @@ -379,6 +416,23 @@ func (m *taskManager) lockScanTask(se session.Session, task *cache.TTLTask, now return errors.WithStack(errTooManyRunningTasks) } + if task.OwnerID != "" { + logutil.Logger(m.ctx).Info( + "try to lock a heartbeat timeout task", + zap.String("jobID", task.JobID), + zap.Int64("scanID", task.ScanID), + zap.String("prevOwner", task.OwnerID), + zap.Time("lastHeartbeat", task.OwnerHBTime), + ) + } else if task.State != nil && task.State.PreviousOwner != "" { + logutil.Logger(m.ctx).Info( + "try to lock a task resigned from another instance", + zap.String("jobID", task.JobID), + zap.Int64("scanID", task.ScanID), + zap.String("prevOwner", task.State.PreviousOwner), + ) + } + intest.Assert(se.GetSessionVars().Location().String() == now.Location().String()) sql, args := setTTLTaskOwnerSQL(task.JobID, task.ScanID, m.id, now) _, err = se.ExecuteSQL(ctx, sql, args...) @@ -437,33 +491,114 @@ func (m *taskManager) syncTaskFromTable(se session.Session, jobID string, scanID } // updateHeartBeat updates the heartbeat for all tasks with current instance as owner -func (m *taskManager) updateHeartBeat(ctx context.Context, se session.Session, now time.Time) error { +func (m *taskManager) updateHeartBeat(ctx context.Context, se session.Session, now time.Time) { for _, task := range m.runningTasks { - state := &cache.TTLTaskState{ - TotalRows: task.statistics.TotalRows.Load(), - SuccessRows: task.statistics.SuccessRows.Load(), - ErrorRows: task.statistics.ErrorRows.Load(), - } - if task.result != nil && task.result.err != nil { - state.ScanTaskErr = task.result.err.Error() - } - - intest.Assert(se.GetSessionVars().Location().String() == now.Location().String()) - sql, args, err := updateTTLTaskHeartBeatSQL(task.JobID, task.ScanID, now, state) + err := m.taskHeartbeatOrResignOwner(ctx, se, now, task, false) if err != nil { - return err - } - _, err = se.ExecuteSQL(ctx, sql, args...) - if err != nil { - return errors.Wrapf(err, "execute sql: %s", sql) + logutil.Logger(m.ctx).Warn("fail to update task heart beat", zap.Error(err), zap.String("jobID", task.JobID), zap.Int64("scanID", task.ScanID)) } } +} + +func (m *taskManager) taskHeartbeatOrResignOwner(ctx context.Context, se session.Session, now time.Time, task *runningScanTask, isResignOwner bool) error { + state := task.dumpNewTaskState() + + intest.Assert(se.GetSessionVars().Location().String() == now.Location().String()) + buildSQLFunc := updateTTLTaskHeartBeatSQL + if isResignOwner { + state.PreviousOwner = m.id + buildSQLFunc = resignOwnerSQL + } + + sql, args, err := buildSQLFunc(task.JobID, task.ScanID, now, state, m.id) + if err != nil { + return err + } + _, err = se.ExecuteSQL(ctx, sql, args...) + if err != nil { + return errors.Wrapf(err, "execute sql: %s", sql) + } + + if se.GetSessionVars().StmtCtx.AffectedRows() != 1 { + return errors.Errorf("fail to update task status, maybe the owner is not myself (%s), affected rows: %d", + m.id, se.GetSessionVars().StmtCtx.AffectedRows()) + } + return nil } +func shouldRunningTaskResignOwner(task *runningScanTask) (string, bool) { + if result := task.result; result != nil { + switch result.reason { + case ReasonWorkerStop: + return string(result.reason), true + } + } + return "", false +} + +func (m *taskManager) tryResignTaskOwner(se session.Session, task *runningScanTask, reason string, now time.Time) bool { + var totalRows, successRows, errRows, processedRows uint64 + if stats := task.statistics; stats != nil { + totalRows = stats.TotalRows.Load() + successRows = stats.SuccessRows.Load() + errRows = stats.ErrorRows.Load() + processedRows = successRows + errRows + } + + var taskEndTime time.Time + if r := task.result; r != nil { + taskEndTime = r.time + } + + logger := task.taskLogger(logutil.Logger(m.ctx)).With( + zap.Time("taskEndTime", taskEndTime), + zap.String("reason", reason), + zap.Uint64("totalRows", totalRows), + zap.Uint64("processedRows", processedRows), + zap.Uint64("successRows", successRows), + zap.Uint64("errRows", errRows), + ) + + sinceTaskEnd := now.Sub(taskEndTime) + if sinceTaskEnd < 0 { + logger.Warn("task end time is after current time, something may goes wrong") + } + + if totalRows > processedRows && sinceTaskEnd < 10*time.Second && sinceTaskEnd > -10*time.Second { + logger.Info("wait all rows processed before resign the owner of a TTL task") + return false + } + + if totalRows > processedRows { + logger.Info("wait all rows processed timeout, force to resign the owner of a TTL task") + } else { + logger.Info("resign the owner of a TTL task") + } + + task.cancel() + // Update the task state with heartbeatTask for the last time. + // The task will be taken over by another instance after timeout. + if err := m.taskHeartbeatOrResignOwner(m.ctx, se, now, task, true); err != nil { + logger.Warn("fail to update the state before resign the task owner", zap.Error(err)) + } + + return true +} + func (m *taskManager) checkFinishedTask(se session.Session, now time.Time) { + if len(m.runningTasks) == 0 { + return + } stillRunningTasks := make([]*runningScanTask, 0, len(m.runningTasks)) for _, task := range m.runningTasks { + if reason, resign := shouldRunningTaskResignOwner(task); resign { + if !m.tryResignTaskOwner(se, task, reason, now) { + stillRunningTasks = append(stillRunningTasks, task) + } + continue + } + if !task.finished(logutil.Logger(m.ctx)) { stillRunningTasks = append(stillRunningTasks, task) continue @@ -472,7 +607,7 @@ func (m *taskManager) checkFinishedTask(se session.Session, now time.Time) { task.cancel() err := m.reportTaskFinished(se, now, task) if err != nil { - logutil.Logger(m.ctx).Error("fail to report finished task", zap.Error(err)) + task.taskLogger(logutil.Logger(m.ctx)).Error("fail to report finished task", zap.Error(err)) stillRunningTasks = append(stillRunningTasks, task) continue } @@ -482,17 +617,10 @@ func (m *taskManager) checkFinishedTask(se session.Session, now time.Time) { } func (m *taskManager) reportTaskFinished(se session.Session, now time.Time, task *runningScanTask) error { - state := &cache.TTLTaskState{ - TotalRows: task.statistics.TotalRows.Load(), - SuccessRows: task.statistics.SuccessRows.Load(), - ErrorRows: task.statistics.ErrorRows.Load(), - } - if task.result.err != nil { - state.ScanTaskErr = task.result.err.Error() - } + state := task.dumpNewTaskState() intest.Assert(se.GetSessionVars().Location().String() == now.Location().String()) - sql, args, err := setTTLTaskFinishedSQL(task.JobID, task.ScanID, state, now) + sql, args, err := setTTLTaskFinishedSQL(task.JobID, task.ScanID, state, now, m.id) if err != nil { return err } @@ -504,41 +632,61 @@ func (m *taskManager) reportTaskFinished(se session.Session, now time.Time, task if err != nil { return err } + if se.GetSessionVars().StmtCtx.AffectedRows() != 1 { + return errors.Errorf("fail to update task status, maybe the owner is not myself (%s) or task is not running, affected rows: %d", + m.id, se.GetSessionVars().StmtCtx.AffectedRows()) + } + + task.taskLogger(logutil.Logger(m.ctx)).Info( + "TTL task finished", + zap.Uint64("finalTotalRows", state.TotalRows), + zap.Uint64("finalSuccessRows", state.SuccessRows), + zap.Uint64("finalErrorRows", state.ErrorRows), + ) return nil } // checkInvalidTask removes the task whose owner is not myself or which has disappeared func (m *taskManager) checkInvalidTask(se session.Session) { + if len(m.runningTasks) == 0 { + return + } // TODO: optimize this function through cache or something else ownRunningTask := make([]*runningScanTask, 0, len(m.runningTasks)) for _, task := range m.runningTasks { + logger := logutil.Logger(m.ctx).With(zap.String("jobID", task.JobID), zap.Int64("scanID", task.ScanID)) + sql, args := cache.SelectFromTTLTaskWithID(task.JobID, task.ScanID) timeoutCtx, cancel := context.WithTimeout(m.ctx, ttlInternalSQLTimeout) rows, err := se.ExecuteSQL(timeoutCtx, sql, args...) cancel() if err != nil { - logutil.Logger(m.ctx).Warn("fail to execute sql", zap.String("sql", sql), zap.Any("args", args), zap.Error(err)) + logger.Warn("fail to execute sql", zap.String("sql", sql), zap.Any("args", args), zap.Error(err)) task.cancel() continue } if len(rows) == 0 { - logutil.Logger(m.ctx).Warn("didn't find task", zap.String("jobID", task.JobID), zap.Int64("scanID", task.ScanID)) + logger.Warn("didn't find task") task.cancel() continue } t, err := cache.RowToTTLTask(se, rows[0]) if err != nil { - logutil.Logger(m.ctx).Warn("fail to get task", zap.Error(err)) + logger.Warn("fail to get task", zap.Error(err)) task.cancel() continue } - if t.OwnerID == m.id { - ownRunningTask = append(ownRunningTask, task) + if t.OwnerID != m.id { + logger.Warn("task owner changed", zap.String("myOwnerID", m.id), zap.String("taskOwnerID", t.OwnerID)) + task.cancel() + continue } + + ownRunningTask = append(ownRunningTask, task) } m.runningTasks = ownRunningTask @@ -601,6 +749,29 @@ func (t *runningScanTask) Context() context.Context { return t.ctx } +// dumpNewTaskState dumps a new TTLTaskState which is used to update the task meta in the storage +func (t *runningScanTask) dumpNewTaskState() *cache.TTLTaskState { + state := &cache.TTLTaskState{ + TotalRows: t.statistics.TotalRows.Load(), + SuccessRows: t.statistics.SuccessRows.Load(), + ErrorRows: t.statistics.ErrorRows.Load(), + } + + if prevState := t.TTLTask.State; prevState != nil { + // If a task was timeout and taken over by the current instance, + // adding the previous state to the current state to make the statistics more accurate. + state.TotalRows += prevState.SuccessRows + prevState.ErrorRows + state.SuccessRows += prevState.SuccessRows + state.ErrorRows += prevState.ErrorRows + } + + if r := t.result; r != nil && r.err != nil { + state.ScanTaskErr = r.err.Error() + } + + return state +} + func (t *runningScanTask) finished(logger *zap.Logger) bool { if t.result == nil { // Scan task isn't finished @@ -620,7 +791,7 @@ func (t *runningScanTask) finished(logger *zap.Logger) bool { if processedRows == totalRows { // All rows are processed. logger.Info( - "mark TTL task finished because all scanned rows are processed", + "will mark TTL task finished because all scanned rows are processed", zap.Uint64("totalRows", totalRows), zap.Uint64("successRows", successRows), zap.Uint64("errorRows", errRows), @@ -632,7 +803,7 @@ func (t *runningScanTask) finished(logger *zap.Logger) bool { // All rows are processed but processed rows are more than total rows. // We still think it is finished. logger.Warn( - "mark TTL task finished but processed rows are more than total rows", + "will mark TTL task finished but processed rows are more than total rows", zap.Uint64("totalRows", totalRows), zap.Uint64("successRows", successRows), zap.Uint64("errorRows", errRows), @@ -645,7 +816,7 @@ func (t *runningScanTask) finished(logger *zap.Logger) bool { // After a certain time, if the rows are still not processed, we need to mark the task finished anyway to make // sure the TTL job does not hang. logger.Info( - "mark TTL task finished because timeout for waiting all scanned rows processed after scan task done", + "will mark TTL task finished because timeout for waiting all scanned rows processed after scan task done", zap.Uint64("totalRows", totalRows), zap.Uint64("successRows", successRows), zap.Uint64("errorRows", errRows), diff --git a/pkg/ttl/ttlworker/task_manager_integration_test.go b/pkg/ttl/ttlworker/task_manager_integration_test.go index 93ab32d1d3875..bdb5d03819d03 100644 --- a/pkg/ttl/ttlworker/task_manager_integration_test.go +++ b/pkg/ttl/ttlworker/task_manager_integration_test.go @@ -17,10 +17,12 @@ package ttlworker_test import ( "context" "fmt" + "strconv" "sync" "testing" "time" + "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/infoschema" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/model" @@ -29,6 +31,7 @@ import ( "github.com/pingcap/tidb/pkg/ttl/cache" "github.com/pingcap/tidb/pkg/ttl/metrics" "github.com/pingcap/tidb/pkg/ttl/ttlworker" + "github.com/pingcap/tidb/pkg/util/chunk" "github.com/pingcap/tidb/pkg/util/logutil" dto "github.com/prometheus/client_model/go" "github.com/stretchr/testify/require" @@ -38,7 +41,7 @@ import ( ) func TestParallelLockNewTask(t *testing.T) { - store := testkit.CreateMockStore(t) + store, dom := testkit.CreateMockStoreAndDomain(t) tk := testkit.NewTestKit(t, store) tk.MustExec("set global tidb_ttl_running_tasks = 1000") ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnTTL) @@ -46,7 +49,7 @@ func TestParallelLockNewTask(t *testing.T) { testTable, err := tk.Session().GetDomainInfoSchema().(infoschema.InfoSchema).TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) require.NoError(t, err) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) se := sessionFactory() now := se.Now() @@ -117,7 +120,7 @@ func TestParallelSchedule(t *testing.T) { waitAndStopTTLManager(t, dom) tk := testkit.NewTestKit(t, store) tk.MustExec("set global tidb_ttl_running_tasks = 1000") - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) tk.MustExec("create table test.t(id int, created_at datetime) ttl=created_at + interval 1 day") table, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) @@ -175,7 +178,7 @@ func TestTaskScheduleExpireHeartBeat(t *testing.T) { waitAndStopTTLManager(t, dom) tk := testkit.NewTestKit(t, store) tk.MustExec("set global tidb_ttl_running_tasks = 1000") - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) // create table and scan task tk.MustExec("create table test.t(id int, created_at datetime) ttl=created_at + interval 1 day") @@ -223,7 +226,7 @@ func TestTaskMetrics(t *testing.T) { waitAndStopTTLManager(t, dom) tk := testkit.NewTestKit(t, store) tk.MustExec("set global tidb_ttl_running_tasks = 1000") - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) // create table and scan task tk.MustExec("create table test.t(id int, created_at datetime) ttl=created_at + interval 1 day") @@ -258,7 +261,7 @@ func TestRescheduleWithError(t *testing.T) { tk := testkit.NewTestKit(t, store) tk.MustExec("set global tidb_ttl_running_tasks = 1000") - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) // insert a wrong scan task with random table id sql := fmt.Sprintf("insert into mysql.tidb_ttl_task(job_id,table_id,scan_id,expire_time,created_time) values ('test-job', %d, %d, NOW(), NOW())", 613, 1) tk.MustExec(sql) @@ -293,7 +296,7 @@ func TestTTLRunningTasksLimitation(t *testing.T) { store, dom := testkit.CreateMockStoreAndDomain(t) waitAndStopTTLManager(t, dom) tk := testkit.NewTestKit(t, store) - sessionFactory := sessionFactory(t, store) + sessionFactory := sessionFactory(t, dom) tk.MustExec("set global tidb_ttl_running_tasks = 32") tk.MustExec("create table test.t(id int, created_at datetime) ttl=created_at + interval 1 day") @@ -356,3 +359,345 @@ func TestMeetTTLRunningTasks(t *testing.T) { require.False(t, dom.TTLJobManager().TaskManager().MeetTTLRunningTasks(3, cache.TaskStatusWaiting)) require.True(t, dom.TTLJobManager().TaskManager().MeetTTLRunningTasks(3, cache.TaskStatusRunning)) } + +func TestShrinkScanWorkerAndResignOwner(t *testing.T) { + defer ttlworker.SetWaitWorkerStopTimeoutForTest(time.Second)() + + store, dom := testkit.CreateMockStoreAndDomain(t) + pool := wrapPoolForTest(dom.SysSessionPool()) + defer pool.AssertNoSessionInUse(t) + waitAndStopTTLManager(t, dom) + tk := testkit.NewTestKit(t, store) + sessionFactory := sessionFactory(t, dom) + + tk.MustExec("set global tidb_ttl_running_tasks = 32") + + tk.MustExec("create table test.t(id int, created_at datetime) ttl=created_at + interval 1 day") + testTable, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + taskCnt := 8 + for id := 0; id < taskCnt; id++ { + sql := fmt.Sprintf("insert into mysql.tidb_ttl_task(job_id,table_id,scan_id,expire_time,created_time) values ('test-job', %d, %d, NOW() - INTERVAL 1 DAY, NOW() - interval %d second)", testTable.Meta().ID, id, taskCnt-id) + tk.MustExec(sql) + } + + se := sessionFactory() + now := se.Now() + + isc := cache.NewInfoSchemaCache(time.Minute) + require.NoError(t, isc.Update(se)) + m := ttlworker.NewTaskManager(context.Background(), pool, isc, "scan-manager-1", store) + + startBlockNotifyCh := make(chan struct{}) + blockCancelCh := make(chan struct{}) + workers := make([]ttlworker.Worker, 0, taskCnt) + defer func() { + close(blockCancelCh) + for _, w := range workers { + w.Stop() + require.NoError(t, w.WaitStopped(context.Background(), time.Minute)) + } + }() + + for j := 0; j < taskCnt; j++ { + scanWorker := ttlworker.NewMockScanWorker(t) + scanWorker.SetInfoSchema(dom.InfoSchema()) + switch j { + case 0: + scanWorker.SetExecuteSQL(func(ctx context.Context, sql string, args ...any) ([]chunk.Row, error) { + // test for shrink scan worker timeout + startBlockNotifyCh <- struct{}{} + <-blockCancelCh + return nil, nil + }) + case 1: + scanWorker.SetExecuteSQL(func(ctx context.Context, sql string, args ...any) ([]chunk.Row, error) { + return nil, errors.New("mockErr") + }) + default: + scanWorker.SetExecuteSQL(func(ctx context.Context, sql string, args ...any) ([]chunk.Row, error) { + <-ctx.Done() + return nil, nil + }) + } + scanWorker.Start() + workers = append(workers, scanWorker) + } + m.SetScanWorkers4Test(workers) + + m.RescheduleTasks(se, now) + require.Len(t, m.GetRunningTasks(), len(workers)) + tk.MustQuery("SELECT count(1) from mysql.tidb_ttl_task where status = 'running'"). + Check(testkit.Rows(strconv.Itoa(taskCnt))) + <-startBlockNotifyCh + + // shrink scan workers, and one of them will be a timeout + require.Error(t, m.ResizeScanWorkers(0)) + require.Len(t, m.GetScanWorkers(), 0) + + // mock running task's statistics and end time + tk.MustQuery("SELECT count(1) from mysql.tidb_ttl_task where status = 'running'"). + Check(testkit.Rows(strconv.Itoa(taskCnt))) + tasks := m.GetRunningTasks() + require.Len(t, tasks, len(workers)) + for j, task := range tasks { + terminated, reason, endTime := task.GetTerminateInfo() + require.True(t, terminated, j) + require.Equal(t, ttlworker.ReasonWorkerStop, reason, j) + stat := task.GetStatistics() + require.True(t, !endTime.IsZero(), j) + switch j { + case 0: + // some rows error + stat.TotalRows.Store(128) + stat.SuccessRows.Store(100) + stat.ErrorRows.Store(28) + case 1: + // no rows + stat.TotalRows.Store(0) + stat.SuccessRows.Store(0) + stat.ErrorRows.Store(0) + case 2: + // all rows processed + stat.TotalRows.Store(128) + stat.SuccessRows.Store(128) + stat.ErrorRows.Store(0) + case 3: + // no enough rows processed, not timeout + task.ResetEndTimeForTest(t, now.Add(9*time.Second)) + stat.TotalRows.Store(128) + stat.SuccessRows.Store(64) + stat.ErrorRows.Store(63) + case 4: + // no enough rows processed, but timed out + task.ResetEndTimeForTest(t, now.Add(10*time.Second)) + // also, test report rows should be accumulated + task.TTLTask.State = &cache.TTLTaskState{ + TotalRows: 5, + SuccessRows: 2, + ErrorRows: 1, + } + stat.TotalRows.Store(128) + stat.SuccessRows.Store(64) + stat.ErrorRows.Store(63) + case 5: + // no enough rows processed, but no negative time + task.ResetEndTimeForTest(t, now.Add(-9*time.Second)) + stat.TotalRows.Store(128) + stat.SuccessRows.Store(64) + stat.ErrorRows.Store(63) + case 6: + // no enough rows processed, but negative timed out + task.ResetEndTimeForTest(t, now.Add(-10*time.Second)) + stat.TotalRows.Store(128) + stat.SuccessRows.Store(64) + stat.ErrorRows.Store(63) + case 7: + // some unexpected data + stat.TotalRows.Store(128) + stat.SuccessRows.Store(129) + stat.ErrorRows.Store(0) + } + } + + // After CheckFinishedTask, tasks should be "waiting" state except some are waiting for statistics collecting. + m.CheckFinishedTask(se, now) + tk.MustQuery( + "SELECT scan_id, status, owner_id," + + " json_extract(state, '$.total_rows')," + + " json_extract(state, '$.success_rows')," + + " json_extract(state, '$.error_rows')," + + " json_extract(state, '$.prev_owner')," + + " json_extract(state, '$.scan_task_err')" + + " from mysql.tidb_ttl_task order by scan_id"). + Check(testkit.Rows( + "0 waiting 128 100 28 \"scan-manager-1\" \"timeout to cancel scan task\"", + "1 waiting 0 0 0 \"scan-manager-1\" \"context canceled\"", + "2 waiting 128 128 0 \"scan-manager-1\" \"context canceled\"", + "3 running scan-manager-1 ", + "4 waiting 131 66 64 \"scan-manager-1\" \"context canceled\"", + "5 running scan-manager-1 ", + "6 waiting 128 64 63 \"scan-manager-1\" \"context canceled\"", + "7 waiting 128 129 0 \"scan-manager-1\" \"context canceled\"", + )) + + // A resigned task can be obtained by other task managers + m2 := ttlworker.NewTaskManager(context.Background(), pool, isc, "scan-manager-2", store) + worker2 := ttlworker.NewMockScanWorker(t) + worker2.Start() + defer func() { + worker2.Stop() + require.NoError(t, worker2.WaitStopped(context.Background(), time.Minute)) + }() + m2.SetScanWorkers4Test([]ttlworker.Worker{worker2}) + m2.RescheduleTasks(se, now) + require.Len(t, m2.GetRunningTasks(), 1) + task := m2.GetRunningTasks()[0] + require.Equal(t, int64(0), task.ScanID) + require.Equal(t, cache.TaskStatusRunning, task.Status) + require.Equal(t, "scan-manager-2", task.OwnerID) + require.Equal(t, uint64(128), task.State.TotalRows) + require.Equal(t, uint64(100), task.State.SuccessRows) + require.Equal(t, uint64(28), task.State.ErrorRows) + tk.MustQuery("select status, owner_id from mysql.tidb_ttl_task where scan_id=0"). + Check(testkit.Rows("running scan-manager-2")) +} + +func TestTaskCancelledAfterHeartbeatTimeout(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + pool := wrapPoolForTest(dom.SysSessionPool()) + waitAndStopTTLManager(t, dom) + tk := testkit.NewTestKit(t, store) + sessionFactory := sessionFactory(t, dom) + se := sessionFactory() + + tk.MustExec("set global tidb_ttl_running_tasks = 128") + defer tk.MustExec("set global tidb_ttl_running_tasks = -1") + + tk.MustExec("create table test.t(id int, created_at datetime) ttl=created_at + interval 1 day") + table, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + // 4 tasks are inserted into the table + for i := 0; i < 4; i++ { + sql := fmt.Sprintf("insert into mysql.tidb_ttl_task(job_id,table_id,scan_id,expire_time,created_time) values ('test-job', %d, %d, NOW(), NOW())", table.Meta().ID, i) + tk.MustExec(sql) + } + isc := cache.NewInfoSchemaCache(time.Second) + require.NoError(t, isc.Update(se)) + + workers := []ttlworker.Worker{} + for j := 0; j < 8; j++ { + scanWorker := ttlworker.NewMockScanWorker(t) + scanWorker.Start() + workers = append(workers, scanWorker) + } + + now := se.Now() + m1 := ttlworker.NewTaskManager(context.Background(), pool, isc, "task-manager-1", store) + m1.SetScanWorkers4Test(workers[0:4]) + m1.RescheduleTasks(se, now) + m2 := ttlworker.NewTaskManager(context.Background(), pool, isc, "task-manager-2", store) + m2.SetScanWorkers4Test(workers[4:]) + + // All tasks should be scheduled to m1 and running + tk.MustQuery("select count(1) from mysql.tidb_ttl_task where status = 'running' and owner_id = 'task-manager-1'").Check(testkit.Rows("4")) + + var cancelCount atomic.Uint32 + for i := 0; i < 4; i++ { + task := m1.GetRunningTasks()[i] + task.SetCancel(func() { + cancelCount.Add(1) + }) + } + + // After a period of time, the tasks lost heartbeat and will be re-asisgned to m2 + now = now.Add(time.Hour) + m2.RescheduleTasks(se, now) + + // All tasks should be scheduled to m2 and running + tk.MustQuery("select count(1) from mysql.tidb_ttl_task where status = 'running' and owner_id = 'task-manager-2'").Check(testkit.Rows("4")) + + // Then m1 cannot update the heartbeat of its task + for i := 0; i < 4; i++ { + require.Error(t, m1.UpdateHeartBeatForTask(context.Background(), se, now.Add(time.Hour), m1.GetRunningTasks()[i])) + } + tk.MustQuery("select owner_hb_time from mysql.tidb_ttl_task").Check(testkit.Rows( + now.Format(time.DateTime), + now.Format(time.DateTime), + now.Format(time.DateTime), + now.Format(time.DateTime), + )) + + // m2 can successfully update the heartbeat + for i := 0; i < 4; i++ { + require.NoError(t, m2.UpdateHeartBeatForTask(context.Background(), se, now.Add(time.Hour), m2.GetRunningTasks()[i])) + } + tk.MustQuery("select owner_hb_time from mysql.tidb_ttl_task").Check(testkit.Rows( + now.Add(time.Hour).Format(time.DateTime), + now.Add(time.Hour).Format(time.DateTime), + now.Add(time.Hour).Format(time.DateTime), + now.Add(time.Hour).Format(time.DateTime), + )) + + // Although m1 cannot finish the task. It'll also try to cancel the task. + for _, task := range m1.GetRunningTasks() { + task.SetResult(nil) + } + m1.CheckFinishedTask(se, now) + tk.MustQuery("select count(1) from mysql.tidb_ttl_task where status = 'running'").Check(testkit.Rows("4")) + require.Equal(t, uint32(4), cancelCount.Load()) + + // Then the tasks in m1 should be cancelled again in `CheckInvalidTask`. + m1.CheckInvalidTask(se) + require.Equal(t, uint32(8), cancelCount.Load()) + + // m2 can finish the task + for _, task := range m2.GetRunningTasks() { + task.SetResult(nil) + } + m2.CheckFinishedTask(se, now) + tk.MustQuery("select status, state, owner_id from mysql.tidb_ttl_task").Sort().Check(testkit.Rows( + `finished {"total_rows":0,"success_rows":0,"error_rows":0,"scan_task_err":""} task-manager-2`, + `finished {"total_rows":0,"success_rows":0,"error_rows":0,"scan_task_err":""} task-manager-2`, + `finished {"total_rows":0,"success_rows":0,"error_rows":0,"scan_task_err":""} task-manager-2`, + `finished {"total_rows":0,"success_rows":0,"error_rows":0,"scan_task_err":""} task-manager-2`, + )) +} + +func TestHeartBeatErrorNotBlockOthers(t *testing.T) { + store, dom := testkit.CreateMockStoreAndDomain(t) + pool := wrapPoolForTest(dom.SysSessionPool()) + defer pool.AssertNoSessionInUse(t) + waitAndStopTTLManager(t, dom) + tk := testkit.NewTestKit(t, store) + sessionFactory := sessionFactory(t, dom) + + tk.MustExec("set global tidb_ttl_running_tasks = 32") + + tk.MustExec("create table test.t(id int, created_at datetime) ttl=created_at + interval 1 day") + testTable, err := dom.InfoSchema().TableByName(context.Background(), model.NewCIStr("test"), model.NewCIStr("t")) + require.NoError(t, err) + for id := 0; id < 4; id++ { + sql := fmt.Sprintf("insert into mysql.tidb_ttl_task(job_id,table_id,scan_id,expire_time,created_time) values ('test-job', %d, %d, NOW() - INTERVAL 1 DAY, NOW())", testTable.Meta().ID, id) + tk.MustExec(sql) + } + + se := sessionFactory() + now := se.Now() + + isc := cache.NewInfoSchemaCache(time.Minute) + require.NoError(t, isc.Update(se)) + m := ttlworker.NewTaskManager(context.Background(), pool, isc, "task-manager-1", store) + workers := []ttlworker.Worker{} + for j := 0; j < 4; j++ { + scanWorker := ttlworker.NewMockScanWorker(t) + scanWorker.Start() + workers = append(workers, scanWorker) + } + m.SetScanWorkers4Test(workers) + m.RescheduleTasks(se, now) + + // All tasks should be scheduled to m1 and running + tk.MustQuery("select count(1) from mysql.tidb_ttl_task where status = 'running' and owner_id = 'task-manager-1'").Check(testkit.Rows("4")) + + // Mock the situation that the owner of task 0 has changed + tk.MustExec("update mysql.tidb_ttl_task set owner_id = 'task-manager-2' where scan_id = 0") + tk.MustQuery("select count(1) from mysql.tidb_ttl_task where status = 'running' and owner_id = 'task-manager-1'").Check(testkit.Rows("3")) + + now = now.Add(time.Hour) + require.Error(t, m.UpdateHeartBeatForTask(context.Background(), se, now, m.GetRunningTasks()[0])) + for i := 1; i < 4; i++ { + require.NoError(t, m.UpdateHeartBeatForTask(context.Background(), se, now, m.GetRunningTasks()[i])) + } + + now = now.Add(time.Hour) + m.UpdateHeartBeat(context.Background(), se, now) + tkTZ := tk.Session().GetSessionVars().Location() + tk.MustQuery("select count(1) from mysql.tidb_ttl_task where status = 'running' and owner_id = 'task-manager-1'").Check(testkit.Rows("3")) + tk.MustQuery("select scan_id, owner_hb_time from mysql.tidb_ttl_task").Sort().Check(testkit.Rows( + fmt.Sprintf("0 %s", now.Add(-2*time.Hour).In(tkTZ).Format(time.DateTime)), + fmt.Sprintf("1 %s", now.In(tkTZ).Format(time.DateTime)), + fmt.Sprintf("2 %s", now.In(tkTZ).Format(time.DateTime)), + fmt.Sprintf("3 %s", now.In(tkTZ).Format(time.DateTime)), + )) +} diff --git a/pkg/ttl/ttlworker/task_manager_test.go b/pkg/ttl/ttlworker/task_manager_test.go index 064c68f86ed40..5372d8c298418 100644 --- a/pkg/ttl/ttlworker/task_manager_test.go +++ b/pkg/ttl/ttlworker/task_manager_test.go @@ -51,11 +51,27 @@ func (m *taskManager) ResizeWorkersWithSysVar() { m.resizeWorkersWithSysVar() } +// ResizeWorkersToZero resize workers to zero +func (m *taskManager) ResizeWorkersToZero(t *testing.T) { + require.NoError(t, m.resizeScanWorkers(0)) + require.NoError(t, m.resizeDelWorkers(0)) +} + // RescheduleTasks is an exported version of rescheduleTasks func (m *taskManager) RescheduleTasks(se session.Session, now time.Time) { m.rescheduleTasks(se, now) } +// ResizeScanWorkers is an exported version of resizeScanWorkers +func (m *taskManager) ResizeScanWorkers(count int) error { + return m.resizeScanWorkers(count) +} + +// ResizeDelWorkers is an exported version of resizeDeleteWorkers +func (m *taskManager) ResizeDelWorkers(count int) error { + return m.resizeDelWorkers(count) +} + // ReportMetrics is an exported version of reportMetrics func (m *taskManager) ReportMetrics() { m.reportMetrics() @@ -81,11 +97,64 @@ func (m *taskManager) ReportTaskFinished(se session.Session, now time.Time, task return m.reportTaskFinished(se, now, task) } +// GetScanWorkers returns the scan workers of the task manager. +func (m *taskManager) GetScanWorkers() []worker { + return m.scanWorkers +} + // SetResult sets the result of the task func (t *runningScanTask) SetResult(err error) { t.result = t.ttlScanTask.result(err) } +// SetCancel sets the cancel function of the task +func (t *runningScanTask) SetCancel(cancel func()) { + t.cancel = cancel +} + +// CheckInvalidTask is an exported version of checkInvalidTask +func (m *taskManager) CheckInvalidTask(se session.Session) { + m.checkInvalidTask(se) +} + +// UpdateHeartBeat is an exported version of updateHeartBeat +func (m *taskManager) UpdateHeartBeat(ctx context.Context, se session.Session, now time.Time) { + m.updateHeartBeat(ctx, se, now) +} + +// UpdateHeartBeatForTask is an exported version of updateHeartBeatForTask +func (m *taskManager) UpdateHeartBeatForTask(ctx context.Context, se session.Session, now time.Time, task *runningScanTask) error { + return m.taskHeartbeatOrResignOwner(ctx, se, now, task, false) +} + +// SetWaitWorkerStopTimeoutForTest sets the waitWorkerStopTimeout for testing +func SetWaitWorkerStopTimeoutForTest(timeout time.Duration) func() { + original := waitWorkerStopTimeout + waitWorkerStopTimeout = timeout + return func() { + waitWorkerStopTimeout = original + } +} + +// GetTerminateInfo returns the task terminates info +func (t *runningScanTask) GetTerminateInfo() (bool, TaskTerminateReason, time.Time) { + if t.result == nil { + return false, "", time.Time{} + } + return true, t.result.reason, t.result.time +} + +// GetStatistics returns the ttlStatistics +func (t *runningScanTask) GetStatistics() *ttlStatistics { + return t.statistics +} + +// ResetEndTime resets the end time +func (t *runningScanTask) ResetEndTimeForTest(tb *testing.T, tm time.Time) { + require.NotNil(tb, t.result) + t.result.time = tm +} + func TestResizeWorkers(t *testing.T) { tbl := newMockTTLTbl(t, "t1") diff --git a/pkg/ttl/ttlworker/timer_sync.go b/pkg/ttl/ttlworker/timer_sync.go index 4fe982096cfc3..f621a627d1907 100644 --- a/pkg/ttl/ttlworker/timer_sync.go +++ b/pkg/ttl/ttlworker/timer_sync.go @@ -414,7 +414,9 @@ func getTTLSchedulePolicy(info *model.TTLInfo) (timerapi.SchedPolicyType, string interval := info.JobInterval if interval == "" { // This only happens when the table is created from 6.5 in which the `tidb_job_interval` is not introduced yet. - interval = model.DefaultJobIntervalStr + // We use `OldDefaultTTLJobInterval` as the return value to ensure a consistent behavior for the + // upgrades: v6.5 -> v8.5(or previous version) -> newer version than v8.5. + interval = model.OldDefaultTTLJobInterval } return timerapi.SchedEventInterval, interval } diff --git a/pkg/ttl/ttlworker/timer_test.go b/pkg/ttl/ttlworker/timer_test.go index 12bedc8e0cf41..39e56c12ce431 100644 --- a/pkg/ttl/ttlworker/timer_test.go +++ b/pkg/ttl/ttlworker/timer_test.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/sessionctx/variable" timerapi "github.com/pingcap/tidb/pkg/timer/api" "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/timeutil" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) @@ -350,8 +351,9 @@ func TestTTLTimerHookOnEvent(t *testing.T) { require.Equal(t, summaryData, timer.SummaryData) adapter.AssertExpectations(t) + tz := timeutil.SystemLocation() // job not exists but table ttl not enabled - watermark := time.Unix(3600*123, 0) + watermark := time.Unix(3600*123, 0).In(tz) require.NoError(t, cli.UpdateTimer(ctx, timer.ID, timerapi.WithSetWatermark(watermark))) timer = triggerTestTimer(t, store, timer.ID) adapter.On("GetJob", ctx, data.TableID, data.PhysicalID, timer.EventID). @@ -373,7 +375,7 @@ func TestTTLTimerHookOnEvent(t *testing.T) { require.Equal(t, oldSummary, timer.SummaryData) // job not exists but timer disabled - watermark = time.Unix(3600*456, 0) + watermark = time.Unix(3600*456, 0).In(tz) require.NoError(t, cli.UpdateTimer(ctx, timer.ID, timerapi.WithSetWatermark(watermark), timerapi.WithSetEnable(false))) timer = triggerTestTimer(t, store, timer.ID) adapter.On("GetJob", ctx, data.TableID, data.PhysicalID, timer.EventID). @@ -394,7 +396,7 @@ func TestTTLTimerHookOnEvent(t *testing.T) { require.NoError(t, cli.UpdateTimer(ctx, timer.ID, timerapi.WithSetEnable(true))) // job not exists but event start too early - watermark = time.Unix(3600*789, 0) + watermark = time.Unix(3600*789, 0).In(tz) require.NoError(t, cli.UpdateTimer(ctx, timer.ID, timerapi.WithSetWatermark(watermark))) timer = triggerTestTimer(t, store, timer.ID) adapter.On("Now").Return(timer.EventStart.Add(11*time.Minute), nil).Once() @@ -584,7 +586,7 @@ func TestGetTTLSchedulePolicy(t *testing.T) { JobInterval: "", }) require.Equal(t, timerapi.SchedEventInterval, tp) - require.Equal(t, model.DefaultJobIntervalStr, expr) + require.Equal(t, model.OldDefaultTTLJobInterval, expr) _, err = timerapi.CreateSchedEventPolicy(tp, expr) require.NoError(t, err) } diff --git a/pkg/ttl/ttlworker/worker.go b/pkg/ttl/ttlworker/worker.go index 9ff607acbdc17..13e5a46fbed9c 100644 --- a/pkg/ttl/ttlworker/worker.go +++ b/pkg/ttl/ttlworker/worker.go @@ -20,6 +20,7 @@ import ( "time" "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/intest" "github.com/pingcap/tidb/pkg/util/logutil" "go.uber.org/zap" ) @@ -126,6 +127,7 @@ func (w *baseWorker) loop() { defer func() { if r := recover(); r != nil { logutil.BgLogger().Info("ttl worker panic", zap.Any("recover", r), zap.Stack("stack")) + intest.Assert(false, "ttl worker panic") } w.Lock() w.toStopped(err) diff --git a/pkg/types/datum.go b/pkg/types/datum.go index 677d969bdfba9..f6d9705e61cc1 100644 --- a/pkg/types/datum.go +++ b/pkg/types/datum.go @@ -1705,38 +1705,13 @@ func (d *Datum) ConvertToMysqlYear(ctx Context, target *FieldType) (Datum, error return ret, errors.Trace(err) } -func (d *Datum) convertStringToMysqlBit(ctx Context) (uint64, error) { - bitStr, err := ParseBitStr(BinaryLiteral(d.b).ToString()) - if err != nil { - // It cannot be converted to bit type, so we need to convert it to int type. - return BinaryLiteral(d.b).ToInt(ctx) - } - return bitStr.ToInt(ctx) -} - func (d *Datum) convertToMysqlBit(ctx Context, target *FieldType) (Datum, error) { var ret Datum var uintValue uint64 var err error switch d.k { - case KindBytes: + case KindString, KindBytes: uintValue, err = BinaryLiteral(d.b).ToInt(ctx) - case KindString: - // For single bit value, we take string like "true", "1" as 1, and "false", "0" as 0, - // this behavior is not documented in MySQL, but it behaves so, for more information, see issue #18681 - s := BinaryLiteral(d.b).ToString() - if target.GetFlen() == 1 { - switch strings.ToLower(s) { - case "true", "1": - uintValue = 1 - case "false", "0": - uintValue = 0 - default: - uintValue, err = d.convertStringToMysqlBit(ctx) - } - } else { - uintValue, err = d.convertStringToMysqlBit(ctx) - } case KindInt64: // if input kind is int64 (signed), when trans to bit, we need to treat it as unsigned d.k = KindUint64 diff --git a/pkg/types/datum_test.go b/pkg/types/datum_test.go index 0adffc0e62772..83512fbaed774 100644 --- a/pkg/types/datum_test.go +++ b/pkg/types/datum_test.go @@ -517,22 +517,35 @@ func prepareCompareDatums() ([]Datum, []Datum) { func TestStringToMysqlBit(t *testing.T) { tests := []struct { - a Datum - out []byte + a Datum + out []byte + flen int + truncated bool }{ - {NewStringDatum("true"), []byte{1}}, - {NewStringDatum("false"), []byte{0}}, - {NewStringDatum("1"), []byte{1}}, - {NewStringDatum("0"), []byte{0}}, - {NewStringDatum("b'1'"), []byte{1}}, - {NewStringDatum("b'0'"), []byte{0}}, - } - tp := NewFieldType(mysql.TypeBit) - tp.SetFlen(1) + {NewStringDatum("true"), []byte{1}, 1, true}, + {NewStringDatum("true"), []byte{0x74, 0x72, 0x75, 0x65}, 32, false}, + {NewStringDatum("false"), []byte{0x1}, 1, true}, + {NewStringDatum("false"), []byte{0x66, 0x61, 0x6c, 0x73, 0x65}, 40, false}, + {NewStringDatum("1"), []byte{1}, 1, true}, + {NewStringDatum("1"), []byte{0x31}, 8, false}, + {NewStringDatum("0"), []byte{1}, 1, true}, + {NewStringDatum("0"), []byte{0x30}, 8, false}, + {NewStringDatum("b'1'"), []byte{0x62, 0x27, 0x31, 0x27}, 32, false}, + {NewStringDatum("b'0'"), []byte{0x62, 0x27, 0x30, 0x27}, 32, false}, + } for _, tt := range tests { - bin, err := tt.a.convertToMysqlBit(DefaultStmtNoWarningContext, tp) - require.NoError(t, err) - require.Equal(t, tt.out, bin.b) + t.Run(fmt.Sprintf("%s %d %t", tt.a.GetString(), tt.flen, tt.truncated), func(t *testing.T) { + tp := NewFieldType(mysql.TypeBit) + tp.SetFlen(tt.flen) + + bin, err := tt.a.convertToMysqlBit(DefaultStmtNoWarningContext, tp) + if tt.truncated { + require.Contains(t, err.Error(), "Data Too Long") + } else { + require.NoError(t, err) + } + require.Equal(t, tt.out, bin.b) + }) } } diff --git a/pkg/types/field_type.go b/pkg/types/field_type.go index bfa84118d8c93..6a2e562c0b699 100644 --- a/pkg/types/field_type.go +++ b/pkg/types/field_type.go @@ -197,6 +197,10 @@ func InferParamTypeFromUnderlyingValue(value any, tp *FieldType) { tp.SetType(mysql.TypeVarString) tp.SetFlen(UnspecifiedLength) tp.SetDecimal(UnspecifiedLength) + // Also set the `charset` and `collation` for it, because some function (e.g. `json_object`) will return error + // if the argument collation is `binary`. + tp.SetCharset(mysql.DefaultCharset) + tp.SetCollate(mysql.DefaultCollationName) default: DefaultTypeForValue(value, tp, mysql.DefaultCharset, mysql.DefaultCollationName) if hasVariantFieldLength(tp) { diff --git a/pkg/types/time.go b/pkg/types/time.go index e2d915df86489..778ed31ee66a7 100644 --- a/pkg/types/time.go +++ b/pkg/types/time.go @@ -2669,7 +2669,7 @@ func ParseTimeFromFloat64(ctx Context, f float64) (Time, error) { } if t.Type() == mysql.TypeDatetime { // US part is only kept when the integral part is recognized as datetime. - fracPart := uint32((f - float64(intPart)) * 1000000.0) + fracPart := uint32(math.Round((f - float64(intPart)) * 1000000.0)) ct := t.CoreTime() ct.setMicrosecond(fracPart) t.SetCoreTime(ct) diff --git a/pkg/types/time_test.go b/pkg/types/time_test.go index d015f5fb209b3..00484a84a0225 100644 --- a/pkg/types/time_test.go +++ b/pkg/types/time_test.go @@ -1814,7 +1814,8 @@ func TestParseTimeFromFloat64(t *testing.T) { {0.0, mysql.TypeDate, 0, 0, 0, 0, 0, 0, 0, nil}, {20000102030405, mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 0, nil}, {20000102030405.015625, mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 15625, nil}, - {20000102030405.0078125, mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 7812, nil}, + {20000102030405.0078125, mysql.TypeDatetime, 2000, 1, 2, 3, 4, 5, 7813, nil}, + {121212131313.99998, mysql.TypeDatetime, 2012, 12, 12, 13, 13, 13, 999985, nil}, {2000, mysql.TypeDatetime, 0, 0, 0, 0, 0, 0, 0, types.ErrTruncatedWrongVal}, {20000000000000, mysql.TypeDatetime, 2000, 0, 0, 0, 0, 0, 0, nil}, } diff --git a/pkg/util/chunk/BUILD.bazel b/pkg/util/chunk/BUILD.bazel index 7f3cfca2a24a6..0d8a6e96c52bc 100644 --- a/pkg/util/chunk/BUILD.bazel +++ b/pkg/util/chunk/BUILD.bazel @@ -27,9 +27,11 @@ go_library( "//pkg/parser/terror", "//pkg/types", "//pkg/util/checksum", + "//pkg/util/disjointset", "//pkg/util/disk", "//pkg/util/encrypt", "//pkg/util/hack", + "//pkg/util/intest", "//pkg/util/logutil", "//pkg/util/memory", "//pkg/util/syncutil", diff --git a/pkg/util/chunk/chunk.go b/pkg/util/chunk/chunk.go index 7f46b8a4f8df2..57a5675c1b2e6 100644 --- a/pkg/util/chunk/chunk.go +++ b/pkg/util/chunk/chunk.go @@ -236,10 +236,12 @@ func (c *Chunk) MakeRefTo(dstColIdx int, src *Chunk, srcColIdx int) error { return nil } -// SwapColumn swaps Column "c.columns[colIdx]" with Column +// swapColumn swaps Column "c.columns[colIdx]" with Column // "other.columns[otherIdx]". If there exists columns refer to the Column to be // swapped, we need to re-build the reference. -func (c *Chunk) SwapColumn(colIdx int, other *Chunk, otherIdx int) error { +// this function should not be used directly, if you wants to swap columns between two chunks, +// use ColumnSwapHelper.SwapColumns instead. +func (c *Chunk) swapColumn(colIdx int, other *Chunk, otherIdx int) error { if c.sel != nil || other.sel != nil { return errors.New(msgErrSelNotNil) } @@ -469,12 +471,12 @@ func AppendCellFromRawData(dst *Column, rowData unsafe.Pointer, currentOffset in dst.data = append(dst.data, hack.GetBytesFromPtr(unsafe.Add(rowData, currentOffset), elemLen)...) currentOffset += elemLen } else { - elemLen := *(*uint64)(unsafe.Add(rowData, currentOffset)) + elemLen := *(*uint32)(unsafe.Add(rowData, currentOffset)) if elemLen > 0 { - dst.data = append(dst.data, hack.GetBytesFromPtr(unsafe.Add(rowData, currentOffset+8), int(elemLen))...) + dst.data = append(dst.data, hack.GetBytesFromPtr(unsafe.Add(rowData, currentOffset+sizeUint32), int(elemLen))...) } dst.offsets = append(dst.offsets, int64(len(dst.data))) - currentOffset += int(elemLen + 8) + currentOffset += int(elemLen + uint32(sizeUint32)) } dst.length++ return currentOffset diff --git a/pkg/util/chunk/chunk_in_disk.go b/pkg/util/chunk/chunk_in_disk.go index 268f1e1eca25f..1e49e36d1bfd4 100644 --- a/pkg/util/chunk/chunk_in_disk.go +++ b/pkg/util/chunk/chunk_in_disk.go @@ -128,10 +128,9 @@ func (d *DataInDiskByChunks) getChunkSize(chkIdx int) int64 { return d.offsetOfEachChunk[chkIdx+1] - d.offsetOfEachChunk[chkIdx] } -// GetChunk gets a Chunk from the DataInDiskByChunks by chkIdx. -func (d *DataInDiskByChunks) GetChunk(chkIdx int) (*Chunk, error) { +func (d *DataInDiskByChunks) readFromFisk(chkIdx int) error { if err := injectChunkInDiskRandomError(); err != nil { - return nil, err + return err } reader := d.dataFile.getSectionReader(d.offsetOfEachChunk[chkIdx]) @@ -145,19 +144,39 @@ func (d *DataInDiskByChunks) GetChunk(chkIdx int) (*Chunk, error) { readByteNum, err := io.ReadFull(reader, d.buf) if err != nil { - return nil, err + return err } if int64(readByteNum) != chkSize { - return nil, errors2.New("Fail to restore the spilled chunk") + return errors2.New("Fail to restore the spilled chunk") + } + + return nil +} + +// GetChunk gets a Chunk from the DataInDiskByChunks by chkIdx. +func (d *DataInDiskByChunks) GetChunk(chkIdx int) (*Chunk, error) { + err := d.readFromFisk(chkIdx) + if err != nil { + return nil, err } chk := NewEmptyChunk(d.fieldTypes) d.deserializeDataToChunk(chk) - return chk, nil } +// FillChunk fills a Chunk from the DataInDiskByChunks by chkIdx. +func (d *DataInDiskByChunks) FillChunk(srcChkIdx int, destChk *Chunk) error { + err := d.readFromFisk(srcChkIdx) + if err != nil { + return err + } + + d.deserializeDataToChunk(destChk) + return nil +} + // Close releases the disk resource. func (d *DataInDiskByChunks) Close() { if d.dataFile.file != nil { @@ -264,7 +283,11 @@ func (d *DataInDiskByChunks) deserializeColMeta(pos *int64) (length int64, nullM func (d *DataInDiskByChunks) deserializeSel(chk *Chunk, pos *int64, selSize int) { selLen := int64(selSize) / intLen - chk.sel = make([]int, selLen) + if int64(cap(chk.sel)) < selLen { + chk.sel = make([]int, selLen) + } else { + chk.sel = chk.sel[:selLen] + } for i := range selLen { chk.sel[i] = *(*int)(unsafe.Pointer(&d.buf[*pos])) *pos += intLen @@ -299,9 +322,25 @@ func (d *DataInDiskByChunks) deserializeOffsets(dst []int64, pos *int64) { func (d *DataInDiskByChunks) deserializeColumns(chk *Chunk, pos *int64) { for _, col := range chk.columns { length, nullMapSize, dataSize, offsetSize := d.deserializeColMeta(pos) - col.nullBitmap = make([]byte, nullMapSize) - col.data = make([]byte, dataSize) - col.offsets = make([]int64, offsetSize/int64Len) + + if int64(cap(col.nullBitmap)) < nullMapSize { + col.nullBitmap = make([]byte, nullMapSize) + } else { + col.nullBitmap = col.nullBitmap[:nullMapSize] + } + + if int64(cap(col.data)) < dataSize { + col.data = make([]byte, dataSize) + } else { + col.data = col.data[:dataSize] + } + + offsetsLen := offsetSize / int64Len + if int64(cap(col.offsets)) < offsetsLen { + col.offsets = make([]int64, offsetsLen) + } else { + col.offsets = col.offsets[:offsetsLen] + } col.length = int(length) copy(col.nullBitmap, d.buf[*pos:*pos+nullMapSize]) diff --git a/pkg/util/chunk/chunk_in_disk_test.go b/pkg/util/chunk/chunk_in_disk_test.go index 46dd5745c9ee8..c780c96bedd1a 100644 --- a/pkg/util/chunk/chunk_in_disk_test.go +++ b/pkg/util/chunk/chunk_in_disk_test.go @@ -66,7 +66,7 @@ func checkChunk(t *testing.T, chk1, chk2 *Chunk) { } } -func TestDataInDiskByChunks(t *testing.T) { +func testImpl(t *testing.T, isNewChunk bool) { numChk, numRow := 100, 1000 chks, fields := initChunks(numChk, numRow) addAuxDataForChunks(chks) @@ -78,9 +78,29 @@ func TestDataInDiskByChunks(t *testing.T) { require.NoError(t, err) } + chk := NewEmptyChunk(fields) + var err error for i := range numChk { - chk, err := dataInDiskByChunks.GetChunk(i) + if isNewChunk { + chk, err = dataInDiskByChunks.GetChunk(i) + } else { + chk.Reset() + err = dataInDiskByChunks.FillChunk(i, chk) + } require.NoError(t, err) checkChunk(t, chk, chks[i]) } } + +func testGetChunk(t *testing.T) { + testImpl(t, true) +} + +func testFillChunk(t *testing.T) { + testImpl(t, false) +} + +func TestDataInDiskByChunks(t *testing.T) { + testGetChunk(t) + testFillChunk(t) +} diff --git a/pkg/util/chunk/chunk_test.go b/pkg/util/chunk/chunk_test.go index fe3110a5ea12c..faf4cfbd7b201 100644 --- a/pkg/util/chunk/chunk_test.go +++ b/pkg/util/chunk/chunk_test.go @@ -640,25 +640,25 @@ func TestSwapColumn(t *testing.T) { checkRef() // swap two chunk's columns - require.NoError(t, chk1.SwapColumn(0, chk2, 0)) + require.NoError(t, chk1.swapColumn(0, chk2, 0)) checkRef() - require.NoError(t, chk1.SwapColumn(0, chk2, 0)) + require.NoError(t, chk1.swapColumn(0, chk2, 0)) checkRef() // swap reference and referenced columns - require.NoError(t, chk2.SwapColumn(1, chk2, 0)) + require.NoError(t, chk2.swapColumn(1, chk2, 0)) checkRef() // swap the same column in the same chunk - require.NoError(t, chk2.SwapColumn(1, chk2, 1)) + require.NoError(t, chk2.swapColumn(1, chk2, 1)) checkRef() // swap reference and another column - require.NoError(t, chk2.SwapColumn(1, chk2, 2)) + require.NoError(t, chk2.swapColumn(1, chk2, 2)) checkRef() - require.NoError(t, chk2.SwapColumn(2, chk2, 0)) + require.NoError(t, chk2.swapColumn(2, chk2, 0)) checkRef() } diff --git a/pkg/util/chunk/chunk_util.go b/pkg/util/chunk/chunk_util.go index 124a2c87c4076..59c9569ac1f25 100644 --- a/pkg/util/chunk/chunk_util.go +++ b/pkg/util/chunk/chunk_util.go @@ -17,11 +17,14 @@ package chunk import ( "io" "os" + "sync/atomic" "github.com/pingcap/errors" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/util/checksum" + "github.com/pingcap/tidb/pkg/util/disjointset" "github.com/pingcap/tidb/pkg/util/encrypt" + "github.com/pingcap/tidb/pkg/util/intest" ) // CopySelectedJoinRowsDirect directly copies the selected joined rows from the source Chunk @@ -109,7 +112,7 @@ func CopySelectedRows(dstCol *Column, srcCol *Column, selected []bool) { func CopySelectedRowsWithRowIDFunc(dstCol *Column, srcCol *Column, selected []bool, start int, end int, rowIDFunc func(int) int) { if srcCol.isFixed() { for i := start; i < end; i++ { - if !selected[i] { + if selected != nil && !selected[i] { continue } rowID := rowIDFunc(i) @@ -122,7 +125,7 @@ func CopySelectedRowsWithRowIDFunc(dstCol *Column, srcCol *Column, selected []bo } } else { for i := start; i < end; i++ { - if !selected[i] { + if selected != nil && !selected[i] { continue } rowID := rowIDFunc(i) @@ -136,6 +139,33 @@ func CopySelectedRowsWithRowIDFunc(dstCol *Column, srcCol *Column, selected []bo } } +// CopyRows copies all rows in srcCol to dstCol +func CopyRows(dstCol *Column, srcCol *Column, selected []int) { + selectedLen := len(selected) + + if srcCol.isFixed() { + for i := range selectedLen { + rowID := selected[i] + dstCol.appendNullBitmap(!srcCol.IsNull(rowID)) + dstCol.length++ + + elemLen := len(srcCol.elemBuf) + offset := rowID * elemLen + dstCol.data = append(dstCol.data, srcCol.data[offset:offset+elemLen]...) + } + } else { + for i := range selectedLen { + rowID := selected[i] + dstCol.appendNullBitmap(!srcCol.IsNull(rowID)) + dstCol.length++ + + start, end := srcCol.offsets[rowID], srcCol.offsets[rowID+1] + dstCol.data = append(dstCol.data, srcCol.data[start:end]...) + dstCol.offsets = append(dstCol.offsets, int64(len(dstCol.data))) + } + } +} + // copySelectedInnerRows copies the selected inner rows from the source Chunk // to the destination Chunk. // return the number of rows which is selected. @@ -251,3 +281,125 @@ func (l *diskFileReaderWriter) write(writeData []byte) (n int, err error) { l.offWrite += int64(writeNum) return writeNum, err } + +// ColumnSwapHelper is used to help swap columns in a chunk. +type ColumnSwapHelper struct { + // InputIdxToOutputIdxes maps the input column index to the output column indexes. + InputIdxToOutputIdxes map[int][]int + // mergedInputIdxToOutputIdxes is only determined in runtime when saw the input chunk. + mergedInputIdxToOutputIdxes atomic.Pointer[map[int][]int] +} + +// SwapColumns evaluates "Column" expressions. +// it will change the content of the input Chunk. +func (helper *ColumnSwapHelper) SwapColumns(input, output *Chunk) error { + // mergedInputIdxToOutputIdxes only can be determined in runtime when we saw the input chunk structure. + if helper.mergedInputIdxToOutputIdxes.Load() == nil { + helper.mergeInputIdxToOutputIdxes(input, helper.InputIdxToOutputIdxes) + } + for inputIdx, outputIdxes := range *helper.mergedInputIdxToOutputIdxes.Load() { + if err := output.swapColumn(outputIdxes[0], input, inputIdx); err != nil { + return err + } + for i, length := 1, len(outputIdxes); i < length; i++ { + output.MakeRef(outputIdxes[0], outputIdxes[i]) + } + } + return nil +} + +// mergeInputIdxToOutputIdxes merges separate inputIdxToOutputIdxes entries when column references +// are detected within the input chunk. This process ensures consistent handling of columns derived +// from the same original source. +// +// Consider the following scenario: +// +// Initial scan operation produces a column 'a': +// +// scan: a (addr: ???) +// +// This column 'a' is used in the first projection (proj1) to create two columns a1 and a2, both referencing 'a': +// +// proj1 +// / \ +// / \ +// / \ +// a1 (addr: 0xe) a2 (addr: 0xe) +// / \ +// / \ +// / \ +// proj2 proj2 +// / \ / \ +// / \ / \ +// a3 a4 a5 a6 +// +// (addr: 0xe) (addr: 0xe) (addr: 0xe) (addr: 0xe) +// +// Here, a1 and a2 share the same address (0xe), indicating they reference the same data from the original 'a'. +// +// When moving to the second projection (proj2), the system tries to project these columns further: +// - The first set (left side) consists of a3 and a4, derived from a1, both retaining the address (0xe). +// - The second set (right side) consists of a5 and a6, derived from a2, also starting with address (0xe). +// +// When proj1 is complete, the output chunk contains two columns [a1, a2], both derived from the single column 'a' from the scan. +// Since both a1 and a2 are column references with the same address (0xe), they are treated as referencing the same data. +// +// In proj2, two separate items are created: +// - <0, [0,1]>: This means the 0th input column (a1) is projected twice, into the 0th and 1st columns of the output chunk. +// - <1, [2,3]>: This means the 1st input column (a2) is projected twice, into the 2nd and 3rd columns of the output chunk. +// +// Due to the column swapping logic in each projection, after applying the <0, [0,1]> projection, +// the addresses for a1 and a2 may become swapped or invalid: +// +// proj1: a1 (addr: invalid) a2 (addr: invalid) +// +// This can lead to issues in proj2, where further operations on these columns may be unsafe: +// +// proj2: a3 (addr: 0xe) a4 (addr: 0xe) a5 (addr: ???) a6 (addr: ???) +// +// Therefore, it's crucial to identify and merge the original column references early, ensuring +// the final inputIdxToOutputIdxes mapping accurately reflects the shared origins of the data. +// For instance, <0, [0,1,2,3]> indicates that the 0th input column (original 'a') is referenced +// by all four output columns in the final output. +// +// mergeInputIdxToOutputIdxes merges inputIdxToOutputIdxes based on detected column references. +// This ensures that columns with the same reference are correctly handled in the output chunk. +func (helper *ColumnSwapHelper) mergeInputIdxToOutputIdxes(input *Chunk, inputIdxToOutputIdxes map[int][]int) { + originalDJSet := disjointset.NewSet[int](4) + flag := make([]bool, input.NumCols()) + // Detect self column-references inside the input chunk by comparing column addresses + for i := range input.NumCols() { + if flag[i] { + continue + } + for j := i + 1; j < input.NumCols(); j++ { + if input.Column(i) == input.Column(j) { + flag[j] = true + originalDJSet.Union(i, j) + } + } + } + // Merge inputIdxToOutputIdxes based on the detected column references. + newInputIdxToOutputIdxes := make(map[int][]int, len(inputIdxToOutputIdxes)) + for inputIdx := range inputIdxToOutputIdxes { + // Root idx is internal offset, not the right column index. + originalRootIdx := originalDJSet.FindRoot(inputIdx) + originalVal, ok := originalDJSet.FindVal(originalRootIdx) + intest.Assert(ok) + mergedOutputIdxes := newInputIdxToOutputIdxes[originalVal] + mergedOutputIdxes = append(mergedOutputIdxes, inputIdxToOutputIdxes[inputIdx]...) + newInputIdxToOutputIdxes[originalVal] = mergedOutputIdxes + } + // Update the merged inputIdxToOutputIdxes automatically. + // Once failed, it means other worker has done this job at meantime. + helper.mergedInputIdxToOutputIdxes.CompareAndSwap(nil, &newInputIdxToOutputIdxes) +} + +// NewColumnSwapHelper creates a new ColumnSwapHelper. +func NewColumnSwapHelper(usedColumnIndex []int) *ColumnSwapHelper { + helper := &ColumnSwapHelper{InputIdxToOutputIdxes: make(map[int][]int)} + for outputIndex, inputIndex := range usedColumnIndex { + helper.InputIdxToOutputIdxes[inputIndex] = append(helper.InputIdxToOutputIdxes[inputIndex], outputIndex) + } + return helper +} diff --git a/pkg/util/chunk/chunk_util_test.go b/pkg/util/chunk/chunk_util_test.go index 58a9e1594d237..66dc6e3339a71 100644 --- a/pkg/util/chunk/chunk_util_test.go +++ b/pkg/util/chunk/chunk_util_test.go @@ -17,8 +17,10 @@ package chunk import ( "math/rand" "reflect" + "slices" "testing" + "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/types" "github.com/stretchr/testify/require" ) @@ -219,3 +221,41 @@ func BenchmarkAppendSelectedRow(b *testing.B) { } } } + +func TestMergeInputIdxToOutputIdxes(t *testing.T) { + inputIdxToOutputIdxes := make(map[int][]int) + // input 0th should be column referred as 0th and 1st in output columns. + inputIdxToOutputIdxes[0] = []int{0, 1} + // input 1th should be column referred as 2nd and 3rd in output columns. + inputIdxToOutputIdxes[1] = []int{2, 3} + columnEval := ColumnSwapHelper{InputIdxToOutputIdxes: inputIdxToOutputIdxes} + + input := NewEmptyChunk([]*types.FieldType{types.NewFieldType(mysql.TypeLonglong), types.NewFieldType(mysql.TypeLonglong)}) + input.AppendInt64(0, 99) + // input chunk's 0th and 1st are column referred itself. + input.MakeRef(0, 1) + + // chunk: col1 <---(ref) col2 + // ____________/ \___________/ \___ + // proj: col1 col2 col3 col4 + // + // original case after inputIdxToOutputIdxes[0], the original col2 will be nil pointer + // cause consecutive col3,col4 ref projection are invalid. + // + // after fix, the new inputIdxToOutputIdxes should be: inputIdxToOutputIdxes[0]: {0, 1, 2, 3} + + output := NewEmptyChunk([]*types.FieldType{types.NewFieldType(mysql.TypeLonglong), types.NewFieldType(mysql.TypeLonglong), + types.NewFieldType(mysql.TypeLonglong), types.NewFieldType(mysql.TypeLonglong)}) + + err := columnEval.SwapColumns(input, output) + require.NoError(t, err) + // all four columns are column-referred, pointing to the first one. + require.Equal(t, output.Column(0), output.Column(1)) + require.Equal(t, output.Column(1), output.Column(2)) + require.Equal(t, output.Column(2), output.Column(3)) + require.Equal(t, output.GetRow(0).GetInt64(0), int64(99)) + + require.Equal(t, len(*columnEval.mergedInputIdxToOutputIdxes.Load()), 1) + slices.Sort((*columnEval.mergedInputIdxToOutputIdxes.Load())[0]) + require.Equal(t, (*columnEval.mergedInputIdxToOutputIdxes.Load())[0], []int{0, 1, 2, 3}) +} diff --git a/pkg/util/chunk/column.go b/pkg/util/chunk/column.go index 9732dca081170..fa2701426606b 100644 --- a/pkg/util/chunk/column.go +++ b/pkg/util/chunk/column.go @@ -16,6 +16,7 @@ package chunk import ( "fmt" + "math" "math/bits" "math/rand" "reflect" @@ -383,6 +384,7 @@ func (c *Column) AppendEnum(enum types.Enum) { const ( sizeInt64 = int(unsafe.Sizeof(int64(0))) sizeUint64 = int(unsafe.Sizeof(uint64(0))) + sizeUint32 = int(unsafe.Sizeof(uint32(0))) sizeFloat32 = int(unsafe.Sizeof(float32(0))) sizeFloat64 = int(unsafe.Sizeof(float64(0))) sizeMyDecimal = int(unsafe.Sizeof(types.MyDecimal{})) @@ -871,3 +873,22 @@ func (c *Column) DestroyDataForTest() { c.data[i] = byte(rand.Intn(256)) } } + +// ContainsVeryLargeElement checks if the column contains element whose length is greater than math.MaxUint32. +func (c *Column) ContainsVeryLargeElement() bool { + if c.length == 0 { + return false + } + if c.isFixed() { + return false + } + if c.offsets[c.length] <= math.MaxUint32 { + return false + } + for i := range c.length { + if c.offsets[i+1]-c.offsets[i] > math.MaxUint32 { + return true + } + } + return false +} diff --git a/pkg/util/codec/codec.go b/pkg/util/codec/codec.go index 8901818bd6acc..5f12c8c05bd8d 100644 --- a/pkg/util/codec/codec.go +++ b/pkg/util/codec/codec.go @@ -486,9 +486,9 @@ func SerializeKeys(typeCtx types.Context, chk *chunk.Chunk, tp *types.FieldType, continue } data := ConvertByCollation(column.GetBytes(physicalRowIndex), tp) - size := uint64(len(data)) + size := uint32(len(data)) if serializeMode == KeepVarColumnLength { - serializedKeysVector[logicalRowIndex] = append(serializedKeysVector[logicalRowIndex], unsafe.Slice((*byte)(unsafe.Pointer(&size)), sizeUint64)...) + serializedKeysVector[logicalRowIndex] = append(serializedKeysVector[logicalRowIndex], unsafe.Slice((*byte)(unsafe.Pointer(&size)), sizeUint32)...) } serializedKeysVector[logicalRowIndex] = append(serializedKeysVector[logicalRowIndex], data...) } @@ -596,8 +596,8 @@ func SerializeKeys(typeCtx types.Context, chk *chunk.Chunk, tp *types.FieldType, jsonHashBuffer = jsonHashBuffer[:0] jsonHashBuffer = column.GetJSON(physicalRowindex).HashValue(jsonHashBuffer) if serializeMode == KeepVarColumnLength { - size := uint64(len(jsonHashBuffer)) - serializedKeysVector[logicalRowIndex] = append(serializedKeysVector[logicalRowIndex], unsafe.Slice((*byte)(unsafe.Pointer(&size)), sizeUint64)...) + size := uint32(len(jsonHashBuffer)) + serializedKeysVector[logicalRowIndex] = append(serializedKeysVector[logicalRowIndex], unsafe.Slice((*byte)(unsafe.Pointer(&size)), sizeUint32)...) } serializedKeysVector[logicalRowIndex] = append(serializedKeysVector[logicalRowIndex], jsonHashBuffer...) } diff --git a/pkg/util/codec/codec_test.go b/pkg/util/codec/codec_test.go index 6abc1c382c16f..e23ba29f151b6 100644 --- a/pkg/util/codec/codec_test.go +++ b/pkg/util/codec/codec_test.go @@ -1297,23 +1297,26 @@ func TestHashChunkColumns(t *testing.T) { func TestDatumHashEquals(t *testing.T) { now := time.Now() + newDatumPtr := func(d types.Datum) *types.Datum { + return &d + } tests := []struct { - d1 types.Datum - d2 types.Datum + d1 *types.Datum + d2 *types.Datum }{ - {types.NewIntDatum(1), types.NewIntDatum(1)}, - {types.NewUintDatum(1), types.NewUintDatum(1)}, - {types.NewFloat64Datum(1.1), types.NewFloat64Datum(1.1)}, - {types.NewStringDatum("abc"), types.NewStringDatum("abc")}, - {types.NewBytesDatum([]byte("abc")), types.NewBytesDatum([]byte("abc"))}, - {types.NewMysqlEnumDatum(types.Enum{Name: "a", Value: 1}), types.NewMysqlEnumDatum(types.Enum{Name: "a", Value: 1})}, - {types.NewMysqlSetDatum(types.Set{Name: "a", Value: 1}, "a"), types.NewMysqlSetDatum(types.Set{Name: "a", Value: 1}, "a")}, - {types.NewBinaryLiteralDatum([]byte{0x01}), types.NewBinaryLiteralDatum([]byte{0x01})}, - {types.NewMysqlBitDatum(types.NewBinaryLiteralFromUint(1, -1)), types.NewMysqlBitDatum(types.NewBinaryLiteralFromUint(1, -1))}, - {types.NewTimeDatum(types.NewTime(types.FromGoTime(now), mysql.TypeDatetime, 6)), types.NewTimeDatum(types.NewTime(types.FromGoTime(now), mysql.TypeDatetime, 6))}, - {types.NewDurationDatum(types.Duration{Duration: time.Second}), types.NewDurationDatum(types.Duration{Duration: time.Second})}, - {types.NewJSONDatum(types.CreateBinaryJSON("a")), types.NewJSONDatum(types.CreateBinaryJSON("a"))}, - {types.NewTimeDatum(types.NewTime(types.FromGoTime(now), mysql.TypeDatetime, 6)), types.NewTimeDatum(types.NewTime(types.FromGoTime(time.Now()), mysql.TypeDatetime, 6))}, + {newDatumPtr(types.NewIntDatum(1)), newDatumPtr(types.NewIntDatum(1))}, + {newDatumPtr(types.NewUintDatum(1)), newDatumPtr(types.NewUintDatum(1))}, + {newDatumPtr(types.NewFloat64Datum(1.1)), newDatumPtr(types.NewFloat64Datum(1.1))}, + {newDatumPtr(types.NewStringDatum("abc")), newDatumPtr(types.NewStringDatum("abc"))}, + {newDatumPtr(types.NewBytesDatum([]byte("abc"))), newDatumPtr(types.NewBytesDatum([]byte("abc")))}, + {newDatumPtr(types.NewMysqlEnumDatum(types.Enum{Name: "a", Value: 1})), newDatumPtr(types.NewMysqlEnumDatum(types.Enum{Name: "a", Value: 1}))}, + {newDatumPtr(types.NewMysqlSetDatum(types.Set{Name: "a", Value: 1}, "a")), newDatumPtr(types.NewMysqlSetDatum(types.Set{Name: "a", Value: 1}, "a"))}, + {newDatumPtr(types.NewBinaryLiteralDatum([]byte{0x01})), newDatumPtr(types.NewBinaryLiteralDatum([]byte{0x01}))}, + {newDatumPtr(types.NewMysqlBitDatum(types.NewBinaryLiteralFromUint(1, -1))), newDatumPtr(types.NewMysqlBitDatum(types.NewBinaryLiteralFromUint(1, -1)))}, + {newDatumPtr(types.NewTimeDatum(types.NewTime(types.FromGoTime(now), mysql.TypeDatetime, 6))), newDatumPtr(types.NewTimeDatum(types.NewTime(types.FromGoTime(now), mysql.TypeDatetime, 6)))}, + {newDatumPtr(types.NewDurationDatum(types.Duration{Duration: time.Second})), newDatumPtr(types.NewDurationDatum(types.Duration{Duration: time.Second}))}, + {newDatumPtr(types.NewJSONDatum(types.CreateBinaryJSON("a"))), newDatumPtr(types.NewJSONDatum(types.CreateBinaryJSON("a")))}, + {newDatumPtr(types.NewTimeDatum(types.NewTime(types.FromGoTime(now), mysql.TypeDatetime, 6))), newDatumPtr(types.NewTimeDatum(types.NewTime(types.FromGoTime(time.Now()), mysql.TypeDatetime, 6)))}, } hasher1 := base.NewHashEqualer() hasher2 := base.NewHashEqualer() diff --git a/pkg/util/dbterror/ddl_terror.go b/pkg/util/dbterror/ddl_terror.go index 11dd9caf781ec..62cac767d37c8 100644 --- a/pkg/util/dbterror/ddl_terror.go +++ b/pkg/util/dbterror/ddl_terror.go @@ -229,6 +229,8 @@ var ( ErrErrorOnRename = ClassDDL.NewStd(mysql.ErrErrorOnRename) // ErrViewSelectClause returns error for create view with select into clause ErrViewSelectClause = ClassDDL.NewStd(mysql.ErrViewSelectClause) + // ErrViewSelectVariable returns error for create view with select into clause + ErrViewSelectVariable = ClassDDL.NewStd(mysql.ErrViewSelectVariable) // ErrNotAllowedTypeInPartition returns not allowed type error when creating table partition with unsupported expression type. ErrNotAllowedTypeInPartition = ClassDDL.NewStd(mysql.ErrFieldTypeNotAllowedAsPartitionField) diff --git a/pkg/util/etcd.go b/pkg/util/etcd.go index dd8597c1e7f59..060947744d562 100644 --- a/pkg/util/etcd.go +++ b/pkg/util/etcd.go @@ -16,6 +16,7 @@ package util import ( "context" + "fmt" "math" "time" @@ -101,3 +102,9 @@ func contextDone(ctx context.Context, err error) error { return nil } + +// FormatLeaseID formats lease id to hex string as what etcdctl does. +// see https://github.com/etcd-io/etcd/blob/995027f5c1363404e86f7a858ea2833df01f0954/etcdctl/ctlv3/command/printer_simple.go#L118 +func FormatLeaseID(id clientv3.LeaseID) string { + return fmt.Sprintf("%016x", id) +} diff --git a/pkg/util/execdetails/execdetails.go b/pkg/util/execdetails/execdetails.go index c00c450485d26..ef1d1734c8cd5 100644 --- a/pkg/util/execdetails/execdetails.go +++ b/pkg/util/execdetails/execdetails.go @@ -464,16 +464,19 @@ func (s *SyncExecDetails) GetExecDetails() ExecDetails { } // CopTasksDetails returns some useful information of cop-tasks during execution. -func (s *SyncExecDetails) CopTasksDetails() CopTasksDetails { +func (s *SyncExecDetails) CopTasksDetails() *CopTasksDetails { s.mu.Lock() defer s.mu.Unlock() n := s.detailsSummary.NumCopTasks - d := CopTasksDetails{NumCopTasks: n} if n == 0 { - return d + return nil } - d.AvgProcessTime = s.execDetails.TimeDetail.ProcessTime / time.Duration(n) - d.AvgWaitTime = s.execDetails.TimeDetail.WaitTime / time.Duration(n) + d := &CopTasksDetails{NumCopTasks: n} + d.TotProcessTime = s.execDetails.TimeDetail.ProcessTime + d.AvgProcessTime = d.TotProcessTime / time.Duration(n) + + d.TotWaitTime = s.execDetails.TimeDetail.WaitTime + d.AvgWaitTime = d.TotWaitTime / time.Duration(n) d.P90ProcessTime = time.Duration((s.detailsSummary.ProcessTimePercentile.GetPercentile(0.9))) d.MaxProcessTime = s.detailsSummary.ProcessTimePercentile.GetMax().D @@ -515,11 +518,13 @@ type CopTasksDetails struct { P90ProcessTime time.Duration MaxProcessAddress string MaxProcessTime time.Duration + TotProcessTime time.Duration AvgWaitTime time.Duration P90WaitTime time.Duration MaxWaitAddress string MaxWaitTime time.Duration + TotWaitTime time.Duration MaxBackoffTime map[string]time.Duration MaxBackoffAddress map[string]string @@ -531,7 +536,7 @@ type CopTasksDetails struct { // ToZapFields wraps the CopTasksDetails as zap.Fileds. func (d *CopTasksDetails) ToZapFields() (fields []zap.Field) { - if d.NumCopTasks == 0 { + if d == nil || d.NumCopTasks == 0 { return } fields = make([]zap.Field, 0, 10) @@ -555,6 +560,7 @@ type basicCopRuntimeStats struct { procTimes Percentile[Duration] // executor extra infos tiflashScanContext TiFlashScanContext + tiflashWaitSummary TiFlashWaitSummary } type canGetFloat64 interface { @@ -682,7 +688,10 @@ func (p *Percentile[valueType]) Sum() float64 { // String implements the RuntimeStats interface. func (e *basicCopRuntimeStats) String() string { if e.storeType == "tiflash" { - return fmt.Sprintf("time:%v, loops:%d, threads:%d, ", FormatDuration(time.Duration(e.consume.Load())), e.loop.Load(), e.threads) + e.tiflashScanContext.String() + if e.tiflashWaitSummary.CanBeIgnored() { + return fmt.Sprintf("time:%v, loops:%d, threads:%d, %s", FormatDuration(time.Duration(e.consume.Load())), e.loop.Load(), e.threads, e.tiflashScanContext.String()) + } + return fmt.Sprintf("time:%v, loops:%d, threads:%d, %s, %s", FormatDuration(time.Duration(e.consume.Load())), e.loop.Load(), e.threads, e.tiflashWaitSummary.String(), e.tiflashScanContext.String()) } return fmt.Sprintf("time:%v, loops:%d", FormatDuration(time.Duration(e.consume.Load())), e.loop.Load()) } @@ -700,6 +709,7 @@ func (e *basicCopRuntimeStats) Clone() RuntimeStats { stats.consume.Store(e.consume.Load()) stats.rows.Store(e.rows.Load()) stats.tiflashScanContext = e.tiflashScanContext.Clone() + stats.tiflashWaitSummary = e.tiflashWaitSummary.Clone() return stats } @@ -720,6 +730,7 @@ func (e *basicCopRuntimeStats) Merge(rs RuntimeStats) { e.procTimes.MergePercentile(&tmp.procTimes) } e.tiflashScanContext.Merge(tmp.tiflashScanContext) + e.tiflashWaitSummary.Merge(tmp.tiflashWaitSummary) } // Tp implements the RuntimeStats interface. @@ -799,7 +810,14 @@ func (crs *CopRuntimeStats) RecordOneCopTask(address string, summary *tipb.Execu totalVectorIdxReadVecTimeMs: summary.GetTiflashScanContext().GetTotalVectorIdxReadVecTimeMs(), totalVectorIdxReadOthersTimeMs: summary.GetTiflashScanContext().GetTotalVectorIdxReadOthersTimeMs(), }, + tiflashWaitSummary: TiFlashWaitSummary{ + executionTime: *summary.TimeProcessedNs, + minTSOWaitTime: summary.GetTiflashWaitSummary().GetMinTSOWaitNs(), + pipelineBreakerWaitTime: summary.GetTiflashWaitSummary().GetPipelineBreakerWaitNs(), + pipelineQueueWaitTime: summary.GetTiflashWaitSummary().GetPipelineQueueWaitNs(), + }, } + for _, instance := range summary.GetTiflashScanContext().GetRegionsOfInstance() { data.tiflashScanContext.regionsOfInstance[instance.GetInstanceId()] = instance.GetRegionNum() } @@ -826,7 +844,7 @@ func (crs *CopRuntimeStats) GetTasks() (totalTasks int32) { } // MergeBasicStats traverses basicCopRuntimeStats in the CopRuntimeStats and collects some useful information. -func (crs *CopRuntimeStats) MergeBasicStats() (procTimes Percentile[Duration], totalTime time.Duration, totalTasks, totalLoops, totalThreads int32, totalTiFlashScanContext TiFlashScanContext) { +func (crs *CopRuntimeStats) MergeBasicStats() (procTimes Percentile[Duration], totalTime time.Duration, totalTasks, totalLoops, totalThreads int32, totalTiFlashScanContext TiFlashScanContext, totalTiFlashWaitSummary TiFlashWaitSummary) { totalTiFlashScanContext = TiFlashScanContext{ regionsOfInstance: make(map[string]uint64), } @@ -836,6 +854,7 @@ func (crs *CopRuntimeStats) MergeBasicStats() (procTimes Percentile[Duration], t totalLoops += instanceStats.loop.Load() totalThreads += instanceStats.threads totalTiFlashScanContext.Merge(instanceStats.tiflashScanContext) + totalTiFlashWaitSummary.Merge(instanceStats.tiflashWaitSummary) totalTasks += instanceStats.totalTasks } return @@ -846,15 +865,18 @@ func (crs *CopRuntimeStats) String() string { return "" } - procTimes, totalTime, totalTasks, totalLoops, totalThreads, totalTiFlashScanContext := crs.MergeBasicStats() + procTimes, totalTime, totalTasks, totalLoops, totalThreads, totalTiFlashScanContext, totalTiFlashWaitSummary := crs.MergeBasicStats() avgTime := time.Duration(totalTime.Nanoseconds() / int64(totalTasks)) isTiFlashCop := crs.storeType == "tiflash" buf := bytes.NewBuffer(make([]byte, 0, 16)) { - printTiFlashScanContext := func() { + printTiFlashSpecificInfo := func() { if isTiFlashCop { fmt.Fprintf(buf, ", threads:%d}", totalThreads) + if !totalTiFlashWaitSummary.CanBeIgnored() { + buf.WriteString(", " + totalTiFlashWaitSummary.String()) + } if !totalTiFlashScanContext.Empty() { buf.WriteString(", " + totalTiFlashScanContext.String()) } @@ -864,12 +886,12 @@ func (crs *CopRuntimeStats) String() string { } if totalTasks == 1 { fmt.Fprintf(buf, "%v_task:{time:%v, loops:%d", crs.storeType, FormatDuration(time.Duration(procTimes.GetPercentile(0))), totalLoops) - printTiFlashScanContext() + printTiFlashSpecificInfo() } else { fmt.Fprintf(buf, "%v_task:{proc max:%v, min:%v, avg: %v, p80:%v, p95:%v, iters:%v, tasks:%v", crs.storeType, FormatDuration(time.Duration(procTimes.GetMax().GetFloat64())), FormatDuration(time.Duration(procTimes.GetMin().GetFloat64())), FormatDuration(avgTime), FormatDuration(time.Duration(procTimes.GetPercentile(0.8))), FormatDuration(time.Duration(procTimes.GetPercentile(0.95))), totalLoops, totalTasks) - printTiFlashScanContext() + printTiFlashSpecificInfo() } } if !isTiFlashCop { @@ -1211,12 +1233,91 @@ func (context *TiFlashScanContext) Empty() bool { return res } +// TiFlashWaitSummary is used to express all kinds of wait information in tiflash +type TiFlashWaitSummary struct { + // keep execution time to do merge work, always record the wait time with largest execution time + executionTime uint64 + minTSOWaitTime uint64 + pipelineBreakerWaitTime uint64 + pipelineQueueWaitTime uint64 +} + +// Clone implements the deep copy of * TiFlashWaitSummary +func (waitSummary *TiFlashWaitSummary) Clone() TiFlashWaitSummary { + newSummary := TiFlashWaitSummary{ + executionTime: waitSummary.executionTime, + minTSOWaitTime: waitSummary.minTSOWaitTime, + pipelineBreakerWaitTime: waitSummary.pipelineBreakerWaitTime, + pipelineQueueWaitTime: waitSummary.pipelineQueueWaitTime, + } + return newSummary +} + +// String dumps TiFlashWaitSummary info as string +func (waitSummary *TiFlashWaitSummary) String() string { + if waitSummary.CanBeIgnored() { + return "" + } + buf := bytes.NewBuffer(make([]byte, 0, 32)) + buf.WriteString("tiflash_wait: {") + empty := true + if waitSummary.minTSOWaitTime >= uint64(time.Millisecond) { + buf.WriteString("minTSO_wait: ") + buf.WriteString(strconv.FormatInt(time.Duration(waitSummary.minTSOWaitTime).Milliseconds(), 10)) + buf.WriteString("ms") + empty = false + } + if waitSummary.pipelineBreakerWaitTime >= uint64(time.Millisecond) { + if !empty { + buf.WriteString(", ") + } + buf.WriteString("pipeline_breaker_wait: ") + buf.WriteString(strconv.FormatInt(time.Duration(waitSummary.pipelineBreakerWaitTime).Milliseconds(), 10)) + buf.WriteString("ms") + empty = false + } + if waitSummary.pipelineQueueWaitTime >= uint64(time.Millisecond) { + if !empty { + buf.WriteString(", ") + } + buf.WriteString("pipeline_queue_wait: ") + buf.WriteString(strconv.FormatInt(time.Duration(waitSummary.pipelineQueueWaitTime).Milliseconds(), 10)) + buf.WriteString("ms") + } + buf.WriteString("}") + return buf.String() +} + +// Merge make sum to merge the information in TiFlashWaitSummary +func (waitSummary *TiFlashWaitSummary) Merge(other TiFlashWaitSummary) { + if waitSummary.executionTime < other.executionTime { + waitSummary.executionTime = other.executionTime + waitSummary.minTSOWaitTime = other.minTSOWaitTime + waitSummary.pipelineBreakerWaitTime = other.pipelineBreakerWaitTime + waitSummary.pipelineQueueWaitTime = other.pipelineQueueWaitTime + } +} + +// CanBeIgnored check whether TiFlashWaitSummary can be ignored, not all tidb executors have significant tiflash wait summary +func (waitSummary *TiFlashWaitSummary) CanBeIgnored() bool { + res := waitSummary.minTSOWaitTime < uint64(time.Millisecond) && + waitSummary.pipelineBreakerWaitTime < uint64(time.Millisecond) && + waitSummary.pipelineQueueWaitTime < uint64(time.Millisecond) + return res +} + // BasicRuntimeStats is the basic runtime stats. type BasicRuntimeStats struct { + // the count of executors with the same id + executorCount atomic.Int32 // executor's Next() called times. loop atomic.Int32 - // executor consume time. + // executor consume time, including open, next, and close time. consume atomic.Int64 + // executor open time. + open atomic.Int64 + // executor close time. + close atomic.Int64 // executor return row count. rows atomic.Int64 } @@ -1229,8 +1330,11 @@ func (e *BasicRuntimeStats) GetActRows() int64 { // Clone implements the RuntimeStats interface. func (e *BasicRuntimeStats) Clone() RuntimeStats { result := &BasicRuntimeStats{} + result.executorCount.Store(e.executorCount.Load()) result.loop.Store(e.loop.Load()) result.consume.Store(e.consume.Load()) + result.open.Store(e.open.Load()) + result.close.Store(e.close.Load()) result.rows.Store(e.rows.Load()) return result } @@ -1243,6 +1347,8 @@ func (e *BasicRuntimeStats) Merge(rs RuntimeStats) { } e.loop.Add(tmp.loop.Load()) e.consume.Add(tmp.consume.Load()) + e.open.Add(tmp.open.Load()) + e.close.Add(tmp.close.Load()) e.rows.Add(tmp.rows.Load()) } @@ -1298,6 +1404,18 @@ func (e *BasicRuntimeStats) Record(d time.Duration, rowNum int) { e.rows.Add(int64(rowNum)) } +// RecordOpen records executor's open time. +func (e *BasicRuntimeStats) RecordOpen(d time.Duration) { + e.consume.Add(int64(d)) + e.open.Add(int64(d)) +} + +// RecordClose records executor's close time. +func (e *BasicRuntimeStats) RecordClose(d time.Duration) { + e.consume.Add(int64(d)) + e.close.Add(int64(d)) +} + // SetRowNum sets the row num. func (e *BasicRuntimeStats) SetRowNum(rowNum int64) { e.rows.Store(rowNum) @@ -1309,8 +1427,19 @@ func (e *BasicRuntimeStats) String() string { return "" } var str strings.Builder - str.WriteString("time:") - str.WriteString(FormatDuration(time.Duration(e.consume.Load()))) + timePrefix := "" + if e.executorCount.Load() > 1 { + timePrefix = "total_" + } + totalTime := e.consume.Load() + openTime := e.open.Load() + closeTime := e.close.Load() + str.WriteString(fmt.Sprintf("%stime:", timePrefix)) + str.WriteString(FormatDuration(time.Duration(totalTime))) + str.WriteString(fmt.Sprintf(", %sopen:", timePrefix)) + str.WriteString(FormatDuration(time.Duration(openTime))) + str.WriteString(fmt.Sprintf(", %sclose:", timePrefix)) + str.WriteString(FormatDuration(time.Duration(closeTime))) str.WriteString(", loops:") str.WriteString(strconv.FormatInt(int64(e.loop.Load()), 10)) return str.String() @@ -1369,21 +1498,31 @@ func (e *RuntimeStatsColl) RegisterStats(planID int, info RuntimeStats) { } } if !found { - stats.groupRss = append(stats.groupRss, info.Clone()) + stats.groupRss = append(stats.groupRss, info) } } -// GetBasicRuntimeStats gets basicRuntimeStats for a executor. -func (e *RuntimeStatsColl) GetBasicRuntimeStats(planID int) *BasicRuntimeStats { +// GetBasicRuntimeStats gets basicRuntimeStats for a executor +// When rootStat/rootStat's basicRuntimeStats is nil, the behavior is decided by initNewExecutorStats argument: +// 1. If true, it created a new one, and increase basicRuntimeStats' executorCount +// 2. Else, it returns nil +func (e *RuntimeStatsColl) GetBasicRuntimeStats(planID int, initNewExecutorStats bool) *BasicRuntimeStats { e.mu.Lock() defer e.mu.Unlock() stats, ok := e.rootStats[planID] - if !ok { + if !ok && initNewExecutorStats { stats = NewRootRuntimeStats() e.rootStats[planID] = stats } - if stats.basic == nil { + if stats == nil { + return nil + } + + if stats.basic == nil && initNewExecutorStats { stats.basic = &BasicRuntimeStats{} + stats.basic.executorCount.Add(1) + } else if stats.basic != nil && initNewExecutorStats { + stats.basic.executorCount.Add(1) } return stats.basic } @@ -1400,6 +1539,17 @@ func (e *RuntimeStatsColl) GetRootStats(planID int) *RootRuntimeStats { return runtimeStats } +// GetPlanActRows returns the actual rows of the plan. +func (e *RuntimeStatsColl) GetPlanActRows(planID int) int64 { + e.mu.Lock() + defer e.mu.Unlock() + runtimeStats, exists := e.rootStats[planID] + if !exists { + return 0 + } + return runtimeStats.GetActRows() +} + // GetCopStats gets the CopRuntimeStats specified by planID. func (e *RuntimeStatsColl) GetCopStats(planID int) *CopRuntimeStats { e.mu.Lock() diff --git a/pkg/util/execdetails/execdetails_test.go b/pkg/util/execdetails/execdetails_test.go index 0c4974c1773f3..6128d085389f1 100644 --- a/pkg/util/execdetails/execdetails_test.go +++ b/pkg/util/execdetails/execdetails_test.go @@ -15,7 +15,6 @@ package execdetails import ( - "fmt" "strconv" "sync" "testing" @@ -176,10 +175,10 @@ func TestString(t *testing.T) { func mockExecutorExecutionSummary(TimeProcessedNs, NumProducedRows, NumIterations uint64) *tipb.ExecutorExecutionSummary { return &tipb.ExecutorExecutionSummary{TimeProcessedNs: &TimeProcessedNs, NumProducedRows: &NumProducedRows, - NumIterations: &NumIterations, XXX_unrecognized: nil} + NumIterations: &NumIterations} } -func mockExecutorExecutionSummaryForTiFlash(TimeProcessedNs, NumProducedRows, NumIterations, Concurrency, dmfileScannedRows, dmfileSkippedRows, totalDmfileRsCheckMs, totalDmfileReadTimeMs, totalBuildSnapshotMs, localRegions, remoteRegions, totalLearnerReadMs, disaggReadCacheHitBytes, disaggReadCacheMissBytes uint64, ExecutorID string) *tipb.ExecutorExecutionSummary { +func mockExecutorExecutionSummaryForTiFlash(TimeProcessedNs, NumProducedRows, NumIterations, Concurrency, dmfileScannedRows, dmfileSkippedRows, totalDmfileRsCheckMs, totalDmfileReadTimeMs, totalBuildSnapshotMs, localRegions, remoteRegions, totalLearnerReadMs, disaggReadCacheHitBytes, disaggReadCacheMissBytes, minTSOWaitTime, pipelineBreakerWaitTime, pipelineQueueTime uint64, ExecutorID string) *tipb.ExecutorExecutionSummary { tiflashScanContext := tipb.TiFlashScanContext{ DmfileDataScannedRows: &dmfileScannedRows, DmfileDataSkippedRows: &dmfileSkippedRows, @@ -192,9 +191,13 @@ func mockExecutorExecutionSummaryForTiFlash(TimeProcessedNs, NumProducedRows, Nu DisaggReadCacheHitBytes: &disaggReadCacheHitBytes, DisaggReadCacheMissBytes: &disaggReadCacheMissBytes, } - fmt.Println("tiflashScanContext is ", tiflashScanContext.String()) + tiflashWaitSummary := tipb.TiFlashWaitSummary{ + MinTSOWaitNs: &minTSOWaitTime, + PipelineQueueWaitNs: &pipelineBreakerWaitTime, + PipelineBreakerWaitNs: &pipelineQueueTime, + } return &tipb.ExecutorExecutionSummary{TimeProcessedNs: &TimeProcessedNs, NumProducedRows: &NumProducedRows, - NumIterations: &NumIterations, Concurrency: &Concurrency, ExecutorId: &ExecutorID, DetailInfo: &tipb.ExecutorExecutionSummary_TiflashScanContext{TiflashScanContext: &tiflashScanContext}, XXX_unrecognized: nil} + NumIterations: &NumIterations, Concurrency: &Concurrency, ExecutorId: &ExecutorID, DetailInfo: &tipb.ExecutorExecutionSummary_TiflashScanContext{TiflashScanContext: &tiflashScanContext}, TiflashWaitSummary: &tiflashWaitSummary} } func TestCopRuntimeStats(t *testing.T) { @@ -256,10 +259,10 @@ func TestCopRuntimeStatsForTiFlash(t *testing.T) { tableScanID := 1 aggID := 2 tableReaderID := 3 - stats.RecordOneCopTask(aggID, "tiflash", "8.8.8.8", mockExecutorExecutionSummaryForTiFlash(1, 1, 1, 1, 8192, 0, 15, 200, 40, 10, 4, 1, 100, 50, "tablescan_"+strconv.Itoa(tableScanID))) - stats.RecordOneCopTask(aggID, "tiflash", "8.8.8.9", mockExecutorExecutionSummaryForTiFlash(2, 2, 2, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, "tablescan_"+strconv.Itoa(tableScanID))) - stats.RecordOneCopTask(tableScanID, "tiflash", "8.8.8.8", mockExecutorExecutionSummaryForTiFlash(3, 3, 3, 1, 12000, 6000, 60, 1000, 20, 5, 1, 0, 20, 0, "aggregation_"+strconv.Itoa(aggID))) - stats.RecordOneCopTask(tableScanID, "tiflash", "8.8.8.9", mockExecutorExecutionSummaryForTiFlash(4, 4, 4, 1, 8192, 80000, 40, 2000, 30, 1, 1, 0, 0, 0, "aggregation_"+strconv.Itoa(aggID))) + stats.RecordOneCopTask(tableScanID, "tiflash", "8.8.8.8", mockExecutorExecutionSummaryForTiFlash(1, 1, 1, 1, 8192, 0, 15, 200, 40, 10, 4, 1, 100, 50, 30000000, 20000000, 10000000, "tablescan_"+strconv.Itoa(tableScanID))) + stats.RecordOneCopTask(tableScanID, "tiflash", "8.8.8.9", mockExecutorExecutionSummaryForTiFlash(2, 2, 2, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 20000000, 10000000, 5000000, "tablescan_"+strconv.Itoa(tableScanID))) + stats.RecordOneCopTask(aggID, "tiflash", "8.8.8.8", mockExecutorExecutionSummaryForTiFlash(3, 3, 3, 1, 12000, 6000, 60, 1000, 20, 5, 1, 0, 20, 0, 0, 0, 0, "aggregation_"+strconv.Itoa(aggID))) + stats.RecordOneCopTask(aggID, "tiflash", "8.8.8.9", mockExecutorExecutionSummaryForTiFlash(4, 4, 4, 1, 8192, 80000, 40, 2000, 30, 1, 1, 0, 0, 0, 0, 0, 0, "aggregation_"+strconv.Itoa(aggID))) scanDetail := &util.ScanDetail{ TotalKeys: 10, ProcessedKeys: 10, @@ -273,14 +276,14 @@ func TestCopRuntimeStatsForTiFlash(t *testing.T) { require.True(t, stats.ExistsCopStats(tableScanID)) cop := stats.GetOrCreateCopStats(tableScanID, "tiflash") - require.Equal(t, "tiflash_task:{proc max:2ns, min:1ns, avg: 1ns, p80:2ns, p95:2ns, iters:3, tasks:2, threads:2}, tiflash_scan:{mvcc_input_rows:0, mvcc_input_bytes:0, mvcc_output_rows:0, lm_skip_rows:0, local_regions:10, remote_regions:4, tot_learner_read:1ms, region_balance:none, delta_rows:0, delta_bytes:0, segments:0, stale_read_regions:0, tot_build_snapshot:40ms, tot_build_bitmap:0ms, tot_build_inputstream:0ms, min_local_stream:0ms, max_local_stream:0ms, dtfile:{data_scanned_rows:8192, data_skipped_rows:0, mvcc_scanned_rows:0, mvcc_skipped_rows:0, lm_filter_scanned_rows:0, lm_filter_skipped_rows:0, tot_rs_index_check:15ms, tot_read:202ms, disagg_cache_hit_bytes: 100, disagg_cache_miss_bytes: 50}}", cop.String()) + require.Equal(t, "tiflash_task:{proc max:2ns, min:1ns, avg: 1ns, p80:2ns, p95:2ns, iters:3, tasks:2, threads:2}, tiflash_wait: {minTSO_wait: 20ms, pipeline_breaker_wait: 5ms, pipeline_queue_wait: 10ms}, tiflash_scan:{mvcc_input_rows:0, mvcc_input_bytes:0, mvcc_output_rows:0, lm_skip_rows:0, local_regions:10, remote_regions:4, tot_learner_read:1ms, region_balance:none, delta_rows:0, delta_bytes:0, segments:0, stale_read_regions:0, tot_build_snapshot:40ms, tot_build_bitmap:0ms, tot_build_inputstream:0ms, min_local_stream:0ms, max_local_stream:0ms, dtfile:{data_scanned_rows:8192, data_skipped_rows:0, mvcc_scanned_rows:0, mvcc_skipped_rows:0, lm_filter_scanned_rows:0, lm_filter_skipped_rows:0, tot_rs_index_check:15ms, tot_read:202ms, disagg_cache_hit_bytes: 100, disagg_cache_miss_bytes: 50}}", cop.String()) copStats := cop.stats["8.8.8.8"] require.NotNil(t, copStats) copStats.SetRowNum(10) copStats.Record(time.Second, 10) - require.Equal(t, "time:1s, loops:2, threads:1, tiflash_scan:{mvcc_input_rows:0, mvcc_input_bytes:0, mvcc_output_rows:0, lm_skip_rows:0, local_regions:10, remote_regions:4, tot_learner_read:1ms, region_balance:none, delta_rows:0, delta_bytes:0, segments:0, stale_read_regions:0, tot_build_snapshot:40ms, tot_build_bitmap:0ms, tot_build_inputstream:0ms, min_local_stream:0ms, max_local_stream:0ms, dtfile:{data_scanned_rows:8192, data_skipped_rows:0, mvcc_scanned_rows:0, mvcc_skipped_rows:0, lm_filter_scanned_rows:0, lm_filter_skipped_rows:0, tot_rs_index_check:15ms, tot_read:200ms, disagg_cache_hit_bytes: 100, disagg_cache_miss_bytes: 50}}", copStats.String()) + require.Equal(t, "time:1s, loops:2, threads:1, tiflash_wait: {minTSO_wait: 30ms, pipeline_breaker_wait: 10ms, pipeline_queue_wait: 20ms}, tiflash_scan:{mvcc_input_rows:0, mvcc_input_bytes:0, mvcc_output_rows:0, lm_skip_rows:0, local_regions:10, remote_regions:4, tot_learner_read:1ms, region_balance:none, delta_rows:0, delta_bytes:0, segments:0, stale_read_regions:0, tot_build_snapshot:40ms, tot_build_bitmap:0ms, tot_build_inputstream:0ms, min_local_stream:0ms, max_local_stream:0ms, dtfile:{data_scanned_rows:8192, data_skipped_rows:0, mvcc_scanned_rows:0, mvcc_skipped_rows:0, lm_filter_scanned_rows:0, lm_filter_skipped_rows:0, tot_rs_index_check:15ms, tot_read:200ms, disagg_cache_hit_bytes: 100, disagg_cache_miss_bytes: 50}}", copStats.String()) expected := "tiflash_task:{proc max:4ns, min:3ns, avg: 3ns, p80:4ns, p95:4ns, iters:7, tasks:2, threads:2}, tiflash_scan:{mvcc_input_rows:0, mvcc_input_bytes:0, mvcc_output_rows:0, lm_skip_rows:0, local_regions:6, remote_regions:2, tot_learner_read:0ms, region_balance:none, delta_rows:0, delta_bytes:0, segments:0, stale_read_regions:0, tot_build_snapshot:50ms, tot_build_bitmap:0ms, tot_build_inputstream:0ms, min_local_stream:0ms, max_local_stream:0ms, dtfile:{data_scanned_rows:20192, data_skipped_rows:86000, mvcc_scanned_rows:0, mvcc_skipped_rows:0, lm_filter_scanned_rows:0, lm_filter_skipped_rows:0, tot_rs_index_check:100ms, tot_read:3000ms, disagg_cache_hit_bytes: 20, disagg_cache_miss_bytes: 0}}" require.Equal(t, expected, stats.GetOrCreateCopStats(aggID, "tiflash").String()) @@ -294,7 +297,7 @@ func TestVectorSearchStats(t *testing.T) { var v uint64 = 1 - execSummary := mockExecutorExecutionSummaryForTiFlash(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "") + execSummary := mockExecutorExecutionSummaryForTiFlash(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "") execSummary.DetailInfo.(*tipb.ExecutorExecutionSummary_TiflashScanContext).TiflashScanContext.TotalVectorIdxLoadFromS3 = &v stats.RecordOneCopTask(1, "tiflash", "8.8.8.8", execSummary) s := stats.GetOrCreateCopStats(1, "tiflash") @@ -449,10 +452,12 @@ func TestRuntimeStatsWithCommit(t *testing.T) { func TestRootRuntimeStats(t *testing.T) { pid := 1 stmtStats := NewRuntimeStatsColl(nil) - basic1 := stmtStats.GetBasicRuntimeStats(pid) - basic2 := stmtStats.GetBasicRuntimeStats(pid) + basic1 := stmtStats.GetBasicRuntimeStats(pid, true) + basic2 := stmtStats.GetBasicRuntimeStats(pid, true) + basic1.RecordOpen(time.Millisecond * 10) basic1.Record(time.Second, 20) basic2.Record(time.Second*2, 30) + basic2.RecordClose(time.Millisecond * 100) concurrency := &RuntimeStatsWithConcurrencyInfo{} concurrency.SetConcurrencyInfo(NewConcurrencyInfo("worker", 15)) commitDetail := &util.CommitDetails{ @@ -469,7 +474,7 @@ func TestRootRuntimeStats(t *testing.T) { Commit: commitDetail, }) stats := stmtStats.GetRootStats(1) - expect := "time:3s, loops:2, worker:15, commit_txn: {prewrite:1s, get_commit_ts:1s, commit:1s, region_num:5, write_keys:3, write_byte:66, txn_retry:2}" + expect := "total_time:3.11s, total_open:10ms, total_close:100ms, loops:2, worker:15, commit_txn: {prewrite:1s, get_commit_ts:1s, commit:1s, region_num:5, write_keys:3, write_byte:66, txn_retry:2}" require.Equal(t, expect, stats.String()) } diff --git a/pkg/util/logutil/log.go b/pkg/util/logutil/log.go index 9ae1b0d44f027..ba390fa787feb 100644 --- a/pkg/util/logutil/log.go +++ b/pkg/util/logutil/log.go @@ -59,6 +59,8 @@ const ( LogFieldConn = "conn" // LogFieldSessionAlias is the field name for session_alias in log LogFieldSessionAlias = "session_alias" + // jsonLogFormat is the json format of the log. + jsonLogFormat = "json" ) // EmptyFileLogConfig is an empty FileLogConfig. @@ -122,6 +124,9 @@ var SlowQueryLogger = log.L() // GeneralLogger is used to log general log, InitLogger will modify it according to config file. var GeneralLogger = log.L() +// this logger will always output error verbose regardless of the log config. +var errVerboseLogger = log.L() + // InitLogger initializes a logger with cfg. func InitLogger(cfg *LogConfig, opts ...zap.Option) error { opts = append(opts, zap.AddStacktrace(zapcore.FatalLevel)) @@ -130,6 +135,18 @@ func InitLogger(cfg *LogConfig, opts ...zap.Option) error { return errors.Trace(err) } log.ReplaceGlobals(gl, props) + // pingcap/log doesn't support DisableErrorVerbose for json format log. + if cfg.Config.Format == jsonLogFormat || !cfg.Config.DisableErrorVerbose { + errVerboseLogger = gl + } else { + newLogCfg := cfg.Config + newLogCfg.DisableErrorVerbose = false + logger, _, err := log.InitLoggerWithWriteSyncer(&newLogCfg, props.Syncer, props.ErrSyncer, opts...) + if err != nil { + return errors.Trace(err) + } + errVerboseLogger = logger + } // init dedicated logger for slow query log SlowQueryLogger, _, err = newSlowQueryLogger(cfg) @@ -231,6 +248,16 @@ func BgLogger() *zap.Logger { return log.L().With() } +// ErrVerboseLogger returns a logger that always output error verbose regardless +// of the log config. +// error verbose is disabled on default, but without stack it's harder to investigate +// some issues, such as in DXF the error mostly happen in business logic, the +// error stack is very deep, we want to log the stack to help us investigate. +// Note: if stack is not that needed to investigate, use normal logger instead. +func ErrVerboseLogger() *zap.Logger { + return errVerboseLogger +} + // LoggerWithTraceInfo attaches fields from trace info to logger func LoggerWithTraceInfo(logger *zap.Logger, info *model.TraceInfo) *zap.Logger { if logger == nil { diff --git a/pkg/util/metricsutil/common.go b/pkg/util/metricsutil/common.go index 8f653b93bf396..0964c7a36ee92 100644 --- a/pkg/util/metricsutil/common.go +++ b/pkg/util/metricsutil/common.go @@ -17,7 +17,6 @@ package metricsutil import ( "context" "fmt" - "strings" "time" "github.com/pingcap/kvproto/pkg/keyspacepb" @@ -46,7 +45,7 @@ import ( // RegisterMetrics register metrics with const label 'keyspace_id' if keyspaceName set. func RegisterMetrics() error { cfg := config.GetGlobalConfig() - if keyspace.IsKeyspaceNameEmpty(cfg.KeyspaceName) || strings.ToLower(cfg.Store) != "tikv" { + if keyspace.IsKeyspaceNameEmpty(cfg.KeyspaceName) || cfg.Store != config.StoreTypeTiKV { return registerMetrics(nil) // register metrics without label 'keyspace_id'. } @@ -117,7 +116,7 @@ func registerMetrics(keyspaceMeta *keyspacepb.KeyspaceMeta) error { ttlmetrics.InitMetricsVars() txninfo.InitMetricsVars() - if config.GetGlobalConfig().Store == "unistore" { + if config.GetGlobalConfig().Store == config.StoreTypeUniStore { unimetrics.RegisterMetrics() } return nil diff --git a/pkg/util/mock/context.go b/pkg/util/mock/context.go index 68c31dedb7a98..afc006423f290 100644 --- a/pkg/util/mock/context.go +++ b/pkg/util/mock/context.go @@ -18,6 +18,7 @@ package mock import ( "context" "fmt" + "iter" "sync" "time" @@ -467,7 +468,7 @@ func (c *Context) GoCtx() context.Context { } // UpdateColStatsUsage updates the column stats usage. -func (*Context) UpdateColStatsUsage(_ []model.TableItemID) {} +func (*Context) UpdateColStatsUsage(_ iter.Seq[model.TableItemID]) {} // StoreIndexUsage strores the index usage information. func (*Context) StoreIndexUsage(_ int64, _ int64, _ int64) {} diff --git a/pkg/util/mock/store.go b/pkg/util/mock/store.go index 5b448f956f821..6253984ec8d9c 100644 --- a/pkg/util/mock/store.go +++ b/pkg/util/mock/store.go @@ -85,3 +85,11 @@ func (*Store) GetLockWaits() ([]*deadlockpb.WaitForEntry, error) { func (*Store) GetCodec() tikv.Codec { return nil } + +// GetOption implements kv.Storage interface. +func (*Store) GetOption(_ any) (any, bool) { + return nil, false +} + +// SetOption implements kv.Storage interface. +func (*Store) SetOption(_, _ any) {} diff --git a/pkg/util/queue/BUILD.bazel b/pkg/util/queue/BUILD.bazel new file mode 100644 index 0000000000000..db8f01ebf757a --- /dev/null +++ b/pkg/util/queue/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "queue", + srcs = ["queue.go"], + importpath = "github.com/pingcap/tidb/pkg/util/queue", + visibility = ["//visibility:public"], +) + +go_test( + name = "queue_test", + timeout = "short", + srcs = ["queue_test.go"], + embed = [":queue"], + flaky = True, + deps = ["@com_github_stretchr_testify//require"], +) diff --git a/pkg/util/queue/queue.go b/pkg/util/queue/queue.go new file mode 100644 index 0000000000000..0a13551814d3c --- /dev/null +++ b/pkg/util/queue/queue.go @@ -0,0 +1,94 @@ +// Copyright 2024 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 queue + +// Queue is a circular buffer implementation of queue. +type Queue[T any] struct { + elements []T + head int + tail int + size int +} + +// NewQueue creates a new queue with the given capacity. +func NewQueue[T any](capacity int) *Queue[T] { + return &Queue[T]{ + elements: make([]T, capacity), + } +} + +// Push pushes an element to the queue. +func (r *Queue[T]) Push(element T) { + if r.elements == nil { + r.elements = make([]T, 1) + } + + if r.size == len(r.elements) { + // Double capacity when full + newElements := make([]T, len(r.elements)*2) + for i := range r.size { + newElements[i] = r.elements[(r.head+i)%len(r.elements)] + } + r.elements = newElements + r.head = 0 + r.tail = r.size + } + + r.elements[r.tail] = element + r.tail = (r.tail + 1) % len(r.elements) + r.size++ +} + +// Pop pops an element from the queue. +func (r *Queue[T]) Pop() T { + if r.size == 0 { + panic("Queue is empty") + } + element := r.elements[r.head] + r.head = (r.head + 1) % len(r.elements) + r.size-- + return element +} + +// Len returns the number of elements in the queue. +func (r *Queue[T]) Len() int { + return r.size +} + +// IsEmpty returns true if the queue is empty. +func (r *Queue[T]) IsEmpty() bool { + return r.size == 0 +} + +// Clear clears the queue. +func (r *Queue[T]) Clear() { + r.head = 0 + r.tail = 0 + r.size = 0 +} + +// ClearAndExpandIfNeed clears the queue and try to expand the elements +func (r *Queue[T]) ClearAndExpandIfNeed(size int) { + r.Clear() + + if len(r.elements) < size { + r.elements = make([]T, size) + } +} + +// Cap returns the capacity of the queue. +func (r *Queue[T]) Cap() int { + return len(r.elements) +} diff --git a/pkg/util/queue/queue_test.go b/pkg/util/queue/queue_test.go new file mode 100644 index 0000000000000..678247705ff64 --- /dev/null +++ b/pkg/util/queue/queue_test.go @@ -0,0 +1,87 @@ +// Copyright 2024 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 queue + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestQueue(t *testing.T) { + t.Run("basic operations", func(t *testing.T) { + q := NewQueue[int](2) + + // Test initial state + require.True(t, q.IsEmpty(), "new queue should be empty") + require.Equal(t, 0, q.Len(), "new queue should have length 0") + require.Equal(t, 2, q.Cap(), "new queue should have capacity 2") + + // Test Push + q.Push(1) + q.Push(2) + require.Equal(t, 2, q.Len(), "queue length should be 2 after pushing 2 elements") + require.False(t, q.IsEmpty(), "queue should not be empty after pushing elements") + + // Test automatic capacity increase + q.Push(3) + require.Equal(t, 4, q.Cap(), "queue capacity should double when full") + + // Test Pop + require.Equal(t, 1, q.Pop(), "first pop should return 1") + require.Equal(t, 2, q.Pop(), "second pop should return 2") + require.Equal(t, 3, q.Pop(), "third pop should return 3") + + // Test empty queue + require.True(t, q.IsEmpty(), "queue should be empty after popping all elements") + }) + + t.Run("clear operation", func(t *testing.T) { + q := NewQueue[string](4) + q.Push("a") + q.Push("b") + q.Push("c") + + q.Clear() + require.True(t, q.IsEmpty(), "queue should be empty after clear") + require.Equal(t, 0, q.Len(), "queue length should be 0 after clear") + }) + + t.Run("panic on empty pop", func(t *testing.T) { + defer func() { + r := recover() + require.NotNil(t, r, "pop on empty queue should panic") + }() + + q := NewQueue[int](1) + q.Pop() // Should panic + }) + + t.Run("circular buffer behavior", func(t *testing.T) { + q := NewQueue[int](3) + q.Push(1) + q.Push(2) + q.Pop() // Remove 1 + q.Push(3) + q.Push(4) // This should wrap around + + // check queue.head and queue.tail + require.Equal(t, 1, q.head, "queue.head should be 1") + require.Equal(t, 1, q.tail, "queue.tail should be 1") + + require.Equal(t, 2, q.Pop(), "expected 2") + require.Equal(t, 3, q.Pop(), "expected 3") + require.Equal(t, 4, q.Pop(), "expected 4") + }) +} diff --git a/pkg/util/ranger/detacher.go b/pkg/util/ranger/detacher.go index 4f20227433555..be18e026af25a 100644 --- a/pkg/util/ranger/detacher.go +++ b/pkg/util/ranger/detacher.go @@ -323,7 +323,7 @@ func extractBestCNFItemRanges(sctx *rangerctx.RangerContext, conds []expression. // We build ranges for `(a,b) in ((1,1),(1,2))` and get `[1 1, 1 1] [1 2, 1 2]`, which are point ranges and we can // append `c = 1` to the point ranges. However, if we choose to merge consecutive ranges here, we get `[1 1, 1 2]`, // which are not point ranges, and we cannot append `c = 1` anymore. - res, err := detachCondAndBuildRangeWithoutMerging(sctx, tmpConds, cols, lengths, rangeMaxSize, convertToSortKey) + res, err := detachCondAndBuildRange(sctx, tmpConds, cols, lengths, rangeMaxSize, convertToSortKey, false) if err != nil { return nil, nil, err } @@ -362,6 +362,30 @@ func unionColumnValues(lhs, rhs []*valueInfo) []*valueInfo { return lhs } +// Check which detach result is more selective. This function is called to choose between point ranges and the best CNF ranges. +// This is needed because sometimes the best CNF has full intersection and is more selective, +// and other times it is not when the intersection is not applied. +func chooseBetweenRangeAndPoint(sctx *rangerctx.RangerContext, r1 *DetachRangeResult, r2 *cnfItemRangeResult) { + if fixcontrol.GetBoolWithDefault(sctx.OptimizerFixControl, fixcontrol.Fix54337, false) { + if r1 != nil && len(r1.Ranges) > 0 && r2 != nil && r2.rangeResult != nil { + r1Minusr2 := removeConditions(sctx.ExprCtx.GetEvalCtx(), r1.AccessConds, r2.rangeResult.AccessConds) + r2Minusr1 := removeConditions(sctx.ExprCtx.GetEvalCtx(), r2.rangeResult.AccessConds, r1.AccessConds) + // r2 is considered more selective (and more useful) than r1 if its AccessConds are a superset of r1's AccessConds. + // This means that r1.AccessConds minus r2.AccessConds should result in an empty set. + // The function `removeConditions` is used to perform this subtraction. + // For example, if A = {t1.a1 IN (44, 70, 76)} and B = {t1.a1 IN (44, 70, 76), (t1.a1 > 70 OR (t1.a1 = 70 AND t1.b1 > 41))}, + // then A-B is empty and therefore B is a superset of A. + // Avoid the case when both r1 and r2 have the same AccessConds (r2Minusr1 is not empty). + if len(r1Minusr2) == 0 && len(r2Minusr1) > 0 { + // Update final result and just update: Ranges, AccessConds and RemainedConds + r1.RemainedConds = removeConditions(sctx.ExprCtx.GetEvalCtx(), r1.RemainedConds, r2.rangeResult.AccessConds) + r1.Ranges = r2.rangeResult.Ranges + r1.AccessConds = r2.rangeResult.AccessConds + } + } + } +} + // detachCNFCondAndBuildRangeForIndex will detach the index filters from table filters. These conditions are connected with `and` // It will first find the point query column and then extract the range query column. // considerDNF is true means it will try to extract access conditions from the DNF expressions. @@ -479,7 +503,7 @@ func (d *rangeDetacher) detachCNFCondAndBuildRangeForIndex(conditions []expressi if eqOrInCount > 0 { newCols := d.cols[eqOrInCount:] newLengths := d.lengths[eqOrInCount:] - tailRes, err := DetachCondAndBuildRangeForIndex(d.sctx, newConditions, newCols, newLengths, d.rangeMaxSize) + tailRes, err := detachCondAndBuildRange(d.sctx, newConditions, newCols, newLengths, d.rangeMaxSize, d.convertToSortKey, d.mergeConsecutive) if err != nil { return nil, err } @@ -510,6 +534,10 @@ func (d *rangeDetacher) detachCNFCondAndBuildRangeForIndex(conditions []expressi return res, nil } res.RemainedConds = append(res.RemainedConds, tailRes.RemainedConds...) + // Check if `bestCNFItemRes` is more selective than the ranges derived from the IN list. + // This can occur if `bestCNFItemRes` represents the intersection of the IN list values + // and additional conditions, resulting in a more restrictive filter. + chooseBetweenRangeAndPoint(d.sctx, res, bestCNFItemRes) return res, nil } // `eqOrInCount` must be 0 when coming here. @@ -1004,16 +1032,15 @@ func DetachCondAndBuildRangeForIndex(sctx *rangerctx.RangerContext, conditions [ return d.detachCondAndBuildRangeForCols() } -// detachCondAndBuildRangeWithoutMerging detaches the index filters from table filters and uses them to build ranges. -// When building ranges, it doesn't merge consecutive ranges. -func detachCondAndBuildRangeWithoutMerging(sctx *rangerctx.RangerContext, conditions []expression.Expression, cols []*expression.Column, - lengths []int, rangeMaxSize int64, convertToSortKey bool) (*DetachRangeResult, error) { +// detachCondAndBuildRange detaches the index filters from table filters and uses them to build ranges. +func detachCondAndBuildRange(sctx *rangerctx.RangerContext, conditions []expression.Expression, cols []*expression.Column, + lengths []int, rangeMaxSize int64, convertToSortKey bool, mergeConsecutive bool) (*DetachRangeResult, error) { d := &rangeDetacher{ sctx: sctx, allConds: conditions, cols: cols, lengths: lengths, - mergeConsecutive: false, + mergeConsecutive: mergeConsecutive, convertToSortKey: convertToSortKey, rangeMaxSize: rangeMaxSize, } @@ -1026,7 +1053,7 @@ func detachCondAndBuildRangeWithoutMerging(sctx *rangerctx.RangerContext, condit // The returned values are encapsulated into a struct DetachRangeResult, see its comments for explanation. func DetachCondAndBuildRangeForPartition(sctx *rangerctx.RangerContext, conditions []expression.Expression, cols []*expression.Column, lengths []int, rangeMaxSize int64) (*DetachRangeResult, error) { - return detachCondAndBuildRangeWithoutMerging(sctx, conditions, cols, lengths, rangeMaxSize, false) + return detachCondAndBuildRange(sctx, conditions, cols, lengths, rangeMaxSize, false, false) } type rangeDetacher struct { diff --git a/pkg/util/rowcodec/BUILD.bazel b/pkg/util/rowcodec/BUILD.bazel index c4f65ed621f92..71e8e6b3d913b 100644 --- a/pkg/util/rowcodec/BUILD.bazel +++ b/pkg/util/rowcodec/BUILD.bazel @@ -18,6 +18,7 @@ go_library( "//pkg/types", "//pkg/util/chunk", "//pkg/util/codec", + "//pkg/util/intest", "@com_github_pingcap_errors//:errors", "@org_uber_go_multierr//:multierr", ], diff --git a/pkg/util/rowcodec/common.go b/pkg/util/rowcodec/common.go index 1732af635065e..757180c1318f3 100644 --- a/pkg/util/rowcodec/common.go +++ b/pkg/util/rowcodec/common.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/parser/types" data "github.com/pingcap/tidb/pkg/types" + "github.com/pingcap/tidb/pkg/util/intest" ) // CodecVer is the constant number that represent the new row format. @@ -51,6 +52,9 @@ const ( VaruintFlag byte = 9 JSONFlag byte = 10 VectorFloat32Flag byte = 20 + + keyspacePrefixLen = 4 + apiV2TxnModePrefix byte = 'x' ) func bytesToU32Slice(b []byte) []uint32 { @@ -365,3 +369,21 @@ func appendLengthValue(buf []byte, val []byte) []byte { buf = binary.LittleEndian.AppendUint32(buf, uint32(len(val))) return append(buf, val...) } + +// RemoveKeyspacePrefix is used to remove keyspace prefix from the key. +func RemoveKeyspacePrefix(key []byte) []byte { + // If it is not a UT scenario, the operation to remove the keyspace prefix is performed in client-go, + // so there is no need to remove it again. + if !intest.InTest { + return key + } + + if len(key) <= keyspacePrefixLen { + return key + } + + if key[0] != apiV2TxnModePrefix { + return key + } + return key[keyspacePrefixLen:] +} diff --git a/pkg/util/rowcodec/encoder.go b/pkg/util/rowcodec/encoder.go index b7832192557ba..f0a1b081c4e71 100644 --- a/pkg/util/rowcodec/encoder.go +++ b/pkg/util/rowcodec/encoder.go @@ -22,6 +22,7 @@ import ( "time" "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/pkg/util/codec" @@ -238,22 +239,29 @@ func (NoChecksum) encode(encoder *Encoder, buf []byte) ([]byte, error) { return encoder.toBytes(buf), nil } -const checksumVersionRaw byte = 1 +// introduced since v7.1.0 +const checksumVersionColumn byte = 0 + +// introduced since v8.3.0 +const checksumVersionRawKey byte = 1 + +// introduced since v8.4.0 +const checksumVersionRawHandle byte = 2 // RawChecksum indicates encode the raw bytes checksum and append it to the raw bytes. type RawChecksum struct { - Key []byte + Handle kv.Handle } func (c RawChecksum) encode(encoder *Encoder, buf []byte) ([]byte, error) { encoder.flags |= rowFlagChecksum - encoder.checksumHeader &^= checksumFlagExtra // revert extra checksum flag - encoder.checksumHeader &^= checksumMaskVersion // revert checksum version - encoder.checksumHeader |= checksumVersionRaw // set checksum version + encoder.checksumHeader &^= checksumFlagExtra // revert extra checksum flag + encoder.checksumHeader &^= checksumMaskVersion // revert checksum version + encoder.checksumHeader |= checksumVersionRawHandle // set checksum version valueBytes := encoder.toBytes(buf) valueBytes = append(valueBytes, encoder.checksumHeader) encoder.checksum1 = crc32.Checksum(valueBytes, crc32.IEEETable) - encoder.checksum1 = crc32.Update(encoder.checksum1, crc32.IEEETable, c.Key) + encoder.checksum1 = crc32.Update(encoder.checksum1, crc32.IEEETable, c.Handle.Encoded()) valueBytes = binary.LittleEndian.AppendUint32(valueBytes, encoder.checksum1) return valueBytes, nil } diff --git a/pkg/util/rowcodec/row.go b/pkg/util/rowcodec/row.go index fb951f3df7989..9183bb8d0f936 100644 --- a/pkg/util/rowcodec/row.go +++ b/pkg/util/rowcodec/row.go @@ -152,7 +152,9 @@ func (r *row) fromBytes(rowData []byte) error { r.checksumHeader = rowData[cursor] checksumVersion := r.ChecksumVersion() // make sure it can be read previous version checksum to support backward compatibility. - if checksumVersion != 0 && checksumVersion != 1 { + switch checksumVersion { + case 0, 1, 2: + default: return errInvalidChecksumVer } cursor++ @@ -303,12 +305,8 @@ func (r *row) initOffsets32() { // CalculateRawChecksum calculates the bytes-level checksum by using the given elements. // this is mainly used by the TiCDC to implement E2E checksum functionality. func (r *row) CalculateRawChecksum( - loc *time.Location, colIDs []int64, values []*types.Datum, key kv.Key, buf []byte, + loc *time.Location, colIDs []int64, values []*types.Datum, key kv.Key, handle kv.Handle, buf []byte, ) (uint32, error) { - r.flags |= rowFlagChecksum - r.checksumHeader &^= checksumFlagExtra // revert extra checksum flag - r.checksumHeader &^= checksumMaskVersion // revert checksum version - r.checksumHeader |= checksumVersionRaw // set checksum version for idx, colID := range colIDs { data, err := encodeValueDatum(loc, values[idx], nil) if err != nil { @@ -325,6 +323,11 @@ func (r *row) CalculateRawChecksum( buf = r.toBytes(buf) buf = append(buf, r.checksumHeader) rawChecksum := crc32.Checksum(buf, crc32.IEEETable) - rawChecksum = crc32.Update(rawChecksum, crc32.IEEETable, key) + // keep backward compatibility to v8.3.0 + if r.ChecksumVersion() == int(checksumVersionRawKey) { + rawChecksum = crc32.Update(rawChecksum, crc32.IEEETable, key) + } else { + rawChecksum = crc32.Update(rawChecksum, crc32.IEEETable, handle.Encoded()) + } return rawChecksum, nil } diff --git a/pkg/util/rowcodec/rowcodec_test.go b/pkg/util/rowcodec/rowcodec_test.go index 8857491383f46..5409210876a47 100644 --- a/pkg/util/rowcodec/rowcodec_test.go +++ b/pkg/util/rowcodec/rowcodec_test.go @@ -1209,7 +1209,7 @@ func TestEncodeDecodeRowWithChecksum(t *testing.T) { require.Zero(t, checksum) rawChecksum := rowcodec.RawChecksum{ - Key: []byte("0x1"), + Handle: kv.IntHandle(1), } raw, err = enc.Encode(time.UTC, nil, nil, rawChecksum, nil) require.NoError(t, err) @@ -1226,7 +1226,7 @@ func TestEncodeDecodeRowWithChecksum(t *testing.T) { require.Equal(t, expected, checksum) version := dec.ChecksumVersion() - require.Equal(t, 1, version) + require.Equal(t, 2, version) } var ( diff --git a/pkg/util/sqlexec/mock/restricted_sql_executor_mock.go b/pkg/util/sqlexec/mock/restricted_sql_executor_mock.go index 0ee7f88c8b64b..cb4e5e244aab7 100644 --- a/pkg/util/sqlexec/mock/restricted_sql_executor_mock.go +++ b/pkg/util/sqlexec/mock/restricted_sql_executor_mock.go @@ -14,7 +14,7 @@ import ( reflect "reflect" ast "github.com/pingcap/tidb/pkg/parser/ast" - "github.com/pingcap/tidb/pkg/planner/core/resolve" + resolve "github.com/pingcap/tidb/pkg/planner/core/resolve" chunk "github.com/pingcap/tidb/pkg/util/chunk" sqlexec "github.com/pingcap/tidb/pkg/util/sqlexec" gomock "go.uber.org/mock/gomock" diff --git a/pkg/util/sqlexec/restricted_sql_executor.go b/pkg/util/sqlexec/restricted_sql_executor.go index 72b05bf3f29b4..a1b84943d10e6 100644 --- a/pkg/util/sqlexec/restricted_sql_executor.go +++ b/pkg/util/sqlexec/restricted_sql_executor.go @@ -165,6 +165,9 @@ type Statement interface { // OriginText gets the origin SQL text. OriginText() string + // Text gets the utf8 encoded SQL text. + Text() string + // GetTextToLog gets the desensitization SQL text for logging. GetTextToLog(keepHint bool) string diff --git a/pkg/util/stmtsummary/BUILD.bazel b/pkg/util/stmtsummary/BUILD.bazel index 73bb9a3a699b7..c4098a267f61f 100644 --- a/pkg/util/stmtsummary/BUILD.bazel +++ b/pkg/util/stmtsummary/BUILD.bazel @@ -53,7 +53,6 @@ go_test( "//pkg/util/execdetails", "//pkg/util/plancodec", "//pkg/util/ppcpuusage", - "//pkg/util/stringutil", "@com_github_pingcap_log//:log", "@com_github_stretchr_testify//require", "@com_github_tikv_client_go_v2//util", diff --git a/pkg/util/stmtsummary/evicted.go b/pkg/util/stmtsummary/evicted.go index 2ac1e16f7a11c..ec84ad802751b 100644 --- a/pkg/util/stmtsummary/evicted.go +++ b/pkg/util/stmtsummary/evicted.go @@ -57,12 +57,14 @@ func newStmtSummaryByDigestEvictedElement(beginTime int64, endTime int64) *stmtS beginTime: beginTime, endTime: endTime, otherSummary: &stmtSummaryByDigestElement{ - beginTime: beginTime, - endTime: endTime, - authUsers: make(map[string]struct{}), - minLatency: time.Duration(math.MaxInt64), - backoffTypes: make(map[string]int), - firstSeen: time.Unix(endTime, 0), + beginTime: beginTime, + endTime: endTime, + stmtSummaryStats: stmtSummaryStats{ + authUsers: make(map[string]struct{}), + minLatency: time.Duration(math.MaxInt64), + backoffTypes: make(map[string]int), + firstSeen: time.Unix(endTime, 0), + }, }, } } diff --git a/pkg/util/stmtsummary/evicted_test.go b/pkg/util/stmtsummary/evicted_test.go index 45ea79d1e5312..ff93702f0a0d3 100644 --- a/pkg/util/stmtsummary/evicted_test.go +++ b/pkg/util/stmtsummary/evicted_test.go @@ -40,9 +40,11 @@ func newInduceSsbd(beginTime int64, endTime int64) *stmtSummaryByDigest { // fake a stmtSummaryByDigestElement func newInduceSsbde(beginTime int64, endTime int64) *stmtSummaryByDigestElement { newSsbde := &stmtSummaryByDigestElement{ - beginTime: beginTime, - endTime: endTime, - minLatency: time.Duration.Round(1<<63-1, time.Nanosecond), + beginTime: beginTime, + endTime: endTime, + stmtSummaryStats: stmtSummaryStats{ + minLatency: time.Duration.Round(1<<63-1, time.Nanosecond), + }, } return newSsbde } @@ -327,191 +329,195 @@ func TestStmtSummaryByDigestEvicted(t *testing.T) { func TestAddInfo(t *testing.T) { now := time.Now().Unix() addTo := stmtSummaryByDigestElement{ - // user - authUsers: map[string]struct{}{"a": {}}, - - // execCount and sumWarnings - execCount: 3, - sumWarnings: 8, - - // latency - sumLatency: 8, - maxLatency: 5, - minLatency: 1, - sumParseLatency: 3, - maxParseLatency: 2, - sumCompileLatency: 3, - maxCompileLatency: 2, - - // coprocessor - sumNumCopTasks: 4, - maxCopProcessTime: 4, - maxCopProcessAddress: "19.19.8.10", - maxCopWaitTime: 4, - maxCopWaitAddress: "19.19.8.10", - - // TiKV - sumProcessTime: 1, - maxProcessTime: 1, - sumWaitTime: 2, - maxWaitTime: 1, - sumBackoffTime: 2, - maxBackoffTime: 2, - - sumTotalKeys: 3, - maxTotalKeys: 2, - sumProcessedKeys: 8, - maxProcessedKeys: 4, - sumRocksdbDeleteSkippedCount: 8, - maxRocksdbDeleteSkippedCount: 2, - - sumRocksdbKeySkippedCount: 8, - maxRocksdbKeySkippedCount: 3, - sumRocksdbBlockCacheHitCount: 8, - maxRocksdbBlockCacheHitCount: 3, - sumRocksdbBlockReadCount: 3, - maxRocksdbBlockReadCount: 3, - sumRocksdbBlockReadByte: 4, - maxRocksdbBlockReadByte: 4, - - // txn - commitCount: 8, - sumPrewriteTime: 3, - maxPrewriteTime: 3, - sumCommitTime: 8, - maxCommitTime: 5, - sumGetCommitTsTime: 8, - maxGetCommitTsTime: 8, - sumCommitBackoffTime: 8, - maxCommitBackoffTime: 8, - - sumResolveLockTime: 8, - maxResolveLockTime: 8, - sumLocalLatchTime: 8, - maxLocalLatchTime: 8, - sumWriteKeys: 8, - maxWriteKeys: 8, - sumWriteSize: 8, - maxWriteSize: 8, - sumPrewriteRegionNum: 8, - maxPrewriteRegionNum: 8, - sumTxnRetry: 8, - maxTxnRetry: 8, - sumBackoffTimes: 8, - backoffTypes: map[string]int{}, - - // plan cache - planCacheHits: 8, - - // other - sumAffectedRows: 8, - sumMem: 8, - maxMem: 8, - sumDisk: 8, - maxDisk: 8, - firstSeen: time.Unix(now-10, 0), - lastSeen: time.Unix(now-8, 0), - execRetryCount: 8, - execRetryTime: 8, - sumKVTotal: 2, - sumPDTotal: 2, - sumBackoffTotal: 2, - sumWriteSQLRespTotal: 100, - sumErrors: 8, + stmtSummaryStats: stmtSummaryStats{ + // user + authUsers: map[string]struct{}{"a": {}}, + + // execCount and sumWarnings + execCount: 3, + sumWarnings: 8, + + // latency + sumLatency: 8, + maxLatency: 5, + minLatency: 1, + sumParseLatency: 3, + maxParseLatency: 2, + sumCompileLatency: 3, + maxCompileLatency: 2, + + // coprocessor + sumNumCopTasks: 4, + maxCopProcessTime: 4, + maxCopProcessAddress: "19.19.8.10", + maxCopWaitTime: 4, + maxCopWaitAddress: "19.19.8.10", + + // TiKV + sumProcessTime: 1, + maxProcessTime: 1, + sumWaitTime: 2, + maxWaitTime: 1, + sumBackoffTime: 2, + maxBackoffTime: 2, + + sumTotalKeys: 3, + maxTotalKeys: 2, + sumProcessedKeys: 8, + maxProcessedKeys: 4, + sumRocksdbDeleteSkippedCount: 8, + maxRocksdbDeleteSkippedCount: 2, + + sumRocksdbKeySkippedCount: 8, + maxRocksdbKeySkippedCount: 3, + sumRocksdbBlockCacheHitCount: 8, + maxRocksdbBlockCacheHitCount: 3, + sumRocksdbBlockReadCount: 3, + maxRocksdbBlockReadCount: 3, + sumRocksdbBlockReadByte: 4, + maxRocksdbBlockReadByte: 4, + + // txn + commitCount: 8, + sumPrewriteTime: 3, + maxPrewriteTime: 3, + sumCommitTime: 8, + maxCommitTime: 5, + sumGetCommitTsTime: 8, + maxGetCommitTsTime: 8, + sumCommitBackoffTime: 8, + maxCommitBackoffTime: 8, + + sumResolveLockTime: 8, + maxResolveLockTime: 8, + sumLocalLatchTime: 8, + maxLocalLatchTime: 8, + sumWriteKeys: 8, + maxWriteKeys: 8, + sumWriteSize: 8, + maxWriteSize: 8, + sumPrewriteRegionNum: 8, + maxPrewriteRegionNum: 8, + sumTxnRetry: 8, + maxTxnRetry: 8, + sumBackoffTimes: 8, + backoffTypes: map[string]int{}, + + // plan cache + planCacheHits: 8, + + // other + sumAffectedRows: 8, + sumMem: 8, + maxMem: 8, + sumDisk: 8, + maxDisk: 8, + firstSeen: time.Unix(now-10, 0), + lastSeen: time.Unix(now-8, 0), + execRetryCount: 8, + execRetryTime: 8, + sumKVTotal: 2, + sumPDTotal: 2, + sumBackoffTotal: 2, + sumWriteSQLRespTotal: 100, + sumErrors: 8, + }, } addWith := stmtSummaryByDigestElement{ - // user - authUsers: map[string]struct{}{"a": {}}, - - // execCount and sumWarnings - execCount: 3, - sumWarnings: 8, - - // latency - sumLatency: 8, - maxLatency: 5, - minLatency: 1, - sumParseLatency: 3, - maxParseLatency: 2, - sumCompileLatency: 3, - maxCompileLatency: 2, - - // coprocessor - sumNumCopTasks: 4, - maxCopProcessTime: 4, - maxCopProcessAddress: "19.19.8.10", - maxCopWaitTime: 4, - maxCopWaitAddress: "19.19.8.10", - - // TiKV - sumProcessTime: 1, - maxProcessTime: 1, - sumWaitTime: 2, - maxWaitTime: 1, - sumBackoffTime: 2, - maxBackoffTime: 2, - - sumTotalKeys: 3, - maxTotalKeys: 2, - sumProcessedKeys: 8, - maxProcessedKeys: 4, - sumRocksdbDeleteSkippedCount: 8, - maxRocksdbDeleteSkippedCount: 2, - - sumRocksdbKeySkippedCount: 8, - maxRocksdbKeySkippedCount: 3, - sumRocksdbBlockCacheHitCount: 8, - maxRocksdbBlockCacheHitCount: 3, - sumRocksdbBlockReadCount: 3, - maxRocksdbBlockReadCount: 3, - sumRocksdbBlockReadByte: 4, - maxRocksdbBlockReadByte: 4, - - // txn - commitCount: 8, - sumPrewriteTime: 3, - maxPrewriteTime: 3, - sumCommitTime: 8, - maxCommitTime: 5, - sumGetCommitTsTime: 8, - maxGetCommitTsTime: 8, - sumCommitBackoffTime: 8, - maxCommitBackoffTime: 8, - - sumResolveLockTime: 8, - maxResolveLockTime: 8, - sumLocalLatchTime: 8, - maxLocalLatchTime: 8, - sumWriteKeys: 8, - maxWriteKeys: 8, - sumWriteSize: 8, - maxWriteSize: 8, - sumPrewriteRegionNum: 8, - maxPrewriteRegionNum: 8, - sumTxnRetry: 8, - maxTxnRetry: 8, - sumBackoffTimes: 8, - backoffTypes: map[string]int{}, - - // plan cache - planCacheHits: 8, - - // other - sumAffectedRows: 8, - sumMem: 8, - maxMem: 8, - sumDisk: 8, - maxDisk: 8, - firstSeen: time.Unix(now-10, 0), - lastSeen: time.Unix(now-8, 0), - execRetryCount: 8, - execRetryTime: 8, - sumKVTotal: 2, - sumPDTotal: 2, - sumBackoffTotal: 2, - sumWriteSQLRespTotal: 100, - sumErrors: 8, + stmtSummaryStats: stmtSummaryStats{ + // user + authUsers: map[string]struct{}{"a": {}}, + + // execCount and sumWarnings + execCount: 3, + sumWarnings: 8, + + // latency + sumLatency: 8, + maxLatency: 5, + minLatency: 1, + sumParseLatency: 3, + maxParseLatency: 2, + sumCompileLatency: 3, + maxCompileLatency: 2, + + // coprocessor + sumNumCopTasks: 4, + maxCopProcessTime: 4, + maxCopProcessAddress: "19.19.8.10", + maxCopWaitTime: 4, + maxCopWaitAddress: "19.19.8.10", + + // TiKV + sumProcessTime: 1, + maxProcessTime: 1, + sumWaitTime: 2, + maxWaitTime: 1, + sumBackoffTime: 2, + maxBackoffTime: 2, + + sumTotalKeys: 3, + maxTotalKeys: 2, + sumProcessedKeys: 8, + maxProcessedKeys: 4, + sumRocksdbDeleteSkippedCount: 8, + maxRocksdbDeleteSkippedCount: 2, + + sumRocksdbKeySkippedCount: 8, + maxRocksdbKeySkippedCount: 3, + sumRocksdbBlockCacheHitCount: 8, + maxRocksdbBlockCacheHitCount: 3, + sumRocksdbBlockReadCount: 3, + maxRocksdbBlockReadCount: 3, + sumRocksdbBlockReadByte: 4, + maxRocksdbBlockReadByte: 4, + + // txn + commitCount: 8, + sumPrewriteTime: 3, + maxPrewriteTime: 3, + sumCommitTime: 8, + maxCommitTime: 5, + sumGetCommitTsTime: 8, + maxGetCommitTsTime: 8, + sumCommitBackoffTime: 8, + maxCommitBackoffTime: 8, + + sumResolveLockTime: 8, + maxResolveLockTime: 8, + sumLocalLatchTime: 8, + maxLocalLatchTime: 8, + sumWriteKeys: 8, + maxWriteKeys: 8, + sumWriteSize: 8, + maxWriteSize: 8, + sumPrewriteRegionNum: 8, + maxPrewriteRegionNum: 8, + sumTxnRetry: 8, + maxTxnRetry: 8, + sumBackoffTimes: 8, + backoffTypes: map[string]int{}, + + // plan cache + planCacheHits: 8, + + // other + sumAffectedRows: 8, + sumMem: 8, + maxMem: 8, + sumDisk: 8, + maxDisk: 8, + firstSeen: time.Unix(now-10, 0), + lastSeen: time.Unix(now-8, 0), + execRetryCount: 8, + execRetryTime: 8, + sumKVTotal: 2, + sumPDTotal: 2, + sumBackoffTotal: 2, + sumWriteSQLRespTotal: 100, + sumErrors: 8, + }, } addWith.authUsers["b"] = struct{}{} addWith.maxCopProcessTime = 15 @@ -522,97 +528,99 @@ func TestAddInfo(t *testing.T) { addInfo(&addTo, &addWith) expectedSum := stmtSummaryByDigestElement{ - // user - authUsers: map[string]struct{}{"a": {}, "b": {}}, - - // execCount and sumWarnings - execCount: 6, - sumWarnings: 16, - - // latency - sumLatency: 16, - maxLatency: 5, - minLatency: 1, - sumParseLatency: 6, - maxParseLatency: 2, - sumCompileLatency: 6, - maxCompileLatency: 2, - - // coprocessor - sumNumCopTasks: 8, - maxCopProcessTime: 15, - maxCopProcessAddress: "1.14.5.14", - maxCopWaitTime: 4, - maxCopWaitAddress: "19.19.8.10", - - // TiKV - sumProcessTime: 2, - maxProcessTime: 1, - sumWaitTime: 4, - maxWaitTime: 1, - sumBackoffTime: 4, - maxBackoffTime: 2, - - sumTotalKeys: 6, - maxTotalKeys: 2, - sumProcessedKeys: 16, - maxProcessedKeys: 4, - sumRocksdbDeleteSkippedCount: 16, - maxRocksdbDeleteSkippedCount: 2, - - sumRocksdbKeySkippedCount: 16, - maxRocksdbKeySkippedCount: 3, - sumRocksdbBlockCacheHitCount: 16, - maxRocksdbBlockCacheHitCount: 3, - sumRocksdbBlockReadCount: 6, - maxRocksdbBlockReadCount: 3, - sumRocksdbBlockReadByte: 8, - maxRocksdbBlockReadByte: 4, - - // txn - commitCount: 16, - sumPrewriteTime: 6, - maxPrewriteTime: 3, - sumCommitTime: 16, - maxCommitTime: 5, - sumGetCommitTsTime: 16, - maxGetCommitTsTime: 8, - sumCommitBackoffTime: 16, - maxCommitBackoffTime: 8, - - sumResolveLockTime: 16, - maxResolveLockTime: 8, - sumLocalLatchTime: 16, - maxLocalLatchTime: 8, - sumWriteKeys: 16, - maxWriteKeys: 8, - sumWriteSize: 16, - maxWriteSize: 8, - sumPrewriteRegionNum: 16, - maxPrewriteRegionNum: 8, - sumTxnRetry: 16, - maxTxnRetry: 8, - sumBackoffTimes: 16, - backoffTypes: map[string]int{}, - - // plan cache - planCacheHits: 16, - - // other - sumAffectedRows: 16, - sumMem: 16, - maxMem: 8, - sumDisk: 16, - maxDisk: 8, - firstSeen: time.Unix(now-20, 0), - lastSeen: time.Unix(now, 0), - execRetryCount: 16, - execRetryTime: 16, - sumKVTotal: 4, - sumPDTotal: 4, - sumBackoffTotal: 4, - sumWriteSQLRespTotal: 200, - sumErrors: 16, + stmtSummaryStats: stmtSummaryStats{ + // user + authUsers: map[string]struct{}{"a": {}, "b": {}}, + + // execCount and sumWarnings + execCount: 6, + sumWarnings: 16, + + // latency + sumLatency: 16, + maxLatency: 5, + minLatency: 1, + sumParseLatency: 6, + maxParseLatency: 2, + sumCompileLatency: 6, + maxCompileLatency: 2, + + // coprocessor + sumNumCopTasks: 8, + maxCopProcessTime: 15, + maxCopProcessAddress: "1.14.5.14", + maxCopWaitTime: 4, + maxCopWaitAddress: "19.19.8.10", + + // TiKV + sumProcessTime: 2, + maxProcessTime: 1, + sumWaitTime: 4, + maxWaitTime: 1, + sumBackoffTime: 4, + maxBackoffTime: 2, + + sumTotalKeys: 6, + maxTotalKeys: 2, + sumProcessedKeys: 16, + maxProcessedKeys: 4, + sumRocksdbDeleteSkippedCount: 16, + maxRocksdbDeleteSkippedCount: 2, + + sumRocksdbKeySkippedCount: 16, + maxRocksdbKeySkippedCount: 3, + sumRocksdbBlockCacheHitCount: 16, + maxRocksdbBlockCacheHitCount: 3, + sumRocksdbBlockReadCount: 6, + maxRocksdbBlockReadCount: 3, + sumRocksdbBlockReadByte: 8, + maxRocksdbBlockReadByte: 4, + + // txn + commitCount: 16, + sumPrewriteTime: 6, + maxPrewriteTime: 3, + sumCommitTime: 16, + maxCommitTime: 5, + sumGetCommitTsTime: 16, + maxGetCommitTsTime: 8, + sumCommitBackoffTime: 16, + maxCommitBackoffTime: 8, + + sumResolveLockTime: 16, + maxResolveLockTime: 8, + sumLocalLatchTime: 16, + maxLocalLatchTime: 8, + sumWriteKeys: 16, + maxWriteKeys: 8, + sumWriteSize: 16, + maxWriteSize: 8, + sumPrewriteRegionNum: 16, + maxPrewriteRegionNum: 8, + sumTxnRetry: 16, + maxTxnRetry: 8, + sumBackoffTimes: 16, + backoffTypes: map[string]int{}, + + // plan cache + planCacheHits: 16, + + // other + sumAffectedRows: 16, + sumMem: 16, + maxMem: 8, + sumDisk: 16, + maxDisk: 8, + firstSeen: time.Unix(now-20, 0), + lastSeen: time.Unix(now, 0), + execRetryCount: 16, + execRetryTime: 16, + sumKVTotal: 4, + sumPDTotal: 4, + sumBackoffTotal: 4, + sumWriteSQLRespTotal: 200, + sumErrors: 16, + }, } require.Equal(t, true, reflect.DeepEqual(&addTo, &expectedSum)) } diff --git a/pkg/util/stmtsummary/reader.go b/pkg/util/stmtsummary/reader.go index a06e73f980673..a537d3db4bae3 100644 --- a/pkg/util/stmtsummary/reader.go +++ b/pkg/util/stmtsummary/reader.go @@ -64,6 +64,27 @@ func NewStmtSummaryReader(user *auth.UserIdentity, hasProcessPriv bool, cols []* return reader } +// GetStmtSummaryCumulativeRows gets statement summary rows with cumulative metrics. +func (ssr *stmtSummaryReader) GetStmtSummaryCumulativeRows() [][]types.Datum { + ssMap := ssr.ssMap + ssMap.Lock() + values := ssMap.summaryMap.Values() + ssMap.Unlock() + + rows := make([][]types.Datum, 0, len(values)) + for _, value := range values { + ssbd := value.(*stmtSummaryByDigest) + if ssr.checker != nil && !ssr.checker.isDigestValid(ssbd.digest) { + continue + } + record := ssr.getStmtByDigestCumulativeRow(ssbd) + if record != nil { + rows = append(rows, record) + } + } + return rows +} + // GetStmtSummaryCurrentRows gets all current statement summaries rows. func (ssr *stmtSummaryReader) GetStmtSummaryCurrentRows() [][]types.Datum { ssMap := ssr.ssMap @@ -118,6 +139,28 @@ func (ssr *stmtSummaryReader) SetChecker(checker *stmtSummaryChecker) { ssr.checker = checker } +func (ssr *stmtSummaryReader) isAuthed(ssbd *stmtSummaryByDigest) bool { + isAuthed := true + if ssr.user != nil && !ssr.hasProcessPriv { + _, isAuthed = ssbd.cumulative.authUsers[ssr.user.Username] + } + return isAuthed +} + +func (ssr *stmtSummaryReader) getStmtByDigestCumulativeRow(ssbd *stmtSummaryByDigest) []types.Datum { + ssbd.Lock() + defer ssbd.Unlock() + if !ssr.isAuthed(ssbd) { + return nil + } + + datums := make([]types.Datum, len(ssr.columnValueFactories)) + for i, factory := range ssr.columnValueFactories { + datums[i] = types.NewDatum(factory(ssr, nil, ssbd, &ssbd.cumulative)) + } + return datums +} + func (ssr *stmtSummaryReader) getStmtByDigestRow(ssbd *stmtSummaryByDigest, beginTimeForCurInterval int64) []types.Datum { var ssElement *stmtSummaryByDigestElement @@ -138,17 +181,13 @@ func (ssr *stmtSummaryReader) getStmtByDigestRow(ssbd *stmtSummaryByDigest, begi func (ssr *stmtSummaryReader) getStmtByDigestElementRow(ssElement *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) []types.Datum { ssElement.Lock() defer ssElement.Unlock() - isAuthed := true - if ssr.user != nil && !ssr.hasProcessPriv { - _, isAuthed = ssElement.authUsers[ssr.user.Username] - } - if !isAuthed { + if !ssr.isAuthed(ssbd) { return nil } datums := make([]types.Datum, len(ssr.columnValueFactories)) for i, factory := range ssr.columnValueFactories { - datums[i] = types.NewDatum(factory(ssr, ssElement, ssbd)) + datums[i] = types.NewDatum(factory(ssr, ssElement, ssbd, &ssElement.stmtSummaryStats)) } return datums } @@ -326,354 +365,527 @@ const ( ResourceGroupName = "RESOURCE_GROUP" ) -type columnValueFactory func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) any +// Column names for the statement stats table, including columns that have been +// renamed from their equivalent columns in the statement summary table. +const ( + ErrorsStr = "ERRORS" + WarningsStr = "WARNINGS" + MemStr = "MEM" + DiskStr = "DISK" + TotalTimeStr = "TOTAL_TIME" + ParseTimeStr = "PARSE_TIME" + CompileTimeStr = "COMPILE_TIME" + CopTaskNumStr = "COP_TASK_NUM" + CopProcessTimeStr = "COP_PROCESS_TIME" + CopWaitTimeStr = "COP_WAIT_TIME" + PdTimeStr = "PD_TIME" + KvTimeStr = "KV_TIME" + ProcessTimeStr = "PROCESS_TIME" + WaitTimeStr = "WAIT_TIME" + BackoffTimeStr = "BACKOFF_TIME" + TotalKeysStr = "TOTAL_KEYS" + ProcessedKeysStr = "PROCESSED_KEYS" + RocksdbDeleteSkippedCountStr = "ROCKSDB_DELETE_SKIPPED_COUNT" + RocksdbKeySkippedCountStr = "ROCKSDB_KEY_SKIPPED_COUNT" + RocksdbBlockCacheHitCountStr = "ROCKSDB_BLOCK_CACHE_HIT_COUNT" + RocksdbBlockReadCountStr = "ROCKSDB_BLOCK_READ_COUNT" + RocksdbBlockReadByteStr = "ROCKSDB_BLOCK_READ_BYTE" + PrewriteTimeStr = "PREWRITE_TIME" + CommitTimeStr = "COMMIT_TIME" + CommitTsTimeStr = "COMMIT_TS_TIME" + CommitBackoffTimeStr = "COMMIT_BACKOFF_TIME" + ResolveLockTimeStr = "RESOLVE_LOCK_TIME" + LocalLatchWaitTimeStr = "LOCAL_LATCH_WAIT_TIME" + WriteKeysStr = "WRITE_KEYS" + WriteSizeStr = "WRITE_SIZE" + PrewriteRegionsStr = "PREWRITE_REGIONS" + TxnRetryStr = "TXN_RETRY" + ExecRetryStr = "EXEC_RETRY" + ExecRetryTimeStr = "EXEC_RETRY_TIME" + BackoffTimesStr = "BACKOFF_TIMES" + BackoffTotalTimeStr = "BACKOFF_TOTAL_TIME" + WriteSQLRespTimeStr = "WRITE_SQL_RESP_TIME" + ResultRowsStr = "RESULT_ROWS" + AffectedRowsStr = "AFFECTED_ROWS" + RequestUnitReadStr = "REQUEST_UNIT_READ" + RequestUnitWriteStr = "REQUEST_UNIT_WRITE" + QueuedRcTimeStr = "QUEUED_RC_TIME" +) + +type columnValueFactory func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest, ssStats *stmtSummaryStats) any var columnValueFactoryMap = map[string]columnValueFactory{ - ClusterTableInstanceColumnNameStr: func(reader *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { + ClusterTableInstanceColumnNameStr: func(reader *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, _ *stmtSummaryStats) any { return reader.instanceAddr }, - SummaryBeginTimeStr: func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { + SummaryBeginTimeStr: func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, _ *stmtSummaryStats) any { beginTime := time.Unix(ssElement.beginTime, 0) if beginTime.Location() != reader.tz { beginTime = beginTime.In(reader.tz) } return types.NewTime(types.FromGoTime(beginTime), mysql.TypeTimestamp, 0) }, - SummaryEndTimeStr: func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { + SummaryEndTimeStr: func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, _ *stmtSummaryStats) any { endTime := time.Unix(ssElement.endTime, 0) if endTime.Location() != reader.tz { endTime = endTime.In(reader.tz) } return types.NewTime(types.FromGoTime(endTime), mysql.TypeTimestamp, 0) }, - StmtTypeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) any { + StmtTypeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest, _ *stmtSummaryStats) any { return ssbd.stmtType }, - SchemaNameStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) any { + SchemaNameStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest, _ *stmtSummaryStats) any { return convertEmptyToNil(ssbd.schemaName) }, - DigestStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) any { + DigestStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest, _ *stmtSummaryStats) any { return convertEmptyToNil(ssbd.digest) }, - DigestTextStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) any { + DigestTextStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest, _ *stmtSummaryStats) any { return ssbd.normalizedSQL }, - TableNamesStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) any { + TableNamesStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest, _ *stmtSummaryStats) any { return convertEmptyToNil(ssbd.tableNames) }, - IndexNamesStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return convertEmptyToNil(strings.Join(ssElement.indexNames, ",")) + IndexNamesStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return convertEmptyToNil(strings.Join(ssStats.indexNames, ",")) }, - SampleUserStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { + SampleUserStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { sampleUser := "" - for key := range ssElement.authUsers { + for key := range ssStats.authUsers { sampleUser = key break } return convertEmptyToNil(sampleUser) }, - ExecCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.execCount + ExecCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.execCount + }, + ErrorsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumErrors + }, + SumErrorsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumErrors }, - SumErrorsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.sumErrors + WarningsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumWarnings }, - SumWarningsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.sumWarnings + SumWarningsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumWarnings }, - SumLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.sumLatency) + TotalTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumLatency) }, - MaxLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxLatency) + SumLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumLatency) }, - MinLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.minLatency) + MaxLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxLatency) }, - AvgLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumLatency), ssElement.execCount) + MinLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.minLatency) }, - AvgParseLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumParseLatency), ssElement.execCount) + AvgLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumLatency), ssStats.execCount) }, - MaxParseLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxParseLatency) + ParseTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumParseLatency) }, - AvgCompileLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumCompileLatency), ssElement.execCount) + AvgParseLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumParseLatency), ssStats.execCount) }, - MaxCompileLatencyStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxCompileLatency) + MaxParseLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxParseLatency) }, - SumCopTaskNumStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.sumNumCopTasks + CompileTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumCompileLatency) }, - MaxCopProcessTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxCopProcessTime) + AvgCompileLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumCompileLatency), ssStats.execCount) }, - MaxCopProcessAddressStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return convertEmptyToNil(ssElement.maxCopProcessAddress) + MaxCompileLatencyStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxCompileLatency) }, - MaxCopWaitTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxCopWaitTime) + CopTaskNumStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumNumCopTasks }, - MaxCopWaitAddressStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return convertEmptyToNil(ssElement.maxCopWaitAddress) + SumCopTaskNumStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumNumCopTasks }, - AvgProcessTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumProcessTime), ssElement.execCount) + CopProcessTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumCopProcessTime) }, - MaxProcessTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxProcessTime) + MaxCopProcessTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxCopProcessTime) }, - AvgWaitTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumWaitTime), ssElement.execCount) + MaxCopProcessAddressStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return convertEmptyToNil(ssStats.maxCopProcessAddress) }, - MaxWaitTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxWaitTime) + CopWaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumCopWaitTime) }, - AvgBackoffTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumBackoffTime), ssElement.execCount) + MaxCopWaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxCopWaitTime) }, - MaxBackoffTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxBackoffTime) + MaxCopWaitAddressStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return convertEmptyToNil(ssStats.maxCopWaitAddress) }, - AvgTotalKeysStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(ssElement.sumTotalKeys, ssElement.execCount) + ProcessTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumProcessTime) }, - MaxTotalKeysStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxTotalKeys + AvgProcessTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumProcessTime), ssStats.execCount) }, - AvgProcessedKeysStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(ssElement.sumProcessedKeys, ssElement.execCount) + MaxProcessTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxProcessTime) }, - MaxProcessedKeysStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxProcessedKeys + WaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumWaitTime) }, - AvgRocksdbDeleteSkippedCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumRocksdbDeleteSkippedCount), ssElement.execCount) + AvgWaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumWaitTime), ssStats.execCount) }, - MaxRocksdbDeleteSkippedCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxRocksdbDeleteSkippedCount + MaxWaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxWaitTime) }, - AvgRocksdbKeySkippedCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumRocksdbKeySkippedCount), ssElement.execCount) + BackoffTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumBackoffTime) }, - MaxRocksdbKeySkippedCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxRocksdbKeySkippedCount + AvgBackoffTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumBackoffTime), ssStats.execCount) }, - AvgRocksdbBlockCacheHitCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumRocksdbBlockCacheHitCount), ssElement.execCount) + MaxBackoffTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxBackoffTime) }, - MaxRocksdbBlockCacheHitCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxRocksdbBlockCacheHitCount + TotalKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumTotalKeys }, - AvgRocksdbBlockReadCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumRocksdbBlockReadCount), ssElement.execCount) + AvgTotalKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(ssStats.sumTotalKeys, ssStats.execCount) }, - MaxRocksdbBlockReadCountStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxRocksdbBlockReadCount + MaxTotalKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxTotalKeys }, - AvgRocksdbBlockReadByteStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumRocksdbBlockReadByte), ssElement.execCount) + ProcessedKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumProcessedKeys }, - MaxRocksdbBlockReadByteStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxRocksdbBlockReadByte + AvgProcessedKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(ssStats.sumProcessedKeys, ssStats.execCount) }, - AvgPrewriteTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumPrewriteTime), ssElement.commitCount) + MaxProcessedKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxProcessedKeys }, - MaxPrewriteTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxPrewriteTime) + RocksdbDeleteSkippedCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumRocksdbDeleteSkippedCount }, - AvgCommitTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumCommitTime), ssElement.commitCount) + AvgRocksdbDeleteSkippedCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumRocksdbDeleteSkippedCount), ssStats.execCount) }, - MaxCommitTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxCommitTime) + MaxRocksdbDeleteSkippedCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxRocksdbDeleteSkippedCount }, - AvgGetCommitTsTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumGetCommitTsTime), ssElement.commitCount) + RocksdbKeySkippedCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumRocksdbKeySkippedCount }, - MaxGetCommitTsTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxGetCommitTsTime) + AvgRocksdbKeySkippedCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumRocksdbKeySkippedCount), ssStats.execCount) }, - AvgCommitBackoffTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(ssElement.sumCommitBackoffTime, ssElement.commitCount) + MaxRocksdbKeySkippedCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxRocksdbKeySkippedCount }, - MaxCommitBackoffTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxCommitBackoffTime + RocksdbBlockCacheHitCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumRocksdbBlockCacheHitCount }, - AvgResolveLockTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(ssElement.sumResolveLockTime, ssElement.commitCount) + AvgRocksdbBlockCacheHitCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumRocksdbBlockCacheHitCount), ssStats.execCount) }, - MaxResolveLockTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxResolveLockTime + MaxRocksdbBlockCacheHitCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxRocksdbBlockCacheHitCount }, - AvgLocalLatchWaitTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumLocalLatchTime), ssElement.commitCount) + RocksdbBlockReadCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumRocksdbBlockReadCount }, - MaxLocalLatchWaitTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.maxLocalLatchTime) + AvgRocksdbBlockReadCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumRocksdbBlockReadCount), ssStats.execCount) }, - AvgWriteKeysStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgFloat(ssElement.sumWriteKeys, ssElement.commitCount) + MaxRocksdbBlockReadCountStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxRocksdbBlockReadCount }, - MaxWriteKeysStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxWriteKeys + RocksdbBlockReadByteStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumRocksdbBlockReadByte }, - AvgWriteSizeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgFloat(ssElement.sumWriteSize, ssElement.commitCount) + AvgRocksdbBlockReadByteStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumRocksdbBlockReadByte), ssStats.execCount) }, - MaxWriteSizeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxWriteSize + MaxRocksdbBlockReadByteStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxRocksdbBlockReadByte }, - AvgPrewriteRegionsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgFloat(ssElement.sumPrewriteRegionNum, ssElement.commitCount) + PrewriteTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumPrewriteTime) }, - MaxPrewriteRegionsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int(ssElement.maxPrewriteRegionNum) + AvgPrewriteTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumPrewriteTime), ssStats.commitCount) }, - AvgTxnRetryStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgFloat(ssElement.sumTxnRetry, ssElement.commitCount) + MaxPrewriteTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxPrewriteTime) }, - MaxTxnRetryStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxTxnRetry + CommitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumCommitTime) }, - SumExecRetryStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int(ssElement.execRetryCount) + AvgCommitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumCommitTime), ssStats.commitCount) }, - SumExecRetryTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.execRetryTime) + MaxCommitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxCommitTime) }, - SumBackoffTimesStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.sumBackoffTimes + CommitTsTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumGetCommitTsTime) }, - BackoffTypesStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return formatBackoffTypes(ssElement.backoffTypes) + AvgGetCommitTsTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumGetCommitTsTime), ssStats.commitCount) }, - AvgMemStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(ssElement.sumMem, ssElement.execCount) + MaxGetCommitTsTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxGetCommitTsTime) }, - MaxMemStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxMem + CommitBackoffTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumCommitBackoffTime }, - AvgDiskStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(ssElement.sumDisk, ssElement.execCount) + AvgCommitBackoffTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(ssStats.sumCommitBackoffTime, ssStats.commitCount) }, - MaxDiskStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxDisk + MaxCommitBackoffTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxCommitBackoffTime }, - AvgKvTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumKVTotal), ssElement.commitCount) + ResolveLockTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumResolveLockTime }, - AvgPdTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumPDTotal), ssElement.commitCount) + AvgResolveLockTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(ssStats.sumResolveLockTime, ssStats.commitCount) }, - AvgBackoffTotalTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumBackoffTotal), ssElement.commitCount) + MaxResolveLockTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxResolveLockTime }, - AvgWriteSQLRespTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumWriteSQLRespTotal), ssElement.commitCount) + LocalLatchWaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumLocalLatchTime) }, - AvgTidbCPUTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumTidbCPU), ssElement.execCount) + AvgLocalLatchWaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumLocalLatchTime), ssStats.commitCount) }, - AvgTikvCPUTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.sumTikvCPU), ssElement.execCount) + MaxLocalLatchWaitTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.maxLocalLatchTime) }, - MaxResultRowsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.maxResultRows + WriteKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumWriteKeys }, - MinResultRowsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.minResultRows + AvgWriteKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgFloat(ssStats.sumWriteKeys, ssStats.commitCount) }, - AvgResultRowsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(ssElement.sumResultRows, ssElement.execCount) + MaxWriteKeysStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxWriteKeys }, - PreparedStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.prepared + WriteSizeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumWriteSize }, - AvgAffectedRowsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgFloat(int64(ssElement.sumAffectedRows), ssElement.execCount) + AvgWriteSizeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgFloat(ssStats.sumWriteSize, ssStats.commitCount) }, - FirstSeenStr: func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - firstSeen := ssElement.firstSeen + MaxWriteSizeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxWriteSize + }, + PrewriteRegionsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumPrewriteRegionNum + }, + AvgPrewriteRegionsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgFloat(ssStats.sumPrewriteRegionNum, ssStats.commitCount) + }, + MaxPrewriteRegionsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int(ssStats.maxPrewriteRegionNum) + }, + TxnRetryStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumTxnRetry + }, + AvgTxnRetryStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgFloat(ssStats.sumTxnRetry, ssStats.commitCount) + }, + MaxTxnRetryStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxTxnRetry + }, + ExecRetryStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int(ssStats.execRetryCount) + }, + SumExecRetryStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int(ssStats.execRetryCount) + }, + ExecRetryTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.execRetryTime) + }, + SumExecRetryTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.execRetryTime) + }, + BackoffTimesStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumBackoffTimes + }, + SumBackoffTimesStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumBackoffTimes + }, + BackoffTypesStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return formatBackoffTypes(ssStats.backoffTypes) + }, + MemStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumMem + }, + AvgMemStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(ssStats.sumMem, ssStats.execCount) + }, + MaxMemStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxMem + }, + DiskStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumDisk + }, + AvgDiskStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(ssStats.sumDisk, ssStats.execCount) + }, + MaxDiskStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxDisk + }, + KvTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumKVTotal) + }, + AvgKvTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumKVTotal), ssStats.commitCount) + }, + PdTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumPDTotal) + }, + AvgPdTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumPDTotal), ssStats.commitCount) + }, + BackoffTotalTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumBackoffTotal) + }, + AvgBackoffTotalTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumBackoffTotal), ssStats.commitCount) + }, + WriteSQLRespTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.sumWriteSQLRespTotal) + }, + AvgWriteSQLRespTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumWriteSQLRespTotal), ssStats.commitCount) + }, + AvgTidbCPUTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumTidbCPU), ssStats.execCount) + }, + AvgTikvCPUTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.sumTikvCPU), ssStats.execCount) + }, + ResultRowsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumResultRows + }, + MaxResultRowsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.maxResultRows + }, + MinResultRowsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.minResultRows + }, + AffectedRowsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sumAffectedRows + }, + AvgResultRowsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(ssStats.sumResultRows, ssStats.execCount) + }, + PreparedStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.prepared + }, + AvgAffectedRowsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgFloat(int64(ssStats.sumAffectedRows), ssStats.execCount) + }, + FirstSeenStr: func(reader *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + firstSeen := ssStats.firstSeen if firstSeen.Location() != reader.tz { firstSeen = firstSeen.In(reader.tz) } return types.NewTime(types.FromGoTime(firstSeen), mysql.TypeTimestamp, 0) }, - LastSeenStr: func(reader *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - lastSeen := ssElement.lastSeen + LastSeenStr: func(reader *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + lastSeen := ssStats.lastSeen if lastSeen.Location() != reader.tz { lastSeen = lastSeen.In(reader.tz) } return types.NewTime(types.FromGoTime(lastSeen), mysql.TypeTimestamp, 0) }, - PlanInCacheStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.planInCache + PlanInCacheStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.planInCache }, - PlanCacheHitsStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.planCacheHits + PlanCacheHitsStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.planCacheHits }, - PlanInBindingStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.planInBinding + PlanInBindingStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.planInBinding }, - QuerySampleTextStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.sampleSQL + QuerySampleTextStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sampleSQL }, - PrevSampleTextStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.prevSQL + PrevSampleTextStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.prevSQL }, - PlanDigestStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest) any { + PlanDigestStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, ssbd *stmtSummaryByDigest, _ *stmtSummaryStats) any { return ssbd.planDigest }, - PlanStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - plan, err := plancodec.DecodePlan(ssElement.samplePlan) + PlanStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + plan, err := plancodec.DecodePlan(ssStats.samplePlan) if err != nil { - logutil.BgLogger().Error("decode plan in statement summary failed", zap.String("plan", ssElement.samplePlan), zap.String("query", ssElement.sampleSQL), zap.Error(err)) + logutil.BgLogger().Error("decode plan in statement summary failed", zap.String("plan", ssStats.samplePlan), zap.String("query", ssStats.sampleSQL), zap.Error(err)) plan = "" } return plan }, - BinaryPlan: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.sampleBinaryPlan + BinaryPlan: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.sampleBinaryPlan + }, + Charset: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.charset + }, + Collation: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.collation + }, + PlanHint: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.planHint }, - Charset: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.charset + RequestUnitReadStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.SumRRU }, - Collation: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.collation + AvgRequestUnitReadStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgSumFloat(ssStats.SumRRU, ssStats.execCount) }, - PlanHint: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.planHint + MaxRequestUnitReadStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.MaxRRU }, - AvgRequestUnitReadStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgSumFloat(ssElement.SumRRU, ssElement.execCount) + RequestUnitWriteStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.SumWRU }, - MaxRequestUnitReadStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.MaxRRU + AvgRequestUnitWriteStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgSumFloat(ssStats.SumWRU, ssStats.execCount) }, - AvgRequestUnitWriteStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgSumFloat(ssElement.SumWRU, ssElement.execCount) + MaxRequestUnitWriteStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.MaxWRU }, - MaxRequestUnitWriteStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.MaxWRU + QueuedRcTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.SumRUWaitDuration) }, - AvgQueuedRcTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return avgInt(int64(ssElement.SumRUWaitDuration), ssElement.execCount) + AvgQueuedRcTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return avgInt(int64(ssStats.SumRUWaitDuration), ssStats.execCount) }, - MaxQueuedRcTimeStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return int64(ssElement.MaxRUWaitDuration) + MaxQueuedRcTimeStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return int64(ssStats.MaxRUWaitDuration) }, - ResourceGroupName: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.resourceGroupName + ResourceGroupName: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.resourceGroupName }, - PlanCacheUnqualifiedStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.planCacheUnqualifiedCount + PlanCacheUnqualifiedStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.planCacheUnqualifiedCount }, - PlanCacheUnqualifiedLastReasonStr: func(_ *stmtSummaryReader, ssElement *stmtSummaryByDigestElement, _ *stmtSummaryByDigest) any { - return ssElement.lastPlanCacheUnqualified + PlanCacheUnqualifiedLastReasonStr: func(_ *stmtSummaryReader, _ *stmtSummaryByDigestElement, _ *stmtSummaryByDigest, ssStats *stmtSummaryStats) any { + return ssStats.lastPlanCacheUnqualified }, } diff --git a/pkg/util/stmtsummary/statement_summary.go b/pkg/util/stmtsummary/statement_summary.go index 89d2e697ad6df..20a203f307869 100644 --- a/pkg/util/stmtsummary/statement_summary.go +++ b/pkg/util/stmtsummary/statement_summary.go @@ -99,6 +99,7 @@ type stmtSummaryByDigest struct { // Mutex is only used to lock `history`. sync.Mutex initialized bool + cumulative stmtSummaryStats // Each element in history is a summary in one interval. history *list.List // Following fields are common for each summary element. @@ -118,6 +119,12 @@ type stmtSummaryByDigestElement struct { // Each summary is summarized between [beginTime, endTime). beginTime int64 endTime int64 + stmtSummaryStats +} + +// stmtSummaryStats is the collection of statistics tracked for each statement summary, +// both cumulatively and for each interval. +type stmtSummaryStats struct { // basic sampleSQL string charset string @@ -140,8 +147,10 @@ type stmtSummaryByDigestElement struct { maxCompileLatency time.Duration // coprocessor sumNumCopTasks int64 + sumCopProcessTime time.Duration maxCopProcessTime time.Duration maxCopProcessAddress string + sumCopWaitTime time.Duration maxCopWaitTime time.Duration maxCopWaitAddress string // TiKV @@ -227,34 +236,30 @@ type stmtSummaryByDigestElement struct { // StmtExecInfo records execution information of each statement. type StmtExecInfo struct { - SchemaName string - OriginalSQL fmt.Stringer - Charset string - Collation string - NormalizedSQL string - Digest string - PrevSQL string - PrevSQLDigest string - PlanGenerator func() (string, string, any) - BinaryPlanGenerator func() string - PlanDigest string - PlanDigestGen func() string - User string - TotalLatency time.Duration - ParseLatency time.Duration - CompileLatency time.Duration - StmtCtx *stmtctx.StatementContext - CopTasks *execdetails.CopTasksDetails - ExecDetail *execdetails.ExecDetails - MemMax int64 - DiskMax int64 - StartTime time.Time - IsInternal bool - Succeed bool - PlanInCache bool - PlanInBinding bool - ExecRetryCount uint - ExecRetryTime time.Duration + SchemaName string + Charset string + Collation string + NormalizedSQL string + Digest string + PrevSQL string + PrevSQLDigest string + PlanDigest string + User string + TotalLatency time.Duration + ParseLatency time.Duration + CompileLatency time.Duration + StmtCtx *stmtctx.StatementContext + CopTasks *execdetails.CopTasksDetails + ExecDetail execdetails.ExecDetails + MemMax int64 + DiskMax int64 + StartTime time.Time + IsInternal bool + Succeed bool + PlanInCache bool + PlanInBinding bool + ExecRetryCount uint + ExecRetryTime time.Duration execdetails.StmtExecDetails ResultRows int64 TiKVExecDetails util.ExecDetails @@ -266,6 +271,16 @@ type StmtExecInfo struct { CPUUsages ppcpuusage.CPUUsages PlanCacheUnqualified string + + LazyInfo StmtExecLazyInfo +} + +// StmtExecLazyInfo is the interface about getting lazy information for StmtExecInfo. +type StmtExecLazyInfo interface { + GetOriginalSQL() string + GetEncodedPlan() (string, string, any) + GetBinaryPlan() string + GetPlanDigest() string } // newStmtSummaryByDigestMap creates an empty stmtSummaryByDigestMap. @@ -565,10 +580,12 @@ func (ssbd *stmtSummaryByDigest) init(sei *StmtExecInfo, _ int64, _ int64, _ int } tableNames := buffer.String() + ssbd.cumulative = *newStmtSummaryStats(sei) + planDigest := sei.PlanDigest - if sei.PlanDigestGen != nil && len(planDigest) == 0 { + if len(planDigest) == 0 { // It comes here only when the plan is 'Point_Get'. - planDigest = sei.PlanDigestGen() + planDigest = sei.LazyInfo.GetPlanDigest() } ssbd.schemaName = sei.SchemaName ssbd.digest = sei.Digest @@ -589,6 +606,7 @@ func (ssbd *stmtSummaryByDigest) add(sei *StmtExecInfo, beginTime int64, interva if !ssbd.initialized { ssbd.init(sei, beginTime, intervalSeconds, historySize) } + ssbd.cumulative.add(sei) var ssElement *stmtSummaryByDigestElement isElementNew := true @@ -649,26 +667,22 @@ func (ssbd *stmtSummaryByDigest) collectHistorySummaries(checker *stmtSummaryChe // MaxEncodedPlanSizeInBytes is the upper limit of the size of the plan and the binary plan in the stmt summary. var MaxEncodedPlanSizeInBytes = 1024 * 1024 -func newStmtSummaryByDigestElement(sei *StmtExecInfo, beginTime int64, intervalSeconds int64) *stmtSummaryByDigestElement { +func newStmtSummaryStats(sei *StmtExecInfo) *stmtSummaryStats { // sampleSQL / authUsers(sampleUser) / samplePlan / prevSQL / indexNames store the values shown at the first time, // because it compacts performance to update every time. - samplePlan, planHint, e := sei.PlanGenerator() + samplePlan, planHint, e := sei.LazyInfo.GetEncodedPlan() if e != nil { return nil } if len(samplePlan) > MaxEncodedPlanSizeInBytes { samplePlan = plancodec.PlanDiscardedEncoded } - binPlan := "" - if sei.BinaryPlanGenerator != nil { - binPlan = sei.BinaryPlanGenerator() - if len(binPlan) > MaxEncodedPlanSizeInBytes { - binPlan = plancodec.BinaryPlanDiscardedEncoded - } + binPlan := sei.LazyInfo.GetBinaryPlan() + if len(binPlan) > MaxEncodedPlanSizeInBytes { + binPlan = plancodec.BinaryPlanDiscardedEncoded } - ssElement := &stmtSummaryByDigestElement{ - beginTime: beginTime, - sampleSQL: formatSQL(sei.OriginalSQL.String()), + return &stmtSummaryStats{ + sampleSQL: formatSQL(sei.LazyInfo.GetOriginalSQL()), charset: sei.Charset, collation: sei.Collation, // PrevSQL is already truncated to cfg.Log.QueryLogMaxLen. @@ -690,6 +704,13 @@ func newStmtSummaryByDigestElement(sei *StmtExecInfo, beginTime int64, intervalS minResultRows: math.MaxInt64, resourceGroupName: sei.ResourceGroupName, } +} + +func newStmtSummaryByDigestElement(sei *StmtExecInfo, beginTime int64, intervalSeconds int64) *stmtSummaryByDigestElement { + ssElement := &stmtSummaryByDigestElement{ + beginTime: beginTime, + stmtSummaryStats: *newStmtSummaryStats(sei), + } ssElement.add(sei, intervalSeconds) return ssElement } @@ -712,215 +733,222 @@ func (ssElement *stmtSummaryByDigestElement) onExpire(intervalSeconds int64) { } } -func (ssElement *stmtSummaryByDigestElement) add(sei *StmtExecInfo, intervalSeconds int64) { - ssElement.Lock() - defer ssElement.Unlock() - +func (ssStats *stmtSummaryStats) add(sei *StmtExecInfo) { // add user to auth users set if len(sei.User) > 0 { - ssElement.authUsers[sei.User] = struct{}{} + ssStats.authUsers[sei.User] = struct{}{} } - // refreshInterval may change anytime, update endTime ASAP. - ssElement.endTime = ssElement.beginTime + intervalSeconds - ssElement.execCount++ + ssStats.execCount++ if !sei.Succeed { - ssElement.sumErrors++ + ssStats.sumErrors++ } - ssElement.sumWarnings += int(sei.StmtCtx.WarningCount()) + ssStats.sumWarnings += int(sei.StmtCtx.WarningCount()) // latency - ssElement.sumLatency += sei.TotalLatency - if sei.TotalLatency > ssElement.maxLatency { - ssElement.maxLatency = sei.TotalLatency + ssStats.sumLatency += sei.TotalLatency + if sei.TotalLatency > ssStats.maxLatency { + ssStats.maxLatency = sei.TotalLatency } - if sei.TotalLatency < ssElement.minLatency { - ssElement.minLatency = sei.TotalLatency + if sei.TotalLatency < ssStats.minLatency { + ssStats.minLatency = sei.TotalLatency } - ssElement.sumParseLatency += sei.ParseLatency - if sei.ParseLatency > ssElement.maxParseLatency { - ssElement.maxParseLatency = sei.ParseLatency + ssStats.sumParseLatency += sei.ParseLatency + if sei.ParseLatency > ssStats.maxParseLatency { + ssStats.maxParseLatency = sei.ParseLatency } - ssElement.sumCompileLatency += sei.CompileLatency - if sei.CompileLatency > ssElement.maxCompileLatency { - ssElement.maxCompileLatency = sei.CompileLatency + ssStats.sumCompileLatency += sei.CompileLatency + if sei.CompileLatency > ssStats.maxCompileLatency { + ssStats.maxCompileLatency = sei.CompileLatency } // coprocessor - numCopTasks := int64(sei.CopTasks.NumCopTasks) - ssElement.sumNumCopTasks += numCopTasks - if sei.CopTasks.MaxProcessTime > ssElement.maxCopProcessTime { - ssElement.maxCopProcessTime = sei.CopTasks.MaxProcessTime - ssElement.maxCopProcessAddress = sei.CopTasks.MaxProcessAddress - } - if sei.CopTasks.MaxWaitTime > ssElement.maxCopWaitTime { - ssElement.maxCopWaitTime = sei.CopTasks.MaxWaitTime - ssElement.maxCopWaitAddress = sei.CopTasks.MaxWaitAddress + if sei.CopTasks != nil { + ssStats.sumNumCopTasks += int64(sei.CopTasks.NumCopTasks) + ssStats.sumCopProcessTime += sei.CopTasks.TotProcessTime + if sei.CopTasks.MaxProcessTime > ssStats.maxCopProcessTime { + ssStats.maxCopProcessTime = sei.CopTasks.MaxProcessTime + ssStats.maxCopProcessAddress = sei.CopTasks.MaxProcessAddress + } + ssStats.sumCopWaitTime += sei.CopTasks.TotWaitTime + if sei.CopTasks.MaxWaitTime > ssStats.maxCopWaitTime { + ssStats.maxCopWaitTime = sei.CopTasks.MaxWaitTime + ssStats.maxCopWaitAddress = sei.CopTasks.MaxWaitAddress + } } // TiKV - ssElement.sumProcessTime += sei.ExecDetail.TimeDetail.ProcessTime - if sei.ExecDetail.TimeDetail.ProcessTime > ssElement.maxProcessTime { - ssElement.maxProcessTime = sei.ExecDetail.TimeDetail.ProcessTime + ssStats.sumProcessTime += sei.ExecDetail.TimeDetail.ProcessTime + if sei.ExecDetail.TimeDetail.ProcessTime > ssStats.maxProcessTime { + ssStats.maxProcessTime = sei.ExecDetail.TimeDetail.ProcessTime } - ssElement.sumWaitTime += sei.ExecDetail.TimeDetail.WaitTime - if sei.ExecDetail.TimeDetail.WaitTime > ssElement.maxWaitTime { - ssElement.maxWaitTime = sei.ExecDetail.TimeDetail.WaitTime + ssStats.sumWaitTime += sei.ExecDetail.TimeDetail.WaitTime + if sei.ExecDetail.TimeDetail.WaitTime > ssStats.maxWaitTime { + ssStats.maxWaitTime = sei.ExecDetail.TimeDetail.WaitTime } - ssElement.sumBackoffTime += sei.ExecDetail.BackoffTime - if sei.ExecDetail.BackoffTime > ssElement.maxBackoffTime { - ssElement.maxBackoffTime = sei.ExecDetail.BackoffTime + ssStats.sumBackoffTime += sei.ExecDetail.BackoffTime + if sei.ExecDetail.BackoffTime > ssStats.maxBackoffTime { + ssStats.maxBackoffTime = sei.ExecDetail.BackoffTime } if sei.ExecDetail.ScanDetail != nil { - ssElement.sumTotalKeys += sei.ExecDetail.ScanDetail.TotalKeys - if sei.ExecDetail.ScanDetail.TotalKeys > ssElement.maxTotalKeys { - ssElement.maxTotalKeys = sei.ExecDetail.ScanDetail.TotalKeys + ssStats.sumTotalKeys += sei.ExecDetail.ScanDetail.TotalKeys + if sei.ExecDetail.ScanDetail.TotalKeys > ssStats.maxTotalKeys { + ssStats.maxTotalKeys = sei.ExecDetail.ScanDetail.TotalKeys } - ssElement.sumProcessedKeys += sei.ExecDetail.ScanDetail.ProcessedKeys - if sei.ExecDetail.ScanDetail.ProcessedKeys > ssElement.maxProcessedKeys { - ssElement.maxProcessedKeys = sei.ExecDetail.ScanDetail.ProcessedKeys + ssStats.sumProcessedKeys += sei.ExecDetail.ScanDetail.ProcessedKeys + if sei.ExecDetail.ScanDetail.ProcessedKeys > ssStats.maxProcessedKeys { + ssStats.maxProcessedKeys = sei.ExecDetail.ScanDetail.ProcessedKeys } - ssElement.sumRocksdbDeleteSkippedCount += sei.ExecDetail.ScanDetail.RocksdbDeleteSkippedCount - if sei.ExecDetail.ScanDetail.RocksdbDeleteSkippedCount > ssElement.maxRocksdbDeleteSkippedCount { - ssElement.maxRocksdbDeleteSkippedCount = sei.ExecDetail.ScanDetail.RocksdbDeleteSkippedCount + ssStats.sumRocksdbDeleteSkippedCount += sei.ExecDetail.ScanDetail.RocksdbDeleteSkippedCount + if sei.ExecDetail.ScanDetail.RocksdbDeleteSkippedCount > ssStats.maxRocksdbDeleteSkippedCount { + ssStats.maxRocksdbDeleteSkippedCount = sei.ExecDetail.ScanDetail.RocksdbDeleteSkippedCount } - ssElement.sumRocksdbKeySkippedCount += sei.ExecDetail.ScanDetail.RocksdbKeySkippedCount - if sei.ExecDetail.ScanDetail.RocksdbKeySkippedCount > ssElement.maxRocksdbKeySkippedCount { - ssElement.maxRocksdbKeySkippedCount = sei.ExecDetail.ScanDetail.RocksdbKeySkippedCount + ssStats.sumRocksdbKeySkippedCount += sei.ExecDetail.ScanDetail.RocksdbKeySkippedCount + if sei.ExecDetail.ScanDetail.RocksdbKeySkippedCount > ssStats.maxRocksdbKeySkippedCount { + ssStats.maxRocksdbKeySkippedCount = sei.ExecDetail.ScanDetail.RocksdbKeySkippedCount } - ssElement.sumRocksdbBlockCacheHitCount += sei.ExecDetail.ScanDetail.RocksdbBlockCacheHitCount - if sei.ExecDetail.ScanDetail.RocksdbBlockCacheHitCount > ssElement.maxRocksdbBlockCacheHitCount { - ssElement.maxRocksdbBlockCacheHitCount = sei.ExecDetail.ScanDetail.RocksdbBlockCacheHitCount + ssStats.sumRocksdbBlockCacheHitCount += sei.ExecDetail.ScanDetail.RocksdbBlockCacheHitCount + if sei.ExecDetail.ScanDetail.RocksdbBlockCacheHitCount > ssStats.maxRocksdbBlockCacheHitCount { + ssStats.maxRocksdbBlockCacheHitCount = sei.ExecDetail.ScanDetail.RocksdbBlockCacheHitCount } - ssElement.sumRocksdbBlockReadCount += sei.ExecDetail.ScanDetail.RocksdbBlockReadCount - if sei.ExecDetail.ScanDetail.RocksdbBlockReadCount > ssElement.maxRocksdbBlockReadCount { - ssElement.maxRocksdbBlockReadCount = sei.ExecDetail.ScanDetail.RocksdbBlockReadCount + ssStats.sumRocksdbBlockReadCount += sei.ExecDetail.ScanDetail.RocksdbBlockReadCount + if sei.ExecDetail.ScanDetail.RocksdbBlockReadCount > ssStats.maxRocksdbBlockReadCount { + ssStats.maxRocksdbBlockReadCount = sei.ExecDetail.ScanDetail.RocksdbBlockReadCount } - ssElement.sumRocksdbBlockReadByte += sei.ExecDetail.ScanDetail.RocksdbBlockReadByte - if sei.ExecDetail.ScanDetail.RocksdbBlockReadByte > ssElement.maxRocksdbBlockReadByte { - ssElement.maxRocksdbBlockReadByte = sei.ExecDetail.ScanDetail.RocksdbBlockReadByte + ssStats.sumRocksdbBlockReadByte += sei.ExecDetail.ScanDetail.RocksdbBlockReadByte + if sei.ExecDetail.ScanDetail.RocksdbBlockReadByte > ssStats.maxRocksdbBlockReadByte { + ssStats.maxRocksdbBlockReadByte = sei.ExecDetail.ScanDetail.RocksdbBlockReadByte } } // txn commitDetails := sei.ExecDetail.CommitDetail if commitDetails != nil { - ssElement.commitCount++ - ssElement.sumPrewriteTime += commitDetails.PrewriteTime - if commitDetails.PrewriteTime > ssElement.maxPrewriteTime { - ssElement.maxPrewriteTime = commitDetails.PrewriteTime + ssStats.commitCount++ + ssStats.sumPrewriteTime += commitDetails.PrewriteTime + if commitDetails.PrewriteTime > ssStats.maxPrewriteTime { + ssStats.maxPrewriteTime = commitDetails.PrewriteTime } - ssElement.sumCommitTime += commitDetails.CommitTime - if commitDetails.CommitTime > ssElement.maxCommitTime { - ssElement.maxCommitTime = commitDetails.CommitTime + ssStats.sumCommitTime += commitDetails.CommitTime + if commitDetails.CommitTime > ssStats.maxCommitTime { + ssStats.maxCommitTime = commitDetails.CommitTime } - ssElement.sumGetCommitTsTime += commitDetails.GetCommitTsTime - if commitDetails.GetCommitTsTime > ssElement.maxGetCommitTsTime { - ssElement.maxGetCommitTsTime = commitDetails.GetCommitTsTime + ssStats.sumGetCommitTsTime += commitDetails.GetCommitTsTime + if commitDetails.GetCommitTsTime > ssStats.maxGetCommitTsTime { + ssStats.maxGetCommitTsTime = commitDetails.GetCommitTsTime } resolveLockTime := atomic.LoadInt64(&commitDetails.ResolveLock.ResolveLockTime) - ssElement.sumResolveLockTime += resolveLockTime - if resolveLockTime > ssElement.maxResolveLockTime { - ssElement.maxResolveLockTime = resolveLockTime + ssStats.sumResolveLockTime += resolveLockTime + if resolveLockTime > ssStats.maxResolveLockTime { + ssStats.maxResolveLockTime = resolveLockTime } - ssElement.sumLocalLatchTime += commitDetails.LocalLatchTime - if commitDetails.LocalLatchTime > ssElement.maxLocalLatchTime { - ssElement.maxLocalLatchTime = commitDetails.LocalLatchTime + ssStats.sumLocalLatchTime += commitDetails.LocalLatchTime + if commitDetails.LocalLatchTime > ssStats.maxLocalLatchTime { + ssStats.maxLocalLatchTime = commitDetails.LocalLatchTime } - ssElement.sumWriteKeys += int64(commitDetails.WriteKeys) - if commitDetails.WriteKeys > ssElement.maxWriteKeys { - ssElement.maxWriteKeys = commitDetails.WriteKeys + ssStats.sumWriteKeys += int64(commitDetails.WriteKeys) + if commitDetails.WriteKeys > ssStats.maxWriteKeys { + ssStats.maxWriteKeys = commitDetails.WriteKeys } - ssElement.sumWriteSize += int64(commitDetails.WriteSize) - if commitDetails.WriteSize > ssElement.maxWriteSize { - ssElement.maxWriteSize = commitDetails.WriteSize + ssStats.sumWriteSize += int64(commitDetails.WriteSize) + if commitDetails.WriteSize > ssStats.maxWriteSize { + ssStats.maxWriteSize = commitDetails.WriteSize } prewriteRegionNum := atomic.LoadInt32(&commitDetails.PrewriteRegionNum) - ssElement.sumPrewriteRegionNum += int64(prewriteRegionNum) - if prewriteRegionNum > ssElement.maxPrewriteRegionNum { - ssElement.maxPrewriteRegionNum = prewriteRegionNum + ssStats.sumPrewriteRegionNum += int64(prewriteRegionNum) + if prewriteRegionNum > ssStats.maxPrewriteRegionNum { + ssStats.maxPrewriteRegionNum = prewriteRegionNum } - ssElement.sumTxnRetry += int64(commitDetails.TxnRetry) - if commitDetails.TxnRetry > ssElement.maxTxnRetry { - ssElement.maxTxnRetry = commitDetails.TxnRetry + ssStats.sumTxnRetry += int64(commitDetails.TxnRetry) + if commitDetails.TxnRetry > ssStats.maxTxnRetry { + ssStats.maxTxnRetry = commitDetails.TxnRetry } commitDetails.Mu.Lock() commitBackoffTime := commitDetails.Mu.CommitBackoffTime - ssElement.sumCommitBackoffTime += commitBackoffTime - if commitBackoffTime > ssElement.maxCommitBackoffTime { - ssElement.maxCommitBackoffTime = commitBackoffTime + ssStats.sumCommitBackoffTime += commitBackoffTime + if commitBackoffTime > ssStats.maxCommitBackoffTime { + ssStats.maxCommitBackoffTime = commitBackoffTime } - ssElement.sumBackoffTimes += int64(len(commitDetails.Mu.PrewriteBackoffTypes)) + ssStats.sumBackoffTimes += int64(len(commitDetails.Mu.PrewriteBackoffTypes)) for _, backoffType := range commitDetails.Mu.PrewriteBackoffTypes { - ssElement.backoffTypes[backoffType]++ + ssStats.backoffTypes[backoffType]++ } - ssElement.sumBackoffTimes += int64(len(commitDetails.Mu.CommitBackoffTypes)) + ssStats.sumBackoffTimes += int64(len(commitDetails.Mu.CommitBackoffTypes)) for _, backoffType := range commitDetails.Mu.CommitBackoffTypes { - ssElement.backoffTypes[backoffType]++ + ssStats.backoffTypes[backoffType]++ } commitDetails.Mu.Unlock() } // plan cache if sei.PlanInCache { - ssElement.planInCache = true - ssElement.planCacheHits++ + ssStats.planInCache = true + ssStats.planCacheHits++ } else { - ssElement.planInCache = false + ssStats.planInCache = false } if sei.PlanCacheUnqualified != "" { - ssElement.planCacheUnqualifiedCount++ - ssElement.lastPlanCacheUnqualified = sei.PlanCacheUnqualified + ssStats.planCacheUnqualifiedCount++ + ssStats.lastPlanCacheUnqualified = sei.PlanCacheUnqualified } // SPM if sei.PlanInBinding { - ssElement.planInBinding = true + ssStats.planInBinding = true } else { - ssElement.planInBinding = false + ssStats.planInBinding = false } // other - ssElement.sumAffectedRows += sei.StmtCtx.AffectedRows() - ssElement.sumMem += sei.MemMax - if sei.MemMax > ssElement.maxMem { - ssElement.maxMem = sei.MemMax + ssStats.sumAffectedRows += sei.StmtCtx.AffectedRows() + ssStats.sumMem += sei.MemMax + if sei.MemMax > ssStats.maxMem { + ssStats.maxMem = sei.MemMax } - ssElement.sumDisk += sei.DiskMax - if sei.DiskMax > ssElement.maxDisk { - ssElement.maxDisk = sei.DiskMax + ssStats.sumDisk += sei.DiskMax + if sei.DiskMax > ssStats.maxDisk { + ssStats.maxDisk = sei.DiskMax } - if sei.StartTime.Before(ssElement.firstSeen) { - ssElement.firstSeen = sei.StartTime + if sei.StartTime.Before(ssStats.firstSeen) { + ssStats.firstSeen = sei.StartTime } - if ssElement.lastSeen.Before(sei.StartTime) { - ssElement.lastSeen = sei.StartTime + if ssStats.lastSeen.Before(sei.StartTime) { + ssStats.lastSeen = sei.StartTime } if sei.ExecRetryCount > 0 { - ssElement.execRetryCount += sei.ExecRetryCount - ssElement.execRetryTime += sei.ExecRetryTime + ssStats.execRetryCount += sei.ExecRetryCount + ssStats.execRetryTime += sei.ExecRetryTime } if sei.ResultRows > 0 { - ssElement.sumResultRows += sei.ResultRows - if ssElement.maxResultRows < sei.ResultRows { - ssElement.maxResultRows = sei.ResultRows + ssStats.sumResultRows += sei.ResultRows + if ssStats.maxResultRows < sei.ResultRows { + ssStats.maxResultRows = sei.ResultRows } - if ssElement.minResultRows > sei.ResultRows { - ssElement.minResultRows = sei.ResultRows + if ssStats.minResultRows > sei.ResultRows { + ssStats.minResultRows = sei.ResultRows } } else { - ssElement.minResultRows = 0 + ssStats.minResultRows = 0 } - ssElement.sumKVTotal += time.Duration(atomic.LoadInt64(&sei.TiKVExecDetails.WaitKVRespDuration)) - ssElement.sumPDTotal += time.Duration(atomic.LoadInt64(&sei.TiKVExecDetails.WaitPDRespDuration)) - ssElement.sumBackoffTotal += time.Duration(atomic.LoadInt64(&sei.TiKVExecDetails.BackoffDuration)) - ssElement.sumWriteSQLRespTotal += sei.StmtExecDetails.WriteSQLRespDuration - ssElement.sumTidbCPU += sei.CPUUsages.TidbCPUTime - ssElement.sumTikvCPU += sei.CPUUsages.TikvCPUTime + ssStats.sumKVTotal += time.Duration(atomic.LoadInt64(&sei.TiKVExecDetails.WaitKVRespDuration)) + ssStats.sumPDTotal += time.Duration(atomic.LoadInt64(&sei.TiKVExecDetails.WaitPDRespDuration)) + ssStats.sumBackoffTotal += time.Duration(atomic.LoadInt64(&sei.TiKVExecDetails.BackoffDuration)) + ssStats.sumWriteSQLRespTotal += sei.StmtExecDetails.WriteSQLRespDuration + ssStats.sumTidbCPU += sei.CPUUsages.TidbCPUTime + ssStats.sumTikvCPU += sei.CPUUsages.TikvCPUTime // request-units - ssElement.StmtRUSummary.Add(sei.RUDetail) + ssStats.StmtRUSummary.Add(sei.RUDetail) +} + +func (ssElement *stmtSummaryByDigestElement) add(sei *StmtExecInfo, intervalSeconds int64) { + ssElement.Lock() + defer ssElement.Unlock() + + // refreshInterval may change anytime, update endTime ASAP. + ssElement.endTime = ssElement.beginTime + intervalSeconds + ssElement.stmtSummaryStats.add(sei) } // Truncate SQL to maxSQLLength. diff --git a/pkg/util/stmtsummary/statement_summary_test.go b/pkg/util/stmtsummary/statement_summary_test.go index 60272545c68a5..f07ce4ad86c8a 100644 --- a/pkg/util/stmtsummary/statement_summary_test.go +++ b/pkg/util/stmtsummary/statement_summary_test.go @@ -32,7 +32,6 @@ import ( "github.com/pingcap/tidb/pkg/util/execdetails" "github.com/pingcap/tidb/pkg/util/plancodec" "github.com/pingcap/tidb/pkg/util/ppcpuusage" - "github.com/pingcap/tidb/pkg/util/stringutil" "github.com/stretchr/testify/require" "github.com/tikv/client-go/v2/util" ) @@ -82,74 +81,78 @@ func TestAddStatement(t *testing.T) { planDigest: stmtExecInfo1.PlanDigest, resourceGroupName: stmtExecInfo1.ResourceGroupName, } - samplePlan, _, _ := stmtExecInfo1.PlanGenerator() + samplePlan, _, _ := stmtExecInfo1.LazyInfo.GetEncodedPlan() stmtExecInfo1.ExecDetail.CommitDetail.Mu.Lock() expectedSummaryElement := stmtSummaryByDigestElement{ - beginTime: now + 60, - endTime: now + 1860, - sampleSQL: stmtExecInfo1.OriginalSQL.String(), - samplePlan: samplePlan, - indexNames: stmtExecInfo1.StmtCtx.IndexNames, - execCount: 1, - sumLatency: stmtExecInfo1.TotalLatency, - maxLatency: stmtExecInfo1.TotalLatency, - minLatency: stmtExecInfo1.TotalLatency, - sumParseLatency: stmtExecInfo1.ParseLatency, - maxParseLatency: stmtExecInfo1.ParseLatency, - sumCompileLatency: stmtExecInfo1.CompileLatency, - maxCompileLatency: stmtExecInfo1.CompileLatency, - sumNumCopTasks: int64(stmtExecInfo1.CopTasks.NumCopTasks), - maxCopProcessTime: stmtExecInfo1.CopTasks.MaxProcessTime, - maxCopProcessAddress: stmtExecInfo1.CopTasks.MaxProcessAddress, - maxCopWaitTime: stmtExecInfo1.CopTasks.MaxWaitTime, - maxCopWaitAddress: stmtExecInfo1.CopTasks.MaxWaitAddress, - sumProcessTime: stmtExecInfo1.ExecDetail.TimeDetail.ProcessTime, - maxProcessTime: stmtExecInfo1.ExecDetail.TimeDetail.ProcessTime, - sumWaitTime: stmtExecInfo1.ExecDetail.TimeDetail.WaitTime, - maxWaitTime: stmtExecInfo1.ExecDetail.TimeDetail.WaitTime, - sumBackoffTime: stmtExecInfo1.ExecDetail.BackoffTime, - maxBackoffTime: stmtExecInfo1.ExecDetail.BackoffTime, - sumTotalKeys: stmtExecInfo1.ExecDetail.ScanDetail.TotalKeys, - maxTotalKeys: stmtExecInfo1.ExecDetail.ScanDetail.TotalKeys, - sumProcessedKeys: stmtExecInfo1.ExecDetail.ScanDetail.ProcessedKeys, - maxProcessedKeys: stmtExecInfo1.ExecDetail.ScanDetail.ProcessedKeys, - sumGetCommitTsTime: stmtExecInfo1.ExecDetail.CommitDetail.GetCommitTsTime, - maxGetCommitTsTime: stmtExecInfo1.ExecDetail.CommitDetail.GetCommitTsTime, - sumPrewriteTime: stmtExecInfo1.ExecDetail.CommitDetail.PrewriteTime, - maxPrewriteTime: stmtExecInfo1.ExecDetail.CommitDetail.PrewriteTime, - sumCommitTime: stmtExecInfo1.ExecDetail.CommitDetail.CommitTime, - maxCommitTime: stmtExecInfo1.ExecDetail.CommitDetail.CommitTime, - sumLocalLatchTime: stmtExecInfo1.ExecDetail.CommitDetail.LocalLatchTime, - maxLocalLatchTime: stmtExecInfo1.ExecDetail.CommitDetail.LocalLatchTime, - sumCommitBackoffTime: stmtExecInfo1.ExecDetail.CommitDetail.Mu.CommitBackoffTime, - maxCommitBackoffTime: stmtExecInfo1.ExecDetail.CommitDetail.Mu.CommitBackoffTime, - sumResolveLockTime: stmtExecInfo1.ExecDetail.CommitDetail.ResolveLock.ResolveLockTime, - maxResolveLockTime: stmtExecInfo1.ExecDetail.CommitDetail.ResolveLock.ResolveLockTime, - sumWriteKeys: int64(stmtExecInfo1.ExecDetail.CommitDetail.WriteKeys), - maxWriteKeys: stmtExecInfo1.ExecDetail.CommitDetail.WriteKeys, - sumWriteSize: int64(stmtExecInfo1.ExecDetail.CommitDetail.WriteSize), - maxWriteSize: stmtExecInfo1.ExecDetail.CommitDetail.WriteSize, - sumPrewriteRegionNum: int64(stmtExecInfo1.ExecDetail.CommitDetail.PrewriteRegionNum), - maxPrewriteRegionNum: stmtExecInfo1.ExecDetail.CommitDetail.PrewriteRegionNum, - sumTxnRetry: int64(stmtExecInfo1.ExecDetail.CommitDetail.TxnRetry), - maxTxnRetry: stmtExecInfo1.ExecDetail.CommitDetail.TxnRetry, - backoffTypes: make(map[string]int), - sumMem: stmtExecInfo1.MemMax, - maxMem: stmtExecInfo1.MemMax, - sumDisk: stmtExecInfo1.DiskMax, - maxDisk: stmtExecInfo1.DiskMax, - sumAffectedRows: stmtExecInfo1.StmtCtx.AffectedRows(), - firstSeen: stmtExecInfo1.StartTime, - lastSeen: stmtExecInfo1.StartTime, - StmtRUSummary: StmtRUSummary{ - SumRRU: stmtExecInfo1.RUDetail.RRU(), - MaxRRU: stmtExecInfo1.RUDetail.RRU(), - SumWRU: stmtExecInfo1.RUDetail.WRU(), - MaxWRU: stmtExecInfo1.RUDetail.WRU(), - SumRUWaitDuration: stmtExecInfo1.RUDetail.RUWaitDuration(), - MaxRUWaitDuration: stmtExecInfo1.RUDetail.RUWaitDuration(), + beginTime: now + 60, + endTime: now + 1860, + stmtSummaryStats: stmtSummaryStats{ + sampleSQL: stmtExecInfo1.LazyInfo.GetOriginalSQL(), + samplePlan: samplePlan, + indexNames: stmtExecInfo1.StmtCtx.IndexNames, + execCount: 1, + sumLatency: stmtExecInfo1.TotalLatency, + maxLatency: stmtExecInfo1.TotalLatency, + minLatency: stmtExecInfo1.TotalLatency, + sumParseLatency: stmtExecInfo1.ParseLatency, + maxParseLatency: stmtExecInfo1.ParseLatency, + sumCompileLatency: stmtExecInfo1.CompileLatency, + maxCompileLatency: stmtExecInfo1.CompileLatency, + sumNumCopTasks: int64(stmtExecInfo1.CopTasks.NumCopTasks), + sumCopProcessTime: stmtExecInfo1.CopTasks.TotProcessTime, + maxCopProcessTime: stmtExecInfo1.CopTasks.MaxProcessTime, + maxCopProcessAddress: stmtExecInfo1.CopTasks.MaxProcessAddress, + sumCopWaitTime: stmtExecInfo1.CopTasks.TotWaitTime, + maxCopWaitTime: stmtExecInfo1.CopTasks.MaxWaitTime, + maxCopWaitAddress: stmtExecInfo1.CopTasks.MaxWaitAddress, + sumProcessTime: stmtExecInfo1.ExecDetail.TimeDetail.ProcessTime, + maxProcessTime: stmtExecInfo1.ExecDetail.TimeDetail.ProcessTime, + sumWaitTime: stmtExecInfo1.ExecDetail.TimeDetail.WaitTime, + maxWaitTime: stmtExecInfo1.ExecDetail.TimeDetail.WaitTime, + sumBackoffTime: stmtExecInfo1.ExecDetail.BackoffTime, + maxBackoffTime: stmtExecInfo1.ExecDetail.BackoffTime, + sumTotalKeys: stmtExecInfo1.ExecDetail.ScanDetail.TotalKeys, + maxTotalKeys: stmtExecInfo1.ExecDetail.ScanDetail.TotalKeys, + sumProcessedKeys: stmtExecInfo1.ExecDetail.ScanDetail.ProcessedKeys, + maxProcessedKeys: stmtExecInfo1.ExecDetail.ScanDetail.ProcessedKeys, + sumGetCommitTsTime: stmtExecInfo1.ExecDetail.CommitDetail.GetCommitTsTime, + maxGetCommitTsTime: stmtExecInfo1.ExecDetail.CommitDetail.GetCommitTsTime, + sumPrewriteTime: stmtExecInfo1.ExecDetail.CommitDetail.PrewriteTime, + maxPrewriteTime: stmtExecInfo1.ExecDetail.CommitDetail.PrewriteTime, + sumCommitTime: stmtExecInfo1.ExecDetail.CommitDetail.CommitTime, + maxCommitTime: stmtExecInfo1.ExecDetail.CommitDetail.CommitTime, + sumLocalLatchTime: stmtExecInfo1.ExecDetail.CommitDetail.LocalLatchTime, + maxLocalLatchTime: stmtExecInfo1.ExecDetail.CommitDetail.LocalLatchTime, + sumCommitBackoffTime: stmtExecInfo1.ExecDetail.CommitDetail.Mu.CommitBackoffTime, + maxCommitBackoffTime: stmtExecInfo1.ExecDetail.CommitDetail.Mu.CommitBackoffTime, + sumResolveLockTime: stmtExecInfo1.ExecDetail.CommitDetail.ResolveLock.ResolveLockTime, + maxResolveLockTime: stmtExecInfo1.ExecDetail.CommitDetail.ResolveLock.ResolveLockTime, + sumWriteKeys: int64(stmtExecInfo1.ExecDetail.CommitDetail.WriteKeys), + maxWriteKeys: stmtExecInfo1.ExecDetail.CommitDetail.WriteKeys, + sumWriteSize: int64(stmtExecInfo1.ExecDetail.CommitDetail.WriteSize), + maxWriteSize: stmtExecInfo1.ExecDetail.CommitDetail.WriteSize, + sumPrewriteRegionNum: int64(stmtExecInfo1.ExecDetail.CommitDetail.PrewriteRegionNum), + maxPrewriteRegionNum: stmtExecInfo1.ExecDetail.CommitDetail.PrewriteRegionNum, + sumTxnRetry: int64(stmtExecInfo1.ExecDetail.CommitDetail.TxnRetry), + maxTxnRetry: stmtExecInfo1.ExecDetail.CommitDetail.TxnRetry, + backoffTypes: make(map[string]int), + sumMem: stmtExecInfo1.MemMax, + maxMem: stmtExecInfo1.MemMax, + sumDisk: stmtExecInfo1.DiskMax, + maxDisk: stmtExecInfo1.DiskMax, + sumAffectedRows: stmtExecInfo1.StmtCtx.AffectedRows(), + firstSeen: stmtExecInfo1.StartTime, + lastSeen: stmtExecInfo1.StartTime, + StmtRUSummary: StmtRUSummary{ + SumRRU: stmtExecInfo1.RUDetail.RRU(), + MaxRRU: stmtExecInfo1.RUDetail.RRU(), + SumWRU: stmtExecInfo1.RUDetail.WRU(), + MaxWRU: stmtExecInfo1.RUDetail.WRU(), + SumRUWaitDuration: stmtExecInfo1.RUDetail.RUWaitDuration(), + MaxRUWaitDuration: stmtExecInfo1.RUDetail.RUWaitDuration(), + }, + resourceGroupName: stmtExecInfo1.ResourceGroupName, }, - resourceGroupName: stmtExecInfo1.ResourceGroupName, } stmtExecInfo1.ExecDetail.CommitDetail.Mu.Unlock() history := list.New() @@ -172,11 +175,9 @@ func TestAddStatement(t *testing.T) { // greater than that of the first statement. stmtExecInfo2 := &StmtExecInfo{ SchemaName: "schema_name", - OriginalSQL: stringutil.StringerStr("original_sql2"), NormalizedSQL: "normalized_sql", Digest: "digest", PlanDigest: "plan_digest", - PlanGenerator: emptyPlanGenerator, User: "user2", TotalLatency: 20000, ParseLatency: 200, @@ -187,12 +188,14 @@ func TestAddStatement(t *testing.T) { P90ProcessTime: 20000, MaxProcessAddress: "200", MaxProcessTime: 25000, + TotProcessTime: 40000, AvgWaitTime: 200, P90WaitTime: 2000, MaxWaitAddress: "201", MaxWaitTime: 2500, + TotWaitTime: 40000, }, - ExecDetail: &execdetails.ExecDetails{ + ExecDetail: execdetails.ExecDetails{ BackoffTime: 180, RequestCount: 20, CommitDetail: &util.CommitDetails{ @@ -245,6 +248,13 @@ func TestAddStatement(t *testing.T) { Succeed: true, RUDetail: util.NewRUDetailsWith(123.0, 45.6, 2*time.Second), ResourceGroupName: "rg1", + LazyInfo: &mockLazyInfo{ + originalSQL: "original_sql2", + plan: "", + hintStr: "", + binPlan: "", + planDigest: "", + }, } stmtExecInfo2.StmtCtx.AddAffectedRows(200) expectedSummaryElement.execCount++ @@ -255,8 +265,10 @@ func TestAddStatement(t *testing.T) { expectedSummaryElement.sumCompileLatency += stmtExecInfo2.CompileLatency expectedSummaryElement.maxCompileLatency = stmtExecInfo2.CompileLatency expectedSummaryElement.sumNumCopTasks += int64(stmtExecInfo2.CopTasks.NumCopTasks) + expectedSummaryElement.sumCopProcessTime += stmtExecInfo2.CopTasks.TotProcessTime expectedSummaryElement.maxCopProcessTime = stmtExecInfo2.CopTasks.MaxProcessTime expectedSummaryElement.maxCopProcessAddress = stmtExecInfo2.CopTasks.MaxProcessAddress + expectedSummaryElement.sumCopWaitTime += stmtExecInfo2.CopTasks.TotWaitTime expectedSummaryElement.maxCopWaitTime = stmtExecInfo2.CopTasks.MaxWaitTime expectedSummaryElement.maxCopWaitAddress = stmtExecInfo2.CopTasks.MaxWaitAddress expectedSummaryElement.sumProcessTime += stmtExecInfo2.ExecDetail.TimeDetail.ProcessTime @@ -315,11 +327,9 @@ func TestAddStatement(t *testing.T) { // less than that of the first statement. stmtExecInfo3 := &StmtExecInfo{ SchemaName: "schema_name", - OriginalSQL: stringutil.StringerStr("original_sql3"), NormalizedSQL: "normalized_sql", Digest: "digest", PlanDigest: "plan_digest", - PlanGenerator: emptyPlanGenerator, User: "user3", TotalLatency: 1000, ParseLatency: 50, @@ -330,12 +340,14 @@ func TestAddStatement(t *testing.T) { P90ProcessTime: 300, MaxProcessAddress: "300", MaxProcessTime: 350, + TotProcessTime: 200, AvgWaitTime: 20, P90WaitTime: 200, MaxWaitAddress: "301", MaxWaitTime: 250, + TotWaitTime: 40, }, - ExecDetail: &execdetails.ExecDetails{ + ExecDetail: execdetails.ExecDetails{ BackoffTime: 18, RequestCount: 2, CommitDetail: &util.CommitDetails{ @@ -389,6 +401,13 @@ func TestAddStatement(t *testing.T) { Succeed: true, RUDetail: util.NewRUDetailsWith(0.12, 0.34, 5*time.Microsecond), ResourceGroupName: "rg1", + LazyInfo: &mockLazyInfo{ + originalSQL: "original_sql3", + plan: "", + hintStr: "", + binPlan: "", + planDigest: "", + }, } stmtExecInfo3.StmtCtx.AddAffectedRows(20000) expectedSummaryElement.execCount++ @@ -397,6 +416,8 @@ func TestAddStatement(t *testing.T) { expectedSummaryElement.sumParseLatency += stmtExecInfo3.ParseLatency expectedSummaryElement.sumCompileLatency += stmtExecInfo3.CompileLatency expectedSummaryElement.sumNumCopTasks += int64(stmtExecInfo3.CopTasks.NumCopTasks) + expectedSummaryElement.sumCopProcessTime += stmtExecInfo3.CopTasks.TotProcessTime + expectedSummaryElement.sumCopWaitTime += stmtExecInfo3.CopTasks.TotWaitTime expectedSummaryElement.sumProcessTime += stmtExecInfo3.ExecDetail.TimeDetail.ProcessTime expectedSummaryElement.sumWaitTime += stmtExecInfo3.ExecDetail.TimeDetail.WaitTime expectedSummaryElement.sumBackoffTime += stmtExecInfo3.ExecDetail.BackoffTime @@ -475,12 +496,16 @@ func TestAddStatement(t *testing.T) { // Test for plan too large stmtExecInfo7 := stmtExecInfo1 stmtExecInfo7.PlanDigest = "plan_digest7" - stmtExecInfo7.PlanGenerator = func() (string, string, any) { - buf := make([]byte, MaxEncodedPlanSizeInBytes+1) - for i := range buf { - buf[i] = 'a' - } - return string(buf), "", nil + buf := make([]byte, MaxEncodedPlanSizeInBytes+1) + for i := range buf { + buf[i] = 'a' + } + stmtExecInfo7.LazyInfo = &mockLazyInfo{ + originalSQL: stmtExecInfo1.LazyInfo.GetOriginalSQL(), + plan: string(buf), + hintStr: "", + binPlan: "", + planDigest: "", } key = &stmtSummaryByDigestKey{ schemaName: stmtExecInfo7.SchemaName, @@ -535,8 +560,10 @@ func matchStmtSummaryByDigest(first, second *stmtSummaryByDigest) bool { ssElement1.sumCompileLatency != ssElement2.sumCompileLatency || ssElement1.maxCompileLatency != ssElement2.maxCompileLatency || ssElement1.sumNumCopTasks != ssElement2.sumNumCopTasks || + ssElement1.sumCopProcessTime != ssElement2.sumCopProcessTime || ssElement1.maxCopProcessTime != ssElement2.maxCopProcessTime || ssElement1.maxCopProcessAddress != ssElement2.maxCopProcessAddress || + ssElement1.sumCopWaitTime != ssElement2.sumCopWaitTime || ssElement1.maxCopWaitTime != ssElement2.maxCopWaitTime || ssElement1.maxCopWaitAddress != ssElement2.maxCopWaitAddress || ssElement1.sumProcessTime != ssElement2.sumProcessTime || @@ -621,11 +648,9 @@ func generateAnyExecInfo() *StmtExecInfo { stmtExecInfo := &StmtExecInfo{ SchemaName: "schema_name", - OriginalSQL: stringutil.StringerStr("original_sql1"), NormalizedSQL: "normalized_sql", Digest: "digest", PlanDigest: "plan_digest", - PlanGenerator: emptyPlanGenerator, User: "user", TotalLatency: 10000, ParseLatency: 100, @@ -636,12 +661,14 @@ func generateAnyExecInfo() *StmtExecInfo { P90ProcessTime: 10000, MaxProcessAddress: "127", MaxProcessTime: 15000, + TotProcessTime: 10000, AvgWaitTime: 100, P90WaitTime: 1000, MaxWaitAddress: "128", MaxWaitTime: 1500, + TotWaitTime: 1000, }, - ExecDetail: &execdetails.ExecDetails{ + ExecDetail: execdetails.ExecDetails{ BackoffTime: 80, RequestCount: 10, CommitDetail: &util.CommitDetails{ @@ -696,11 +723,42 @@ func generateAnyExecInfo() *StmtExecInfo { ResourceGroupName: "rg1", RUDetail: util.NewRUDetailsWith(1.1, 2.5, 2*time.Millisecond), CPUUsages: ppcpuusage.CPUUsages{TidbCPUTime: time.Duration(20), TikvCPUTime: time.Duration(100)}, + LazyInfo: &mockLazyInfo{ + originalSQL: "original_sql1", + plan: "", + hintStr: "", + binPlan: "", + planDigest: "", + }, } stmtExecInfo.StmtCtx.AddAffectedRows(10000) return stmtExecInfo } +type mockLazyInfo struct { + originalSQL string + plan string + hintStr string + binPlan string + planDigest string +} + +func (a *mockLazyInfo) GetOriginalSQL() string { + return a.originalSQL +} + +func (a *mockLazyInfo) GetEncodedPlan() (p string, h string, e any) { + return a.plan, a.hintStr, nil +} + +func (a *mockLazyInfo) GetBinaryPlan() string { + return a.binPlan +} + +func (a *mockLazyInfo) GetPlanDigest() string { + return a.planDigest +} + func newStmtSummaryReaderForTest(ssMap *stmtSummaryByDigestMap) *stmtSummaryReader { columnNames := []string{ SummaryBeginTimeStr, @@ -860,7 +918,7 @@ func TestToDatum(t *testing.T) { stmtExecInfo1.ExecDetail.CommitDetail.TxnRetry, stmtExecInfo1.ExecDetail.CommitDetail.TxnRetry, 0, 0, 1, fmt.Sprintf("%s:1", boTxnLockName), stmtExecInfo1.MemMax, stmtExecInfo1.MemMax, stmtExecInfo1.DiskMax, stmtExecInfo1.DiskMax, 0, 0, 0, 0, 0, 0, 0, 0, stmtExecInfo1.StmtCtx.AffectedRows(), - f, f, 0, 0, 0, stmtExecInfo1.OriginalSQL, stmtExecInfo1.PrevSQL, "plan_digest", "", stmtExecInfo1.RUDetail.RRU(), stmtExecInfo1.RUDetail.RRU(), + f, f, 0, 0, 0, stmtExecInfo1.LazyInfo.GetOriginalSQL(), stmtExecInfo1.PrevSQL, "plan_digest", "", stmtExecInfo1.RUDetail.RRU(), stmtExecInfo1.RUDetail.RRU(), stmtExecInfo1.RUDetail.WRU(), stmtExecInfo1.RUDetail.WRU(), int64(stmtExecInfo1.RUDetail.RUWaitDuration()), int64(stmtExecInfo1.RUDetail.RUWaitDuration()), stmtExecInfo1.ResourceGroupName, int64(stmtExecInfo1.CPUUsages.TidbCPUTime), int64(stmtExecInfo1.CPUUsages.TikvCPUTime)} stmtExecInfo1.ExecDetail.CommitDetail.Mu.Unlock() @@ -992,6 +1050,7 @@ func TestMaxStmtCount(t *testing.T) { planDigest: stmtExecInfo1.PlanDigest, resourceGroupName: stmtExecInfo1.ResourceGroupName, } + key.Hash() _, ok := sm.Get(key) require.True(t, ok) } @@ -1029,7 +1088,7 @@ func TestMaxSQLLength(t *testing.T) { str := strings.Repeat("a", length) stmtExecInfo1 := generateAnyExecInfo() - stmtExecInfo1.OriginalSQL = stringutil.StringerStr(str) + stmtExecInfo1.LazyInfo.(*mockLazyInfo).originalSQL = str stmtExecInfo1.NormalizedSQL = str ssMap.AddStatement(stmtExecInfo1) @@ -1129,7 +1188,7 @@ func TestDisableStmtSummary(t *testing.T) { ssMap.beginTimeForCurInterval = now + 60 stmtExecInfo2 := stmtExecInfo1 - stmtExecInfo2.OriginalSQL = stringutil.StringerStr("original_sql2") + stmtExecInfo2.LazyInfo.(*mockLazyInfo).originalSQL = "original_sql2" stmtExecInfo2.NormalizedSQL = "normalized_sql2" stmtExecInfo2.Digest = "digest2" ssMap.AddStatement(stmtExecInfo2) @@ -1203,7 +1262,7 @@ func TestGetMoreThanCntBindableStmt(t *testing.T) { ssMap := newStmtSummaryByDigestMap() stmtExecInfo1 := generateAnyExecInfo() - stmtExecInfo1.OriginalSQL = stringutil.StringerStr("insert 1") + stmtExecInfo1.LazyInfo.(*mockLazyInfo).originalSQL = "insert 1" stmtExecInfo1.NormalizedSQL = "insert ?" stmtExecInfo1.StmtCtx.StmtType = "Insert" ssMap.AddStatement(stmtExecInfo1) @@ -1447,7 +1506,7 @@ func TestPointGet(t *testing.T) { stmtExecInfo1 := generateAnyExecInfo() stmtExecInfo1.PlanDigest = "" - stmtExecInfo1.PlanDigestGen = fakePlanDigestGenerator + stmtExecInfo1.LazyInfo.(*mockLazyInfo).plan = fakePlanDigestGenerator() ssMap.AddStatement(stmtExecInfo1) key := &stmtSummaryByDigestKey{ schemaName: stmtExecInfo1.SchemaName, diff --git a/pkg/util/stmtsummary/v2/BUILD.bazel b/pkg/util/stmtsummary/v2/BUILD.bazel index 07f30a893b6e7..0d1243c4be01b 100644 --- a/pkg/util/stmtsummary/v2/BUILD.bazel +++ b/pkg/util/stmtsummary/v2/BUILD.bazel @@ -27,7 +27,6 @@ go_library( "//pkg/util/ppcpuusage", "//pkg/util/set", "//pkg/util/stmtsummary", - "//pkg/util/stringutil", "@com_github_pingcap_log//:log", "@com_github_tikv_client_go_v2//util", "@org_uber_go_atomic//:atomic", diff --git a/pkg/util/stmtsummary/v2/record.go b/pkg/util/stmtsummary/v2/record.go index 8709e7fdda017..dedcf017ff3e8 100644 --- a/pkg/util/stmtsummary/v2/record.go +++ b/pkg/util/stmtsummary/v2/record.go @@ -28,7 +28,6 @@ import ( "github.com/pingcap/tidb/pkg/util/plancodec" "github.com/pingcap/tidb/pkg/util/ppcpuusage" "github.com/pingcap/tidb/pkg/util/stmtsummary" - "github.com/pingcap/tidb/pkg/util/stringutil" "github.com/tikv/client-go/v2/util" ) @@ -180,22 +179,19 @@ func NewStmtRecord(info *stmtsummary.StmtExecInfo) *StmtRecord { } tableNames := buffer.String() planDigest := info.PlanDigest - if info.PlanDigestGen != nil && len(planDigest) == 0 { + if len(planDigest) == 0 { // It comes here only when the plan is 'Point_Get'. - planDigest = info.PlanDigestGen() + planDigest = info.LazyInfo.GetPlanDigest() } // sampleSQL / authUsers(sampleUser) / samplePlan / prevSQL / indexNames store the values shown at the first time, // because it compacts performance to update every time. - samplePlan, planHint, _ := info.PlanGenerator() + samplePlan, planHint, _ := info.LazyInfo.GetEncodedPlan() if len(samplePlan) > MaxEncodedPlanSizeInBytes { samplePlan = plancodec.PlanDiscardedEncoded } - binPlan := "" - if info.BinaryPlanGenerator != nil { - binPlan = info.BinaryPlanGenerator() - if len(binPlan) > MaxEncodedPlanSizeInBytes { - binPlan = plancodec.BinaryPlanDiscardedEncoded - } + binPlan := info.LazyInfo.GetBinaryPlan() + if len(binPlan) > MaxEncodedPlanSizeInBytes { + binPlan = plancodec.BinaryPlanDiscardedEncoded } return &StmtRecord{ SchemaName: info.SchemaName, @@ -205,7 +201,7 @@ func NewStmtRecord(info *stmtsummary.StmtExecInfo) *StmtRecord { NormalizedSQL: info.NormalizedSQL, TableNames: tableNames, IsInternal: info.IsInternal, - SampleSQL: formatSQL(info.OriginalSQL.String()), + SampleSQL: formatSQL(info.LazyInfo.GetOriginalSQL()), Charset: info.Charset, Collation: info.Collation, // PrevSQL is already truncated to cfg.Log.QueryLogMaxLen. @@ -257,15 +253,17 @@ func (r *StmtRecord) Add(info *stmtsummary.StmtExecInfo) { r.MaxCompileLatency = info.CompileLatency } // Coprocessor - numCopTasks := int64(info.CopTasks.NumCopTasks) - r.SumNumCopTasks += numCopTasks - if info.CopTasks.MaxProcessTime > r.MaxCopProcessTime { - r.MaxCopProcessTime = info.CopTasks.MaxProcessTime - r.MaxCopProcessAddress = info.CopTasks.MaxProcessAddress - } - if info.CopTasks.MaxWaitTime > r.MaxCopWaitTime { - r.MaxCopWaitTime = info.CopTasks.MaxWaitTime - r.MaxCopWaitAddress = info.CopTasks.MaxWaitAddress + if info.CopTasks != nil { + numCopTasks := int64(info.CopTasks.NumCopTasks) + r.SumNumCopTasks += numCopTasks + if info.CopTasks.MaxProcessTime > r.MaxCopProcessTime { + r.MaxCopProcessTime = info.CopTasks.MaxProcessTime + r.MaxCopProcessAddress = info.CopTasks.MaxProcessAddress + } + if info.CopTasks.MaxWaitTime > r.MaxCopWaitTime { + r.MaxCopWaitTime = info.CopTasks.MaxWaitTime + r.MaxCopWaitAddress = info.CopTasks.MaxWaitAddress + } } // TiKV r.SumProcessTime += info.ExecDetail.TimeDetail.ProcessTime @@ -618,11 +616,9 @@ func GenerateStmtExecInfo4Test(digest string) *stmtsummary.StmtExecInfo { stmtExecInfo := &stmtsummary.StmtExecInfo{ SchemaName: "schema_name", - OriginalSQL: stringutil.StringerStr("original_sql1"), NormalizedSQL: "normalized_sql", Digest: digest, PlanDigest: "plan_digest", - PlanGenerator: func() (string, string, any) { return "", "", nil }, User: "user", TotalLatency: 10000, ParseLatency: 100, @@ -638,7 +634,7 @@ func GenerateStmtExecInfo4Test(digest string) *stmtsummary.StmtExecInfo { MaxWaitAddress: "128", MaxWaitTime: 1500, }, - ExecDetail: &execdetails.ExecDetails{ + ExecDetail: execdetails.ExecDetails{ BackoffTime: 80, RequestCount: 10, CommitDetail: &util.CommitDetails{ @@ -695,7 +691,26 @@ func GenerateStmtExecInfo4Test(digest string) *stmtsummary.StmtExecInfo { ResourceGroupName: "rg1", RUDetail: util.NewRUDetailsWith(1.2, 3.4, 2*time.Millisecond), CPUUsages: ppcpuusage.CPUUsages{TidbCPUTime: time.Duration(20), TikvCPUTime: time.Duration(10000)}, + LazyInfo: &mockLazyInfo{}, } stmtExecInfo.StmtCtx.AddAffectedRows(10000) return stmtExecInfo } + +type mockLazyInfo struct{} + +func (*mockLazyInfo) GetOriginalSQL() string { + return "" +} + +func (*mockLazyInfo) GetEncodedPlan() (p string, h string, e any) { + return "", "", nil +} + +func (*mockLazyInfo) GetBinaryPlan() string { + return "" +} + +func (*mockLazyInfo) GetPlanDigest() string { + return "" +} diff --git a/pkg/util/stmtsummary/v2/record_test.go b/pkg/util/stmtsummary/v2/record_test.go index 48997270b46a3..fb4d9cb712fdd 100644 --- a/pkg/util/stmtsummary/v2/record_test.go +++ b/pkg/util/stmtsummary/v2/record_test.go @@ -30,7 +30,7 @@ func TestStmtRecord(t *testing.T) { require.Equal(t, info.NormalizedSQL, record1.NormalizedSQL) require.Equal(t, "db1.tb1,db2.tb2", record1.TableNames) require.Equal(t, info.IsInternal, record1.IsInternal) - require.Equal(t, formatSQL(info.OriginalSQL.String()), record1.SampleSQL) + require.Equal(t, formatSQL(info.LazyInfo.GetOriginalSQL()), record1.SampleSQL) require.Equal(t, info.Charset, record1.Charset) require.Equal(t, info.Collation, record1.Collation) require.Equal(t, info.PrevSQL, record1.PrevSQL) diff --git a/pkg/util/util.go b/pkg/util/util.go index ded6218542d59..e8f056b4da0a0 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -17,6 +17,8 @@ package util import ( "bufio" "bytes" + "context" + "database/sql" "encoding/json" "fmt" "io" @@ -289,3 +291,70 @@ func GetRecoverError(r any) error { } return errors.Errorf("%v", r) } + +// CheckIfSameCluster reads PD addresses registered in etcd from two sources, to +// check if there are common addresses in both sources. If there are common +// addresses, the first return value is true which means we have confidence that +// the two sources are in the same cluster. If there are no common addresses, the +// first return value is false, which means 1) the two sources are in different +// clusters, or 2) the two sources may be in the same cluster but the getter +// function does not return the common addresses. +// +// The getters should keep the same format of the returned addresses, like both +// have URL scheme or not. +// +// The second and third return values are the PD addresses from the first and +// second getters respectively. The fourth return value is the error occurred. +func CheckIfSameCluster( + ctx context.Context, + pdAddrsGetter, pdAddrsGetter2 func(context.Context) ([]string, error), +) (bool, []string, []string, error) { + addrs, err := pdAddrsGetter(ctx) + if err != nil { + return false, nil, nil, errors.Trace(err) + } + addrsMap := make(map[string]struct{}, len(addrs)) + for _, a := range addrs { + addrsMap[a] = struct{}{} + } + + addrs2, err := pdAddrsGetter2(ctx) + if err != nil { + return false, nil, nil, errors.Trace(err) + } + for _, a := range addrs2 { + if _, ok := addrsMap[a]; ok { + return true, addrs, addrs2, nil + } + } + return false, addrs, addrs2, nil +} + +// GetPDsAddrWithoutScheme returns a function that read all PD nodes' first etcd +// client URL by SQL query. This is done by query INFORMATION_SCHEMA.CLUSTER_INFO +// table and its executor memtableRetriever.dataForTiDBClusterInfo. +func GetPDsAddrWithoutScheme(db *sql.DB) func(context.Context) ([]string, error) { + return func(ctx context.Context) ([]string, error) { + rows, err := db.QueryContext(ctx, "SELECT STATUS_ADDRESS FROM INFORMATION_SCHEMA.CLUSTER_INFO WHERE TYPE = 'pd'") + if err != nil { + return nil, errors.Trace(err) + } + defer rows.Close() + var ret []string + for rows.Next() { + var addr string + err = rows.Scan(&addr) + if err != nil { + return nil, errors.Trace(err) + } + + // if intersection is not empty, we can say URLs from TiDB and PD are from the + // same cluster. See comments above pdTiDBFromSameClusterCheckItem struct. + ret = append(ret, addr) + } + if err = rows.Err(); err != nil { + return nil, errors.Trace(err) + } + return ret, nil + } +} diff --git a/pkg/util/workloadrepo/BUILD.bazel b/pkg/util/workloadrepo/BUILD.bazel new file mode 100644 index 0000000000000..0509128500c08 --- /dev/null +++ b/pkg/util/workloadrepo/BUILD.bazel @@ -0,0 +1,56 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "workloadrepo", + srcs = [ + "const.go", + "housekeeper.go", + "sampling.go", + "snapshot.go", + "table.go", + "utils.go", + "worker.go", + ], + importpath = "github.com/pingcap/tidb/pkg/util/workloadrepo", + visibility = ["//visibility:public"], + deps = [ + "//pkg/domain", + "//pkg/domain/infosync", + "//pkg/infoschema", + "//pkg/kv", + "//pkg/meta/model", + "//pkg/owner", + "//pkg/parser/model", + "//pkg/sessionctx", + "//pkg/sessionctx/variable", + "//pkg/sessiontxn", + "//pkg/util", + "//pkg/util/chunk", + "//pkg/util/logutil", + "//pkg/util/slice", + "//pkg/util/sqlescape", + "//pkg/util/sqlexec", + "@com_github_ngaut_pools//:pools", + "@com_github_pingcap_errors//:errors", + "@io_etcd_go_etcd_client_v3//:client", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "workloadrepo_test", + timeout = "short", + srcs = ["worker_test.go"], + embed = [":workloadrepo"], + flaky = True, + deps = [ + "//pkg/domain", + "//pkg/kv", + "//pkg/owner", + "//pkg/parser/model", + "//pkg/testkit", + "@com_github_stretchr_testify//require", + "@io_etcd_go_etcd_client_v3//:client", + "@io_etcd_go_etcd_server_v3//embed", + ], +) diff --git a/pkg/util/workloadrepo/const.go b/pkg/util/workloadrepo/const.go new file mode 100644 index 0000000000000..80792bb5ef5c4 --- /dev/null +++ b/pkg/util/workloadrepo/const.go @@ -0,0 +1,42 @@ +// Copyright 2024 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 workloadrepo + +import ( + "time" + + "github.com/pingcap/tidb/pkg/parser/model" +) + +const ( + ownerKey = "/tidb/workloadrepo/owner" + promptKey = "workloadrepo" + snapIDKey = "/tidb/workloadrepo/snap_id" + + etcdOpTimeout = 5 * time.Second + + defSamplingInterval = 5 + defSnapshotInterval = 3600 + defRententionDays = 7 + + // WorkloadSchema is the name of database for workloadrepo worker. + WorkloadSchema = "WORKLOAD_SCHEMA" + histSnapshotsTable = "HIST_SNAPSHOTS" +) + +var ( + workloadSchemaCIStr = model.NewCIStr(WorkloadSchema) + zeroTime = time.Time{} +) diff --git a/pkg/util/workloadrepo/housekeeper.go b/pkg/util/workloadrepo/housekeeper.go new file mode 100644 index 0000000000000..3ef613de25e2e --- /dev/null +++ b/pkg/util/workloadrepo/housekeeper.go @@ -0,0 +1,145 @@ +// Copyright 2024 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 workloadrepo + +import ( + "context" + "fmt" + "strings" + "time" + + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessiontxn" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/sqlescape" + "go.uber.org/zap" +) + +func calcNextTick(now time.Time) time.Duration { + // only activated at 2am + next := time.Date(now.Year(), now.Month(), now.Day(), 2, 0, 0, 0, time.Local) + if !next.After(now) { + next = next.AddDate(0, 0, 1) + } + return next.Sub(now) +} + +func createAllPartitions(ctx context.Context, sess sessionctx.Context, is infoschema.InfoSchema) error { + sb := &strings.Builder{} + for _, tbl := range workloadTables { + tbSchema, err := is.TableByName(ctx, workloadSchemaCIStr, model.NewCIStr(tbl.destTable)) + if err != nil { + logutil.BgLogger().Info("workload repository cannot get table", zap.String("tbl", tbl.destTable), zap.NamedError("err", err)) + return err + } + tbInfo := tbSchema.Meta() + + sb.Reset() + sqlescape.MustFormatSQL(sb, "ALTER TABLE %n.%n ADD PARTITION (", WorkloadSchema, tbl.destTable) + if !generatePartitionRanges(sb, tbInfo) { + fmt.Fprintf(sb, ")") + _, err = execRetry(ctx, sess, sb.String()) + if err != nil { + logutil.BgLogger().Info("workload repository cannot add partitions", zap.String("parts", sb.String()), zap.NamedError("err", err)) + return err + } + } + } + return nil +} + +func (w *worker) dropOldPartitions(ctx context.Context, sess sessionctx.Context, is infoschema.InfoSchema, now time.Time) error { + w.Lock() + retention := int(w.retentionDays) + w.Unlock() + + if retention == 0 { + // disabled housekeeping + return nil + } + + sb := &strings.Builder{} + for _, tbl := range workloadTables { + tbSchema, err := is.TableByName(ctx, workloadSchemaCIStr, model.NewCIStr(tbl.destTable)) + if err != nil { + logutil.BgLogger().Info("workload repository cannot get table", zap.String("tbl", tbl.destTable), zap.NamedError("err", err)) + continue + } + tbInfo := tbSchema.Meta() + for _, pt := range tbInfo.GetPartitionInfo().Definitions { + ot, err := time.Parse("p20060102", pt.Name.L) + if err != nil { + logutil.BgLogger().Info("workload repository cannot parse partition name", zap.String("part", pt.Name.L), zap.NamedError("err", err)) + break + } + if int(now.Sub(ot).Hours()/24) < retention { + continue + } + sb.Reset() + sqlescape.MustFormatSQL(sb, "ALTER TABLE %s.%s DROP PARTITION %s", + WorkloadSchema, tbl.destTable, pt.Name.L) + _, err = execRetry(ctx, sess, sb.String()) + if err != nil { + logutil.BgLogger().Info("workload repository cannot drop partition", zap.String("part", pt.Name.L), zap.NamedError("err", err)) + break + } + } + } + return nil +} + +func (w *worker) startHouseKeeper(ctx context.Context) func() { + return func() { + now := time.Now() + timer := time.NewTimer(calcNextTick(now)) + defer timer.Stop() + + _sessctx := w.getSessionWithRetry() + defer w.sesspool.Put(_sessctx) + sess := _sessctx.(sessionctx.Context) + for { + select { + case <-ctx.Done(): + return + case now := <-timer.C: + // Owner only + if !w.owner.IsOwner() { + continue + } + + // get the latest infoschema + is := sessiontxn.GetTxnManager(sess).GetTxnInfoSchema() + + // create new partitions + if err := createAllPartitions(ctx, sess, is); err != nil { + continue + } + + // drop old partitions + if err := w.dropOldPartitions(ctx, sess, is, now); err != nil { + continue + } + + // reschedule, drain channel first + if !timer.Stop() { + <-timer.C + } + timer.Reset(calcNextTick(now)) + } + } + } +} diff --git a/pkg/util/workloadrepo/sampling.go b/pkg/util/workloadrepo/sampling.go new file mode 100644 index 0000000000000..a4a86b71f869b --- /dev/null +++ b/pkg/util/workloadrepo/sampling.go @@ -0,0 +1,102 @@ +// Copyright 2024 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 workloadrepo + +import ( + "context" + "strconv" + "time" + + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/logutil" + "go.uber.org/zap" +) + +func (w *worker) samplingTable(ctx context.Context, rt *repositoryTable) { + _sessctx := w.getSessionWithRetry() + defer w.sesspool.Put(_sessctx) + sess := _sessctx.(sessionctx.Context) + + if rt.insertStmt == "" { + if err := buildInsertQuery(ctx, sess, rt); err != nil { + logutil.BgLogger().Info("workload repository sampling failed: could not generate insert statement", zap.String("tbl", rt.destTable), zap.NamedError("err", err)) + return + } + } + + if _, err := runQuery(ctx, sess, rt.insertStmt, w.instanceID); err != nil { + logutil.BgLogger().Info("workload repository sampling failed: could not run insert statement", zap.String("tbl", rt.destTable), zap.NamedError("err", err)) + } +} + +func (w *worker) startSample(ctx context.Context) func() { + return func() { + w.Lock() + w.samplingTicker = time.NewTicker(time.Duration(w.samplingInterval) * time.Second) + w.Unlock() + + for { + select { + case <-ctx.Done(): + return + case <-w.samplingTicker.C: + // sample thread + var wg util.WaitGroupWrapper + + for rtIdx := range workloadTables { + rt := &workloadTables[rtIdx] + if rt.tableType != samplingTable { + continue + } + wg.Run(func() { + w.samplingTable(ctx, rt) + }) + } + + wg.Wait() + } + } + } +} + +func (w *worker) resetSamplingInterval(newRate int32) { + if w.samplingTicker == nil { + return + } + + if newRate == 0 { + w.samplingTicker.Stop() + } else { + w.samplingTicker.Reset(time.Duration(newRate) * time.Second) + } +} + +func (w *worker) changeSamplingInterval(_ context.Context, d string) error { + n, err := strconv.Atoi(d) + if err != nil { + return err + } + + w.Lock() + defer w.Unlock() + + if int32(n) != w.samplingInterval { + w.samplingInterval = int32(n) + w.resetSamplingInterval(w.samplingInterval) + } + + return nil +} diff --git a/pkg/util/workloadrepo/snapshot.go b/pkg/util/workloadrepo/snapshot.go new file mode 100644 index 0000000000000..f4506f69b7790 --- /dev/null +++ b/pkg/util/workloadrepo/snapshot.go @@ -0,0 +1,247 @@ +// Copyright 2024 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 workloadrepo + +import ( + "context" + stderrors "errors" + "fmt" + "strconv" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/sqlescape" + clientv3 "go.etcd.io/etcd/client/v3" + "go.uber.org/zap" +) + +func (w *worker) etcdCreate(ctx context.Context, key, val string) error { + ctx, cancel := context.WithTimeout(ctx, etcdOpTimeout) + defer cancel() + res, err := w.etcdClient.Txn(ctx). + If(clientv3.Compare(clientv3.CreateRevision(key), "=", 0)). + Then(clientv3.OpPut(snapIDKey, val)). + Commit() + if err != nil { + return err + } + if !res.Succeeded { + return errors.Errorf("failed to create etcd [%s:%s]", key, val) + } + return nil +} + +func (w *worker) etcdGet(_ctx context.Context, key, defval string) (string, error) { + ctx, cancel := context.WithTimeout(_ctx, etcdOpTimeout) + defer cancel() + res, err := w.etcdClient.Get(ctx, key) + if err != nil { + return "", err + } + if len(res.Kvs) == 0 { + // nonexistent, create it atomically + // otherwise etcdCAS will fail + return defval, w.etcdCreate(_ctx, key, defval) + } + return string(res.Kvs[len(res.Kvs)-1].Value), nil +} + +func (w *worker) etcdCAS(ctx context.Context, key, oval, nval string) error { + ctx, cancel := context.WithTimeout(ctx, etcdOpTimeout) + defer cancel() + res, err := w.etcdClient.Txn(ctx). + If(clientv3.Compare(clientv3.Value(key), "=", oval)). + Then(clientv3.OpPut(key, nval)). + Commit() + if err != nil { + return err + } + if !res.Succeeded { + return errors.Errorf("failed to update etcd [%s:%s] to [%s:%s]", key, oval, key, nval) + } + return nil +} + +func (w *worker) getSnapID(ctx context.Context) (uint64, error) { + snapIDStr, err := w.etcdGet(ctx, snapIDKey, "0") + if err != nil { + return 0, err + } + return strconv.ParseUint(snapIDStr, 10, 64) +} + +func (w *worker) updateSnapID(ctx context.Context, oid, nid uint64) error { + return w.etcdCAS(ctx, snapIDKey, + strconv.FormatUint(oid, 10), + strconv.FormatUint(nid, 10)) +} + +func upsertHistSnapshot(ctx context.Context, sctx sessionctx.Context, snapID uint64) error { + // TODO: fill DB_VER, WR_VER + snapshotsInsert := sqlescape.MustEscapeSQL("INSERT INTO %n.%n (`BEGIN_TIME`, `SNAP_ID`) VALUES (now(), %%?) ON DUPLICATE KEY UPDATE `BEGIN_TIME` = now()", + WorkloadSchema, histSnapshotsTable) + _, err := runQuery(ctx, sctx, snapshotsInsert, snapID) + return err +} + +func updateHistSnapshot(ctx context.Context, sctx sessionctx.Context, snapID uint64, errs []error) error { + var nerr any + if err := stderrors.Join(errs...); err != nil { + nerr = err.Error() + } + + snapshotsUpdate := sqlescape.MustEscapeSQL("UPDATE %n.%n SET `END_TIME` = now(), `ERROR` = COALESCE(CONCAT(ERROR, %%?), ERROR, %%?) WHERE `SNAP_ID` = %%?", WorkloadSchema, histSnapshotsTable) + _, err := runQuery(ctx, sctx, snapshotsUpdate, nerr, nerr, snapID) + return err +} + +func (w *worker) snapshotTable(ctx context.Context, snapID uint64, rt *repositoryTable) error { + _sessctx := w.getSessionWithRetry() + defer w.sesspool.Put(_sessctx) + sess := _sessctx.(sessionctx.Context) + + if rt.insertStmt == "" { + if err := buildInsertQuery(ctx, sess, rt); err != nil { + return fmt.Errorf("could not generate insert statement for `%s`: %v", rt.destTable, err) + } + } + + if _, err := runQuery(ctx, sess, rt.insertStmt, snapID, w.instanceID); err != nil { + return fmt.Errorf("could not run insert statement for `%s`: %v", rt.destTable, err) + } + + return nil +} + +func (w *worker) startSnapshot(_ctx context.Context) func() { + return func() { + w.Lock() + w.snapshotTicker = time.NewTicker(time.Duration(w.snapshotInterval) * time.Second) + w.Unlock() + + _sessctx := w.getSessionWithRetry() + defer w.sesspool.Put(_sessctx) + sess := _sessctx.(sessionctx.Context) + + // this is for etcd watch + // other wise wch won't be collected after the exit of this function + ctx, cancel := context.WithCancel(_ctx) + defer cancel() + wch := w.etcdClient.Watch(ctx, snapIDKey) + + for { + select { + case <-ctx.Done(): + return + case <-w.snapshotTicker.C: + // coordination logic + if !w.owner.IsOwner() { + continue + } + + for range 5 { + snapID, err := w.getSnapID(ctx) + if err != nil { + logutil.BgLogger().Info("workload repository cannot get current snapid", zap.NamedError("err", err)) + continue + } + // use upsert such that this SQL does not fail on duplicated snapID + // + // NOTE: in an almost impossible corner case, there may be two owners. + // maybe upsertHistSnapshot succeed and updateSnapID fail, because + // another owner won the etcd CAS loop. + // it is unwanted but acceptable. because two owners should share + // similar datetime, same cluster versions. + if err := upsertHistSnapshot(ctx, sess, snapID+1); err != nil { + logutil.BgLogger().Info("workload repository could not insert into hist_snapshots", zap.NamedError("err", err)) + continue + } + err = w.updateSnapID(ctx, snapID, snapID+1) + if err != nil { + logutil.BgLogger().Info("workload repository cannot update current snapid", zap.Uint64("new_id", snapID), zap.NamedError("err", err)) + continue + } + logutil.BgLogger().Info("workload repository fired snapshot", zap.String("owner", w.instanceID), zap.Uint64("snapID", snapID+1)) + break + } + case resp := <-wch: + if len(resp.Events) < 1 { + // since there is no event, we don't know the latest snapid either + // really should not happen except creation + // but let us just skip + logutil.BgLogger().Debug("workload repository cannot get snap ID update") + continue + } + + // there probably will be multiple events + // e.g. this node got stuck somehow + // it eventually got notified by more than two snapid + // if that's the case, let us just take a snap for the last one + snapIDStr := string(resp.Events[len(resp.Events)-1].Kv.Value) + snapID, err := strconv.ParseUint(snapIDStr, 10, 64) + if err != nil { + logutil.BgLogger().Info("workload repository snapshot failed: could not parse snapID", zap.String("snapID", snapIDStr), zap.NamedError("err", err)) + continue + } + + errs := make([]error, len(workloadTables)) + var wg util.WaitGroupWrapper + cnt := 0 + for rtIdx := range workloadTables { + rt := &workloadTables[rtIdx] + if rt.tableType != snapshotTable { + continue + } + pcnt := cnt + wg.Run(func() { + errs[pcnt] = w.snapshotTable(ctx, snapID, rt) + }) + cnt++ + } + wg.Wait() + + if err := updateHistSnapshot(ctx, sess, snapID, errs); err != nil { + logutil.BgLogger().Info("workload repository snapshot failed: could not update hist_snapshots", zap.NamedError("err", err)) + } + } + } + } +} + +func (w *worker) resetSnapshotInterval(newRate int32) { + if w.snapshotTicker != nil { + w.snapshotTicker.Reset(time.Duration(newRate) * time.Second) + } +} + +func (w *worker) changeSnapshotInterval(_ context.Context, d string) error { + n, err := strconv.Atoi(d) + if err != nil { + return err + } + + w.Lock() + defer w.Unlock() + + if int32(n) != w.snapshotInterval { + w.snapshotInterval = int32(n) + w.resetSnapshotInterval(w.snapshotInterval) + } + + return nil +} diff --git a/pkg/util/workloadrepo/table.go b/pkg/util/workloadrepo/table.go new file mode 100644 index 0000000000000..81f017d906b6e --- /dev/null +++ b/pkg/util/workloadrepo/table.go @@ -0,0 +1,182 @@ +// Copyright 2024 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 workloadrepo + +import ( + "context" + "errors" + "fmt" + "strings" + "time" + + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessiontxn" + "github.com/pingcap/tidb/pkg/util/slice" + "github.com/pingcap/tidb/pkg/util/sqlescape" +) + +func buildCreateQuery(ctx context.Context, sess sessionctx.Context, rt *repositoryTable) (string, error) { + is := sessiontxn.GetTxnManager(sess).GetTxnInfoSchema() + tbl, err := is.TableByName(ctx, model.NewCIStr(rt.schema), model.NewCIStr(rt.table)) + if err != nil { + return "", err + } + if rt.tableType == metadataTable { + return "", errors.New("buildCreateQuery invoked on metadataTable") + } + + sb := &strings.Builder{} + sqlescape.MustFormatSQL(sb, "CREATE TABLE IF NOT EXISTS %n.%n (", WorkloadSchema, rt.destTable) + if rt.tableType == snapshotTable { + fmt.Fprintf(sb, "`SNAP_ID` INT UNSIGNED NOT NULL, ") + } + fmt.Fprintf(sb, "`TS` DATETIME NOT NULL, ") + fmt.Fprintf(sb, "`INSTANCE_ID` VARCHAR(64) DEFAULT NULL") + + for _, v := range tbl.Cols() { + sqlescape.MustFormatSQL(sb, ", %n ", v.Name.O) + fmt.Fprintf(sb, "%s COMMENT ", v.GetTypeDesc()) + sqlescape.MustFormatSQL(sb, "%? ", v.Comment) + } + fmt.Fprintf(sb, ") DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ") + + return sb.String(), nil +} + +func buildInsertQuery(ctx context.Context, sess sessionctx.Context, rt *repositoryTable) error { + is := sessiontxn.GetTxnManager(sess).GetTxnInfoSchema() + tbl, err := is.TableByName(ctx, model.NewCIStr(rt.schema), model.NewCIStr(rt.table)) + if err != nil { + return err + } + if rt.tableType == metadataTable { + return errors.New("buildInsertQuery invoked on metadataTable") + } + + sb := &strings.Builder{} + sqlescape.MustFormatSQL(sb, "INSERT %n.%n (", WorkloadSchema, rt.destTable) + + if rt.tableType == snapshotTable { + fmt.Fprint(sb, "`SNAP_ID`, ") + } + fmt.Fprint(sb, "`TS`, ") + fmt.Fprint(sb, "`INSTANCE_ID`") + + for _, v := range tbl.Cols() { + sqlescape.MustFormatSQL(sb, ", %n", v.Name.O) + } + fmt.Fprint(sb, ") SELECT ") + + if rt.tableType == snapshotTable { + fmt.Fprint(sb, "%?, now(), %?") + } else if rt.tableType == samplingTable { + fmt.Fprint(sb, "now(), %?") + } + + for _, v := range tbl.Cols() { + sqlescape.MustFormatSQL(sb, ", %n", v.Name.O) + } + sqlescape.MustFormatSQL(sb, " FROM %n.%n", rt.schema, rt.table) + if rt.where != "" { + fmt.Fprint(sb, "WHERE ", rt.where) + } + + rt.insertStmt = sb.String() + return nil +} + +func (w *worker) createAllTables(ctx context.Context) error { + _sessctx := w.getSessionWithRetry() + sess := _sessctx.(sessionctx.Context) + defer w.sesspool.Put(_sessctx) + is := sess.GetDomainInfoSchema().(infoschema.InfoSchema) + if !is.SchemaExists(workloadSchemaCIStr) { + _, err := execRetry(ctx, sess, "create database if not exists "+WorkloadSchema) + if err != nil { + return err + } + } + + for _, tbl := range workloadTables { + if checkTableExistsByIS(ctx, is, tbl.destTable, zeroTime) { + continue + } + + createStmt := tbl.createStmt + if createStmt == "" { + cs, err := buildCreateQuery(ctx, sess, &tbl) + if err != nil { + return err + } + createStmt = cs + } + + if tbl.tableType == metadataTable { + sb := &strings.Builder{} + fmt.Fprint(sb, createStmt) + generatePartitionDef(sb, "BEGIN_TIME") + createStmt = sb.String() + } else { + sb := &strings.Builder{} + fmt.Fprint(sb, createStmt) + generatePartitionDef(sb, "TS") + createStmt = sb.String() + } + + if _, err := execRetry(ctx, sess, createStmt); err != nil { + return err + } + } + + return createAllPartitions(ctx, sess, is) +} + +func (w *worker) checkTablesExists(ctx context.Context) bool { + _sessctx := w.getSessionWithRetry() + sess := _sessctx.(sessionctx.Context) + defer w.sesspool.Put(_sessctx) + is := sess.GetDomainInfoSchema().(infoschema.InfoSchema) + now := time.Now() + return slice.AllOf(workloadTables, func(i int) bool { + return checkTableExistsByIS(ctx, is, workloadTables[i].destTable, now) + }) +} + +func checkTableExistsByIS(ctx context.Context, is infoschema.InfoSchema, tblName string, now time.Time) bool { + if now == zeroTime { + return is.TableExists(workloadSchemaCIStr, model.NewCIStr(tblName)) + } + + // check for partitions, too + tbSchema, err := is.TableByName(ctx, workloadSchemaCIStr, model.NewCIStr(tblName)) + if err != nil { + return false + } + + tbInfo := tbSchema.Meta() + for i := range 2 { + newPtTime := now.AddDate(0, 0, i+1) + newPtName := "p" + newPtTime.Format("20060102") + ptInfos := tbInfo.GetPartitionInfo().Definitions + if slice.NoneOf(ptInfos, func(i int) bool { + return ptInfos[i].Name.L == newPtName + }) { + return false + } + } + return true +} diff --git a/pkg/util/workloadrepo/utils.go b/pkg/util/workloadrepo/utils.go new file mode 100644 index 0000000000000..7c25ff6d04a94 --- /dev/null +++ b/pkg/util/workloadrepo/utils.go @@ -0,0 +1,76 @@ +// Copyright 2024 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 workloadrepo + +import ( + "context" + "fmt" + "strconv" + "strings" + "time" + + "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/util/slice" +) + +func generatePartitionDef(sb *strings.Builder, col string) { + fmt.Fprintf(sb, " PARTITION BY RANGE( TO_DAYS(%s) ) (", col) + // tbInfo is nil, retval must be false + _ = generatePartitionRanges(sb, nil) + fmt.Fprintf(sb, ")") +} + +func generatePartitionRanges(sb *strings.Builder, tbInfo *model.TableInfo) bool { + now := time.Now() + newPtNum := 2 + // add new partitions per day + // if all partitions to be added existed, do nothing + allExisted := true + for i := range newPtNum { + // TODO: should we make this UTC? timezone issues + newPtTime := now.AddDate(0, 0, i+1) + newPtName := "p" + newPtTime.Format("20060102") + if tbInfo != nil { + ptInfos := tbInfo.GetPartitionInfo().Definitions + if slice.AnyOf(ptInfos, func(i int) bool { + return ptInfos[i].Name.L == newPtName + }) { + continue + } + } + if !allExisted && i > 0 { + fmt.Fprintf(sb, ",") + } + fmt.Fprintf(sb, "PARTITION %s VALUES LESS THAN (TO_DAYS('%s'))", newPtName, newPtTime.Format("2006-01-02")) + allExisted = false + } + return allExisted +} + +func (w *worker) setRetentionDays(_ context.Context, d string) error { + n, err := strconv.Atoi(d) + if err != nil { + return err + } + w.Lock() + defer w.Unlock() + w.retentionDays = int32(n) + return nil +} + +func validateDest(orig string) (string, error) { + // validate S3 URL, etc... + return strings.ToLower(orig), nil +} diff --git a/pkg/util/workloadrepo/worker.go b/pkg/util/workloadrepo/worker.go new file mode 100644 index 0000000000000..f2e5087dfccfc --- /dev/null +++ b/pkg/util/workloadrepo/worker.go @@ -0,0 +1,375 @@ +// Copyright 2024 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 workloadrepo + +import ( + "context" + "errors" + "strconv" + "sync" + "time" + + "github.com/ngaut/pools" + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/domain/infosync" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/owner" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/util" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/logutil" + "github.com/pingcap/tidb/pkg/util/sqlescape" + "github.com/pingcap/tidb/pkg/util/sqlexec" + clientv3 "go.etcd.io/etcd/client/v3" + "go.uber.org/zap" +) + +const ( + snapshotTable int = iota + samplingTable + metadataTable +) + +type repositoryTable struct { + schema string + table string + tableType int + destTable string + where string + createStmt string + insertStmt string +} + +var ( + repositoryDest = "tidb_workload_repository_dest" + repositoryRetentionDays = "tidb_workload_repository_retention_days" + repositorySamplingInterval = "tidb_workload_repository_active_sampling_interval" + repositorySnapshotInterval = "tidb_workload_repository_snapshot_interval" +) + +var workloadTables = []repositoryTable{ + { + "", + "", + metadataTable, + histSnapshotsTable, + "", + sqlescape.MustEscapeSQL(`CREATE TABLE IF NOT EXISTS %n.%n ( + SNAP_ID int unsigned NOT NULL COMMENT 'Global unique identifier of the snapshot', + BEGIN_TIME DATETIME NOT NULL COMMENT 'Datetime that TiDB begins taking this snapshot.', + END_TIME DATETIME NULL COMMENT 'Datetime that TiDB finish taking this snapshot.', + DB_VER JSON NULL COMMENT 'Versions of TiDB, TiKV, PD at the moment', + WR_VER int unsigned NULL COMMENT 'Version to identify the compatibility of workload schema between releases.', + SOURCE VARCHAR(20) NULL COMMENT 'The program that initializes the snaphost. ', + ERROR TEXT DEFAULT NULL COMMENT 'extra messages are written if anything happens to block that snapshots.')`, WorkloadSchema, histSnapshotsTable), + "", + }, + //{"INFORMATION_SCHEMA", "TIDB_INDEX_USAGE", snapshotTable, "", "", "", ""}, + //{"INFORMATION_SCHEMA", "TIDB_STATEMENTS_STATS", snapshotTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "CLIENT_ERRORS_SUMMARY_BY_HOST", snapshotTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "CLIENT_ERRORS_SUMMARY_BY_USER", snapshotTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "CLIENT_ERRORS_SUMMARY_GLOBAL", snapshotTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "TIKV_REGION_STATUS", snapshotTable, "", "", "", ""}, + + {"INFORMATION_SCHEMA", "PROCESSLIST", samplingTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "DATA_LOCK_WAITS", samplingTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "TIDB_TRX", samplingTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "MEMORY_USAGE", samplingTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "DEADLOCKS", samplingTable, "", "", "", ""}, + + {"INFORMATION_SCHEMA", "CLUSTER_LOAD", samplingTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "TIDB_HOT_REGIONS", samplingTable, "", "", "", ""}, + //{"INFORMATION_SCHEMA", "TIDB_HOT_REGIONS_HISTORY", samplingTable, "", "", "", ""}, + {"INFORMATION_SCHEMA", "TIKV_STORE_STATUS", samplingTable, "", "", "", ""}, +} + +type sessionPool interface { + Get() (pools.Resource, error) + Put(resource pools.Resource) +} + +// worker is the main struct for workload repository. +type worker struct { + sync.Mutex + etcdClient *clientv3.Client + sesspool sessionPool + cancel context.CancelFunc + newOwner func(string, string) owner.Manager + owner owner.Manager + wg *util.WaitGroupEnhancedWrapper + enabled bool + instanceID string + + samplingInterval int32 + samplingTicker *time.Ticker + snapshotInterval int32 + snapshotTicker *time.Ticker + retentionDays int32 +} + +var workerCtx = worker{ + samplingInterval: defSamplingInterval, + snapshotInterval: defSnapshotInterval, + retentionDays: defRententionDays, +} + +func init() { + variable.RegisterSysVar(&variable.SysVar{ + Scope: variable.ScopeGlobal, + Name: repositoryDest, + Type: variable.TypeStr, + Value: "", + SetGlobal: func(ctx context.Context, _ *variable.SessionVars, val string) error { + return workerCtx.setRepositoryDest(ctx, val) + }, + Validation: func(_ *variable.SessionVars, norm, _ string, _ variable.ScopeFlag) (string, error) { + return validateDest(norm) + }, + }) + variable.RegisterSysVar(&variable.SysVar{ + Scope: variable.ScopeGlobal, + Name: repositoryRetentionDays, + Type: variable.TypeInt, + Value: strconv.Itoa(defRententionDays), + MinValue: 0, + MaxValue: 365, + SetGlobal: func(ctx context.Context, _ *variable.SessionVars, val string) error { + return workerCtx.setRetentionDays(ctx, val) + }, + }) + variable.RegisterSysVar(&variable.SysVar{ + Scope: variable.ScopeGlobal, + Name: repositorySamplingInterval, + Type: variable.TypeInt, + Value: strconv.Itoa(defSamplingInterval), + MinValue: 0, + MaxValue: 600, + SetGlobal: func(ctx context.Context, _ *variable.SessionVars, val string) error { + return workerCtx.changeSamplingInterval(ctx, val) + }, + }) + variable.RegisterSysVar(&variable.SysVar{ + Scope: variable.ScopeGlobal, + Name: repositorySnapshotInterval, + Type: variable.TypeInt, + Value: strconv.Itoa(defSnapshotInterval), + MinValue: 900, + MaxValue: 7200, + SetGlobal: func(ctx context.Context, _ *variable.SessionVars, val string) error { + return workerCtx.changeSnapshotInterval(ctx, val) + }, + }) +} + +func initializeWorker(w *worker, etcdCli *clientv3.Client, newOwner func(string, string) owner.Manager, sesspool sessionPool) { + w.etcdClient = etcdCli + w.sesspool = sesspool + w.newOwner = newOwner + w.wg = util.NewWaitGroupEnhancedWrapper("workloadrepo", nil, false) +} + +// SetupRepository finishes the initialization of the workload repository. +func SetupRepository(dom *domain.Domain) { + workerCtx.Lock() + defer workerCtx.Unlock() + + initializeWorker(&workerCtx, dom.GetEtcdClient(), dom.NewOwnerManager, dom.SysSessionPool()) + + if workerCtx.enabled { + if err := workerCtx.start(); err != nil { + logutil.BgLogger().Info("workload repository could not be started", zap.Any("err", err)) + workerCtx.enabled = false + } + } +} + +// StopRepository stops any the go routines for the workload repository. +func StopRepository() { + workerCtx.Lock() + defer workerCtx.Unlock() + + workerCtx.stop() + // prevent the workload repository from being restarted + workerCtx.sesspool = nil +} + +func runQuery(ctx context.Context, sctx sessionctx.Context, sql string, args ...any) (v []chunk.Row, e error) { + defer func() { + logutil.BgLogger().Debug("workload repository execute SQL", zap.String("sql", sql), zap.NamedError("err", e)) + }() + exec := sctx.(sqlexec.SQLExecutor) + res, err := exec.ExecuteInternal(ctx, sql, args...) + if err == nil { + if res != nil { + rs, err := sqlexec.DrainRecordSet(ctx, res, 256) + err = errors.Join(err, res.Close()) + return rs, err + } + return nil, nil + } + return nil, err +} + +func execRetry(ctx context.Context, sctx sessionctx.Context, sql string, args ...any) ([]chunk.Row, error) { + var errs [5]error + for i := 0; i < len(errs); i++ { + res, err := runQuery(ctx, sctx, sql, args...) + if err == nil { + return res, nil + } + errs[i] = err + } + return nil, errors.Join(errs[:]...) +} + +func (w *worker) getSessionWithRetry() pools.Resource { + for { + _sessctx, err := w.sesspool.Get() + if err != nil { + logutil.BgLogger().Warn("workload repository cannot init session") + time.Sleep(time.Second) + continue + } + return _sessctx + } +} + +func (w *worker) readInstanceID() error { + if w.instanceID != "" { + return nil + } + + serverInfo, err := infosync.GetServerInfo() + if err != nil { + return err + } + + w.instanceID = serverInfo.ID + return nil +} + +func (w *worker) startRepository(ctx context.Context) func() { + // TODO: add another txn type + ctx = kv.WithInternalSourceType(ctx, kv.InternalTxnOthers) + return func() { + w.owner = w.newOwner(ownerKey, promptKey) + if err := w.owner.CampaignOwner(); err != nil { + logutil.BgLogger().Error("repository could not campaign for owner", zap.NamedError("err", err)) + } + ticker := time.NewTicker(time.Second) + + for rtIdx := range workloadTables { + rt := &workloadTables[rtIdx] + if rt.table != "" { + if rt.destTable == "" { + rt.destTable = "HIST_" + rt.table + } + } + } + + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + if w.owner.IsOwner() { + logutil.BgLogger().Info("repository has owner!") + if err := w.createAllTables(ctx); err != nil { + logutil.BgLogger().Error("workload repository cannot create tables", zap.NamedError("err", err)) + } + } + + if !w.checkTablesExists(ctx) { + continue + } + + if err := w.readInstanceID(); err != nil { + // if this fails try it again + logutil.BgLogger().Info("workload repository could not get instance ID", zap.NamedError("err", err)) + continue + } + + w.wg.RunWithRecover(w.startSample(ctx), func(err any) { + logutil.BgLogger().Info("workload repository sample panic", zap.Any("err", err), zap.Stack("stack")) + }, "sample") + w.wg.RunWithRecover(w.startSnapshot(ctx), func(err any) { + logutil.BgLogger().Info("workload repository snapshot panic", zap.Any("err", err), zap.Stack("stack")) + }, "snapshot") + w.wg.RunWithRecover(w.startHouseKeeper(ctx), func(err any) { + logutil.BgLogger().Info("workload repository housekeeper panic", zap.Any("err", err), zap.Stack("stack")) + }, "housekeeper") + + return + } + } + } +} + +func (w *worker) start() error { + if w.cancel != nil { + // prevent enable twice + return nil + } + + w.enabled = true + if w.sesspool == nil { + // setup isn't finished, just set enabled and return + return nil + } + + if w.etcdClient == nil { + return errors.New("etcd client required for workload repository") + } + + ctx, cancel := context.WithCancel(context.Background()) + w.cancel = cancel + w.wg.RunWithRecover(w.startRepository(ctx), func(err any) { + logutil.BgLogger().Info("workload repository prestart panic", zap.Any("err", err), zap.Stack("stack")) + }, "prestart") + return nil +} + +func (w *worker) stop() { + w.enabled = false + + if w.cancel == nil { + // Worker was not started, just clear enabled and return + return + } + + w.cancel() + w.wg.Wait() + + if w.owner != nil { + w.owner.Close() + w.owner = nil + } + + w.cancel = nil +} + +func (w *worker) setRepositoryDest(_ context.Context, dst string) error { + w.Lock() + defer w.Unlock() + + switch dst { + case "table": + return w.start() + default: + w.stop() + return nil + } +} diff --git a/pkg/util/workloadrepo/worker_test.go b/pkg/util/workloadrepo/worker_test.go new file mode 100644 index 0000000000000..19f3a82fe064f --- /dev/null +++ b/pkg/util/workloadrepo/worker_test.go @@ -0,0 +1,146 @@ +// Copyright 2024 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 workloadrepo + +import ( + "context" + "net/url" + "testing" + "time" + + "github.com/pingcap/tidb/pkg/domain" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/owner" + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/testkit" + "github.com/stretchr/testify/require" + clientv3 "go.etcd.io/etcd/client/v3" + "go.etcd.io/etcd/server/v3/embed" +) + +func setupDomainAndContext(t *testing.T) (context.Context, kv.Storage, *domain.Domain, string) { + ctx := context.Background() + var cancel context.CancelFunc + if ddl, ok := t.Deadline(); ok { + ctx, cancel = context.WithDeadline(ctx, ddl) + } + t.Cleanup(func() { + if cancel != nil { + cancel() + } + }) + + store, dom := testkit.CreateMockStoreAndDomain(t) + + cfg := embed.NewConfig() + cfg.Dir = t.TempDir() + + lcurl, err := url.Parse("http://127.0.0.1:0") + require.NoError(t, err) + cfg.ListenClientUrls, cfg.AdvertiseClientUrls = []url.URL{*lcurl}, []url.URL{*lcurl} + lpurl, err := url.Parse("http://127.0.0.1:0") + require.NoError(t, err) + cfg.ListenPeerUrls, cfg.AdvertisePeerUrls = []url.URL{*lpurl}, []url.URL{*lpurl} + + cfg.InitialCluster = "default=" + lpurl.String() + cfg.Logger = "zap" + embedEtcd, err := embed.StartEtcd(cfg) + require.NoError(t, err) + t.Cleanup(embedEtcd.Close) + + select { + case <-embedEtcd.Server.ReadyNotify(): + case <-time.After(5 * time.Second): + embedEtcd.Server.Stop() // trigger a shutdown + require.False(t, true, "server took too long to start") + } + + return ctx, store, dom, embedEtcd.Clients[0].Addr().String() +} + +func setupWorker(ctx context.Context, t *testing.T, addr string, dom *domain.Domain, id string, testWorker bool) *worker { + etcdCli, err := clientv3.New(clientv3.Config{ + Endpoints: []string{addr}, + }) + require.NoError(t, err) + t.Cleanup(func() { + _ = etcdCli.Close() + }) + + wrk := &worker{} + if !testWorker { + wrk = &workerCtx + } + owner.ManagerSessionTTL = 3 + initializeWorker(wrk, + etcdCli, func(s1, s2 string) owner.Manager { + return owner.NewOwnerManager(ctx, etcdCli, s1, id, s2) + }, + dom.SysSessionPool(), + ) + wrk.samplingInterval = 1 + wrk.snapshotInterval = 1 + wrk.instanceID = id + t.Cleanup(func() { + wrk.stop() + }) + + return wrk +} + +func TestMultipleWorker(t *testing.T) { + ctx, store, dom, addr := setupDomainAndContext(t) + + _, ok := dom.InfoSchema().SchemaByName(model.NewCIStr("workload_schema")) + require.False(t, ok) + + wrk1 := setupWorker(ctx, t, addr, dom, "worker1", true) + wrk2 := setupWorker(ctx, t, addr, dom, "worker2", true) + require.NoError(t, wrk1.setRepositoryDest(ctx, "table")) + require.NoError(t, wrk2.setRepositoryDest(ctx, "table")) + + require.Eventually(t, func() bool { + return wrk1.checkTablesExists(ctx) && wrk2.checkTablesExists(ctx) + }, time.Minute, time.Second) + + tk := testkit.NewTestKit(t, store) + + // sampling succeeded + require.Eventually(t, func() bool { + res := tk.MustQuery("select instance_id, count(*) from workload_schema.hist_memory_usage group by instance_id").Rows() + return len(res) >= 2 + }, time.Minute, time.Second) +} + +func TestGlobalWorker(t *testing.T) { + ctx, store, dom, addr := setupDomainAndContext(t) + tk := testkit.NewTestKit(t, store) + + _, ok := dom.InfoSchema().SchemaByName(model.NewCIStr("workload_schema")) + require.False(t, ok) + + wrk := setupWorker(ctx, t, addr, dom, "worker", false) + tk.MustExec("set @@global.tidb_workload_repository_dest='table'") + + require.Eventually(t, func() bool { + return wrk.checkTablesExists(ctx) + }, time.Minute, time.Second) + + // sampling succeeded + require.Eventually(t, func() bool { + res := tk.MustQuery("select instance_id, count(*) from workload_schema.hist_memory_usage group by instance_id").Rows() + return len(res) >= 1 + }, time.Minute, time.Second) +} diff --git a/tests/_utils/run_services b/tests/_utils/run_services index 5c0fa16d6408c..617821cfc7577 100644 --- a/tests/_utils/run_services +++ b/tests/_utils/run_services @@ -16,6 +16,7 @@ set -eu +export PD_HTTP_PROTO="https" export PD_PEER_ADDR="127.0.0.1:2380" export PD_ADDR="127.0.0.1:2379" export PD_PID="${TEST_DIR:?}/pd_pid.txt" @@ -79,9 +80,10 @@ start_services() { start_pd() { echo "Starting PD..." mkdir -m 700 -p "$TEST_DIR/pd" + pd-server \ - --client-urls "https://$PD_ADDR" \ - --peer-urls "https://$PD_PEER_ADDR" \ + --client-urls "$PD_HTTP_PROTO://$PD_ADDR" \ + --peer-urls "$PD_HTTP_PROTO://$PD_PEER_ADDR" \ --log-file "$TEST_DIR/pd.log" \ --data-dir "$TEST_DIR/pd" \ --config $PD_CONFIG & @@ -89,7 +91,7 @@ start_pd() { echo -e "$pid" > "${PD_PID}" # wait until PD is online... i=0 - while ! run_curl "https://$PD_ADDR/pd/api/v1/version"; do + while ! run_curl "$PD_HTTP_PROTO://$PD_ADDR/pd/api/v1/version"; do i=$((i+1)) if [ "$i" -gt 20 ]; then echo 'Failed to start PD' @@ -158,7 +160,7 @@ start_tikv() { ensure_tikv() { echo "Waiting initializing TiKV..." - while ! run_curl "https://$PD_ADDR/pd/api/v1/cluster/status" | grep '"is_initialized": true'; do + while ! run_curl "$PD_HTTP_PROTO://$PD_ADDR/pd/api/v1/cluster/status" | grep '"is_initialized": true'; do i=$((i+1)) if [ "$i" -gt 20 ]; then echo 'Failed to initialize TiKV cluster' @@ -196,6 +198,7 @@ start_services_impl() { cleanup_data || true RUN_TIFLASH=true + RUN_TIDB=true while [[ $# -gt 0 ]] do @@ -211,6 +214,10 @@ start_services_impl() { RUN_TIFLASH=false shift # past argument ;; + --no-tidb) + RUN_TIDB=false + shift # past argument + ;; *) # unknown option echo "Unknown args $1" exit 1 @@ -227,14 +234,16 @@ start_services_impl() { start_tikv "$i" done ensure_tikv - start_tidb + if $RUN_TIDB; then + start_tidb + fi if $RUN_TIFLASH; then start_tiflash fi i=0 - while ! run_curl "https://$PD_ADDR/pd/api/v1/cluster/status" | grep -q "\"is_initialized\": true"; do + while ! run_curl "$PD_HTTP_PROTO://$PD_ADDR/pd/api/v1/cluster/status" | grep -q "\"is_initialized\": true"; do i=$((i+1)) if [ "$i" -gt 20 ]; then echo 'Failed to bootstrap cluster' diff --git a/tests/integrationtest/r/bindinfo/bind.result b/tests/integrationtest/r/bindinfo/bind.result index e574970576b15..a3ec605d8bfac 100644 --- a/tests/integrationtest/r/bindinfo/bind.result +++ b/tests/integrationtest/r/bindinfo/bind.result @@ -131,7 +131,7 @@ create table t1(id int); create table t2(id int); explain format='brief' select * from t1 where exists(select 1 from t2 where t1.id=t2.id); id estRows task access object operator info -HashJoin 7992.00 root semi join, equal:[eq(bindinfo__bind.t1.id, bindinfo__bind.t2.id)] +HashJoin 7992.00 root semi join, left side:TableReader, equal:[eq(bindinfo__bind.t1.id, bindinfo__bind.t2.id)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(bindinfo__bind.t2.id)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -203,7 +203,7 @@ create table t1(a int, b int); create table t2(a int, b int); 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 -HashJoin 10000.00 root left outer semi join, equal:[eq(bindinfo__bind.t1.b, bindinfo__bind.t2.a)] +HashJoin 10000.00 root left outer semi join, left side:TableReader, equal:[eq(bindinfo__bind.t1.b, bindinfo__bind.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -211,7 +211,7 @@ HashJoin 10000.00 root left outer semi join, equal:[eq(bindinfo__bind.t1.b, bin 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 -└─Apply 10000.00 root CARTESIAN left outer semi join +└─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─Limit(Probe) 20000.00 root offset:0, count:2 @@ -226,7 +226,7 @@ select exists (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b lim 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 -└─Apply 10000.00 root CARTESIAN left outer semi join +└─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─Limit(Probe) 20000.00 root offset:0, count:2 diff --git a/tests/integrationtest/r/clustered_index.result b/tests/integrationtest/r/clustered_index.result index 8e666459932ad..da3dffed1eb27 100644 --- a/tests/integrationtest/r/clustered_index.result +++ b/tests/integrationtest/r/clustered_index.result @@ -79,14 +79,14 @@ IndexReader_8 1860.39 root index:IndexRangeScan_7 └─IndexRangeScan_7 1860.39 cop[tikv] table:tbl_0, index:idx_1(col_3) range:[1981-09-15 00:00:00,+inf], keep order:false explain select tbl_2.col_14 , tbl_0.col_1 from with_cluster_index.tbl_2 right join with_cluster_index.tbl_0 on col_3 = col_11 ; id estRows task access object operator info -MergeJoin_7 2533.51 root right outer join, left key:with_cluster_index.tbl_2.col_11, right key:with_cluster_index.tbl_0.col_3 +MergeJoin_7 2533.51 root right outer join, left side:IndexReader_22, left key:with_cluster_index.tbl_2.col_11, right key:with_cluster_index.tbl_0.col_3 ├─IndexReader_22(Build) 4509.00 root index:IndexFullScan_21 │ └─IndexFullScan_21 4509.00 cop[tikv] table:tbl_2, index:idx_9(col_11) keep order:true └─TableReader_24(Probe) 2244.00 root data:TableFullScan_23 └─TableFullScan_23 2244.00 cop[tikv] table:tbl_0 keep order:true explain select tbl_2.col_14 , tbl_0.col_1 from wout_cluster_index.tbl_2 right join wout_cluster_index.tbl_0 on col_3 = col_11 ; id estRows task access object operator info -HashJoin_22 2533.51 root right outer join, equal:[eq(wout_cluster_index.tbl_2.col_11, wout_cluster_index.tbl_0.col_3)] +HashJoin_22 2533.51 root right outer join, left side:TableReader_44, equal:[eq(wout_cluster_index.tbl_2.col_11, wout_cluster_index.tbl_0.col_3)] ├─TableReader_41(Build) 2244.00 root data:TableFullScan_40 │ └─TableFullScan_40 2244.00 cop[tikv] table:tbl_0 keep order:false └─TableReader_44(Probe) 4509.00 root data:Selection_43 diff --git a/tests/integrationtest/r/cte.result b/tests/integrationtest/r/cte.result index 77e2da6a50c35..1c9505bae8a5a 100644 --- a/tests/integrationtest/r/cte.result +++ b/tests/integrationtest/r/cte.result @@ -581,7 +581,7 @@ c1 c2 insert into t1 values(2, 3); explain select * from t1 where exists(with cte1 as (select c1 from t2 where t2.c2 = t1.c2) select c1 from cte1); id estRows task access object operator info -HashJoin_14 7992.00 root semi join, equal:[eq(cte.t1.c2, cte.t2.c2)] +HashJoin_14 7992.00 root semi join, left side:TableReader_17, equal:[eq(cte.t1.c2, cte.t2.c2)] ├─TableReader_20(Build) 9990.00 root data:Selection_19 │ └─Selection_19 9990.00 cop[tikv] not(isnull(cte.t2.c2)) │ └─TableFullScan_18 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -615,7 +615,7 @@ c1 c2 2 3 explain select * from t1 where exists(with recursive cte1 as (select c1 from t2 where t2.c2 = t1.c2 union all select c1+1 as c1 from cte1 limit 10) select c1 from cte1); id estRows task access object operator info -Apply_29 10000.00 root CARTESIAN semi join +Apply_29 10000.00 root CARTESIAN semi join, left side:TableReader_31 ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─CTEFullScan_32(Probe) 200000.00 root CTE:cte1 data:CTE_0 @@ -650,7 +650,7 @@ select * from t1 where c1 > all(with recursive cte1 as (select c1, c2 from t2 un c1 c2 explain select * from t1 where exists(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 -Apply_23 10000.00 root CARTESIAN semi join +Apply_23 10000.00 root CARTESIAN semi join, left side:TableReader_25 ├─TableReader_25(Build) 10000.00 root data:TableFullScan_24 │ └─TableFullScan_24 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─CTEFullScan_26(Probe) 180000000.00 root CTE:cte1 data:CTE_0 @@ -779,7 +779,7 @@ insert into tt5 values(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6); explain with recursive cte1 as (select c1 from tt union select c1 from cte1 where exists (select /*+ no_decorrelate() */ c1 from tt1 where tt1.c2 = cte1.c1)) select c1 from tt2 where exists (select /*+ no_decorrelate() */ * from cte1 where cte1.c1 = tt2.c1) order by 1; id estRows task access object operator info Sort_31 10000.00 root cte1.tt2.c1 -└─Apply_35 10000.00 root CARTESIAN semi join +└─Apply_35 10000.00 root CARTESIAN semi join, left side:TableReader_37 ├─TableReader_37(Build) 10000.00 root data:TableFullScan_36 │ └─TableFullScan_36 10000.00 cop[tikv] table:tt2 keep order:false, stats:pseudo └─Selection_38(Probe) 64008000.00 root eq(cte1.tt.c1, cte1.tt2.c1) @@ -787,7 +787,7 @@ Sort_31 10000.00 root cte1.tt2.c1 CTE_0 8001.00 root Recursive CTE ├─TableReader_23(Seed Part) 10000.00 root data:TableFullScan_22 │ └─TableFullScan_22 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo -└─Apply_26(Recursive Part) 10000.00 root CARTESIAN semi join +└─Apply_26(Recursive Part) 10000.00 root CARTESIAN semi join, left side:CTETable_27 ├─CTETable_27(Build) 10000.00 root Scan on CTE_0 └─TableReader_30(Probe) 100000.00 root data:Selection_29 └─Selection_29 100000.00 cop[tikv] eq(cte1.tt1.c2, cte1.tt.c1) @@ -807,22 +807,22 @@ id estRows task access object operator info Sort_58 32000.00 root Column#28 └─HashAgg_60 32000.00 root group by:Column#28, funcs:firstrow(Column#28)->Column#28 └─Union_61 40000.00 root - ├─Apply_64 10000.00 root CARTESIAN semi join + ├─Apply_64 10000.00 root CARTESIAN semi join, left side:TableReader_66 │ ├─TableReader_66(Build) 10000.00 root data:TableFullScan_65 │ │ └─TableFullScan_65 10000.00 cop[tikv] table:tt2 keep order:false, stats:pseudo │ └─Selection_67(Probe) 64008000.00 root eq(cte1.tt.c1, cte1.tt2.c1) │ └─CTEFullScan_68 80010000.00 root CTE:cte1 data:CTE_0 - ├─Apply_71 10000.00 root CARTESIAN semi join + ├─Apply_71 10000.00 root CARTESIAN semi join, left side:TableReader_73 │ ├─TableReader_73(Build) 10000.00 root data:TableFullScan_72 │ │ └─TableFullScan_72 10000.00 cop[tikv] table:tt3 keep order:false, stats:pseudo │ └─Selection_74(Probe) 64008000.00 root eq(cte1.tt.c1, cte1.tt3.c1) │ └─CTEFullScan_75 80010000.00 root CTE:cte1 data:CTE_0 - ├─Apply_78 10000.00 root CARTESIAN semi join + ├─Apply_78 10000.00 root CARTESIAN semi join, left side:TableReader_80 │ ├─TableReader_80(Build) 10000.00 root data:TableFullScan_79 │ │ └─TableFullScan_79 10000.00 cop[tikv] table:tt4 keep order:false, stats:pseudo │ └─Selection_81(Probe) 64008000.00 root eq(cte1.tt.c1, cte1.tt4.c1) │ └─CTEFullScan_82 80010000.00 root CTE:cte1 data:CTE_0 - └─Apply_85 10000.00 root CARTESIAN semi join + └─Apply_85 10000.00 root CARTESIAN semi join, left side:TableReader_87 ├─TableReader_87(Build) 10000.00 root data:TableFullScan_86 │ └─TableFullScan_86 10000.00 cop[tikv] table:tt5 keep order:false, stats:pseudo └─Selection_88(Probe) 64008000.00 root eq(cte1.tt.c1, cte1.tt5.c1) @@ -830,7 +830,7 @@ Sort_58 32000.00 root Column#28 CTE_0 8001.00 root Recursive CTE ├─TableReader_50(Seed Part) 10000.00 root data:TableFullScan_49 │ └─TableFullScan_49 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo -└─Apply_53(Recursive Part) 10000.00 root CARTESIAN semi join +└─Apply_53(Recursive Part) 10000.00 root CARTESIAN semi join, left side:CTETable_54 ├─CTETable_54(Build) 10000.00 root Scan on CTE_0 └─TableReader_57(Probe) 100000.00 root data:Selection_56 └─Selection_56 100000.00 cop[tikv] eq(cte1.tt1.c2, cte1.tt.c1) @@ -853,22 +853,22 @@ id estRows task access object operator info Sort_85 32000.00 root Column#36 └─HashAgg_87 32000.00 root group by:Column#36, funcs:firstrow(Column#36)->Column#36 └─Union_88 40000.00 root - ├─Apply_91 10000.00 root CARTESIAN semi join + ├─Apply_91 10000.00 root CARTESIAN semi join, left side:TableReader_93 │ ├─TableReader_93(Build) 10000.00 root data:TableFullScan_92 │ │ └─TableFullScan_92 10000.00 cop[tikv] table:tt2 keep order:false, stats:pseudo │ └─Selection_94(Probe) 128008000.00 root eq(Column#23, cte1.tt2.c1) │ └─CTEFullScan_95 160010000.00 root CTE:cte1 data:CTE_0 - ├─Apply_98 10000.00 root CARTESIAN semi join + ├─Apply_98 10000.00 root CARTESIAN semi join, left side:TableReader_100 │ ├─TableReader_100(Build) 10000.00 root data:TableFullScan_99 │ │ └─TableFullScan_99 10000.00 cop[tikv] table:tt3 keep order:false, stats:pseudo │ └─Selection_101(Probe) 128008000.00 root eq(Column#27, cte1.tt3.c1) │ └─CTEFullScan_102 160010000.00 root CTE:cte1 data:CTE_0 - ├─Apply_105 10000.00 root CARTESIAN semi join + ├─Apply_105 10000.00 root CARTESIAN semi join, left side:TableReader_107 │ ├─TableReader_107(Build) 10000.00 root data:TableFullScan_106 │ │ └─TableFullScan_106 10000.00 cop[tikv] table:tt4 keep order:false, stats:pseudo │ └─Selection_108(Probe) 128008000.00 root eq(Column#31, cte1.tt4.c1) │ └─CTEFullScan_109 160010000.00 root CTE:cte1 data:CTE_0 - └─Apply_112 10000.00 root CARTESIAN semi join + └─Apply_112 10000.00 root CARTESIAN semi join, left side:TableReader_114 ├─TableReader_114(Build) 10000.00 root data:TableFullScan_113 │ └─TableFullScan_113 10000.00 cop[tikv] table:tt5 keep order:false, stats:pseudo └─Selection_115(Probe) 128008000.00 root eq(Column#35, cte1.tt5.c1) @@ -878,7 +878,7 @@ CTE_0 16001.00 root Non-Recursive CTE └─Union_74 30000.00 root ├─TableReader_77 10000.00 root data:TableFullScan_76 │ └─TableFullScan_76 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo - └─Apply_80 20000.00 root CARTESIAN semi join + └─Apply_80 20000.00 root CARTESIAN semi join, left side:CTEFullScan_81 ├─CTEFullScan_81(Build) 20000.00 root CTE:cte2 data:CTE_1 └─TableReader_84(Probe) 200000.00 root data:Selection_83 └─Selection_83 200000.00 cop[tikv] eq(cte1.tt1.c2, cte1.tt.c1) @@ -886,7 +886,7 @@ CTE_0 16001.00 root Non-Recursive CTE CTE_1 20000.00 root Recursive CTE, limit(offset:0, count:300) ├─TableReader_65(Seed Part) 10000.00 root data:TableFullScan_64 │ └─TableFullScan_64 10000.00 cop[tikv] table:tt keep order:false, stats:pseudo -└─Apply_68(Recursive Part) 10000.00 root CARTESIAN semi join +└─Apply_68(Recursive Part) 10000.00 root CARTESIAN semi join, left side:CTETable_69 ├─CTETable_69(Build) 10000.00 root Scan on CTE_1 └─TableReader_72(Probe) 100000.00 root data:Selection_71 └─Selection_71 100000.00 cop[tikv] eq(cte1.tt1.c1, cte1.tt.c1) @@ -1125,27 +1125,27 @@ Union_210 199600.20 root └─CTEFullScan_214 99800.10 root CTE:product_detail data:CTE_4 CTE_4 99800.10 root Non-Recursive CTE └─Projection_172(Seed Part) 99800.10 root cte1.table_c.col_4, 3集合->Column#413 - └─HashJoin_188 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)] + └─HashJoin_188 99800.10 root left outer join, left side:HashJoin_190, equal:[eq(cte1.table_c.col_4, cte1.table_c.col_4) eq(Column#390, cte1.table_c.col_1)] ├─TableReader_204(Build) 9980.01 root data:Selection_203 │ └─Selection_203 9980.01 cop[tikv] not(isnull(cte1.table_c.col_1)), not(isnull(cte1.table_c.col_4)) │ └─TableFullScan_202 10000.00 cop[tikv] table:a keep order:false, stats:pseudo - └─HashJoin_190(Probe) 80000.00 root CARTESIAN left outer join + └─HashJoin_190(Probe) 80000.00 root CARTESIAN left outer join, left side:HashAgg_196 ├─CTEFullScan_200(Build) 10.00 root CTE:date_table AS dt data:CTE_0 └─HashAgg_196(Probe) 8000.00 root group by:cte1.table_c.col_3, cte1.table_c.col_4, funcs:firstrow(cte1.table_c.col_4)->cte1.table_c.col_4 └─TableReader_197 8000.00 root data:HashAgg_192 └─HashAgg_192 8000.00 cop[tikv] group by:cte1.table_c.col_3, cte1.table_c.col_4, └─TableFullScan_195 10000.00 cop[tikv] table:t keep order:false, stats:pseudo CTE_0 10.00 root Non-Recursive CTE -└─Apply_95(Seed Part) 10.00 root CARTESIAN left outer join - ├─Apply_97(Build) 10.00 root CARTESIAN left outer join - │ ├─Apply_99(Build) 10.00 root CARTESIAN left outer join - │ │ ├─Apply_101(Build) 10.00 root CARTESIAN left outer join +└─Apply_95(Seed Part) 10.00 root CARTESIAN left outer join, left side:Apply_97 + ├─Apply_97(Build) 10.00 root CARTESIAN left outer join, left side:Apply_99 + │ ├─Apply_99(Build) 10.00 root CARTESIAN left outer join, left side:Apply_101 + │ │ ├─Apply_101(Build) 10.00 root CARTESIAN left outer join, left side:TableReader_104 │ │ │ ├─TableReader_104(Build) 10.00 root data:Selection_103 │ │ │ │ └─Selection_103 10.00 cop[tikv] eq(cte1.table_d.col_1, 20240628) │ │ │ │ └─TableFullScan_102 10000.00 cop[tikv] table:d keep order:false, stats:pseudo │ │ │ └─StreamAgg_106(Probe) 10.00 root funcs:max(cte1.table_c.col_1)->Column#159 │ │ │ └─TopN_109 10.00 root cte1.table_c.col_1:desc, offset:0, count:1 - │ │ │ └─HashJoin_114 63936.00 root semi join, equal:[eq(Column#423, Column#424)] + │ │ │ └─HashJoin_114 63936.00 root semi join, left side:Projection_115, equal:[eq(Column#423, Column#424)] │ │ │ ├─Projection_119(Build) 80000.00 root cast(cte1.table_d.col_1, double BINARY)->Column#424 │ │ │ │ └─TableReader_122 80000.00 root data:Selection_121 │ │ │ │ └─Selection_121 80000.00 cop[tikv] eq(cast(cte1.table_d.col_2, double BINARY), 1) @@ -1156,7 +1156,7 @@ CTE_0 10.00 root Non-Recursive CTE │ │ │ └─IndexFullScan_116 99900.00 cop[tikv] table:a, index:index_col_1_3(col_1, col_3) keep order:false, stats:pseudo │ │ └─StreamAgg_124(Probe) 10.00 root funcs:max(cte1.table_a.col_1)->Column#208 │ │ └─TopN_127 10.00 root cte1.table_a.col_1:desc, offset:0, count:1 - │ │ └─HashJoin_132 63936.00 root semi join, equal:[eq(Column#429, Column#430)] + │ │ └─HashJoin_132 63936.00 root semi join, left side:Projection_133, equal:[eq(Column#429, Column#430)] │ │ ├─Projection_137(Build) 80000.00 root cast(cte1.table_d.col_1, double BINARY)->Column#430 │ │ │ └─TableReader_140 80000.00 root data:Selection_139 │ │ │ └─Selection_139 80000.00 cop[tikv] eq(cast(cte1.table_d.col_2, double BINARY), 1) diff --git a/tests/integrationtest/r/ddl/column.result b/tests/integrationtest/r/ddl/column.result index 8ca8082543310..0183fefdeadc7 100644 --- a/tests/integrationtest/r/ddl/column.result +++ b/tests/integrationtest/r/ddl/column.result @@ -84,3 +84,15 @@ t CREATE TABLE `t` ( `a` decimal(10,0) DEFAULT NULL, `b` decimal(10,0) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +drop table if exists t; +create table t(a bit(2) default b'111'); +Error 1067 (42000): Invalid default value for 'a' +create table t(a bit(65) default b'111'); +Error 1439 (42000): Display width out of range for column 'a' (max = 64) +create table t(a bit(64) default b'1111111111111111111111111111111111111111111111111111111111111111'); +drop table t; +create table t(a bit(3) default b'111'); +drop table t; +create table t(a bit(3) default b'000111'); +drop table t; +create table t(a bit(32) default b'1111111111111111111111111111111'); diff --git a/tests/integrationtest/r/ddl/db_partition.result b/tests/integrationtest/r/ddl/db_partition.result index 7c1992a7408b0..fb359b6f234d0 100644 --- a/tests/integrationtest/r/ddl/db_partition.result +++ b/tests/integrationtest/r/ddl/db_partition.result @@ -3244,7 +3244,7 @@ id store_id 1 1 select *,_tidb_rowid from t; id store_id _tidb_rowid -0 18 30257 +0 18 30002 1 1 30001 drop table t, t1; create table t (id int not null, store_id int not null ) partition by range (store_id) (partition p0 values less than (6), partition p1 values less than (11), partition p2 values less than (16), partition p3 values less than (21)); @@ -3267,7 +3267,7 @@ id store_id 1 1 select *,_tidb_rowid from t; id store_id _tidb_rowid -0 18 30257 +0 18 30002 1 1 30001 drop table t, t1; drop table if exists aaa; diff --git a/tests/integrationtest/r/ddl/ddl_error.result b/tests/integrationtest/r/ddl/ddl_error.result index 47027d66d6845..7047194d4a7bf 100644 --- a/tests/integrationtest/r/ddl/ddl_error.result +++ b/tests/integrationtest/r/ddl/ddl_error.result @@ -11,3 +11,11 @@ Error 1450 (HY000): Changing schema from 'ddl__ddl_error' to 'ddl__ddl_error2' i rename table ddl__ddl_error.view_1 to ddl__ddl_error2.view_1; Error 1450 (HY000): Changing schema from 'ddl__ddl_error' to 'ddl__ddl_error2' is not allowed. rename table ddl__ddl_error.view_1 to ddl__ddl_error.view_1000; +create view sql_mode_view as select @@sql_mode; +Error 1351 (HY000): View's SELECT contains a variable or parameter +create view sql_mode_view as select @@global.sql_mode; +Error 1351 (HY000): View's SELECT contains a variable or parameter +create view sql_mode_view as select @a; +Error 1351 (HY000): View's SELECT contains a variable or parameter +create view sql_mode_view as select 1 where @a = 4; +Error 1351 (HY000): View's SELECT contains a variable or parameter diff --git a/tests/integrationtest/r/ddl/partition.result b/tests/integrationtest/r/ddl/partition.result index adfec8fb8846a..0fecd412ae507 100644 --- a/tests/integrationtest/r/ddl/partition.result +++ b/tests/integrationtest/r/ddl/partition.result @@ -401,3 +401,45 @@ ALTER TABLE tp1 PARTITION BY RANGE (id) (PARTITION `P_LT_200` VALUES LESS THAN ( PARTITION `P_LT_500` VALUES LESS THAN (500), PARTITION `P_LT_600` VALUES LESS THAN (600)); drop table tp1; +DROP TABLE IF EXISTS t; +CREATE TABLE t (a int NOT NULL, b varchar(20) NOT NULL, c datetime NOT NULL ) PARTITION BY RANGE COLUMNS (c) INTERVAL (1 MINUTE) FIRST PARTITION LESS THAN ('2024-01-01') LAST PARTITION LESS THAN ('2024-01-01 00:10:00'); +SHOW CREATE TABLE t; +Table Create Table +t CREATE TABLE `t` ( + `a` int NOT NULL, + `b` varchar(20) NOT NULL, + `c` datetime NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +PARTITION BY RANGE COLUMNS(`c`) +(PARTITION `P_LT_2024-01-01 00:00:00` VALUES LESS THAN ('2024-01-01 00:00:00'), + PARTITION `P_LT_2024-01-01 00:01:00` VALUES LESS THAN ('2024-01-01 00:01:00'), + PARTITION `P_LT_2024-01-01 00:02:00` VALUES LESS THAN ('2024-01-01 00:02:00'), + PARTITION `P_LT_2024-01-01 00:03:00` VALUES LESS THAN ('2024-01-01 00:03:00'), + PARTITION `P_LT_2024-01-01 00:04:00` VALUES LESS THAN ('2024-01-01 00:04:00'), + PARTITION `P_LT_2024-01-01 00:05:00` VALUES LESS THAN ('2024-01-01 00:05:00'), + PARTITION `P_LT_2024-01-01 00:06:00` VALUES LESS THAN ('2024-01-01 00:06:00'), + PARTITION `P_LT_2024-01-01 00:07:00` VALUES LESS THAN ('2024-01-01 00:07:00'), + PARTITION `P_LT_2024-01-01 00:08:00` VALUES LESS THAN ('2024-01-01 00:08:00'), + PARTITION `P_LT_2024-01-01 00:09:00` VALUES LESS THAN ('2024-01-01 00:09:00'), + PARTITION `P_LT_2024-01-01 00:10:00` VALUES LESS THAN ('2024-01-01 00:10:00')) +ALTER TABLE t FIRST PARTITION LESS THAN ('2024-01-01 00:02:00'); +ALTER TABLE t LAST PARTITION LESS THAN ('2024-01-01 00:12:00'); +SHOW CREATE TABLE t; +Table Create Table +t CREATE TABLE `t` ( + `a` int NOT NULL, + `b` varchar(20) NOT NULL, + `c` datetime NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin +PARTITION BY RANGE COLUMNS(`c`) +(PARTITION `P_LT_2024-01-01 00:02:00` VALUES LESS THAN ('2024-01-01 00:02:00'), + PARTITION `P_LT_2024-01-01 00:03:00` VALUES LESS THAN ('2024-01-01 00:03:00'), + PARTITION `P_LT_2024-01-01 00:04:00` VALUES LESS THAN ('2024-01-01 00:04:00'), + PARTITION `P_LT_2024-01-01 00:05:00` VALUES LESS THAN ('2024-01-01 00:05:00'), + PARTITION `P_LT_2024-01-01 00:06:00` VALUES LESS THAN ('2024-01-01 00:06:00'), + PARTITION `P_LT_2024-01-01 00:07:00` VALUES LESS THAN ('2024-01-01 00:07:00'), + PARTITION `P_LT_2024-01-01 00:08:00` VALUES LESS THAN ('2024-01-01 00:08:00'), + PARTITION `P_LT_2024-01-01 00:09:00` VALUES LESS THAN ('2024-01-01 00:09:00'), + PARTITION `P_LT_2024-01-01 00:10:00` VALUES LESS THAN ('2024-01-01 00:10:00'), + PARTITION `P_LT_2024-01-01 00:11:00` VALUES LESS THAN ('2024-01-01 00:11:00'), + PARTITION `P_LT_2024-01-01 00:12:00` VALUES LESS THAN ('2024-01-01 00:12:00')) diff --git a/tests/integrationtest/r/executor/aggregate.result b/tests/integrationtest/r/executor/aggregate.result index ebd58e49753ff..4de3e447d9a7d 100644 --- a/tests/integrationtest/r/executor/aggregate.result +++ b/tests/integrationtest/r/executor/aggregate.result @@ -544,7 +544,7 @@ explain format='brief' SELECT /*+ hash_join_build(customer) */ c_custkey, count 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 - └─HashJoin 10000.00 root left outer join, equal:[eq(executor__aggregate.customer.c_custkey, executor__aggregate.orders.o_custkey)] + └─HashJoin 10000.00 root left outer join, left side:TableReader, 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 @@ -2032,9 +2032,9 @@ sum(a) (select NULL from test where tt.a = test.a limit 1) (select NULL from tes 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 -└─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 +└─Apply 1.00 root CARTESIAN left outer join, left side:Apply + ├─Apply(Build) 1.00 root CARTESIAN left outer join, left side:Apply + │ ├─Apply(Build) 1.00 root CARTESIAN left outer join, left side:HashAgg │ │ ├─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 │ │ │ └─TableReader 10000.00 root data:TableFullScan diff --git a/tests/integrationtest/r/executor/autoid.result b/tests/integrationtest/r/executor/autoid.result index cc57ca2854fe4..a174034ba21ca 100644 --- a/tests/integrationtest/r/executor/autoid.result +++ b/tests/integrationtest/r/executor/autoid.result @@ -551,12 +551,10 @@ id show table t_473 next_row_id; DB_NAME TABLE_NAME COLUMN_NAME NEXT_GLOBAL_ROW_ID ID_TYPE executor__autoid t_473 id 30001 _TIDB_ROWID -executor__autoid t_473 id 1 AUTO_INCREMENT alter table t_473 auto_id_cache = 100; show table t_473 next_row_id; DB_NAME TABLE_NAME COLUMN_NAME NEXT_GLOBAL_ROW_ID ID_TYPE executor__autoid t_473 id 30001 _TIDB_ROWID -executor__autoid t_473 id 1 AUTO_INCREMENT insert into t_473 values (); select * from t_473; id @@ -565,7 +563,6 @@ id show table t_473 next_row_id; DB_NAME TABLE_NAME COLUMN_NAME NEXT_GLOBAL_ROW_ID ID_TYPE executor__autoid t_473 id 30101 _TIDB_ROWID -executor__autoid t_473 id 1 AUTO_INCREMENT alter table t_473 auto_id_cache = 1; Error 1105 (HY000): Can't Alter AUTO_ID_CACHE between 1 and non-1, the underlying implementation is different drop table if exists io; diff --git a/tests/integrationtest/r/executor/ddl.result b/tests/integrationtest/r/executor/ddl.result index b7c75847b74b1..41aa4e05679ab 100644 --- a/tests/integrationtest/r/executor/ddl.result +++ b/tests/integrationtest/r/executor/ddl.result @@ -179,7 +179,7 @@ SHOW CREATE TABLE t; Table Create Table t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 5 DAY */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 5 DAY */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ DROP TABLE t; CREATE TABLE t (id int) TTL = `id` + INTERVAL 5 DAY; Error 8148 (HY000): Field 'id' is of a not supported type for TTL config, expect DATETIME, DATE or TIMESTAMP @@ -199,7 +199,7 @@ SHOW CREATE TABLE t; Table Create Table t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 3 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 3 DAY */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ DROP TABLE t; drop table if exists t; CREATE TABLE t (created_at datetime, updated_at datetime, wrong_type int) TTL = `created_at` + INTERVAL 5 DAY; @@ -210,7 +210,7 @@ t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL, `wrong_type` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`updated_at` + INTERVAL 2 YEAR */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`updated_at` + INTERVAL 2 YEAR */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ ALTER TABLE t TTL_ENABLE = 'OFF'; SHOW CREATE TABLE t; Table Create Table @@ -218,7 +218,7 @@ t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL, `wrong_type` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`updated_at` + INTERVAL 2 YEAR */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`updated_at` + INTERVAL 2 YEAR */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ ALTER TABLE t TTL_JOB_INTERVAL = '1d'; SHOW CREATE TABLE t; Table Create Table @@ -314,9 +314,9 @@ create view v7 (c,d,e) as select * from t1; Error 1353 (HY000): In definition of view, derived table or common table expression, SELECT list and column names list have different column counts drop view v1,v2,v3,v4,v5,v6; create view v1 (c,d) as select a,b+@@global.max_user_connections from t1; +Error 1351 (HY000): View's SELECT contains a variable or parameter create view v1 (c,d) as select a,b from t1 where a = @@global.max_user_connections; -Error 1050 (42S01): Table 'executor__ddl.v1' already exists -drop view v1; +Error 1351 (HY000): View's SELECT contains a variable or parameter create view v1 (c,d,e) as select a,b from t1 ; Error 1353 (HY000): In definition of view, derived table or common table expression, SELECT list and column names list have different column counts create view v1 (c) as select a,b from t1 ; @@ -379,7 +379,10 @@ create or replace definer='root'@'localhost' view v_nested as select * from v_ne Error 1146 (42S02): Table 'executor__ddl.v_nested' doesn't exist drop table test_v_nested; drop view v_nested, v_nested2; -create view v_stale as select * from source_table as of timestamp current_timestamp(3); +select sleep(1); +sleep(1) +0 +create view v_stale as select * from source_table as of timestamp date_sub(current_timestamp(3), interval 1 second); Error 1356 (HY000): View 'executor__ddl.v_stale' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them drop view if exists v1,v2; drop table if exists t1; diff --git a/tests/integrationtest/r/executor/executor.result b/tests/integrationtest/r/executor/executor.result index d77fc2b8d3260..f998336193202 100644 --- a/tests/integrationtest/r/executor/executor.result +++ b/tests/integrationtest/r/executor/executor.result @@ -2633,7 +2633,7 @@ NULL 3 3 3 explain format = 'brief' select * from t1 except select * from t3; id estRows task access object operator info -HashJoin 6400.00 root anti semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t3.a)], other cond:nulleq(cast(executor__executor.t1.b, decimal(10,0) BINARY), executor__executor.t3.b) +HashJoin 6400.00 root anti semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t3.a)], other cond:nulleq(cast(executor__executor.t1.b, decimal(10,0) BINARY), executor__executor.t3.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashAgg(Probe) 8000.00 root group by:executor__executor.t1.a, executor__executor.t1.b, funcs:firstrow(executor__executor.t1.a)->executor__executor.t1.a, funcs:firstrow(executor__executor.t1.b)->executor__executor.t1.b @@ -2647,7 +2647,7 @@ NULL NULL 2 2 explain format = 'brief' select * from t1 intersect select * from t2; id estRows task access object operator info -HashJoin 6400.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)], other cond:nulleq(cast(executor__executor.t1.b, double BINARY), cast(executor__executor.t2.b, double BINARY)) +HashJoin 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)], other cond:nulleq(cast(executor__executor.t1.b, double BINARY), cast(executor__executor.t2.b, double BINARY)) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─HashAgg(Probe) 8000.00 root group by:executor__executor.t1.a, executor__executor.t1.b, funcs:firstrow(executor__executor.t1.a)->executor__executor.t1.a, funcs:firstrow(executor__executor.t1.b)->executor__executor.t1.b @@ -2686,7 +2686,7 @@ 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, left side:HashAgg, equal:[nulleq(Column#10, executor__executor.t3.a)], other cond:nulleq(cast(Column#11, 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 @@ -2704,10 +2704,10 @@ NULL 3 2 2 explain format = 'brief' select * from t1 intersect select * from t2 intersect select * from t1; id estRows task access object operator info -HashJoin 5120.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t1.a) nulleq(executor__executor.t1.b, executor__executor.t1.b)] +HashJoin 5120.00 root semi join, left side:HashJoin, equal:[nulleq(executor__executor.t1.a, executor__executor.t1.a) nulleq(executor__executor.t1.b, executor__executor.t1.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo -└─HashJoin(Probe) 6400.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)], other cond:nulleq(cast(executor__executor.t1.b, double BINARY), cast(executor__executor.t2.b, double BINARY)) +└─HashJoin(Probe) 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)], other cond:nulleq(cast(executor__executor.t1.b, double BINARY), cast(executor__executor.t2.b, double BINARY)) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─HashAgg(Probe) 8000.00 root group by:executor__executor.t1.a, executor__executor.t1.b, funcs:firstrow(executor__executor.t1.a)->executor__executor.t1.a, funcs:firstrow(executor__executor.t1.b)->executor__executor.t1.b @@ -2725,7 +2725,7 @@ 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 │ └─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)) +└─HashJoin 6400.00 root semi join, left side:HashAgg, 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)) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashAgg(Probe) 8000.00 root group by:executor__executor.t2.a, executor__executor.t2.b, funcs:firstrow(executor__executor.t2.a)->executor__executor.t2.a, funcs:firstrow(executor__executor.t2.b)->executor__executor.t2.b @@ -2741,8 +2741,8 @@ NULL NULL 3 3 explain format = 'brief' select * from t1 except select * from t2 intersect select * from t3; id estRows task access object operator info -HashJoin 6400.00 root anti semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)], other cond:nulleq(cast(executor__executor.t1.b, double BINARY), cast(executor__executor.t2.b, double BINARY)) -├─HashJoin(Build) 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)) +HashJoin 6400.00 root anti semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)], other cond:nulleq(cast(executor__executor.t1.b, double BINARY), cast(executor__executor.t2.b, double BINARY)) +├─HashJoin(Build) 6400.00 root semi join, left side:HashAgg, 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)) │ ├─TableReader(Build) 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo │ └─HashAgg(Probe) 8000.00 root group by:executor__executor.t2.a, executor__executor.t2.b, funcs:firstrow(executor__executor.t2.a)->executor__executor.t2.a, funcs:firstrow(executor__executor.t2.b)->executor__executor.t2.b @@ -2788,14 +2788,14 @@ count(*) 0 explain format = 'brief' select t1.c1, t2.c1 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 -MergeJoin 0.00 root left outer join, left key:executor__executor.t.c1, right key:executor__executor.t.c1 +MergeJoin 0.00 root left outer join, left side:TableDual, 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 select t1.c1, t2.c1 from t as t1 left join t as t2 on t1.c1 = t2.c1 where t1.c1 != NULL; c1 c1 explain format = 'brief' select * 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 -MergeJoin 0.00 root left outer join, left key:executor__executor.t.c1, right key:executor__executor.t.c1 +MergeJoin 0.00 root left outer join, left side:TableDual, 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 select * from t as t1 left join t as t2 on t1.c1 = t2.c1 where t1.c1 != NULL; @@ -2803,7 +2803,7 @@ 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 -└─MergeJoin 0.00 root left outer join, left key:executor__executor.t.c1, right key:executor__executor.t.c1 +└─MergeJoin 0.00 root left outer join, left side:TableDual, 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 select count(*) from t as t1 left join t as t2 on t1.c1 = t2.c1 where t1.c1 != NULL; @@ -2811,7 +2811,7 @@ count(*) 0 explain format = 'brief' select * from t as t1 left join t as t2 on t1.c1 = t2.c1 where t1.c1 is not NULL; id estRows task access object operator info -HashJoin 12487.50 root left outer join, equal:[eq(executor__executor.t.c1, executor__executor.t.c1)] +HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(executor__executor.t.c1, executor__executor.t.c1)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(executor__executor.t.c1)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -2863,7 +2863,7 @@ NULL 3 explain format='brief' select * from t1 except select * from t3; id estRows task access object operator info -HashJoin 6400.00 root anti semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t3.a)] +HashJoin 6400.00 root anti semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, 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) 8000.00 root group by:executor__executor.t1.a, funcs:firstrow(executor__executor.t1.a)->executor__executor.t1.a @@ -2876,7 +2876,7 @@ NULL 1 explain format='brief' select * from t1 intersect select * from t2; id estRows task access object operator info -HashJoin 6400.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] +HashJoin 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─HashAgg(Probe) 8000.00 root group by:executor__executor.t1.a, funcs:firstrow(executor__executor.t1.a)->executor__executor.t1.a @@ -2912,7 +2912,7 @@ 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, left side:HashAgg, equal:[nulleq(Column#7, 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 @@ -2927,10 +2927,10 @@ NULL 1 explain format='brief' select * from t1 intersect select * from t2 intersect select * from t1; id estRows task access object operator info -HashJoin 5120.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t1.a)] +HashJoin 5120.00 root semi join, left side:HashJoin, equal:[nulleq(executor__executor.t1.a, executor__executor.t1.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo -└─HashJoin(Probe) 6400.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] +└─HashJoin(Probe) 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─HashAgg(Probe) 8000.00 root group by:executor__executor.t1.a, funcs:firstrow(executor__executor.t1.a)->executor__executor.t1.a @@ -2947,7 +2947,7 @@ id estRows task access object operator info Union 16400.00 root ├─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)] +└─HashJoin 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t2.a, 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) 8000.00 root group by:executor__executor.t2.a, funcs:firstrow(executor__executor.t2.a)->executor__executor.t2.a @@ -2964,8 +2964,8 @@ NULL 3 explain format='brief' select * from t1 except select * from t2 intersect select * from t3; id estRows task access object operator info -HashJoin 6400.00 root anti semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] -├─HashJoin(Build) 6400.00 root semi join, equal:[nulleq(executor__executor.t2.a, executor__executor.t3.a)] +HashJoin 6400.00 root anti semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] +├─HashJoin(Build) 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t2.a, 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) 8000.00 root group by:executor__executor.t2.a, funcs:firstrow(executor__executor.t2.a)->executor__executor.t2.a @@ -2983,8 +2983,8 @@ NULL 3 explain format='brief' select * from t1 intersect (select * from t2 except (select * from t3)); id estRows task access object operator info -HashJoin 6400.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] -├─HashJoin(Build) 6400.00 root anti semi join, equal:[nulleq(executor__executor.t2.a, executor__executor.t3.a)] +HashJoin 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t2.a)] +├─HashJoin(Build) 6400.00 root anti semi join, left side:HashAgg, equal:[nulleq(executor__executor.t2.a, 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) 8000.00 root group by:executor__executor.t2.a, funcs:firstrow(executor__executor.t2.a)->executor__executor.t2.a @@ -3004,7 +3004,7 @@ id estRows task access object operator info Union 16400.00 root ├─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo -└─HashJoin 6400.00 root anti semi join, equal:[nulleq(executor__executor.t2.a, executor__executor.t3.a)] +└─HashJoin 6400.00 root anti semi join, left side:HashAgg, equal:[nulleq(executor__executor.t2.a, 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) 8000.00 root group by:executor__executor.t2.a, funcs:firstrow(executor__executor.t2.a)->executor__executor.t2.a @@ -3039,14 +3039,14 @@ 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)] +HashJoin 5120.00 root anti semi join, left side:HashJoin, equal:[nulleq(executor__executor.t1.a, Column#9)] ├─HashAgg(Build) 16000.00 root group by:Column#9, funcs:firstrow(Column#9)->Column#9 │ └─Union 20000.00 root │ ├─TableReader 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 6400.00 root semi join, equal:[nulleq(executor__executor.t1.a, executor__executor.t1.a)] +└─HashJoin(Probe) 6400.00 root semi join, left side:HashAgg, equal:[nulleq(executor__executor.t1.a, executor__executor.t1.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─HashAgg(Probe) 8000.00 root group by:executor__executor.t1.a, funcs:firstrow(executor__executor.t1.a)->executor__executor.t1.a @@ -3821,9 +3821,7 @@ show warnings; Level Code Message Warning 1364 Field 'a' doesn't have a default value insert t values (null); -show warnings; -Level Code Message -Warning 1048 Column 'a' cannot be null +Error 1048 (23000): Column 'a' cannot be null insert ignore t values (null); show warnings; Level Code Message @@ -3838,7 +3836,6 @@ a 0 0 0 -0 127 insert tdouble values (10.23); select * from tdouble; @@ -4327,13 +4324,13 @@ TOTAL_SPLIT_REGION SCATTER_FINISH_RATIO insert into t values (0,0),(10,10),(20,20),(30,30); alter table t add index idx1(b); admin show ddl jobs 1; -JOB_ID DB_NAME TABLE_NAME JOB_TYPE SCHEMA_STATE SCHEMA_ID TABLE_ID ROW_COUNT CREATE_TIME START_TIME END_TIME STATE - executor__executor t public 4 synced +JOB_ID DB_NAME TABLE_NAME JOB_TYPE SCHEMA_STATE SCHEMA_ID TABLE_ID ROW_COUNT CREATE_TIME START_TIME END_TIME STATE COMMENTS + executor__executor t public 4 synced insert into t values (1,0),(2,10),(3,20),(4,30); alter table t add index idx2(b); admin show ddl jobs 1; -JOB_ID DB_NAME TABLE_NAME JOB_TYPE SCHEMA_STATE SCHEMA_ID TABLE_ID ROW_COUNT CREATE_TIME START_TIME END_TIME STATE - executor__executor t public 8 synced +JOB_ID DB_NAME TABLE_NAME JOB_TYPE SCHEMA_STATE SCHEMA_ID TABLE_ID ROW_COUNT CREATE_TIME START_TIME END_TIME STATE COMMENTS + executor__executor t public 8 synced drop table if exists t; create table t(a int, b int as(-a)); insert into t(a) values(1), (3), (7); diff --git a/tests/integrationtest/r/executor/expand.result b/tests/integrationtest/r/executor/expand.result index 0edab215499dd..44353a92153ca 100644 --- a/tests/integrationtest/r/executor/expand.result +++ b/tests/integrationtest/r/executor/expand.result @@ -538,7 +538,7 @@ FROM GROUP BY T0.DATE WITH ROLLUP; id estRows task access object operator info Projection_18 1.00 root Column#6 -└─Apply_20 1.00 root CARTESIAN left outer join +└─Apply_20 1.00 root CARTESIAN left outer join, left side:HashAgg_21 ├─HashAgg_21(Build) 1.00 root group by:Column#3, gid, funcs:firstrow(Column#1)->Column#1 │ └─Expand_24 1.00 root level-projection:[Column#1, ->Column#3, 0->gid],[Column#1, Column#3, 1->gid]; schema: [Column#1,Column#3,gid] │ └─Projection_26 1.00 root 2024-09-15->Column#1, 2024-09-15->Column#3 @@ -570,7 +570,7 @@ 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 -└─Apply_20 8000.00 root CARTESIAN left outer join +└─Apply_20 8000.00 root CARTESIAN left outer join, left side:HashAgg_21 ├─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 diff --git a/tests/integrationtest/r/executor/explain.result b/tests/integrationtest/r/executor/explain.result index 110a9625c765d..c00de435f239e 100644 --- a/tests/integrationtest/r/executor/explain.result +++ b/tests/integrationtest/r/executor/explain.result @@ -9,7 +9,7 @@ HashJoin 100000000.00 root CARTESIAN inner join └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t t1 where exists (select 1 from t t2 where t2.v > t1.v); id estRows task access object operator info -HashJoin 7992.00 root CARTESIAN semi join, other cond:gt(executor__explain.t.v, executor__explain.t.v) +HashJoin 7992.00 root CARTESIAN semi join, left side:TableReader, other cond:gt(executor__explain.t.v, executor__explain.t.v) ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(executor__explain.t.v)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -18,7 +18,7 @@ HashJoin 7992.00 root CARTESIAN semi join, other cond:gt(executor__explain.t.v, └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t t1 where exists (select 1 from t t2 where t2.v in (t1.v+1, t1.v+2)); id estRows task access object operator info -HashJoin 8000.00 root CARTESIAN semi join, other cond:in(executor__explain.t.v, plus(executor__explain.t.v, 1), plus(executor__explain.t.v, 2)) +HashJoin 8000.00 root CARTESIAN semi join, left side:TableReader, other cond:in(executor__explain.t.v, plus(executor__explain.t.v, 1), plus(executor__explain.t.v, 2)) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -219,7 +219,7 @@ select @@last_plan_from_cache; 0 explain format = 'binary' select * from t; binary plan -4QFYCtwBCg1UYWJsZVJlYWRlcl81EncKD1QBEVBGdWxsU2Nhbl80IQEAAAA4DU9BKQABAfBGiMNAOAJAAkoYChYKEWV4ZWN1dG9yX19leHBsYWluEgF0Uh5rZWVwIG9yZGVyOmZhbHNlLCBzdGF0czpwc2V1ZG9w//////8BAwQBeAEGBQEgASFVVVVVlSMTHWYoAUABUhRkYXRhOlQ2kgBIWhB0aW1lOjBzLCBsb29wczowcAVFAQE0AXj///////////8BGAE= +9AFYCu8BCg1UYWJsZVJlYWRlcl81EncKD1QBEVBGdWxsU2Nhbl80IQEAAAA4DU9BKQABAfBGiMNAOAJAAkoYChYKEWV4ZWN1dG9yX19leHBsYWluEgF0Uh5rZWVwIG9yZGVyOmZhbHNlLCBzdGF0czpwc2V1ZG9w//////8BAwQBeAEGBQEgASFVVVVVlSMTHWYoAUABUhRkYXRhOlQ2kgA4WiN0aW1lOjBzLCBvcGVuBQkMY2xvcwkTHGxvb3BzOjBwBVgBATQBeP///////////wEYAQ== select @@last_plan_from_cache; @@last_plan_from_cache 0 @@ -346,7 +346,7 @@ 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)) - └─HashJoin_32 10.00 root left outer join, equal:[eq(executor__explain.t1.id2, executor__explain.t2.id2)] + └─HashJoin_32 10.00 root left outer join, left side:IndexLookUp_84, 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 │ └─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) diff --git a/tests/integrationtest/r/executor/index_lookup_join.result b/tests/integrationtest/r/executor/index_lookup_join.result index 95c7edbf0967f..fd0b2cfde72a4 100644 --- a/tests/integrationtest/r/executor/index_lookup_join.result +++ b/tests/integrationtest/r/executor/index_lookup_join.result @@ -135,7 +135,7 @@ create table t2 (a int, key(a)); explain select /*+ tidb_inlj(bb) */ aa.* from (select * from t1) as aa left join (select t2.a, t2.a*2 as a2 from t2) as bb on aa.a=bb.a; id estRows task access object operator info -IndexJoin_13 12487.50 root left outer join, inner:IndexReader_12, outer key:executor__index_lookup_join.t1.a, inner key:executor__index_lookup_join.t2.a, equal cond:eq(executor__index_lookup_join.t1.a, executor__index_lookup_join.t2.a) +IndexJoin_13 12487.50 root left outer join, inner:IndexReader_12, left side:IndexReader_24, outer key:executor__index_lookup_join.t1.a, inner key:executor__index_lookup_join.t2.a, equal cond:eq(executor__index_lookup_join.t1.a, executor__index_lookup_join.t2.a) ├─IndexReader_24(Build) 10000.00 root index:IndexFullScan_23 │ └─IndexFullScan_23 10000.00 cop[tikv] table:t1, index:a(a) keep order:false, stats:pseudo └─IndexReader_12(Probe) 12487.50 root index:Selection_11 diff --git a/tests/integrationtest/r/executor/index_lookup_merge_join.result b/tests/integrationtest/r/executor/index_lookup_merge_join.result index e54b5ebb6b14a..aa14a2bab18e2 100644 --- a/tests/integrationtest/r/executor/index_lookup_merge_join.result +++ b/tests/integrationtest/r/executor/index_lookup_merge_join.result @@ -11,7 +11,7 @@ insert into t1 values(1,1,1,1),(2,2,2,2),(3,3,3,3); insert into t2 values(1,1,1,1),(2,2,2,2); explain format = 'brief' select /*+ inl_merge_join(t1,t2) */ * from t1 left join t2 on t1.a = t2.a and t1.c = t2.c and t1.b = t2.b order by t1.a desc; id estRows task access object operator info -IndexJoin 100000000.00 root left outer join, inner:IndexLookUp, outer key:executor__index_lookup_merge_join.t1.a, executor__index_lookup_merge_join.t1.c, executor__index_lookup_merge_join.t1.b, inner key:executor__index_lookup_merge_join.t2.a, executor__index_lookup_merge_join.t2.c, executor__index_lookup_merge_join.t2.b, equal cond:eq(executor__index_lookup_merge_join.t1.a, executor__index_lookup_merge_join.t2.a), eq(executor__index_lookup_merge_join.t1.b, executor__index_lookup_merge_join.t2.b), eq(executor__index_lookup_merge_join.t1.c, executor__index_lookup_merge_join.t2.c) +IndexJoin 100000000.00 root left outer join, inner:IndexLookUp, left side:Projection, outer key:executor__index_lookup_merge_join.t1.a, executor__index_lookup_merge_join.t1.c, executor__index_lookup_merge_join.t1.b, inner key:executor__index_lookup_merge_join.t2.a, executor__index_lookup_merge_join.t2.c, executor__index_lookup_merge_join.t2.b, equal cond:eq(executor__index_lookup_merge_join.t1.a, executor__index_lookup_merge_join.t2.a), eq(executor__index_lookup_merge_join.t1.b, executor__index_lookup_merge_join.t2.b), eq(executor__index_lookup_merge_join.t1.c, executor__index_lookup_merge_join.t2.c) ├─Projection(Build) 10000.00 root executor__index_lookup_merge_join.t1.a, executor__index_lookup_merge_join.t1.b, executor__index_lookup_merge_join.t1.c, executor__index_lookup_merge_join.t1.d │ └─IndexLookUp 10000.00 root │ ├─IndexFullScan(Build) 10000.00 cop[tikv] table:t1, index:PRIMARY(a, b, c) keep order:true, desc, stats:pseudo diff --git a/tests/integrationtest/r/executor/infoschema_reader.result b/tests/integrationtest/r/executor/infoschema_reader.result index 9da5cdee9d0da..8986706f08903 100644 --- a/tests/integrationtest/r/executor/infoschema_reader.result +++ b/tests/integrationtest/r/executor/infoschema_reader.result @@ -172,7 +172,7 @@ db_name table_name job_type test_ddl_jobs tt alter table multi-schema change test_ddl_jobs tt add column /* subjob */ test_ddl_jobs tt add column /* subjob */ -test_ddl_jobs tt add index /* subjob */ /* txn */ +test_ddl_jobs tt add index /* subjob */ drop database test_ddl_jobs; use executor__infoschema_reader; set global tidb_ddl_enable_fast_reorg = default; @@ -230,9 +230,8 @@ tidb_qps sum(rate(tidb_server_query_total{$LABEL_CONDITIONS}[$RANGE_DURATION])) select * from information_schema.TABLE_CONSTRAINTS where TABLE_NAME='gc_delete_range'; CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE def mysql delete_range_index mysql gc_delete_range UNIQUE -select * from information_schema.SESSION_VARIABLES where VARIABLE_NAME='tidb_retry_limit'; -VARIABLE_NAME VARIABLE_VALUE -tidb_retry_limit 10 +SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='information_schema' AND TABLE_NAME IN ('GLOBAL_VARIABLES','SESSION_VARIABLES','GLOBAL_STATUS','SESSION_STATUS'); +TABLE_NAME drop sequence if exists seq, seq2; CREATE SEQUENCE seq maxvalue 10000000; SELECT * FROM information_schema.sequences WHERE sequence_schema='executor__infoschema_reader' AND sequence_name='seq'; @@ -445,3 +444,23 @@ alter table t add index idx_t (c(16)); select SUB_PART from information_schema.statistics where TABLE_SCHEMA = 'executor__infoschema_reader' and TABLE_NAME = 't'; SUB_PART 16 +select table_name from information_schema.columns where table_name = 'a' and table_name = 'b'; +table_name +select table_name from information_schema.columns where table_schema = 'a' and table_schema = 'b'; +table_name +select table_name from information_schema.tables where table_name = 'a' and table_name = 'b'; +table_name +select table_name from information_schema.tables where table_schema = 'a' and table_schema = 'b'; +table_name +select table_name from information_schema.partitions where table_name = 'a' and table_name = 'b'; +table_name +select table_name from information_schema.partitions where table_schema = 'a' and table_schema = 'b'; +table_name +select table_name from information_schema.statistics where table_name = 'a' and table_name = 'b'; +table_name +select table_name from information_schema.statistics where table_schema = 'a' and table_schema = 'b'; +table_name +select table_name from information_schema.referential_constraints where table_name = 'a' and table_name = 'b'; +table_name +select table_name from information_schema.referential_constraints where constraint_schema = 'a' and constraint_schema = 'b'; +table_name diff --git a/tests/integrationtest/r/executor/insert.result b/tests/integrationtest/r/executor/insert.result index 0b28ef1e7267a..a2250b63e7478 100644 --- a/tests/integrationtest/r/executor/insert.result +++ b/tests/integrationtest/r/executor/insert.result @@ -1866,9 +1866,7 @@ f1 f2 2 2 SET sql_mode=''; INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null; -show warnings; -Level Code Message -Warning 1048 Column 'f2' cannot be null +Error 1048 (23000): Column 'f2' cannot be null SELECT * FROM t1 order by f1; f1 f2 1 0 @@ -2142,3 +2140,41 @@ Warning 1452 Cannot add or update a child row: a foreign key constraint fails (` insert into parent values (2, 3) on duplicate key update ref = 3; Error 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`executor__insert`.`child`, CONSTRAINT `fk_1` FOREIGN KEY (`ref`) REFERENCES `parent` (`ref`)) insert ignore into parent values (2, 3) on duplicate key update ref = 3; +drop table if exists t1, t2; +create table t1 (id int primary key, col1 varchar(10) not null default ''); +create table t2 (id int primary key, col1 varchar(10)); +insert into t2 values (1, null); +insert ignore into t1 values(5, null); +set session sql_mode = ''; +insert into t1 values(1, null); +Error 1048 (23000): Column 'col1' cannot be null +insert into t1 set id = 1, col1 = null; +Error 1048 (23000): Column 'col1' cannot be null +insert t1 VALUES (5, 5) ON DUPLICATE KEY UPDATE col1 = null; +Error 1048 (23000): Column 'col1' cannot be null +insert t1 VALUES (5, 5), (6, null) ON DUPLICATE KEY UPDATE col1 = null; +select * from t1; +id col1 +5 +6 +insert into t1 select * from t2; +show warnings; +Level Code Message +Warning 1048 Column 'col1' cannot be null +insert into t1 values(2, null), (3, 3), (4, 4); +show warnings; +Level Code Message +Warning 1048 Column 'col1' cannot be null +update t1 set col1 = null where id = 3; +show warnings; +Level Code Message +Warning 1048 Column 'col1' cannot be null +insert ignore t1 VALUES (4, 4) ON DUPLICATE KEY UPDATE col1 = null; +select * from t1; +id col1 +1 +2 +3 +4 +5 +6 diff --git a/tests/integrationtest/r/executor/issues.result b/tests/integrationtest/r/executor/issues.result index d69b1e6072883..90fbd3efcd6d0 100644 --- a/tests/integrationtest/r/executor/issues.result +++ b/tests/integrationtest/r/executor/issues.result @@ -1006,3 +1006,6 @@ select from_unixtime( if(col2 >9999999999, col2/1000, col2), '%Y-%m-%d %H:%i:%s' result 2024-09-03 00:00:00 2024-09-03 00:00:00 +select ((exists (select 1)) * -5) as c1; +c1 +-5 diff --git a/tests/integrationtest/r/executor/jointest/hash_join.result b/tests/integrationtest/r/executor/jointest/hash_join.result index 649109899f085..73cfdcc61bf03 100644 --- a/tests/integrationtest/r/executor/jointest/hash_join.result +++ b/tests/integrationtest/r/executor/jointest/hash_join.result @@ -331,3 +331,27 @@ col_14 1984-06-10 00:00:00 1984-07-31 00:00:00 2017-06-07 00:00:00 +drop table if exists t1; +drop table if exists t2; +create table t1 (col0 int, col1 int); +create table t2 (col0 int, col1 int); +insert into t1 values (null, 3), (null, 5), (null, null), (1, 1), (1, 2), (1, null), (2, 1), (2, 2), (2, null), (3, 1), (3, 2), (3, 4), (3, null); +insert into t2 values (null, 3), (null, 4), (null, null), (1, 1), (3, 1), (3, 3), (3, null), (4, null), (4, 1), (4, 2), (4, 10); +select * from t1 where col1 in (select col1 from t2 where t1.col0 = t2.col0) order by t1.col0, t1.col1; +col0 col1 +1 1 +3 1 +select * from t1 where exists (select 1 from t2 where t1.col0 = t2.col0) order by t1.col0, t1.col1; +col0 col1 +1 NULL +1 1 +1 2 +3 NULL +3 1 +3 2 +3 4 +select * from t1 where exists (select 1 from t2 where t1.col0 = t2.col0 and t1.col1 > t2.col1) order by t1.col0, t1.col1; +col0 col1 +1 2 +3 2 +3 4 diff --git a/tests/integrationtest/r/executor/jointest/join.result b/tests/integrationtest/r/executor/jointest/join.result index 1c3034c25e762..fae6baed9f931 100644 --- a/tests/integrationtest/r/executor/jointest/join.result +++ b/tests/integrationtest/r/executor/jointest/join.result @@ -220,7 +220,7 @@ insert into t1 values(1, 100), (2, 100), (3, 100), (4, 100), (5, 100); insert into t2 select a*100, b*100 from t1; explain format = 'brief' select /*+ TIDB_SMJ(t2) */ * from t1 left outer join t2 on t1.a=t2.a and t1.a!=3 order by t1.a; id estRows task access object operator info -MergeJoin 10000.00 root left outer join, left key:executor__jointest__join.t1.a, right key:executor__jointest__join.t2.a, left cond:ne(executor__jointest__join.t1.a, 3) +MergeJoin 10000.00 root left outer join, left side:TableReader, left key:executor__jointest__join.t1.a, right key:executor__jointest__join.t2.a, left cond:ne(executor__jointest__join.t1.a, 3) ├─TableReader(Build) 6666.67 root data:TableRangeScan │ └─TableRangeScan 6666.67 cop[tikv] table:t2 range:[-inf,3), (3,+inf], keep order:true, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -733,7 +733,7 @@ a b c explain format = 'brief' select * from t1 natural left join t2 order by a; id estRows task access object operator info Sort 12487.50 root executor__jointest__join.t1.a -└─HashJoin 12487.50 root left outer join, equal:[eq(executor__jointest__join.t1.a, executor__jointest__join.t2.a)] +└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(executor__jointest__join.t1.a, executor__jointest__join.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(executor__jointest__join.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -748,7 +748,7 @@ explain format = 'brief' select * from t1 natural right join t2 order by a; id estRows task access object operator info Sort 12487.50 root executor__jointest__join.t2.a └─Projection 12487.50 root executor__jointest__join.t2.a, executor__jointest__join.t2.c, executor__jointest__join.t1.b - └─HashJoin 12487.50 root right outer join, equal:[eq(executor__jointest__join.t1.a, executor__jointest__join.t2.a)] + └─HashJoin 12487.50 root right outer join, left side:TableReader, equal:[eq(executor__jointest__join.t1.a, executor__jointest__join.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(executor__jointest__join.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -763,7 +763,7 @@ explain format = 'brief' SELECT * FROM t1 NATURAL LEFT JOIN t2 WHERE not(t1.a <= id estRows task access object operator info Projection 9990.00 root executor__jointest__join.t1.a, executor__jointest__join.t1.b, executor__jointest__join.t2.c └─Selection 9990.00 root not(nulleq(executor__jointest__join.t1.a, executor__jointest__join.t2.a)) - └─HashJoin 12487.50 root left outer join, equal:[eq(executor__jointest__join.t1.a, executor__jointest__join.t2.a)] + └─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(executor__jointest__join.t1.a, executor__jointest__join.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(executor__jointest__join.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/executor/merge_join.result b/tests/integrationtest/r/executor/merge_join.result index 2bc38e95ef84d..4ddee172b6c72 100644 --- a/tests/integrationtest/r/executor/merge_join.result +++ b/tests/integrationtest/r/executor/merge_join.result @@ -7,7 +7,7 @@ insert into t1 values(2,3),(4,4); explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t left outer join t1 on t.c1 = t1.c1 where t.c1 = 1 or t1.c2 > 20; id estRows task access object operator info Selection 8000.00 root or(eq(executor__merge_join.t.c1, 1), gt(executor__merge_join.t1.c2, 20)) -└─MergeJoin 10000.00 root left outer join, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 +└─MergeJoin 10000.00 root left outer join, left side:Sort, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 ├─Sort(Build) 3336.66 root executor__merge_join.t1.c1 │ └─TableReader 3336.66 root data:Selection │ └─Selection 3336.66 cop[tikv] not(isnull(executor__merge_join.t1.c1)), or(eq(executor__merge_join.t1.c1, 1), gt(executor__merge_join.t1.c2, 20)) @@ -21,7 +21,7 @@ c1 c2 c1 c2 explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t1 right outer join t on t.c1 = t1.c1 where t.c1 = 1 or t1.c2 > 20; id estRows task access object operator info Selection 8000.00 root or(eq(executor__merge_join.t.c1, 1), gt(executor__merge_join.t1.c2, 20)) -└─MergeJoin 10000.00 root right outer join, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t.c1 +└─MergeJoin 10000.00 root right outer join, left side:Sort, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t.c1 ├─Sort(Build) 3336.66 root executor__merge_join.t1.c1 │ └─TableReader 3336.66 root data:Selection │ └─Selection 3336.66 cop[tikv] not(isnull(executor__merge_join.t1.c1)), or(eq(executor__merge_join.t1.c1, 1), gt(executor__merge_join.t1.c2, 20)) @@ -35,7 +35,7 @@ NULL NULL 1 1 explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t right outer join t1 on t.c1 = t1.c1 where t.c1 = 1 or t1.c2 > 20; id estRows task access object operator info Selection 9990.00 root or(eq(executor__merge_join.t.c1, 1), gt(executor__merge_join.t1.c2, 20)) -└─MergeJoin 12487.50 root right outer join, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 +└─MergeJoin 12487.50 root right outer join, left side:Sort, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 ├─Sort(Build) 9990.00 root executor__merge_join.t.c1 │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(executor__merge_join.t.c1)) @@ -61,7 +61,7 @@ c1 c2 c1 c2 explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t left outer join t1 on t.c1 = t1.c1 and t.c1 != 1 order by t1.c1; id estRows task access object operator info Sort 10000.00 root executor__merge_join.t1.c1 -└─MergeJoin 10000.00 root left outer join, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1, left cond:ne(executor__merge_join.t.c1, 1) +└─MergeJoin 10000.00 root left outer join, left side:Sort, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1, left cond:ne(executor__merge_join.t.c1, 1) ├─Sort(Build) 6656.67 root executor__merge_join.t1.c1 │ └─TableReader 6656.67 root data:Selection │ └─Selection 6656.67 cop[tikv] ne(executor__merge_join.t1.c1, 1), not(isnull(executor__merge_join.t1.c1)) @@ -196,7 +196,7 @@ create table s(a int, b int); insert into s values(1,1); explain format = 'brief' select /*+ TIDB_SMJ(t, s) */ a in (select a from s where s.b >= t.b) from t; id estRows task access object operator info -MergeJoin 10000.00 root left outer semi join, other cond:eq(executor__merge_join.t.a, executor__merge_join.s.a), ge(executor__merge_join.s.b, executor__merge_join.t.b) +MergeJoin 10000.00 root left outer semi join, left side:TableReader, other cond:eq(executor__merge_join.t.a, executor__merge_join.s.a), ge(executor__merge_join.s.b, executor__merge_join.t.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:s keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -272,7 +272,7 @@ explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t left outer join t1 o id estRows task access object operator info Selection 8000.00 root or(eq(executor__merge_join.t.c1, 1), gt(executor__merge_join.t1.c2, 20)) └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader TableReader] - └─MergeJoin 10000.00 root left outer join, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 + └─MergeJoin 10000.00 root left outer join, left side:Sort, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 ├─Sort(Build) 3336.66 root executor__merge_join.t1.c1 │ └─ShuffleReceiver 3336.66 root │ └─TableReader 3336.66 root data:Selection @@ -289,7 +289,7 @@ explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t1 right outer join t id estRows task access object operator info Selection 8000.00 root or(eq(executor__merge_join.t.c1, 1), gt(executor__merge_join.t1.c2, 20)) └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader TableReader] - └─MergeJoin 10000.00 root right outer join, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t.c1 + └─MergeJoin 10000.00 root right outer join, left side:Sort, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t.c1 ├─Sort(Build) 3336.66 root executor__merge_join.t1.c1 │ └─ShuffleReceiver 3336.66 root │ └─TableReader 3336.66 root data:Selection @@ -306,7 +306,7 @@ explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t right outer join t1 id estRows task access object operator info Selection 9990.00 root or(eq(executor__merge_join.t.c1, 1), gt(executor__merge_join.t1.c2, 20)) └─Shuffle 12487.50 root execution info: concurrency:4, data sources:[TableReader TableReader] - └─MergeJoin 12487.50 root right outer join, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 + └─MergeJoin 12487.50 root right outer join, left side:Sort, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1 ├─Sort(Build) 9990.00 root executor__merge_join.t.c1 │ └─ShuffleReceiver 9990.00 root │ └─TableReader 9990.00 root data:Selection @@ -338,7 +338,7 @@ explain format = 'brief' select /*+ TIDB_SMJ(t) */ * from t left outer join t1 o id estRows task access object operator info Sort 10000.00 root executor__merge_join.t1.c1 └─Shuffle 10000.00 root execution info: concurrency:4, data sources:[TableReader TableReader] - └─MergeJoin 10000.00 root left outer join, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1, left cond:ne(executor__merge_join.t.c1, 1) + └─MergeJoin 10000.00 root left outer join, left side:Sort, left key:executor__merge_join.t.c1, right key:executor__merge_join.t1.c1, left cond:ne(executor__merge_join.t.c1, 1) ├─Sort(Build) 6656.67 root executor__merge_join.t1.c1 │ └─ShuffleReceiver 6656.67 root │ └─TableReader 6656.67 root data:Selection @@ -475,7 +475,7 @@ create table s(a int, b int); insert into s values(1,1); explain format = 'brief' select /*+ TIDB_SMJ(t, s) */ a in (select a from s where s.b >= t.b) from t; id estRows task access object operator info -MergeJoin 10000.00 root left outer semi join, other cond:eq(executor__merge_join.t.a, executor__merge_join.s.a), ge(executor__merge_join.s.b, executor__merge_join.t.b) +MergeJoin 10000.00 root left outer semi join, left side:TableReader, other cond:eq(executor__merge_join.t.a, executor__merge_join.s.a), ge(executor__merge_join.s.b, executor__merge_join.t.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:s keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -571,7 +571,7 @@ Sort 15625.00 root executor__merge_join.t1.c1 └─MergeJoin 15625.00 root inner join, left key:executor__merge_join.t2.c1, right key:executor__merge_join.t3.c1 ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:true, stats:pseudo - └─MergeJoin(Probe) 12500.00 root right outer join, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t2.c1 + └─MergeJoin(Probe) 12500.00 root right outer join, left side:TableReader, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t2.c1 ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -625,7 +625,7 @@ Sort 15625.00 root executor__merge_join.t1.c1 └─MergeJoin 15625.00 root inner join, left key:executor__merge_join.t2.c1, right key:executor__merge_join.t3.c1 ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:true, stats:pseudo - └─MergeJoin(Probe) 12500.00 root right outer join, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t2.c1 + └─MergeJoin(Probe) 12500.00 root right outer join, left side:TableReader, left key:executor__merge_join.t1.c1, right key:executor__merge_join.t2.c1 ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan diff --git a/tests/integrationtest/r/executor/perfschema.result b/tests/integrationtest/r/executor/perfschema.result new file mode 100644 index 0000000000000..2ad8612da8f9c --- /dev/null +++ b/tests/integrationtest/r/executor/perfschema.result @@ -0,0 +1,19 @@ +select * from performance_schema.SESSION_VARIABLES where VARIABLE_NAME='tidb_retry_limit'; +VARIABLE_NAME VARIABLE_VALUE +tidb_retry_limit 10 +DESCRIBE performance_schema.GLOBAL_VARIABLES; +Field Type Null Key Default Extra +VARIABLE_NAME varchar(64) NO NULL +VARIABLE_VALUE varchar(1024) YES NULL +DESCRIBE performance_schema.SESSION_VARIABLES; +Field Type Null Key Default Extra +VARIABLE_NAME varchar(64) NO NULL +VARIABLE_VALUE varchar(1024) NO NULL +DESCRIBE performance_schema.GLOBAL_STATUS; +Field Type Null Key Default Extra +VARIABLE_NAME varchar(64) NO NULL +VARIABLE_VALUE varchar(1024) YES NULL +DESCRIBE performance_schema.SESSION_STATUS; +Field Type Null Key Default Extra +VARIABLE_NAME varchar(64) NO NULL +VARIABLE_VALUE varchar(1024) YES NULL diff --git a/tests/integrationtest/r/executor/show.result b/tests/integrationtest/r/executor/show.result index 186e4540e7974..9afa45e8b3efd 100644 --- a/tests/integrationtest/r/executor/show.result +++ b/tests/integrationtest/r/executor/show.result @@ -116,28 +116,28 @@ show create table t; Table Create Table t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 100 YEAR */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 100 YEAR */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ drop table if exists t; create table t(created_at datetime) ttl = `created_at` + INTERVAL 100 YEAR ttl_enable = 'OFF'; show create table t; Table Create Table t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 100 YEAR */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 100 YEAR */ /*T![ttl] TTL_ENABLE='OFF' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ drop table if exists t; create table t (created_at datetime) TTL = created_at + INTERVAL 3.14159 HOUR_MINUTE; show create table t; Table Create Table t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 3.14159 HOUR_MINUTE */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL 3.14159 HOUR_MINUTE */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ drop table if exists t; create table t (created_at datetime) TTL = created_at + INTERVAL "15:20" HOUR_MINUTE; show create table t; Table Create Table t CREATE TABLE `t` ( `created_at` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL _utf8mb4'15:20' HOUR_MINUTE */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='1h' */ +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`created_at` + INTERVAL _utf8mb4'15:20' HOUR_MINUTE */ /*T![ttl] TTL_ENABLE='ON' */ /*T![ttl] TTL_JOB_INTERVAL='24h' */ drop table if exists t; create table t (created_at datetime) TTL = created_at + INTERVAL 100 YEAR TTL_JOB_INTERVAL = '1d'; show create table t; diff --git a/tests/integrationtest/r/explain_complex.result b/tests/integrationtest/r/explain_complex.result index 297cbfec24365..26e580c99cad4 100644 --- a/tests/integrationtest/r/explain_complex.result +++ b/tests/integrationtest/r/explain_complex.result @@ -250,11 +250,11 @@ id estRows task access object operator info Sort 1.00 root explain_complex.org_department.left_value └─HashAgg 1.00 root group by:explain_complex.org_department.id, funcs:firstrow(explain_complex.org_department.id)->explain_complex.org_department.id, funcs:firstrow(explain_complex.org_department.ctx)->explain_complex.org_department.ctx, funcs:firstrow(explain_complex.org_department.name)->explain_complex.org_department.name, funcs:firstrow(explain_complex.org_department.left_value)->explain_complex.org_department.left_value, funcs:firstrow(explain_complex.org_department.right_value)->explain_complex.org_department.right_value, funcs:firstrow(explain_complex.org_department.depth)->explain_complex.org_department.depth, funcs:firstrow(explain_complex.org_department.leader_id)->explain_complex.org_department.leader_id, funcs:firstrow(explain_complex.org_department.status)->explain_complex.org_department.status, funcs:firstrow(explain_complex.org_department.created_on)->explain_complex.org_department.created_on, funcs:firstrow(explain_complex.org_department.updated_on)->explain_complex.org_department.updated_on └─Selection 0.01 root or(eq(explain_complex.org_employee_position.user_id, 62), or(eq(explain_complex.org_department.id, 20), eq(explain_complex.org_department.id, 20))) - └─HashJoin 0.02 root left outer join, equal:[eq(explain_complex.org_position.id, explain_complex.org_employee_position.position_id)] + └─HashJoin 0.02 root left outer join, left side:IndexJoin, equal:[eq(explain_complex.org_position.id, explain_complex.org_employee_position.position_id)] ├─TableReader(Build) 9.99 root data:Selection │ └─Selection 9.99 cop[tikv] eq(explain_complex.org_employee_position.status, 1000), not(isnull(explain_complex.org_employee_position.position_id)) │ └─TableFullScan 10000.00 cop[tikv] table:ep keep order:false, stats:pseudo - └─IndexJoin(Probe) 0.01 root left outer join, inner:IndexLookUp, outer key:explain_complex.org_department.id, inner key:explain_complex.org_position.department_id, equal cond:eq(explain_complex.org_department.id, explain_complex.org_position.department_id) + └─IndexJoin(Probe) 0.01 root left outer join, inner:IndexLookUp, left side:IndexLookUp, outer key:explain_complex.org_department.id, inner key:explain_complex.org_position.department_id, equal cond:eq(explain_complex.org_department.id, explain_complex.org_position.department_id) ├─IndexLookUp(Build) 0.01 root │ ├─IndexRangeScan(Build) 10.00 cop[tikv] table:d, index:org_department_ctx_index(ctx) range:[1,1], keep order:false, stats:pseudo │ └─Selection(Probe) 0.01 cop[tikv] eq(explain_complex.org_department.status, 1000) @@ -277,8 +277,8 @@ 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 -└─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) +└─IndexJoin_16 15.62 root left outer join, inner:TableReader_13, left side:IndexJoin_27, 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, left side:TableReader_36, 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 │ │ └─Selection_35 10.00 cop[tikv] eq(explain_complex.tab_a.num, 112) │ │ └─TableFullScan_34 10000.00 cop[tikv] table:Tab_A keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/explain_cte.result b/tests/integrationtest/r/explain_cte.result index 2590f9e78bd75..71fb6115e7cf5 100644 --- a/tests/integrationtest/r/explain_cte.result +++ b/tests/integrationtest/r/explain_cte.result @@ -107,7 +107,7 @@ CTE_0 2.00 root Recursive CTE └─CTETable_15 1.00 root Scan on CTE_0 explain select * from t1 dt where exists(with recursive qn as (select c1*0+1 as b union all select b+1 from qn where b=0) select * from qn where b=1); id estRows task access object operator info -Apply_24 10000.00 root CARTESIAN semi join +Apply_24 10000.00 root CARTESIAN semi join, left side:TableReader_26 ├─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) diff --git a/tests/integrationtest/r/explain_easy.result b/tests/integrationtest/r/explain_easy.result index 7d40b5045437a..252ec9c3d9e1d 100644 --- a/tests/integrationtest/r/explain_easy.result +++ b/tests/integrationtest/r/explain_easy.result @@ -14,7 +14,7 @@ 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)] +HashJoin 8000.00 root semi join, left side:Projection, equal:[eq(Column#13, Column#11)] ├─StreamAgg(Build) 1.00 root funcs:sum(Column#16)->Column#11 │ └─TableReader 1.00 root data:StreamAgg │ └─StreamAgg 1.00 cop[tikv] funcs:sum(explain_easy.t3.a)->Column#16 @@ -46,7 +46,7 @@ IndexReader 10.00 root index:IndexRangeScan └─IndexRangeScan 10.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.c2 = t2.c1 where t1.c1 > 1; id estRows task access object operator info -HashJoin 4166.67 root left outer join, equal:[eq(explain_easy.t1.c2, explain_easy.t2.c1)] +HashJoin 4166.67 root left outer join, left side:TableReader, equal:[eq(explain_easy.t1.c2, explain_easy.t2.c1)] ├─TableReader(Build) 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t1 range:(1,+inf], keep order:false, stats:pseudo └─TableReader(Probe) 9990.00 root data:Selection @@ -92,7 +92,7 @@ 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 - └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t1.c1, explain_easy.t2.c1) + └─HashJoin 10000.00 root CARTESIAN left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -109,7 +109,7 @@ HashJoin 9990.00 root inner join, equal:[eq(explain_easy.t1.c1, explain_easy.t2 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 -└─MergeJoin 12500.00 root left outer join, left key:explain_easy.t1.c1, right key:explain_easy.t1.c1 +└─MergeJoin 12500.00 root left outer join, left side:TableReader, left key:explain_easy.t1.c1, right key:explain_easy.t1.c1 ├─Projection(Build) 10000.00 root 1->Column#10, explain_easy.t1.c1 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:s keep order:true, stats:pseudo @@ -127,7 +127,7 @@ MemTableScan 10000.00 root table:COLUMNS column_name:["c1"], table_name:["t1"], 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 -└─Apply 10000.00 root CARTESIAN left outer join +└─Apply 10000.00 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─Projection(Probe) 10000.00 root explain_easy.t2.c1, explain_easy.t2.c2 @@ -236,14 +236,14 @@ 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 - └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(explain_easy.t1.c1, explain_easy.t2.c1) + └─HashJoin 10000.00 root CARTESIAN left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select 1 in (select c2 from t2) from t1; id estRows task access object operator info -HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(1, explain_easy.t2.c2) +HashJoin 10000.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(1, explain_easy.t2.c2) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -252,7 +252,7 @@ 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 - └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(6, explain_easy.t2.c2) + └─HashJoin 10000.00 root CARTESIAN left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -319,7 +319,7 @@ 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) +└─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(explain_easy.t.c, Column#16) ├─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 @@ -331,7 +331,7 @@ Projection 10000.00 root Column#17 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) +└─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(explain_easy.t.c, Column#16) ├─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 @@ -343,7 +343,7 @@ Projection 10000.00 root Column#17 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) +└─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(explain_easy.t.c, Column#16) ├─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 @@ -359,7 +359,7 @@ 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) +└─Apply 5.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(explain_easy.t.c, Column#16) ├─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 @@ -373,7 +373,7 @@ Projection 5.00 root Column#17 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) +└─Apply 5.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(explain_easy.t.c, Column#16) ├─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 @@ -384,7 +384,7 @@ Projection 5.00 root Column#17 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) +└─Apply 5.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(explain_easy.t.c, Column#16) ├─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 @@ -447,7 +447,7 @@ Projection 0.00 root explain_easy.t.a, explain_easy.t.b, explain_easy.t.a, expl └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t t1 where not exists (select * from t t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(explain_easy.t.b, explain_easy.t.b)] +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(explain_easy.t.b, explain_easy.t.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -506,7 +506,7 @@ 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) + └─IndexJoin 2.50 root left outer join, inner:TableReader, left side:HashAgg, 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 │ └─Union 2.00 root │ ├─Projection 1.00 root Column#33, Column#34, Column#35, Column#14, Column#15, Column#16 @@ -564,7 +564,7 @@ Projection 10.00 root plus(1, cast(explain_easy.t.nb, bigint BINARY))->Column#5 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select * from t ta left outer join t tb on ta.nb = tb.nb and ta.a > 1 where ifnull(ta.nb, 1) or ta.nb is null; id estRows task access object operator info -HashJoin 10000.00 root left outer join, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)], left cond:[gt(explain_easy.t.a, 1)] +HashJoin 10000.00 root left outer join, left side:TableReader, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)], left cond:[gt(explain_easy.t.a, 1)] ├─TableReader(Build) 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] or(cast(explain_easy.t.nb, bigint BINARY), 0) │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo @@ -573,7 +573,7 @@ HashJoin 10000.00 root left outer join, equal:[eq(explain_easy.t.nb, explain_ea └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo explain format = 'brief' select * from t ta right outer join t tb on ta.nb = tb.nb and ta.a > 1 where ifnull(tb.nb, 1) or tb.nb is null; id estRows task access object operator info -HashJoin 8000.00 root right outer join, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)] +HashJoin 8000.00 root right outer join, left side:TableReader, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)] ├─TableReader(Build) 2666.67 root data:Selection │ └─Selection 2666.67 cop[tikv] cast(explain_easy.t.nb, bigint BINARY), gt(explain_easy.t.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo @@ -592,7 +592,7 @@ HashJoin 3333.33 root inner join, equal:[eq(explain_easy.t.nb, explain_easy.t.n 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)] +└─Apply 10000.00 root left outer semi join, left side:Projection, equal:[eq(Column#23, Column#21)] ├─Projection(Build) 10000.00 root explain_easy.t.a, cast(explain_easy.t.nc, bigint BINARY)->Column#23 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -609,14 +609,14 @@ Projection 10000.00 root Column#22 explain format = 'brief' select * from t ta left outer join t tb on ta.nb = tb.nb and ta.a > 1 where ifnull(tb.a, 1) or tb.a is null; id estRows task access object operator info Selection 10000.00 root or(ifnull(explain_easy.t.a, 1), isnull(explain_easy.t.a)) -└─HashJoin 12500.00 root left outer join, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)], left cond:[gt(explain_easy.t.a, 1)] +└─HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)], left cond:[gt(explain_easy.t.a, 1)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo explain format = 'brief' select * from t ta right outer join t tb on ta.nb = tb.nb and ta.a > 1 where ifnull(tb.a, 1) or tb.a is null; id estRows task access object operator info -HashJoin 8002.00 root right outer join, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)] +HashJoin 8002.00 root right outer join, left side:TableReader, equal:[eq(explain_easy.t.nb, explain_easy.t.nb)] ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(explain_easy.t.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo @@ -626,7 +626,7 @@ HashJoin 8002.00 root right outer join, equal:[eq(explain_easy.t.nb, explain_ea 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)] +└─Apply 10000.00 root left outer semi join, left side:Projection, equal:[eq(Column#23, Column#21)] ├─Projection(Build) 10000.00 root explain_easy.t.a, ifnull(explain_easy.t.a, 1)->Column#23 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -708,7 +708,7 @@ begin; insert into t values (1); explain format = 'brief' select * from t left outer join t t1 on t.a = t1.a where t.a not between 1 and 2; id estRows task access object operator info -HashJoin 8320.83 root left outer join, equal:[eq(explain_easy.t.a, explain_easy.t.a)] +HashJoin 8320.83 root left outer join, left side:UnionScan, equal:[eq(explain_easy.t.a, explain_easy.t.a)] ├─UnionScan(Build) 6656.67 root not(and(ge(explain_easy.t.a, 1), le(explain_easy.t.a, 2))), not(isnull(explain_easy.t.a)) │ └─TableReader 6656.67 root data:Selection │ └─Selection 6656.67 cop[tikv] not(isnull(explain_easy.t.a)), or(lt(explain_easy.t.a, 1), gt(explain_easy.t.a, 2)) @@ -801,7 +801,7 @@ 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#7 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:n keep order:false, stats:pseudo @@ -812,12 +812,12 @@ Projection 1.00 root Column#11->Column#12 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 └─HashAgg(Probe) 1.00 root funcs:sum(Column#12)->Column#7 - └─HashJoin 1.00 root CARTESIAN left outer join + └─HashJoin 1.00 root CARTESIAN left outer join, left side:TableDual ├─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 │ └─MaxOneRow 1.00 root @@ -827,7 +827,7 @@ Projection 1.00 root Column#7->Column#8 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 -└─HashJoin 8000.00 root CARTESIAN left outer join +└─HashJoin 8000.00 root CARTESIAN left outer join, left side:HashAgg ├─TableDual(Build) 1.00 root rows:1 └─HashAgg(Probe) 8000.00 root group by:explain_easy.t.b, funcs:count(Column#9)->Column#5 └─TableReader 8000.00 root data:HashAgg @@ -836,7 +836,7 @@ Sort 8000.00 root Column#5 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─StreamAgg(Build) 1.00 root funcs:count(explain_easy.t.a)->Column#4 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -847,9 +847,9 @@ explain format = 'brief' select sum(a), (select sum(a)), count(a) from t group b 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 - └─HashJoin 8000.00 root CARTESIAN left outer join + └─HashJoin 8000.00 root CARTESIAN left outer join, left side:HashJoin ├─TableDual(Build) 1.00 root rows:1 - └─HashJoin(Probe) 8000.00 root CARTESIAN left outer join + └─HashJoin(Probe) 8000.00 root CARTESIAN left outer join, left side:HashAgg ├─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 └─TableReader 8000.00 root data:HashAgg diff --git a/tests/integrationtest/r/explain_easy_stats.result b/tests/integrationtest/r/explain_easy_stats.result index cbe78c65adc7d..21ca5f66d4d52 100644 --- a/tests/integrationtest/r/explain_easy_stats.result +++ b/tests/integrationtest/r/explain_easy_stats.result @@ -15,7 +15,7 @@ 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)] +HashJoin 1600.00 root semi join, left side:Projection, equal:[eq(Column#13, Column#11)] ├─StreamAgg(Build) 1.00 root funcs:sum(Column#16)->Column#11 │ └─TableReader 1.00 root data:StreamAgg │ └─StreamAgg 1.00 cop[tikv] funcs:sum(explain_easy_stats.t3.a)->Column#16 @@ -47,7 +47,7 @@ IndexReader 0.00 root index:IndexRangeScan └─IndexRangeScan 0.00 cop[tikv] table:t1, index:c2(c2) range:[1,1], keep order:false, stats:partial[c2:missing] explain format = 'brief' select * from t1 left join t2 on t1.c2 = t2.c1 where t1.c1 > 1; id estRows task access object operator info -HashJoin 2481.25 root left outer join, equal:[eq(explain_easy_stats.t1.c2, explain_easy_stats.t2.c1)] +HashJoin 2481.25 root left outer join, left side:TableReader, equal:[eq(explain_easy_stats.t1.c2, explain_easy_stats.t2.c1)] ├─TableReader(Build) 1985.00 root data:Selection │ └─Selection 1985.00 cop[tikv] not(isnull(explain_easy_stats.t2.c1)) │ └─TableFullScan 1985.00 cop[tikv] table:t2 keep order:false, stats:partial[c1:missing] @@ -103,7 +103,7 @@ 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 -└─Apply 1999.00 root CARTESIAN left outer join +└─Apply 1999.00 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 1999.00 root data:TableFullScan │ └─TableFullScan 1999.00 cop[tikv] table:t1 keep order:false └─TopN(Probe) 1999.00 root explain_easy_stats.t2.c1, offset:0, count:1 @@ -120,7 +120,7 @@ Limit 1.00 root offset:0, count:1 set @@session.tidb_opt_insubq_to_join_and_agg=0; explain format = 'brief' select 1 in (select c2 from t2) from t1; id estRows task access object operator info -HashJoin 1999.00 root CARTESIAN left outer semi join, other cond:eq(1, explain_easy_stats.t2.c2) +HashJoin 1999.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(1, explain_easy_stats.t2.c2) ├─TableReader(Build) 1985.00 root data:TableFullScan │ └─TableFullScan 1985.00 cop[tikv] table:t2 keep order:false └─TableReader(Probe) 1999.00 root data:TableFullScan diff --git a/tests/integrationtest/r/explain_union_scan.result b/tests/integrationtest/r/explain_union_scan.result index 094535d74548a..872ffa189d628 100644 --- a/tests/integrationtest/r/explain_union_scan.result +++ b/tests/integrationtest/r/explain_union_scan.result @@ -14,7 +14,7 @@ update city set province_id = 77 where id="06766b3ef41d484d8878606393f1ed0b"; explain format = 'brief' select t1.*, t2.province_id as provinceID, t2.city_name as cityName, t3.description as description from city t1 inner join city t2 on t1.id = t2.id left join city t3 on t1.province_id = t3.province_id where t1.province_id > 1 and t1.province_id < 100 limit 10; id estRows task access object operator info Limit 10.00 root offset:0, count:10 -└─HashJoin 10.00 root left outer join, equal:[eq(explain_union_scan.city.province_id, explain_union_scan.city.province_id)] +└─HashJoin 10.00 root left outer join, left side:Limit, equal:[eq(explain_union_scan.city.province_id, explain_union_scan.city.province_id)] ├─Limit(Build) 10.00 root offset:0, count:10 │ └─IndexJoin 10.00 root inner join, inner:UnionScan, outer key:explain_union_scan.city.id, inner key:explain_union_scan.city.id, equal cond:eq(explain_union_scan.city.id, explain_union_scan.city.id) │ ├─UnionScan(Build) 10.00 root diff --git a/tests/integrationtest/r/expression/builtin.result b/tests/integrationtest/r/expression/builtin.result index e5869d051cf08..d1e0adb5f4064 100644 --- a/tests/integrationtest/r/expression/builtin.result +++ b/tests/integrationtest/r/expression/builtin.result @@ -520,7 +520,7 @@ crc32(0) crc32(-0) crc32('0') crc32('abc') crc32('ABC') crc32(NULL) crc32('') cr 4108050209 4108050209 4108050209 891568578 2743272264 NULL 0 62177901 SELECT radians(1.0), radians(pi()), radians(pi()/2), radians(180), radians(1.009); radians(1.0) radians(pi()) radians(pi()/2) radians(180) radians(1.009) -0.017453292519943295 0.05483113556160754 0.02741556778080377 3.141592653589793 0.01761037215262278 +0.017453292519943295 0.05483113556160755 0.027415567780803774 3.141592653589793 0.01761037215262278 drop table if exists t; create table t(a int); insert into t values(1),(2),(3); diff --git a/tests/integrationtest/r/expression/cast.result b/tests/integrationtest/r/expression/cast.result index 1d237ebfd87e0..147b93ee4260c 100644 --- a/tests/integrationtest/r/expression/cast.result +++ b/tests/integrationtest/r/expression/cast.result @@ -178,3 +178,18 @@ id update_user 2 李四 4 李四 1 张三 +drop table if exists test; +create table test(a bit(24)); +insert into test values('中'); +select a from test where '中' like convert(a, char); +a +中 +select a from test where false not like convert(a, char); +a +中 +select a from test where false like convert(a, char); +a +truncate table test; +insert into test values(0xffffff); +select a from test where false not like convert(a, char); +Error 1105 (HY000): Cannot convert string '\xFF\xFF\xFF' from binary to utf8mb4 diff --git a/tests/integrationtest/r/expression/constant_fold.result b/tests/integrationtest/r/expression/constant_fold.result index 05becb4d7a29e..d50ad250c7552 100644 --- a/tests/integrationtest/r/expression/constant_fold.result +++ b/tests/integrationtest/r/expression/constant_fold.result @@ -24,3 +24,9 @@ utf8mb4_general_ci select collation(ifnull(concat(NULL),ifnull(concat(NULL),id))) from t1; collation(ifnull(concat(NULL),ifnull(concat(NULL),id))) utf8mb4_general_ci +drop table if exists t1; +create table t1 (c1 int); +insert into t1 values (null); +select truncate(1,c1), truncate(1,c1) is not NULL from t1; +truncate(1,c1) truncate(1,c1) is not NULL +NULL 0 diff --git a/tests/integrationtest/r/expression/explain.result b/tests/integrationtest/r/expression/explain.result index e2c78305794a0..9e1815f5deee4 100644 --- a/tests/integrationtest/r/expression/explain.result +++ b/tests/integrationtest/r/expression/explain.result @@ -4,7 +4,7 @@ create table t1(id bigint primary key, a int, b int); create table t2(id bigint primary key, a int, b int); explain format = 'brief' select * from t1 left join t2 on t1.a > t2.a and t1.a = 1; id estRows task access object operator info -HashJoin 33233333.33 root CARTESIAN left outer join, left cond:[eq(expression__explain.t1.a, 1)] +HashJoin 33233333.33 root CARTESIAN left outer join, left side:TableReader, left cond:[eq(expression__explain.t1.a, 1)] ├─TableReader(Build) 3323.33 root data:Selection │ └─Selection 3323.33 cop[tikv] gt(1, expression__explain.t2.a) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -12,7 +12,7 @@ HashJoin 33233333.33 root CARTESIAN left outer join, left cond:[eq(expression__ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a > t2.a where t1.a = 1; id estRows task access object operator info -HashJoin 33233.33 root CARTESIAN left outer join +HashJoin 33233.33 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(expression__explain.t1.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -21,7 +21,7 @@ HashJoin 33233.33 root CARTESIAN left outer join └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a = t2.a and t1.a > 1; id estRows task access object operator info -HashJoin 10000.00 root left outer join, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)], left cond:[gt(expression__explain.t1.a, 1)] +HashJoin 10000.00 root left outer join, left side:TableReader, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)], left cond:[gt(expression__explain.t1.a, 1)] ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(expression__explain.t2.a, 1), not(isnull(expression__explain.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -29,7 +29,7 @@ HashJoin 10000.00 root left outer join, equal:[eq(expression__explain.t1.a, exp └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a = t2.a where t1.a > 1; id estRows task access object operator info -HashJoin 4166.67 root left outer join, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] +HashJoin 4166.67 root left outer join, left side:TableReader, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(expression__explain.t2.a, 1), not(isnull(expression__explain.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -38,7 +38,7 @@ HashJoin 4166.67 root left outer join, equal:[eq(expression__explain.t1.a, expr └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 right join t2 on t1.a > t2.a where t2.a = 1; id estRows task access object operator info -HashJoin 33333.33 root CARTESIAN right outer join +HashJoin 33333.33 root CARTESIAN right outer join, left side:TableReader ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(expression__explain.t2.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -47,7 +47,7 @@ HashJoin 33333.33 root CARTESIAN right outer join └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 right join t2 on t1.a = t2.a where t2.a > 1; id estRows task access object operator info -HashJoin 4166.67 root right outer join, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] +HashJoin 4166.67 root right outer join, left side:TableReader, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(expression__explain.t2.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -56,7 +56,7 @@ HashJoin 4166.67 root right outer join, equal:[eq(expression__explain.t1.a, exp └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 right join t2 on t1.a = t2.a and t2.a > 1; id estRows task access object operator info -HashJoin 10000.00 root right outer join, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)], right cond:gt(expression__explain.t2.a, 1) +HashJoin 10000.00 root right outer join, left side:TableReader, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)], right cond:gt(expression__explain.t2.a, 1) ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(expression__explain.t1.a, 1), not(isnull(expression__explain.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -64,7 +64,7 @@ HashJoin 10000.00 root right outer join, equal:[eq(expression__explain.t1.a, ex └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t1 right join t2 on t1.a > t2.a and t2.a = 1; id estRows task access object operator info -HashJoin 33333333.33 root CARTESIAN right outer join, right cond:eq(expression__explain.t2.a, 1) +HashJoin 33333333.33 root CARTESIAN right outer join, left side:TableReader, right cond:eq(expression__explain.t2.a, 1) ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(expression__explain.t1.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -72,7 +72,7 @@ HashJoin 33333333.33 root CARTESIAN right outer join, right cond:eq(expression_ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a = t2.a and t2.a > 1; id estRows task access object operator info -HashJoin 10000.00 root left outer join, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] +HashJoin 10000.00 root left outer join, left side:TableReader, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(expression__explain.t2.a, 1), not(isnull(expression__explain.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -80,7 +80,7 @@ HashJoin 10000.00 root left outer join, equal:[eq(expression__explain.t1.a, exp └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a > t2.a and t2.a = 1; id estRows task access object operator info -HashJoin 100000.00 root CARTESIAN left outer join, other cond:gt(expression__explain.t1.a, expression__explain.t2.a) +HashJoin 100000.00 root CARTESIAN left outer join, left side:TableReader, other cond:gt(expression__explain.t1.a, expression__explain.t2.a) ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(expression__explain.t2.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -88,7 +88,7 @@ HashJoin 100000.00 root CARTESIAN left outer join, other cond:gt(expression__ex └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 right join t2 on t1.a > t2.a and t1.a = 1; id estRows task access object operator info -HashJoin 100000.00 root CARTESIAN right outer join, other cond:gt(expression__explain.t1.a, expression__explain.t2.a) +HashJoin 100000.00 root CARTESIAN right outer join, left side:TableReader, other cond:gt(expression__explain.t1.a, expression__explain.t2.a) ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(expression__explain.t1.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -96,7 +96,7 @@ HashJoin 100000.00 root CARTESIAN right outer join, other cond:gt(expression__e └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t1 right join t2 on t1.a = t2.a and t1.a > 1; id estRows task access object operator info -HashJoin 10000.00 root right outer join, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] +HashJoin 10000.00 root right outer join, left side:TableReader, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] ├─TableReader(Build) 3333.33 root data:Selection │ └─Selection 3333.33 cop[tikv] gt(expression__explain.t1.a, 1), not(isnull(expression__explain.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -104,14 +104,14 @@ HashJoin 10000.00 root right outer join, equal:[eq(expression__explain.t1.a, ex └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a = t1.b and t1.a > 1; id estRows task access object operator info -HashJoin 100000000.00 root CARTESIAN left outer join, left cond:[eq(expression__explain.t1.a, expression__explain.t1.b) gt(expression__explain.t1.a, 1)] +HashJoin 100000000.00 root CARTESIAN left outer join, left side:TableReader, left cond:[eq(expression__explain.t1.a, expression__explain.t1.b) gt(expression__explain.t1.a, 1)] ├─TableReader(Build) 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 * from t1 left join t2 on t2.a = t2.b and t2.a > 1; id estRows task access object operator info -HashJoin 8888888.89 root CARTESIAN left outer join +HashJoin 8888888.89 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 888.89 root data:Selection │ └─Selection 888.89 cop[tikv] eq(expression__explain.t2.a, expression__explain.t2.b), gt(expression__explain.t2.a, 1), gt(expression__explain.t2.b, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -131,7 +131,7 @@ id estRows task access object operator info TableDual 0.00 root rows:0 explain format = 'brief' select * from t1 left join t2 on true where t1.a = 1 and t1.a = 1; id estRows task access object operator info -HashJoin 100000.00 root CARTESIAN left outer join +HashJoin 100000.00 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(expression__explain.t1.a, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -139,45 +139,45 @@ HashJoin 100000.00 root CARTESIAN left outer join └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on false; id estRows task access object operator info -HashJoin 10000.00 root CARTESIAN left outer join +HashJoin 10000.00 root CARTESIAN left outer join, left side:TableReader ├─TableDual(Build) 0.00 root rows:0 └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 right join t2 on false; id estRows task access object operator info -HashJoin 10000.00 root CARTESIAN right outer join +HashJoin 10000.00 root CARTESIAN right outer join, left side:TableDual ├─TableDual(Build) 0.00 root rows:0 └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a = 1 and t1.a = 2; id estRows task access object operator info -HashJoin 10000.00 root CARTESIAN left outer join +HashJoin 10000.00 root CARTESIAN left outer join, left side:TableReader ├─TableDual(Build) 0.00 root rows:0 └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a =1 where t1.a = 2; id estRows task access object operator info -HashJoin 10.00 root CARTESIAN left outer join +HashJoin 10.00 root CARTESIAN left outer join, left side:TableReader ├─TableDual(Build) 0.00 root rows:0 └─TableReader(Probe) 10.00 root data:Selection └─Selection 10.00 cop[tikv] eq(expression__explain.t1.a, 2) └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t2.a = 1 and t2.a = 2; id estRows task access object operator info -HashJoin 10000.00 root CARTESIAN left outer join +HashJoin 10000.00 root CARTESIAN left outer join, left side:TableReader ├─TableDual(Build) 0.00 root rows:0 └─TableReader(Probe) 10000.00 root data:TableFullScan └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select * from t1 left join t2 on t1.a = 1 or (t1.a = 2 and t1.a = 3); id estRows task access object operator info -HashJoin 100000000.00 root CARTESIAN left outer join, left cond:[or(eq(expression__explain.t1.a, 1), 0)] +HashJoin 100000000.00 root CARTESIAN left outer join, left side:TableReader, left cond:[or(eq(expression__explain.t1.a, 1), 0)] ├─TableReader(Build) 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 * from t1 left join t2 on true where t1.a = 1 or (t1.a = 2 and t1.a = 3); id estRows task access object operator info -HashJoin 100000.00 root CARTESIAN left outer join +HashJoin 100000.00 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] or(eq(expression__explain.t1.a, 1), 0) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -187,7 +187,7 @@ explain format = 'brief' select * from t1 where t1.b > 1 or t1.b in (select b fr 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) - └─HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(expression__explain.t1.b, expression__explain.t2.b) + └─HashJoin 10000.00 root CARTESIAN left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -195,7 +195,7 @@ Projection 8000.00 root expression__explain.t1.id, expression__explain.t1.a, ex explain format = 'brief' select * from t1 left join t2 on t1.a = t2.a where ifnull(t2.b, t1.a) = 1; id estRows task access object operator info Selection 9990.00 root eq(ifnull(expression__explain.t2.b, expression__explain.t1.a), 1) -└─HashJoin 12487.50 root left outer join, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] +└─HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(expression__explain.t1.a, expression__explain.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(expression__explain.t2.a)) │ └─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 40c90698a0d3b..f9d88b654e683 100644 --- a/tests/integrationtest/r/expression/issues.result +++ b/tests/integrationtest/r/expression/issues.result @@ -3230,3 +3230,9 @@ INSERT INTO test.t VALUES (1234567890123456); SELECT IFNULL(id, 'abcdef') FROM test.t; IFNULL(id, 'abcdef') 1234567890123456 +drop table if exists test.t; +create table test.t(a double); +insert into test.t values('20000102030405.0078125'); +select * from test.t where date_add(a, interval 1 second) = '2000-01-02 03:04:06.007813'; +a +20000102030405.008 diff --git a/tests/integrationtest/r/expression/json.result b/tests/integrationtest/r/expression/json.result index 57529f2693d8e..f240ddda5ed90 100644 --- a/tests/integrationtest/r/expression/json.result +++ b/tests/integrationtest/r/expression/json.result @@ -518,9 +518,9 @@ select json_objectagg(a, b) from t; json_objectagg(a, b) {"a string": "base64:type252:YSBiaW5hcnkgc3RyaW5n"} select json_object(b, a) from t; -Error 3144 (HY000): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. select json_objectagg(b, a) from t; -Error 3144 (HY000): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. select cast(cast(b'010101' as json) as signed); cast(cast(b'010101' as json) as signed) 0 @@ -765,3 +765,55 @@ Error 3853 (22032): Invalid JSON type in argument 1 to function json_schema_vali select json_type(cast(cast('2024' as year) as json)); json_type(cast(cast('2024' as year) as json)) UNSIGNED INTEGER +drop table if exists t; +create table t(j json, str varchar(255), other int); +insert into t values (NULL, NULL, NULL); +select json_valid(j), json_valid(str), json_valid(other) from t; +json_valid(j) json_valid(str) json_valid(other) +NULL NULL NULL +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(id INT PRIMARY KEY, d1 DATE, d2 DATETIME, t1 TIME, t2 TIMESTAMP, b1 BIT, b2 BINARY); +INSERT INTO t1 VALUES (1, '2024-06-14', '2024-06-14 09:37:00', '09:37:00', '2024-06-14 09:37:00', b'0', 0x41); +SELECT JSON_TYPE(d1) FROM t1; +Error 3146 (22032): Invalid data type for JSON data in argument 1 to function json_type; a JSON string or JSON type is required. +SELECT JSON_TYPE(d2) FROM t1; +Error 3146 (22032): Invalid data type for JSON data in argument 1 to function json_type; a JSON string or JSON type is required. +SELECT JSON_TYPE(t1) FROM t1; +Error 3146 (22032): Invalid data type for JSON data in argument 1 to function json_type; a JSON string or JSON type is required. +SELECT JSON_TYPE(t2) FROM t1; +Error 3146 (22032): Invalid data type for JSON data in argument 1 to function json_type; a JSON string or JSON type is required. +SELECT JSON_TYPE(b1) FROM t1; +Error 3146 (22032): Invalid data type for JSON data in argument 1 to function json_type; a JSON string or JSON type is required. +SELECT JSON_TYPE(b2) FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_EXTRACT(b2, '$') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_MERGE(b2, '{a:"b"}') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_CONTAINS_PATH(b2, 'one', '$.a') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT '1' member of(b2) FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_CONTAINS(b2, '{a:"b"}') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_OVERLAPS(b2, '{a:"b"}') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_MERGE_PATCH(b2, '{a:"b"}') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_MERGE_PATCH('{a:"b"}', b2) FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_MERGE_PRESERVE(b2, '{a:"b"}') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_MERGE_PRESERVE('{a:"b"}', b2) FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_SEARCH(b2, 'one', '1') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_KEYS(b2) FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +SELECT JSON_SCHEMA_VALID(b2, '{}') FROM t1; +Error 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. +prepare stmt from 'select json_object(?, ?)'; +set @a=1; +execute stmt using @a, @a; +json_object(?, ?) +{"1": 1} diff --git a/tests/integrationtest/r/expression/time.result b/tests/integrationtest/r/expression/time.result index 0888b7c8b701f..7fac5831cc57a 100644 --- a/tests/integrationtest/r/expression/time.result +++ b/tests/integrationtest/r/expression/time.result @@ -1064,3 +1064,405 @@ a d -1.00 0999-01-01 00:00:00 1.00 1001-01-01 00:00:00 drop table if exists t1; +drop table if exists t; +create table t(col0 date, col1 time, col2 varchar(30)); +insert into t values('2024-11-01', '12:00:01.341300', '12:00:01.341300'), ('2024-11-01', '1 12:00:01.341300', '1 12:00:01.341300'), ('2024-11-01', '-1 12:00:01.341300', '-1 12:00:01.341300'),('1000-01-01', '12:00:01.341300', '12:00:01.341300'), ('9999-12-31', '12:00:01.341300', '12:00:01.341300'), (null, '12:00:01.341300', '12:00:01.341300'), ('2020-11-01', null, null); +select addtime(date '2024-11-01', '12:00:01.341300'); +addtime(date '2024-11-01', '12:00:01.341300') +2024-11-01 12:00:01.341300 +select subtime(date '2024-11-01', '12:00:01.341300'); +subtime(date '2024-11-01', '12:00:01.341300') +2024-10-31 11:59:58.658700 +select addtime(date '2024-11-01', '1 12:00:01.341300'); +addtime(date '2024-11-01', '1 12:00:01.341300') +2024-11-02 12:00:01.341300 +select subtime(date '2024-11-01', '1 12:00:01.341300'); +subtime(date '2024-11-01', '1 12:00:01.341300') +2024-10-30 11:59:58.658700 +select addtime(date '2024-11-01', '-1 12:00:01.341300'); +addtime(date '2024-11-01', '-1 12:00:01.341300') +2024-10-30 11:59:58.658700 +select subtime(date '2024-11-01', '-1 12:00:01.341300'); +subtime(date '2024-11-01', '-1 12:00:01.341300') +2024-11-02 12:00:01.341300 +select addtime(date '2024-11-01', time '12:00:01.341300'); +addtime(date '2024-11-01', time '12:00:01.341300') +2024-11-01 12:00:01.341300 +select subtime(date '2024-11-01', time '12:00:01.341300'); +subtime(date '2024-11-01', time '12:00:01.341300') +2024-10-31 11:59:58.658700 +select addtime(date '2024-11-01', time '1 12:00:01.341300'); +addtime(date '2024-11-01', time '1 12:00:01.341300') +2024-11-02 12:00:01.341300 +select subtime(date '2024-11-01', time '1 12:00:01.341300'); +subtime(date '2024-11-01', time '1 12:00:01.341300') +2024-10-30 11:59:58.658700 +select addtime(date '2024-11-01', time '-1 12:00:01.341300'); +addtime(date '2024-11-01', time '-1 12:00:01.341300') +2024-10-30 11:59:58.658700 +select subtime(date '2024-11-01', time '-1 12:00:01.341300'); +subtime(date '2024-11-01', time '-1 12:00:01.341300') +2024-11-02 12:00:01.341300 +select addtime(col0, '12:00:01.341300') from t order by col0, col1 asc; +addtime(col0, '12:00:01.341300') +NULL +1000-01-01 12:00:01.341300 +2020-11-01 12:00:01.341300 +2024-11-01 12:00:01.341300 +2024-11-01 12:00:01.341300 +2024-11-01 12:00:01.341300 +9999-12-31 12:00:01.341300 +select subtime(col0, '12:00:01.341300') from t order by col0, col1 asc; +subtime(col0, '12:00:01.341300') +NULL +0999-12-31 11:59:58.658700 +2020-10-31 11:59:58.658700 +2024-10-31 11:59:58.658700 +2024-10-31 11:59:58.658700 +2024-10-31 11:59:58.658700 +9999-12-30 11:59:58.658700 +select addtime(col0, '1 12:00:01.341300') from t order by col0, col1 asc; +addtime(col0, '1 12:00:01.341300') +NULL +1000-01-02 12:00:01.341300 +2020-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +NULL +select subtime(col0, '1 12:00:01.341300') from t order by col0, col1 asc; +subtime(col0, '1 12:00:01.341300') +NULL +0999-12-30 11:59:58.658700 +2020-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +9999-12-29 11:59:58.658700 +select addtime(col0, '-1 12:00:01.341300') from t order by col0, col1 asc; +addtime(col0, '-1 12:00:01.341300') +NULL +0999-12-30 11:59:58.658700 +2020-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +9999-12-29 11:59:58.658700 +select subtime(col0, '-1 12:00:01.341300') from t order by col0, col1 asc; +subtime(col0, '-1 12:00:01.341300') +NULL +1000-01-02 12:00:01.341300 +2020-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +NULL +select addtime(col0, time '12:00:01.341300') from t order by col0, col1 asc; +addtime(col0, time '12:00:01.341300') +NULL +1000-01-01 12:00:01.341300 +2020-11-01 12:00:01.341300 +2024-11-01 12:00:01.341300 +2024-11-01 12:00:01.341300 +2024-11-01 12:00:01.341300 +9999-12-31 12:00:01.341300 +select subtime(col0, time '12:00:01.341300') from t order by col0, col1 asc; +subtime(col0, time '12:00:01.341300') +NULL +0999-12-31 11:59:58.658700 +2020-10-31 11:59:58.658700 +2024-10-31 11:59:58.658700 +2024-10-31 11:59:58.658700 +2024-10-31 11:59:58.658700 +9999-12-30 11:59:58.658700 +select addtime(col0, time '1 12:00:01.341300') from t order by col0, col1 asc; +addtime(col0, time '1 12:00:01.341300') +NULL +1000-01-02 12:00:01.341300 +2020-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +NULL +select subtime(col0, time '1 12:00:01.341300') from t order by col0, col1 asc; +subtime(col0, time '1 12:00:01.341300') +NULL +0999-12-30 11:59:58.658700 +2020-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +9999-12-29 11:59:58.658700 +select addtime(col0, time '-1 12:00:01.341300') from t order by col0, col1 asc; +addtime(col0, time '-1 12:00:01.341300') +NULL +0999-12-30 11:59:58.658700 +2020-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +2024-10-30 11:59:58.658700 +9999-12-29 11:59:58.658700 +select subtime(col0, time '-1 12:00:01.341300') from t order by col0, col1 asc; +subtime(col0, time '-1 12:00:01.341300') +NULL +1000-01-02 12:00:01.341300 +2020-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +2024-11-02 12:00:01.341300 +NULL +select addtime(col0, col1) from t order by col0, col1 asc; +addtime(col0, col1) +NULL +1000-01-01 12:00:01 +NULL +2024-10-30 11:59:59 +2024-11-01 12:00:01 +2024-11-02 12:00:01 +9999-12-31 12:00:01 +select subtime(col0, col1) from t order by col0, col1 asc; +subtime(col0, col1) +NULL +0999-12-31 11:59:59 +NULL +2024-11-02 12:00:01 +2024-10-31 11:59:59 +2024-10-30 11:59:59 +9999-12-30 11:59:59 +select addtime(col0, col2) from t order by col0, col1 asc; +addtime(col0, col2) +NULL +1000-01-01 12:00:01.341300 +NULL +2024-10-30 11:59:58.658700 +2024-11-01 12:00:01.341300 +2024-11-02 12:00:01.341300 +9999-12-31 12:00:01.341300 +select subtime(col0, col2) from t order by col0, col1 asc; +subtime(col0, col2) +NULL +0999-12-31 11:59:58.658700 +NULL +2024-11-02 12:00:01.341300 +2024-10-31 11:59:58.658700 +2024-10-30 11:59:58.658700 +9999-12-30 11:59:58.658700 +select addtime(col0, null) from t order by col0, col1 asc; +addtime(col0, null) +NULL +NULL +NULL +NULL +NULL +NULL +NULL +select subtime(col0, null) from t order by col0, col1 asc; +subtime(col0, null) +NULL +NULL +NULL +NULL +NULL +NULL +NULL +select addtime(null, col1) from t order by col0, col1 asc; +addtime(null, col1) +NULL +NULL +NULL +NULL +NULL +NULL +NULL +select subtime(null, col1) from t order by col0, col1 asc; +subtime(null, col1) +NULL +NULL +NULL +NULL +NULL +NULL +NULL +select addtime(null, col2) from t order by col0, col1 asc; +addtime(null, col2) +NULL +NULL +NULL +NULL +NULL +NULL +NULL +select subtime(null, col2) from t order by col0, col1 asc; +subtime(null, col2) +NULL +NULL +NULL +NULL +NULL +NULL +NULL +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(date '0-0-0', '12:00:01.341300'); +addtime(date '0-0-0', '12:00:01.341300') +NULL +select addtime(date '0-0-0', time '12:00:01.341300'); +addtime(date '0-0-0', time '12:00:01.341300') +NULL +select addtime(date '0-0-0', '1 12:00:01.341300'); +addtime(date '0-0-0', '1 12:00:01.341300') +NULL +select addtime(date '0-0-0', time '1 12:00:01.341300'); +addtime(date '0-0-0', time '1 12:00:01.341300') +NULL +select subtime(date '0-0-0', '12:00:01.341300'); +subtime(date '0-0-0', '12:00:01.341300') +NULL +select subtime(date '0-0-0', time '12:00:01.341300'); +subtime(date '0-0-0', time '12:00:01.341300') +NULL +select subtime(date '0-0-0', '1 12:00:01.341300'); +subtime(date '0-0-0', '1 12:00:01.341300') +NULL +select subtime(date '0-0-0', time '1 12:00:01.341300'); +subtime(date '0-0-0', time '1 12:00:01.341300') +NULL +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +drop table if exists t; +create table t(col0 date, col1 time, col2 varchar(30)); +insert into t values ('0-0-0', '1:1:1', '1:1:1'), ('0-0-0', '0:0:0', '0:0:0'), ('2024-0-1', '1:1:1', '1:1:1'), ('2020-1-1', '-1 1:1:1', '-1 1:1:1'), ('2024-1-0', '1:1:1', '1:1:1'), ('2024-0-1', '1:1:1', '1:1:1'); +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +addtime(col0, col1) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col1) from t order by col0, col1, col2 asc; +subtime(col0, col1) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 +select addtime(col0, col2) from t order by col0, col1, col2 asc; +addtime(col0, col2) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col2) from t order by col0, col1, col2 asc; +subtime(col0, col2) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +addtime(col0, col1) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col1) from t order by col0, col1, col2 asc; +subtime(col0, col1) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 +select addtime(col0, col2) from t order by col0, col1, col2 asc; +addtime(col0, col2) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col2) from t order by col0, col1, col2 asc; +subtime(col0, col2) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +drop table if exists t; +create table t(col0 datetime, col1 time, col2 varchar(30)); +insert into t values ('0-0-0', '1:1:1', '1:1:1'), ('0-0-0', '0:0:0', '0:0:0'), ('2024-0-1', '1:1:1', '1:1:1'), ('2020-1-1', '-1 1:1:1', '-1 1:1:1'), ('2024-1-0', '1:1:1', '1:1:1'), ('2024-0-1', '1:1:1', '1:1:1'); +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +addtime(col0, col1) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col1) from t order by col0, col1, col2 asc; +subtime(col0, col1) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 +select addtime(col0, col2) from t order by col0, col1, col2 asc; +addtime(col0, col2) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col2) from t order by col0, col1, col2 asc; +subtime(col0, col2) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +addtime(col0, col1) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col1) from t order by col0, col1, col2 asc; +subtime(col0, col1) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 +select addtime(col0, col2) from t order by col0, col1, col2 asc; +addtime(col0, col2) +NULL +NULL +2019-12-30 22:58:59 +2023-12-01 01:01:01 +2023-12-01 01:01:01 +2023-12-31 01:01:01 +select subtime(col0, col2) from t order by col0, col1, col2 asc; +subtime(col0, col2) +NULL +NULL +2020-01-02 01:01:01 +2023-11-30 22:58:59 +2023-11-30 22:58:59 +2023-12-30 22:58:59 diff --git a/tests/integrationtest/r/globalindex/insert.result b/tests/integrationtest/r/globalindex/insert.result index 74e53a66c2f7e..e873815ea20ff 100644 --- a/tests/integrationtest/r/globalindex/insert.result +++ b/tests/integrationtest/r/globalindex/insert.result @@ -6,7 +6,7 @@ a b 1 3 alter table t add unique index idx1(b) global; insert into t values (2, 4), (3, 4) on duplicate key update a=2, b=5; -select * from t use index (idx1); +select * from t use index (idx1) order by a desc; a b 2 5 1 3 diff --git a/tests/integrationtest/r/globalindex/misc.result b/tests/integrationtest/r/globalindex/misc.result index 970b5c3de4941..4a6f600e04d2a 100644 --- a/tests/integrationtest/r/globalindex/misc.result +++ b/tests/integrationtest/r/globalindex/misc.result @@ -205,7 +205,8 @@ t CREATE TABLE `t` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin PARTITION BY HASH (`a`) PARTITIONS 3 alter table t partition by key (b) partitions 3; -Error 8200 (HY000): DDL job rollback, error msg: Unsupported PARTITION BY, index 'idx_b' is unique and contains all partitioning columns, but has Global Index set +alter table t partition by key (b) partitions 3 update indexes (idx_b GLOBAL); +alter table t partition by key (b) partitions 3 update indexes (idx_b LOCAL); alter table t partition by hash (a) partitions 3 update indexes (idx_b LOCAL); Error 8264 (HY000): Global Index is needed for index 'idx_b', since the unique index is not including all partitioning columns, and GLOBAL is not given as IndexOption alter table t partition by hash (a) partitions 3 update indexes (idx_b GLOBAL); @@ -218,7 +219,6 @@ t CREATE TABLE `t` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin PARTITION BY HASH (`a`) PARTITIONS 3 alter table t partition by hash (b) partitions 3 update indexes(idx_b global); -Error 8200 (HY000): DDL job rollback, error msg: Unsupported PARTITION BY, index 'idx_b' is unique and contains all partitioning columns, but has Global Index set alter table t partition by hash (b) partitions 3 update indexes(idx_b local); show create table t; Table Create Table diff --git a/tests/integrationtest/r/index_join.result b/tests/integrationtest/r/index_join.result index 10f49a1999a2d..35810db5ccfd1 100644 --- a/tests/integrationtest/r/index_join.result +++ b/tests/integrationtest/r/index_join.result @@ -34,7 +34,7 @@ create table t2(a int not null, b int not null, key a(a)); set @@tidb_opt_insubq_to_join_and_agg=0; explain format = 'brief' select /*+ TIDB_INLJ(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2); id estRows task access object operator info -IndexJoin 8000.00 root semi join, inner:IndexReader, outer key:index_join.t1.a, inner key:index_join.t2.a, equal cond:eq(index_join.t1.a, index_join.t2.a) +IndexJoin 8000.00 root semi join, inner:IndexReader, left side:TableReader, outer key:index_join.t1.a, inner key:index_join.t2.a, equal cond:eq(index_join.t1.a, index_join.t2.a) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─IndexReader(Probe) 12500.00 root index:IndexRangeScan diff --git a/tests/integrationtest/r/index_merge.result b/tests/integrationtest/r/index_merge.result index 5afb9617f0a74..1a842a0ef04ff 100644 --- a/tests/integrationtest/r/index_merge.result +++ b/tests/integrationtest/r/index_merge.result @@ -12,7 +12,7 @@ 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)) - └─HashJoin_12 5542.21 root CARTESIAN left outer semi join, other cond:eq(index_merge.t1.c3, index_merge.t1.c3) + └─HashJoin_12 5542.21 root CARTESIAN left outer semi join, left side:IndexMerge_16, 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 └─IndexMerge_16(Probe) 5542.21 root type: union @@ -32,7 +32,7 @@ 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)) - └─HashJoin_12 5542.21 root Null-aware anti left outer semi join, equal:[eq(index_merge.t1.c3, index_merge.t1.c3)] + └─HashJoin_12 5542.21 root Null-aware anti left outer semi join, left side:IndexMerge_16, 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 └─IndexMerge_16(Probe) 5542.21 root type: union @@ -68,7 +68,7 @@ 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)) - └─HashJoin_22 5542.21 root left outer semi join, equal:[eq(index_merge.t1.c1, index_merge.t2.c1)] + └─HashJoin_22 5542.21 root left outer semi join, left side:IndexMerge_26, 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 └─IndexMerge_26(Probe) 5542.21 root type: union @@ -88,7 +88,7 @@ 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)) - └─HashJoin_22 5542.21 root anti left outer semi join, equal:[eq(index_merge.t1.c1, index_merge.t2.c1)] + └─HashJoin_22 5542.21 root anti left outer semi join, left side:IndexMerge_26, 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 └─IndexMerge_26(Probe) 5542.21 root type: union @@ -211,7 +211,7 @@ 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)) - └─HashJoin_18 5542.21 root CARTESIAN left outer semi join, other cond:eq(index_merge.t1.c3, index_merge.t2.c1) + └─HashJoin_18 5542.21 root CARTESIAN left outer semi join, left side:IndexMerge_22, 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 │ │ └─TableReader_48 9990.00 root data:Selection_47 diff --git a/tests/integrationtest/r/infoschema/v2.result b/tests/integrationtest/r/infoschema/v2.result index 1917ae90eda73..f6b25d3782e50 100644 --- a/tests/integrationtest/r/infoschema/v2.result +++ b/tests/integrationtest/r/infoschema/v2.result @@ -36,3 +36,12 @@ show databases like 'infoschema%'; Database (infoschema%) infoschema__v2 set @@global.tidb_schema_cache_size = default; +use infoschema__v2; +select TABLE_SCHEMA, TABLE_NAME, TIDB_TABLE_ID from information_schema.tables where TIDB_TABLE_ID = 4611686018427387967; +TABLE_SCHEMA TABLE_NAME TIDB_TABLE_ID +INFORMATION_SCHEMA CLUSTER_STATEMENTS_SUMMARY_HISTORY 4611686018427387967 +select TABLE_SCHEMA from information_schema.tables where TIDB_TABLE_ID = 4611686018427387967; +TABLE_SCHEMA +INFORMATION_SCHEMA +select TABLE_NAME, TABLE_CATALOG from information_schema.tables where TABLE_CATALOG != 'def'; +TABLE_NAME TABLE_CATALOG diff --git a/tests/integrationtest/r/naaj.result b/tests/integrationtest/r/naaj.result index 2dbb6702043e6..2be21d95768f9 100644 --- a/tests/integrationtest/r/naaj.result +++ b/tests/integrationtest/r/naaj.result @@ -10,7 +10,7 @@ insert into naaj_A values (1,1,1); insert into naaj_B values (1,2,2); explain format = 'brief' select (a, b) not in (select a, b from naaj_B) from naaj_A; id estRows task access object operator info -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)] +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -20,7 +20,7 @@ select (a, b) not in (select a, b from naaj_B) from naaj_A; 1 explain format = 'brief' select * from naaj_A where (a, b) not in (select a, b from naaj_B); id estRows task access object operator info -HashJoin 8000.00 root Null-aware anti semi join, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a) eq(naaj.naaj_a.b, naaj.naaj_b.b)] +HashJoin 8000.00 root Null-aware anti semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -42,7 +42,7 @@ select * from naaj_A where (a, b) not in (select a, b from naaj_B); a b c explain format = 'brief' select (a, b) not in (select a, b from naaj_B where naaj_A.c > naaj_B.c) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -52,7 +52,7 @@ select (a, b) not in (select a, b from naaj_B where naaj_A.c > naaj_B.c) from na 1 explain format = 'brief' select * from naaj_A where (a, b) not in (select a, b from naaj_B where naaj_A.c > naaj_B.c); id estRows task access object operator info -HashJoin 8000.00 root Null-aware anti 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) +HashJoin 8000.00 root Null-aware anti semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -62,7 +62,7 @@ a b c 1 1 1 explain format = 'brief' select (a, b) not in (select a, b from naaj_B where naaj_A.a != naaj_B.a) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -72,7 +72,7 @@ select (a, b) not in (select a, b from naaj_B where naaj_A.a != naaj_B.a) from n 1 explain format = 'brief' select * from naaj_A where (a, b) not in (select a, b from naaj_B where naaj_A.a != naaj_B.a); id estRows task access object operator info -HashJoin 8000.00 root Null-aware anti 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) +HashJoin 8000.00 root Null-aware anti semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -135,7 +135,7 @@ insert into naaj_B values(2, null, 2); insert into naaj_B values(null, null, 2); explain format = 'brief' select (a, b) not in (select a, b from naaj_B where naaj_A.c > naaj_B.c) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -145,7 +145,7 @@ select (a, b) not in (select a, b from naaj_B where naaj_A.c > naaj_B.c) from na 1 explain format = 'brief' select * from naaj_A where (a, b) not in (select a, b from naaj_B where naaj_A.c > naaj_B.c); id estRows task access object operator info -HashJoin 8000.00 root Null-aware anti 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) +HashJoin 8000.00 root Null-aware anti semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -155,7 +155,7 @@ a b c 1 NULL 1 explain format = 'brief' select (a, b) not in (select a, b from naaj_B where naaj_A.c = naaj_B.c) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -165,7 +165,7 @@ select (a, b) not in (select a, b from naaj_B where naaj_A.c = naaj_B.c) from na 1 explain format = 'brief' select * from naaj_A where (a, b) not in (select a, b from naaj_B where naaj_A.c = naaj_B.c); id estRows task access object operator info -HashJoin 8000.00 root anti 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) +HashJoin 8000.00 root anti semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -183,7 +183,7 @@ insert into naaj_A values (1,1,1); insert into naaj_B values (1,2,2); explain format = 'brief' select (a, b) != all (select a, b from naaj_B) from naaj_A; id estRows task access object operator info -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)] +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -195,7 +195,7 @@ explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b f 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 - └─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)] + └─HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -217,7 +217,7 @@ select * from naaj_A where (a, b) != all (select a, b from naaj_B); a b c explain format = 'brief' select (a, b) != all (select a, b from naaj_B where naaj_A.c > naaj_B.c) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -229,7 +229,7 @@ explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b f 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 - └─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) + └─HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -239,7 +239,7 @@ a b c 1 1 1 explain format = 'brief' select (a, b) != all (select a, b from naaj_B where naaj_A.a != naaj_B.a) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -251,7 +251,7 @@ explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b f 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 - └─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) + └─HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -314,7 +314,7 @@ insert into naaj_B values(2, null, 2); insert into naaj_B values(null, null, 2); explain format = 'brief' select (a, b) != all (select a, b from naaj_B where naaj_A.c > naaj_B.c) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -326,7 +326,7 @@ explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b f 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 - └─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) + └─HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -336,7 +336,7 @@ a b c 1 NULL 1 explain format = 'brief' select (a, b) != all (select a, b from naaj_B where naaj_A.c = naaj_B.c) from naaj_A; id estRows task access object operator info -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) +HashJoin 10000.00 root anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -348,7 +348,7 @@ explain format = 'brief' select * from naaj_A where (a, b) != all (select a, b f 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 - └─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) + └─HashJoin 10000.00 root anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -371,7 +371,7 @@ 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, left side:Projection_10, equal:[eq(Column#14, naaj.naaj_b.a) eq(Column#15, 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 @@ -386,7 +386,7 @@ 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)] +HashJoin_9 8000.00 root Null-aware anti semi join, left side:Projection_10, 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 │ └─TableReader_15 10000.00 root data:TableFullScan_14 │ └─TableFullScan_14 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo @@ -397,14 +397,14 @@ select * from naaj_A where (a+1,b*2) not in (select a, b from naaj_B); a b c explain select (a+1,b*2) not in (select a, b=1 from naaj_B where naaj_A.a = naaj_B.a) from naaj_A; id estRows task access object operator info -HashJoin_9 10000.00 root anti left outer semi join, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a)], other cond:eq(mul(naaj.naaj_a.b, 2), eq(naaj.naaj_b.b, 1)), eq(plus(naaj.naaj_a.a, 1), naaj.naaj_b.a) +HashJoin_9 10000.00 root anti left outer semi join, left side:TableReader_11, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a)], other cond:eq(mul(naaj.naaj_a.b, 2), eq(naaj.naaj_b.b, 1)), eq(plus(naaj.naaj_a.a, 1), naaj.naaj_b.a) ├─TableReader_13(Build) 10000.00 root data:TableFullScan_12 │ └─TableFullScan_12 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo └─TableReader_11(Probe) 10000.00 root data:TableFullScan_10 └─TableFullScan_10 10000.00 cop[tikv] table:naaj_A keep order:false, stats:pseudo explain select * from naaj_A where (a+1,b*2) not in (select a, b=1 from naaj_B where naaj_A.a = naaj_B.a); id estRows task access object operator info -HashJoin_9 8000.00 root anti semi join, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a)], other cond:eq(mul(naaj.naaj_a.b, 2), eq(naaj.naaj_b.b, 1)), eq(plus(naaj.naaj_a.a, 1), naaj.naaj_b.a) +HashJoin_9 8000.00 root anti semi join, left side:TableReader_11, equal:[eq(naaj.naaj_a.a, naaj.naaj_b.a)], other cond:eq(mul(naaj.naaj_a.b, 2), eq(naaj.naaj_b.b, 1)), eq(plus(naaj.naaj_a.a, 1), naaj.naaj_b.a) ├─TableReader_13(Build) 10000.00 root data:TableFullScan_12 │ └─TableFullScan_12 10000.00 cop[tikv] table:naaj_B keep order:false, stats:pseudo └─TableReader_11(Probe) 10000.00 root data:TableFullScan_10 diff --git a/tests/integrationtest/r/planner/cascades/integration.result b/tests/integrationtest/r/planner/cascades/integration.result index 7bfa97a759085..241bc7ba1eb71 100644 --- a/tests/integrationtest/r/planner/cascades/integration.result +++ b/tests/integrationtest/r/planner/cascades/integration.result @@ -772,7 +772,7 @@ explain format = 'brief' select t1.a, t1.b from t1 left join t2 on t1.a = t2.a w id estRows task access object operator info Projection 3333.33 root planner__cascades__integration.t1.a, planner__cascades__integration.t1.b └─Selection 3333.33 root gt(planner__cascades__integration.t2.b, 200) - └─MergeJoin 4166.67 root left outer join, left key:planner__cascades__integration.t1.a, right key:planner__cascades__integration.t2.a + └─MergeJoin 4166.67 root left outer join, left side:TableReader, left key:planner__cascades__integration.t1.a, right key:planner__cascades__integration.t2.a ├─TableReader(Build) 3333.33 root data:TableRangeScan │ └─TableRangeScan 3333.33 cop[tikv] table:t2 range:(2,+inf], keep order:true, stats:pseudo └─TableReader(Probe) 3333.33 root data:TableRangeScan @@ -784,7 +784,7 @@ explain format = 'brief' select t2.a, t2.b from t1 right join t2 on t1.a = t2.a id estRows task access object operator info Projection 8000.00 root planner__cascades__integration.t2.a, planner__cascades__integration.t2.b └─Selection 8000.00 root gt(planner__cascades__integration.t1.a, 2) - └─MergeJoin 10000.00 root right outer join, left key:planner__cascades__integration.t1.a, right key:planner__cascades__integration.t2.a + └─MergeJoin 10000.00 root right outer join, left side:TableReader, left key:planner__cascades__integration.t1.a, right key:planner__cascades__integration.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:true, stats:pseudo └─TableReader(Probe) 8000.00 root data:Selection @@ -837,7 +837,7 @@ 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 -└─Apply_21 10000.00 root CARTESIAN left outer join +└─Apply_21 10000.00 root CARTESIAN left outer join, left side:TableReader_22 ├─TableReader_22(Build) 10000.00 root data:TableFullScan_23 │ └─TableFullScan_23 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─MaxOneRow_24(Probe) 1.00 root @@ -856,8 +856,8 @@ 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 -└─Apply_34 1.00 root CARTESIAN left outer join - ├─Apply_36(Build) 1.00 root CARTESIAN left outer join +└─Apply_34 1.00 root CARTESIAN left outer join, left side:Apply_36 + ├─Apply_36(Build) 1.00 root CARTESIAN left outer join, left side:HashAgg_41 │ ├─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 │ │ └─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 @@ -879,7 +879,7 @@ sum(a) (select t1.a from t1 where t1.a = t2.a limit 1) (select t1.b from t1 wher 6 1 11 explain select a from t1 where exists(select 1 from t2 where t1.a = t2.a); id estRows task access object operator info -MergeJoin_30 10000.00 root semi join, left key:planner__cascades__integration.t1.a, right key:planner__cascades__integration.t2.a +MergeJoin_30 10000.00 root semi join, left side:TableReader_32, left key:planner__cascades__integration.t1.a, right key:planner__cascades__integration.t2.a ├─TableReader_35(Build) 10000.00 root data:TableFullScan_36 │ └─TableFullScan_36 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo └─TableReader_32(Probe) 10000.00 root data:TableFullScan_33 diff --git a/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result b/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result index a20573d54b622..fd6067b8fb0a2 100644 --- a/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result +++ b/tests/integrationtest/r/planner/core/casetest/expression_rewriter.result @@ -22,7 +22,7 @@ a b 1 1 explain format = 'brief' select * from t1 where (t1.a, t1.b) not in (select a, b from t2); id estRows task access object operator info -HashJoin 3.20 root Null-aware anti semi join, equal:[eq(planner__core__casetest__expression_rewriter.t1.a, planner__core__casetest__expression_rewriter.t2.a) eq(planner__core__casetest__expression_rewriter.t1.b, planner__core__casetest__expression_rewriter.t2.b)] +HashJoin 3.20 root Null-aware anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__expression_rewriter.t1.a, planner__core__casetest__expression_rewriter.t2.a) eq(planner__core__casetest__expression_rewriter.t1.b, planner__core__casetest__expression_rewriter.t2.b)] ├─TableReader(Build) 4.00 root data:TableFullScan │ └─TableFullScan 4.00 cop[tikv] table:t2 keep order:false └─TableReader(Probe) 4.00 root data:TableFullScan @@ -46,7 +46,7 @@ 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, left side:HashAgg, 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)] ├─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 diff --git a/tests/integrationtest/r/planner/core/casetest/index/index.result b/tests/integrationtest/r/planner/core/casetest/index/index.result index a1c3f189df745..3989c2b61c285 100644 --- a/tests/integrationtest/r/planner/core/casetest/index/index.result +++ b/tests/integrationtest/r/planner/core/casetest/index/index.result @@ -328,7 +328,7 @@ 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)] +HashJoin 3.00 root left outer join, left side:Projection, 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 │ └─IndexReader 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t1, index:c(c) keep order:false diff --git a/tests/integrationtest/r/planner/core/casetest/integration.result b/tests/integrationtest/r/planner/core/casetest/integration.result index ae70cbcea4b03..9df2e695019cf 100644 --- a/tests/integrationtest/r/planner/core/casetest/integration.result +++ b/tests/integrationtest/r/planner/core/casetest/integration.result @@ -54,7 +54,7 @@ drop table if exists t; create table t(a int not null, b datetime default null); explain format = 'brief' select * from t t1 left join t t2 on t1.a = t2.a where cast(t1.b as date) >= '2019-01-01'; id estRows task access object operator info -HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] +HashJoin 10000.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] ├─TableReader(Build) 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] ge(cast(planner__core__casetest__integration.t.b, date BINARY), 2019-01-01 00:00:00.000000) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -170,7 +170,7 @@ create table t(a int, b int); desc format = 'brief' select t1.b from t t1 where t1.b in (select t2.a from t t2 order by t1.a+t2.a limit 1); id estRows task access object operator info Projection 9990.00 root planner__core__casetest__integration.t.b -└─Apply 9990.00 root semi join, equal:[eq(planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.a)] +└─Apply 9990.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__integration.t.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -187,7 +187,7 @@ 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 - └─HashJoin 10000.00 root left outer semi join, equal:[eq(planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.b)] + └─HashJoin 10000.00 root left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -373,7 +373,7 @@ create table t(a int, b int); insert into t values(1, 2), (3, 4); explain format = 'brief' select (2) in (select b from t) from (select t.a < (select t.a from t t1 limit 1) from t) t; id estRows task access object operator info -HashJoin 10000.00 root CARTESIAN left outer semi join, other cond:eq(2, planner__core__casetest__integration.t.b) +HashJoin 10000.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(2, planner__core__casetest__integration.t.b) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -456,7 +456,7 @@ drop table if exists t; create table t(a int not null, b int not null); explain format = 'brief' select * from t where exists (select 1 from t t1 join t t2 where t1.a = t2.a and t1.a = t.a); id estRows task access object operator info -HashJoin 8000.00 root semi join, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] +HashJoin 8000.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] ├─HashJoin(Build) 12500.00 root inner join, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] │ ├─TableReader(Build) 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -466,7 +466,7 @@ HashJoin 8000.00 root semi join, equal:[eq(planner__core__casetest__integration └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select * from t where exists (select 1 from t t1 join t t2 on t1.a = t2.a and t1.a = t.a); id estRows task access object operator info -HashJoin 8000.00 root semi join, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] +HashJoin 8000.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] ├─HashJoin(Build) 12500.00 root inner join, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] │ ├─TableReader(Build) 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -526,7 +526,7 @@ 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 -└─HashJoin 7992.00 root semi join, equal:[eq(planner__core__casetest__integration.test.id, planner__core__casetest__integration.test.id)] +└─HashJoin 7992.00 root semi join, left side:TableReader, 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)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -536,7 +536,7 @@ HashAgg 1.00 root funcs:count(1)->Column#7 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 -└─HashJoin 7992.00 root semi join, equal:[eq(planner__core__casetest__integration.test.id, planner__core__casetest__integration.test.id)] +└─HashJoin 7992.00 root semi join, left side:TableReader, 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)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -546,7 +546,7 @@ HashAgg 1.00 root funcs:count(1)->Column#7 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 -└─Apply 10000.00 root CARTESIAN semi join +└─Apply 10000.00 root CARTESIAN semi join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─Limit(Probe) 20000.00 root offset:1, count:2 @@ -556,7 +556,7 @@ HashAgg 1.00 root funcs:count(1)->Column#7 └─TableFullScan 30000000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select * from t where 9 in (select c from t s where s.c < t.c limit 3); id estRows task access object operator info -Apply 10000.00 root CARTESIAN semi join +Apply 10000.00 root CARTESIAN semi join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo └─Selection(Probe) 24000.00 root eq(9, planner__core__casetest__integration.t.c) @@ -1043,7 +1043,7 @@ create table t1(a int); create table t2(a int, b int, c int, primary key(a,b) nonclustered); explain format = 'brief' select (select c from t2 where t2.a = t1.a and t2.b = 1) from t1; id estRows task access object operator info -HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2.a)] +HashJoin 10000.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2.a)] ├─TableReader(Build) 10.00 root data:Selection │ └─Selection 10.00 cop[tikv] eq(planner__core__casetest__integration.t2.b, 1) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -1052,7 +1052,7 @@ HashJoin 10000.00 root left outer join, equal:[eq(planner__core__casetest__inte explain format = 'brief' select (select c from t2 where t2.a = t1.a and (t2.b = 1 or t2.b = 2)) from t1; id estRows task access object operator info Projection 10000.00 root planner__core__casetest__integration.t2.c -└─Apply 10000.00 root CARTESIAN left outer join +└─Apply 10000.00 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─MaxOneRow(Probe) 10000.00 root @@ -1423,7 +1423,7 @@ set @@tidb_skip_missing_partition_stats = off; set @@tidb_opt_fix_control = ""; explain select /*+ TIDB_INLJ(t2_part@sel_2) */ * from t1 where t1.b<10 and not exists (select 1 from t2_part where t1.a=t2_part.a and t2_part.b<20); id estRows task access object operator info -HashJoin_19 2658.67 root anti semi join, equal:[eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a)] +HashJoin_19 2658.67 root anti semi join, left side:TableReader_22, equal:[eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a)] ├─PartitionUnion_23(Build) 13293.33 root │ ├─TableReader_31 3323.33 root data:Projection_25 │ │ └─Projection_25 3323.33 cop[tikv] planner__core__casetest__integration.t2_part.a @@ -1450,7 +1450,7 @@ Warning 1815 Optimizer Hint /*+ INL_JOIN(t2_part) */ or /*+ TIDB_INLJ(t2_part) * set @@tidb_opt_fix_control = "44262:ON"; explain select /*+ TIDB_INLJ(t2_part@sel_2) */ * from t1 where t1.b<10 and not exists (select 1 from t2_part where t1.a=t2_part.a and t2_part.b<20); id estRows task access object operator info -IndexJoin_13 2658.67 root anti semi join, inner:IndexLookUp_12, outer key:planner__core__casetest__integration.t1.a, inner key:planner__core__casetest__integration.t2_part.a, equal cond:eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a) +IndexJoin_13 2658.67 root anti semi join, inner:IndexLookUp_12, left side:TableReader_18, outer key:planner__core__casetest__integration.t1.a, inner key:planner__core__casetest__integration.t2_part.a, equal cond:eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a) ├─TableReader_18(Build) 3323.33 root data:Selection_17 │ └─Selection_17 3323.33 cop[tikv] lt(planner__core__casetest__integration.t1.b, 10) │ └─TableFullScan_16 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -1462,7 +1462,7 @@ set @@tidb_opt_fix_control = ""; set @@tidb_skip_missing_partition_stats = on; explain select /*+ TIDB_INLJ(t2_part@sel_2) */ * from t1 where t1.b<10 and not exists (select 1 from t2_part where t1.a=t2_part.a and t2_part.b<20); id estRows task access object operator info -IndexJoin_13 2658.67 root anti semi join, inner:IndexLookUp_12, outer key:planner__core__casetest__integration.t1.a, inner key:planner__core__casetest__integration.t2_part.a, equal cond:eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a) +IndexJoin_13 2658.67 root anti semi join, inner:IndexLookUp_12, left side:TableReader_18, outer key:planner__core__casetest__integration.t1.a, inner key:planner__core__casetest__integration.t2_part.a, equal cond:eq(planner__core__casetest__integration.t1.a, planner__core__casetest__integration.t2_part.a) ├─TableReader_18(Build) 3323.33 root data:Selection_17 │ └─Selection_17 3323.33 cop[tikv] lt(planner__core__casetest__integration.t1.b, 10) │ └─TableFullScan_16 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo 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 8a846eb9bd8e7..ee72a274fc43d 100644 --- a/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result +++ b/tests/integrationtest/r/planner/core/casetest/physicalplantest/physical_plan.result @@ -5,7 +5,7 @@ insert into t1 values(1,1),(2,2); insert into t2 values(1,1),(2,1); explain format = 'brief' select /*+ inl_merge_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -16,7 +16,7 @@ a a 2 NULL explain format = 'brief' select /*+ inl_hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -IndexHashJoin 12500.00 root left outer join, inner:TableReader, outer key:planner__core__casetest__physicalplantest__physical_plan.t1.a, inner key:planner__core__casetest__physicalplantest__physical_plan.t2.a, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a), eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) +IndexHashJoin 12500.00 root left outer join, inner:TableReader, left side:TableReader, outer key:planner__core__casetest__physicalplantest__physical_plan.t1.a, inner key:planner__core__casetest__physicalplantest__physical_plan.t2.a, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a), eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableRangeScan @@ -27,7 +27,7 @@ a a 2 NULL explain format = 'brief' select /*+ inl_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -IndexJoin 12500.00 root left outer join, inner:TableReader, outer key:planner__core__casetest__physicalplantest__physical_plan.t1.a, inner key:planner__core__casetest__physicalplantest__physical_plan.t2.a, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a), eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) +IndexJoin 12500.00 root left outer join, inner:TableReader, left side:TableReader, outer key:planner__core__casetest__physicalplantest__physical_plan.t1.a, inner key:planner__core__casetest__physicalplantest__physical_plan.t2.a, equal cond:eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a), eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableRangeScan @@ -38,7 +38,7 @@ a a 2 NULL explain format = 'brief' select /*+ hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1267,7 +1267,7 @@ Sort 0.80 root planner__core__casetest__physicalplantest__physical_plan.pk_s_mu └─Projection 0.80 root planner__core__casetest__physicalplantest__physical_plan.pk_s_multi_31.col2 └─Selection 0.80 root gt(Column#7, 2) └─HashAgg 1.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 - └─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) + └─HashJoin 100000000.00 root CARTESIAN left outer join, left side:IndexReader, 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 └─IndexReader(Probe) 10000.00 root index:IndexFullScan @@ -1463,7 +1463,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1476,7 +1476,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1489,7 +1489,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1502,7 +1502,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1515,7 +1515,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_build(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root right outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1528,7 +1528,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_probe(t2) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root right outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1541,7 +1541,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_build(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root right outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1554,7 +1554,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_probe(t1) */ t1.a, t2.a from t1 right join t2 on t1.a=t2.a and t1.b=t2.b; id estRows task access object operator info -HashJoin 12500.00 root right outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 12500.00 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1663,7 +1663,7 @@ show warnings; Level Code Message explain format = 'brief' select /*+ hash_join_build(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1676,7 +1676,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' select /*+ hash_join_probe(t1) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1689,7 +1689,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1702,7 +1702,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ * from t1 where t1.a in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1715,7 +1715,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' select /*+ hash_join_build(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1728,7 +1728,7 @@ 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_probe(t1) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1741,7 +1741,7 @@ 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(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1754,7 +1754,7 @@ 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_probe(t2@sel_2) */ * from t1 where t1.a not in (select t2.a from t2 where t1.b = t2.b); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.b) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1769,7 +1769,7 @@ explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a in (select a 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 - └─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 + └─MergeJoin 10000.00 root left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1785,7 +1785,7 @@ explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a in (select a 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 - └─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 + └─MergeJoin 10000.00 root left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1801,7 +1801,7 @@ explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a in (se 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 - └─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 + └─MergeJoin 10000.00 root left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1817,7 +1817,7 @@ explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a in (se 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 - └─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 + └─MergeJoin 10000.00 root left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1833,7 +1833,7 @@ explain format = 'brief' select /*+ hash_join_build(t1) */ sum(t1.a not in (sele 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 - └─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 + └─MergeJoin 10000.00 root anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1849,7 +1849,7 @@ explain format = 'brief' select /*+ hash_join_probe(t1) */ sum(t1.a not in (sele 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 - └─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 + └─MergeJoin 10000.00 root anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1865,7 +1865,7 @@ explain format = 'brief' select /*+ hash_join_build(t2@sel_2) */ sum(t1.a not in 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 - └─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 + └─MergeJoin 10000.00 root anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -1881,7 +1881,7 @@ explain format = 'brief' select /*+ hash_join_probe(t2@sel_2) */ sum(t1.a not in 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 - └─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 + └─MergeJoin 10000.00 root anti left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2379,7 +2379,7 @@ Level Code Message Warning 1815 Join hints are conflict, you can only specify one type of join explain format = 'brief' SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2392,7 +2392,7 @@ show warnings; Level Code Message explain format = 'brief' SELECT /*+ hash_join_probe(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2406,7 +2406,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' SELECT /*+ hash_join_probe(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2450,7 +2450,7 @@ show warnings; Level Code Message explain format = 'brief' SELECT /*+ hash_join_build(t1) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2464,7 +2464,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' SELECT /*+ hash_join_build(t2@sel_2) */ * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.a = t1.a); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2638,7 +2638,7 @@ show warnings; Level Code Message explain format = 'brief' SELECT /*+ USE_TOJA(false) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2651,7 +2651,7 @@ show warnings; Level Code Message explain format = 'brief' SELECT /*+ USE_TOJA(false) hash_join_build(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2665,7 +2665,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' SELECT /*+ USE_TOJA(false) hash_join_probe(t1) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2679,7 +2679,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' SELECT /*+ USE_TOJA(false) hash_join_build(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2693,7 +2693,7 @@ Level Code Message Warning 1815 We can't use the HASH_JOIN_BUILD or HASH_JOIN_PROBE hint for semi join, please check the hint explain format = 'brief' SELECT /*+ USE_TOJA(false) hash_join_probe(t2@sel_2) */ t1.a, t1.b FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); id estRows task access object operator info -MergeJoin 8000.00 root semi join, left key:planner__core__casetest__physicalplantest__physical_plan.t1.a, right key:planner__core__casetest__physicalplantest__physical_plan.t2.a +MergeJoin 8000.00 root semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2910,7 +2910,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 exists (select /*+ semi_join_rewrite(), no_decorrelate() */ * from t1 where t1.a=t3.a) from t3; id estRows task access object operator info -HashJoin 10000.00 root left outer semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t3.a, planner__core__casetest__physicalplantest__physical_plan.t1.a)] +HashJoin 10000.00 root left outer semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t3.a, planner__core__casetest__physicalplantest__physical_plan.t1.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2924,7 +2924,7 @@ Level Code Message Warning 1815 NO_DECORRELATE() and SEMI_JOIN_REWRITE() are in conflict. Both will be ineffective. explain format = 'brief' select t1.a from t1 where t1.a in (select t2.b from t2 where t2.a = t1.b); id estRows task access object operator info -HashJoin 7984.01 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +HashJoin 7984.01 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.a) eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -2939,7 +2939,7 @@ Level Code Message explain format = 'brief' select t1.a from t1 where t1.a in (select /*+ no_decorrelate() */ t2.b from t2 where t2.a = t1.b); id estRows task access object operator info Projection 9990.00 root planner__core__casetest__physicalplantest__physical_plan.t1.a -└─Apply 9990.00 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b)] +└─Apply 9990.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.a, planner__core__casetest__physicalplantest__physical_plan.t2.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -2955,7 +2955,7 @@ explain format = 'brief' select t1.a from t1 where t1.a = any (select t2.b from 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 - └─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) + └─HashJoin 10000.00 root left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -2969,7 +2969,7 @@ explain format = 'brief' select t1.a from t1 where t1.a = any (select /*+ no_dec 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 - └─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) + └─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader, 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 └─TableReader(Probe) 10000.00 root data:TableRangeScan @@ -3045,7 +3045,7 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, (select t2.b from t2 where t2.a = t1.b) from t1; id estRows task access object operator info -HashJoin 12500.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.a)] +HashJoin 12500.00 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t2.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -3059,7 +3059,7 @@ Level Code Message explain format = 'brief' select t1.a, (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, planner__core__casetest__physicalplantest__physical_plan.t2.b -└─Apply 10000.00 root CARTESIAN left outer join +└─Apply 10000.00 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─MaxOneRow(Probe) 10000.00 root @@ -3073,7 +3073,7 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, t1.b not in (select t3.b from t3) from t1; id estRows task access object operator info -HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.b)] +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -3086,7 +3086,7 @@ show warnings; Level Code Message explain format = 'brief' select t1.a, t1.b not in (select /*+ no_decorrelate() */ t3.b from t3) from t1; id estRows task access object operator info -HashJoin 10000.00 root Null-aware anti left outer semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.b)] +HashJoin 10000.00 root Null-aware anti left outer semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -3100,7 +3100,7 @@ Level Code Message Warning 1815 NO_DECORRELATE() is inapplicable because there are no correlated columns. explain format = 'brief' select exists (select t3.b from t3 where t3.a = t1.b limit 2) from t1; id estRows task access object operator info -HashJoin 10000.00 root left outer semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.a)] +HashJoin 10000.00 root left outer semi join, left side:TableReader, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.t1.b, planner__core__casetest__physicalplantest__physical_plan.t3.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -3114,7 +3114,7 @@ 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 -└─Apply 10000.00 root CARTESIAN left outer semi join +└─Apply 10000.00 root CARTESIAN left outer semi join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─Limit(Probe) 20000.00 root offset:0, count:2 @@ -3131,7 +3131,7 @@ 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 -└─HashJoin 1.00 root CARTESIAN left outer join +└─HashJoin 1.00 root CARTESIAN left outer join, left side:HashAgg ├─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 └─TableReader 1.00 root data:HashAgg @@ -3145,7 +3145,7 @@ 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:HashAgg ├─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 │ └─TableReader 10000.00 root data:TableFullScan @@ -3161,7 +3161,7 @@ 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 -└─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)] +└─HashJoin 10000.00 root left outer join, left side:TableReader, 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 │ └─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 @@ -3178,7 +3178,7 @@ 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 -└─Apply 10000.00 root CARTESIAN left outer join +└─Apply 10000.00 root CARTESIAN left outer join, left side:TableReader ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─MaxOneRow(Probe) 10000.00 root @@ -3195,7 +3195,7 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.NAME,(SELECT 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 -HashJoin 250.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)] +HashJoin 250.00 root left outer join, left side:IndexLookUp, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)] ├─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 @@ -3212,7 +3212,7 @@ 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 -└─Apply 250.00 root CARTESIAN left outer join +└─Apply 250.00 root CARTESIAN left outer join, left side:IndexLookUp ├─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 @@ -3229,14 +3229,14 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.NAME,(SELECT 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 -HashJoin 250.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)] +HashJoin 250.00 root left outer join, left side:IndexLookUp, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)] ├─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 └─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 - └─HashJoin 7984.01 root semi join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.tb.name, planner__core__casetest__physicalplantest__physical_plan.tc.name)] + └─HashJoin 7984.01 root semi join, left side:TableReader, 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)) │ └─TableFullScan 10000.00 cop[tikv] table:tc keep order:false, stats:pseudo @@ -3250,7 +3250,7 @@ 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 -└─Apply 250.00 root CARTESIAN left outer join +└─Apply 250.00 root CARTESIAN left outer join, left side:IndexLookUp ├─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 @@ -3258,7 +3258,7 @@ Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan └─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 - └─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) + └─IndexHashJoin 1998.00 root semi join, inner:IndexLookUp, left side: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 │ └─Selection(Probe) 2497.50 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.name)) @@ -3274,14 +3274,14 @@ show warnings; Level Code Message explain format = 'brief' SELECT ta.NAME,(SELECT 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 -HashJoin 250.00 root left outer join, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)] +HashJoin 250.00 root left outer join, left side:IndexLookUp, equal:[eq(planner__core__casetest__physicalplantest__physical_plan.ta.id, planner__core__casetest__physicalplantest__physical_plan.tb.id)] ├─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 └─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 - └─Apply 9990.00 root CARTESIAN semi join + └─Apply 9990.00 root CARTESIAN semi join, left side:TableReader ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.id)) │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo @@ -3296,7 +3296,7 @@ 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 -└─Apply 250.00 root CARTESIAN left outer join +└─Apply 250.00 root CARTESIAN left outer join, left side:IndexLookUp ├─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 @@ -3304,7 +3304,7 @@ Projection 250.00 root planner__core__casetest__physicalplantest__physical_plan └─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 - └─Apply 2500.00 root CARTESIAN semi join + └─Apply 2500.00 root CARTESIAN semi join, left side:IndexLookUp ├─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 │ └─TableRowIDScan(Probe) 2500.00 cop[tikv] table:tb keep order:false, stats:pseudo @@ -3372,7 +3372,7 @@ HashJoin 159.84 root inner join, equal:[eq(planner__core__casetest__physicalpla │ │ └─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 │ └─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)] + └─HashJoin(Probe) 7976.02 root semi join, left side:TableReader, 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 │ └─Selection 249.75 cop[tikv] like(planner__core__casetest__physicalplantest__physical_plan.tb.name, "chad9%", 92), not(isnull(planner__core__casetest__physicalplantest__physical_plan.tb.code)) │ └─TableFullScan 10000.00 cop[tikv] table:tb keep order:false, stats:pseudo @@ -3426,7 +3426,7 @@ id estRows task access object operator info Projection 10000.00 root planner__core__casetest__physicalplantest__physical_plan.ta.name └─Apply 10000.00 root CARTESIAN inner join ├─Apply(Build) 10000.00 root CARTESIAN inner join - │ ├─Apply(Build) 10000.00 root CARTESIAN semi join + │ ├─Apply(Build) 10000.00 root CARTESIAN semi join, left side:TableReader │ │ ├─TableReader(Build) 10000.00 root data:TableFullScan │ │ │ └─TableFullScan 10000.00 cop[tikv] table:ta keep order:false, stats:pseudo │ │ └─IndexLookUp(Probe) 2500.00 root diff --git a/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result b/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result index 23fb20981f109..210a76366ca74 100644 --- a/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result +++ b/tests/integrationtest/r/planner/core/casetest/predicate_simplification.result @@ -176,14 +176,13 @@ LIMIT 240; id estRows task access object operator info Projection 41.67 root planner__core__casetest__predicate_simplification.dt.a, planner__core__casetest__predicate_simplification.dt.pk, planner__core__casetest__predicate_simplification.dt.b, planner__core__casetest__predicate_simplification.dt.c -└─Limit 41.67 root offset:0, count:240 - └─IndexHashJoin 41.67 root left outer join, inner:TableReader, outer key:planner__core__casetest__predicate_simplification.it.pk, inner key:planner__core__casetest__predicate_simplification.dt.pk, equal cond:eq(planner__core__casetest__predicate_simplification.it.pk, planner__core__casetest__predicate_simplification.dt.pk), other cond:or(gt(planner__core__casetest__predicate_simplification.it.a, "a"), and(eq(planner__core__casetest__predicate_simplification.it.a, "a"), gt(planner__core__casetest__predicate_simplification.dt.pk, 1))) - ├─Limit(Build) 33.33 root offset:0, count:240 - │ └─IndexReader 33.33 root index:Limit - │ └─Limit 33.33 cop[tikv] offset:0, count:240 - │ └─IndexRangeScan 33.33 cop[tikv] table:it, index:f(a, pk) range:("a" 1,"a" +inf], keep order:true, stats:pseudo - └─TableReader(Probe) 33.33 root data:TableRangeScan - └─TableRangeScan 33.33 cop[tikv] table:dt range: decided by [planner__core__casetest__predicate_simplification.it.pk], keep order:false, stats:pseudo +└─IndexHashJoin 41.67 root left outer join, inner:TableReader, left side:Limit, outer key:planner__core__casetest__predicate_simplification.it.pk, inner key:planner__core__casetest__predicate_simplification.dt.pk, equal cond:eq(planner__core__casetest__predicate_simplification.it.pk, planner__core__casetest__predicate_simplification.dt.pk), other cond:or(gt(planner__core__casetest__predicate_simplification.it.a, "a"), and(eq(planner__core__casetest__predicate_simplification.it.a, "a"), gt(planner__core__casetest__predicate_simplification.dt.pk, 1))) + ├─Limit(Build) 33.33 root offset:0, count:240 + │ └─IndexReader 33.33 root index:Limit + │ └─Limit 33.33 cop[tikv] offset:0, count:240 + │ └─IndexRangeScan 33.33 cop[tikv] table:it, index:f(a, pk) range:("a" 1,"a" +inf], keep order:true, stats:pseudo + └─TableReader(Probe) 33.33 root data:TableRangeScan + └─TableRangeScan 33.33 cop[tikv] table:dt range: decided by [planner__core__casetest__predicate_simplification.it.pk], keep order:false, stats:pseudo explain format='brief' SELECT * FROM ( SELECT @@ -201,7 +200,7 @@ LIMIT 240; id estRows task access object operator info TopN 41.67 root planner__core__casetest__predicate_simplification.dt.pk, offset:0, count:240 -└─IndexJoin 41.67 root left outer join, inner:TableReader, outer key:planner__core__casetest__predicate_simplification.it.pk, inner key:planner__core__casetest__predicate_simplification.dt.pk, equal cond:eq(planner__core__casetest__predicate_simplification.it.pk, planner__core__casetest__predicate_simplification.dt.pk) +└─IndexJoin 41.67 root left outer join, inner:TableReader, left side:IndexReader, outer key:planner__core__casetest__predicate_simplification.it.pk, inner key:planner__core__casetest__predicate_simplification.dt.pk, equal cond:eq(planner__core__casetest__predicate_simplification.it.pk, planner__core__casetest__predicate_simplification.dt.pk) ├─IndexReader(Build) 33.33 root index:IndexRangeScan │ └─IndexRangeScan 33.33 cop[tikv] table:it, index:f(a, pk) range:("a" 1,"a" +inf], keep order:false, stats:pseudo └─TableReader(Probe) 11.11 root data:Selection 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..75d49d4c5593f 100644 --- a/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result +++ b/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result @@ -190,7 +190,7 @@ 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)] +HashJoin 10000.00 root left outer join, left side:TableReader, 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 │ └─TableReader 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(isnull(minus(planner__core__casetest__pushdown__push_down.t.id, 2))) @@ -199,7 +199,7 @@ 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)] +HashJoin 12487.50 root right outer join, left side:TableReader, 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 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -220,7 +220,7 @@ Projection 10000.00 root Column#26, Column#13 └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo desc format = 'brief' select A.id from t as A where exists (select 1 from t where t.id=A.id); id estRows task access object operator info -HashJoin 7992.00 root semi join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, planner__core__casetest__pushdown__push_down.t.id)] +HashJoin 7992.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, planner__core__casetest__pushdown__push_down.t.id)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__pushdown__push_down.t.id)) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -229,7 +229,7 @@ HashJoin 7992.00 root semi join, equal:[eq(planner__core__casetest__pushdown__p └─TableFullScan 10000.00 cop[tikv] table:A keep order:false, stats:pseudo desc format = 'brief' select A.id from t as A where not exists (select 1 from t where t.id=A.id); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, planner__core__casetest__pushdown__push_down.t.id)] +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__pushdown__push_down.t.id, planner__core__casetest__pushdown__push_down.t.id)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan 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..14c21e3683132 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 @@ -560,7 +560,7 @@ IndexHashJoin 12475.01 root inner join, inner:IndexLookUp, outer key:planner__c └─TableRowIDScan 12487.50 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ no_hash_join(t2) */ * from t1 left join t2 on t1.b=t2.b; id estRows task access object operator info -MergeJoin 12487.50 root left outer join, left key:planner__core__casetest__rule__rule_join_reorder.t1.b, right key:planner__core__casetest__rule__rule_join_reorder.t2.b +MergeJoin 12487.50 root left outer join, left side:Sort, left key:planner__core__casetest__rule__rule_join_reorder.t1.b, right key:planner__core__casetest__rule__rule_join_reorder.t2.b ├─Sort(Build) 9990.00 root planner__core__casetest__rule__rule_join_reorder.t2.b │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) @@ -570,7 +570,7 @@ MergeJoin 12487.50 root left outer join, left key:planner__core__casetest__rule └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ no_hash_join(t2) */ * from t1 left join t2 on t1.a=t2.a; id estRows task access object operator info -IndexHashJoin 12487.50 root left outer join, inner:IndexLookUp, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a, equal cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a) +IndexHashJoin 12487.50 root left outer join, inner:IndexLookUp, left side:TableReader, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a, equal cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─IndexLookUp(Probe) 12487.50 root @@ -579,7 +579,7 @@ IndexHashJoin 12487.50 root left outer join, inner:IndexLookUp, outer key:plann └─TableRowIDScan(Probe) 12487.50 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ no_hash_join(t2) */ * from t1 right join t2 on t1.b=t2.b; id estRows task access object operator info -MergeJoin 12487.50 root right outer join, left key:planner__core__casetest__rule__rule_join_reorder.t1.b, right key:planner__core__casetest__rule__rule_join_reorder.t2.b +MergeJoin 12487.50 root right outer join, left side:Sort, left key:planner__core__casetest__rule__rule_join_reorder.t1.b, right key:planner__core__casetest__rule__rule_join_reorder.t2.b ├─Sort(Build) 9990.00 root planner__core__casetest__rule__rule_join_reorder.t1.b │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) @@ -589,7 +589,7 @@ MergeJoin 12487.50 root right outer join, left key:planner__core__casetest__rul └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ no_hash_join(t2) */ * from t1 right join t2 on t1.a=t2.a; id estRows task access object operator info -IndexHashJoin 12487.50 root right outer join, inner:IndexLookUp, outer key:planner__core__casetest__rule__rule_join_reorder.t2.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) +IndexHashJoin 12487.50 root right outer join, inner:IndexLookUp, left side:IndexLookUp, outer key:planner__core__casetest__rule__rule_join_reorder.t2.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─IndexLookUp(Probe) 12487.50 root @@ -671,7 +671,7 @@ HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rul └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:false, stats:pseudo explain format = 'brief' select /*+ no_merge_join(t2) */ * from t1 right join t2 on t1.a=t2.a; id estRows task access object operator info -HashJoin 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +HashJoin 12487.50 root right outer join, left side:IndexReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─IndexReader(Build) 9990.00 root index:IndexFullScan │ └─IndexFullScan 9990.00 cop[tikv] table:t1, index:a(a) keep order:false, stats:pseudo └─IndexReader(Probe) 10000.00 root index:IndexFullScan @@ -2599,7 +2599,7 @@ Projection 43857.47 root planner__core__casetest__rule__rule_join_reorder.t4.a, │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo - └─HashJoin(Probe) 46781.30 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 46781.30 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─PartitionUnion(Build) 39960.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) @@ -2670,7 +2670,7 @@ Projection 43857.47 root planner__core__casetest__rule__rule_join_reorder.t4.a, │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo - └─HashJoin(Probe) 46781.30 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 46781.30 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─PartitionUnion(Build) 39960.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) @@ -2741,7 +2741,7 @@ Projection 43857.47 root planner__core__casetest__rule__rule_join_reorder.t4.a, │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo - └─HashJoin(Probe) 46781.30 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 46781.30 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─PartitionUnion(Build) 39960.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) @@ -2812,7 +2812,7 @@ Projection 43857.47 root planner__core__casetest__rule__rule_join_reorder.t4.a, │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo - └─HashJoin(Probe) 46781.30 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 46781.30 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─PartitionUnion(Build) 39960.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) @@ -2883,7 +2883,7 @@ Projection 43857.47 root planner__core__casetest__rule__rule_join_reorder.t4.a, │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo - └─HashJoin(Probe) 46781.30 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 46781.30 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─PartitionUnion(Build) 39960.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) @@ -2925,7 +2925,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3) */ * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 50000.00 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 50000.00 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 50000.00 root │ ├─TableReader 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo @@ -2937,7 +2937,7 @@ HashJoin 50000.00 root left outer join, equal:[eq(planner__core__casetest__rule │ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo -└─HashJoin(Probe) 39960.00 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +└─HashJoin(Probe) 39960.00 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─PartitionUnion(Build) 29970.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) @@ -2965,7 +2965,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t2, t1, t3) */ * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 50000.00 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 50000.00 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 50000.00 root │ ├─TableReader 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo @@ -2977,7 +2977,7 @@ HashJoin 50000.00 root left outer join, equal:[eq(planner__core__casetest__rule │ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p3 keep order:false, stats:pseudo │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo -└─HashJoin(Probe) 39960.00 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +└─HashJoin(Probe) 39960.00 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─PartitionUnion(Build) 29970.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) @@ -3006,7 +3006,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t2, t3) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b; id estRows task access object operator info -HashJoin 58476.62 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 58476.62 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 50000.00 root │ ├─TableReader 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo @@ -3062,7 +3062,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b; id estRows task access object operator info -HashJoin 58476.62 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 58476.62 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 50000.00 root │ ├─TableReader 10000.00 root data:TableFullScan │ │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p0 keep order:false, stats:pseudo @@ -3118,7 +3118,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b; id estRows task access object operator info Projection 54821.83 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t5.a, planner__core__casetest__rule__rule_join_reorder.t5.b, planner__core__casetest__rule__rule_join_reorder.t6.a, planner__core__casetest__rule__rule_join_reorder.t6.b -└─HashJoin 54821.83 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 54821.83 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─Projection(Build) 46781.30 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b │ └─HashJoin 46781.30 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] │ ├─PartitionUnion(Build) 39960.00 root @@ -3207,7 +3207,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t3, t4) leading(t5, t6) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b; id estRows task access object operator info Projection 54821.83 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t5.a, planner__core__casetest__rule__rule_join_reorder.t5.b, planner__core__casetest__rule__rule_join_reorder.t6.a, planner__core__casetest__rule__rule_join_reorder.t6.b -└─HashJoin 54821.83 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 54821.83 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─Projection(Build) 46781.30 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b │ └─HashJoin 46781.30 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] │ ├─PartitionUnion(Build) 39960.00 root @@ -3296,7 +3296,7 @@ Warning 1815 We can only use one leading hint at most, when multiple leading hin explain format = 'brief' select /*+ leading(t5, t6, t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b; id estRows task access object operator info Projection 54821.83 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t5.a, planner__core__casetest__rule__rule_join_reorder.t5.b, planner__core__casetest__rule__rule_join_reorder.t6.a, planner__core__casetest__rule__rule_join_reorder.t6.b -└─HashJoin 54821.83 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 54821.83 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─Projection(Build) 46781.30 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b │ └─HashJoin 46781.30 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] │ ├─PartitionUnion(Build) 39960.00 root @@ -3386,7 +3386,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t1, t2) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info Projection 46828.12 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 46828.12 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 46828.12 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─Projection(Build) 37462.50 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b │ └─HashJoin 37462.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t4.a)] │ ├─PartitionUnion(Build) 29970.00 root @@ -3458,7 +3458,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t2, t3) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info Projection 46828.12 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 46828.12 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 46828.12 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─Projection(Build) 37462.50 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b │ └─HashJoin 37462.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t4.a)] │ ├─PartitionUnion(Build) 29970.00 root @@ -3530,7 +3530,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t1, t3) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info Projection 46828.12 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 46828.12 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 46828.12 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─Projection(Build) 37462.50 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b │ └─HashJoin 37462.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t4.a)] │ ├─PartitionUnion(Build) 29970.00 root @@ -3601,7 +3601,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3) */ * from t2 right join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 50000.00 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 50000.00 root right outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 49950.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) @@ -3618,7 +3618,7 @@ HashJoin 50000.00 root right outer join, equal:[eq(planner__core__casetest__rul │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo -└─HashJoin(Probe) 40000.00 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +└─HashJoin(Probe) 40000.00 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─PartitionUnion(Build) 29970.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) @@ -3642,7 +3642,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t2, t1, t3) */ * from t2 right join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 50000.00 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 50000.00 root right outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 49950.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) @@ -3659,7 +3659,7 @@ HashJoin 50000.00 root right outer join, equal:[eq(planner__core__casetest__rul │ └─TableReader 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2, partition:p4 keep order:false, stats:pseudo -└─HashJoin(Probe) 40000.00 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +└─HashJoin(Probe) 40000.00 root left outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─PartitionUnion(Build) 29970.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) @@ -3684,7 +3684,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t2, t3) */ * from t2 right join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b; id estRows task access object operator info Projection 58476.62 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b -└─HashJoin 58476.62 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 58476.62 root right outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 49950.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) @@ -3744,7 +3744,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t3, t4) */ * from t2 right join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b; id estRows task access object operator info Projection 58476.62 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b -└─HashJoin 58476.62 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 58476.62 root right outer join, left side:PartitionUnion, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─PartitionUnion(Build) 49950.00 root │ ├─TableReader 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) @@ -4102,7 +4102,7 @@ HashJoin 1000000000000.00 root CARTESIAN inner join └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15609.38 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15609.38 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -4115,7 +4115,7 @@ HashJoin 15609.38 root left outer 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() */ * from t1 join t2 on t1.a=t2.a right join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15593.77 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─HashJoin(Probe) 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -4273,7 +4273,7 @@ Warning 1815 leading hint is inapplicable, check the join type or the join algor explain format = 'brief' select /*+ leading(t2) */ * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; id estRows task access object operator info Projection 15609.38 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 15609.38 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +└─HashJoin 15609.38 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -4291,7 +4291,7 @@ Projection 15609.38 root planner__core__casetest__rule__rule_join_reorder.t1.a, ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] + └─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -4305,7 +4305,7 @@ Projection 15609.38 root planner__core__casetest__rule__rule_join_reorder.t1.a, ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] + └─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -4319,7 +4319,7 @@ Projection 15609.38 root planner__core__casetest__rule__rule_join_reorder.t1.a, ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo - └─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] + └─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -4328,7 +4328,7 @@ Projection 15609.38 root planner__core__casetest__rule__rule_join_reorder.t1.a, └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3, t1) */ * from t1 join t2 on t1.a=t2.a left join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15609.38 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15609.38 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -4343,7 +4343,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t2) */ * from t1 join t2 on t1.a=t2.a right join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15593.77 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─Projection(Probe) 12475.01 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 @@ -4356,7 +4356,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(t3) */ * from t1 join t2 on t1.a=t2.a right join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15593.77 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─Projection(Probe) 12475.01 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 @@ -4369,7 +4369,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(t2, t3) */ * from t1 join t2 on t1.a=t2.a right join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15593.77 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─Projection(Probe) 12475.01 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 @@ -4385,7 +4385,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3, t2) */ * from t1 join t2 on t1.a=t2.a right join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15593.77 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─Projection(Probe) 12475.01 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 @@ -4401,7 +4401,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3, t1) */ * from t1 join t2 on t1.a=t2.a right join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15593.77 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo └─Projection(Probe) 12475.01 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 @@ -4487,7 +4487,7 @@ id estRows task access object operator info HashJoin 124875000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -4500,7 +4500,7 @@ id estRows task access object operator info HashJoin 124875000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -4510,10 +4510,10 @@ Level Code Message Warning 1815 leading hint is inapplicable, check if the leading hint table has join conditions with other tables explain format = 'brief' select /*+ leading(t3, t1) */ * from t1 right join t2 on t1.a=t2.a right join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15609.38 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 15609.38 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -4528,7 +4528,7 @@ id estRows task access object operator info HashJoin 124875000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -4539,7 +4539,7 @@ id estRows task access object operator info HashJoin 124875000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -4550,7 +4550,7 @@ id estRows task access object operator info HashJoin 124875000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -4561,7 +4561,7 @@ id estRows task access object operator info HashJoin 124875000.00 root CARTESIAN inner join ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -4582,7 +4582,7 @@ insert into t3 values(1, 1), (2, 2), (3, 3); analyze table t3 all columns; explain format = 'brief' select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a where t1.a in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9980.01 root semi 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9980.01 root semi join, left side:HashJoin, 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 3.00 root data:Selection │ └─Selection 3.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false @@ -4595,7 +4595,7 @@ HashJoin 9980.01 root semi join, equal:[eq(planner__core__casetest__rule__rule_ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) +HashJoin 9990.00 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) ├─TableReader(Build) 3.00 root data:TableFullScan │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -4607,7 +4607,7 @@ 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() */ * from t1 join t2 on t1.a=t2.a where exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9980.01 root semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 9980.01 root semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 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 @@ -4620,7 +4620,7 @@ HashJoin 9980.01 root semi join, equal:[eq(planner__core__casetest__rule__rule_ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a where not exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 9990.00 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 3.00 root data:TableFullScan │ └─TableFullScan 3.00 cop[tikv] table:t3 keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -4633,7 +4633,7 @@ HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__ 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:HashAgg ├─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 │ └─IndexReader 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t1, index:a(a) keep order:false, stats:pseudo @@ -4645,7 +4645,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 │ └─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 @@ -4674,7 +4674,7 @@ HashJoin 4.69 root inner join, equal:[eq(planner__core__casetest__rule__rule_jo └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ straight_join() */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -4751,7 +4751,7 @@ Projection 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 │ └─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 @@ -5144,7 +5144,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 │ └─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 @@ -5162,7 +5162,7 @@ Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LE 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 │ └─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 @@ -5180,7 +5180,7 @@ Warning 1815 There are no matching table names for (t2, t3) in optimizer hint /* 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 │ └─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 @@ -5199,7 +5199,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 │ └─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 @@ -5217,7 +5217,7 @@ Warning 1815 There are no matching table names for (t3, t2) in optimizer hint /* 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:StreamAgg ├─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 │ └─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 @@ -5532,7 +5532,7 @@ IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core_ └─TableRowIDScan(Probe) 4.69 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t4) */ * from t1 join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 12475.01 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 12475.01 root Null-aware anti semi join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false └─Projection(Probe) 15593.77 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 @@ -5549,7 +5549,7 @@ HashJoin 12475.01 root Null-aware anti semi join, equal:[eq(planner__core__case └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -5563,7 +5563,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -5578,7 +5578,7 @@ 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, t3@sel_2) */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -5593,7 +5593,7 @@ 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(t3@sel_2, t2) */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -5608,7 +5608,7 @@ 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(t3@sel_2, t1) */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 3.00 root index:IndexFullScan │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:false └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -5869,7 +5869,7 @@ Projection 24365.26 root planner__core__casetest__rule__rule_join_reorder.t4.a, ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─HashJoin(Probe) 15593.77 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 15593.77 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -5885,7 +5885,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t2, t3) */ * from t4 join t on t4.a=t.a left join t1 on t.a = t1.a join t2 on t.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info Projection 24365.26 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 24365.26 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 24365.26 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -5915,7 +5915,7 @@ Projection 24365.26 root planner__core__casetest__rule__rule_join_reorder.t4.a, ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─HashJoin(Probe) 15593.77 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 15593.77 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -5939,7 +5939,7 @@ Projection 24365.26 root planner__core__casetest__rule__rule_join_reorder.t4.a, ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo - └─HashJoin(Probe) 15593.77 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] + └─HashJoin(Probe) 15593.77 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -5955,7 +5955,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t3, t2, t) */ * from t4 join t on t4.a=t.a left join t1 on t.a = t1.a join t2 on t.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info Projection 24365.26 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 24365.26 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 24365.26 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -5976,10 +5976,10 @@ Projection 24365.26 root planner__core__casetest__rule__rule_join_reorder.t4.a, └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3) */ * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 15609.38 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 15609.38 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo @@ -5988,10 +5988,10 @@ HashJoin 15609.38 root left outer join, equal:[eq(planner__core__casetest__rule └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t2, t1, t3) */ * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 15609.38 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 15609.38 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo @@ -6003,7 +6003,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t2, t3) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b; id estRows task access object operator info -HashJoin 19492.21 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 19492.21 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─HashJoin(Probe) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] @@ -6022,7 +6022,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b; id estRows task access object operator info -HashJoin 19492.21 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 19492.21 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─Projection(Probe) 15593.77 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b @@ -6040,7 +6040,7 @@ HashJoin 19492.21 root left outer join, equal:[eq(planner__core__casetest__rule explain format = 'brief' select /*+ leading(t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b; id estRows task access object operator info Projection 30426.12 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t5.a, planner__core__casetest__rule__rule_join_reorder.t5.b, planner__core__casetest__rule__rule_join_reorder.t6.a, planner__core__casetest__rule__rule_join_reorder.t6.b -└─HashJoin 30426.12 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 30426.12 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─Projection(Build) 15593.77 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b │ └─HashJoin 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6067,7 +6067,7 @@ Projection 30426.12 root planner__core__casetest__rule__rule_join_reorder.t2.a, explain format = 'brief' select /*+ leading(t3, t4) leading(t5, t6) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b; id estRows task access object operator info Projection 30426.12 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t5.a, planner__core__casetest__rule__rule_join_reorder.t5.b, planner__core__casetest__rule__rule_join_reorder.t6.a, planner__core__casetest__rule__rule_join_reorder.t6.b -└─HashJoin 30426.12 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 30426.12 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─HashJoin(Build) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] │ ├─TableReader(Build) 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t4.b)) @@ -6095,7 +6095,7 @@ Warning 1815 We can only use one leading hint at most, when multiple leading hin explain format = 'brief' select /*+ leading(t5, t6, t3, t4) */ * from t2 left join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b join t5 on t2.a = t5.a join t6 on t5.b=t6.b; id estRows task access object operator info Projection 30426.12 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t5.a, planner__core__casetest__rule__rule_join_reorder.t5.b, planner__core__casetest__rule__rule_join_reorder.t6.a, planner__core__casetest__rule__rule_join_reorder.t6.b -└─HashJoin 30426.12 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 30426.12 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─HashJoin(Build) 15593.77 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] │ ├─TableReader(Build) 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t4.b)) @@ -6123,7 +6123,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t1, t2) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 24389.65 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +HashJoin 24389.65 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─HashJoin(Build) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t.a)) @@ -6145,7 +6145,7 @@ HashJoin 24389.65 root right outer join, equal:[eq(planner__core__casetest__rul explain format = 'brief' select /*+ leading(t2, t3) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info Projection 24389.65 root planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b, planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 24389.65 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 24389.65 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─HashJoin(Build) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t.a)) @@ -6166,7 +6166,7 @@ Projection 24389.65 root planner__core__casetest__rule__rule_join_reorder.t4.a, └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t1, t3) */ * from t4 join t on t4.a=t.a right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 24389.65 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +HashJoin 24389.65 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─HashJoin(Build) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t.a)) @@ -6189,11 +6189,11 @@ Level Code Message Warning 1815 leading hint is inapplicable, check if the leading hint table is valid explain format = 'brief' select /*+ leading(t3) */ * from t2 right join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +HashJoin 15593.77 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo @@ -6201,11 +6201,11 @@ 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(t2, t1, t3) */ * from t2 right join (t1 left join t3 on t1.a=t3.a) on t2.b=t1.b; id estRows task access object operator info -HashJoin 15593.77 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 15593.77 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -6218,7 +6218,7 @@ Projection 19492.21 root planner__core__casetest__rule__rule_join_reorder.t2.a, ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t4.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo - └─HashJoin(Probe) 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] + └─HashJoin(Probe) 15593.77 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -6234,7 +6234,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va explain format = 'brief' select /*+ leading(t3, t4) */ * from t2 right join (t1 join t3 on t1.a=t3.a join t4 on t3.b = t4.b) on t2.b=t1.b; id estRows task access object operator info Projection 19492.21 root 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.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b, planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t4.b -└─HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] +└─HashJoin 19492.21 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t1.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -6331,7 +6331,7 @@ Projection 243165526.37 root planner__core__casetest__rule__rule_join_reorder.t └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t2) hash_join(t2) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info -HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6349,7 +6349,7 @@ HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rul └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t2) hash_join(t1) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info -HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6367,7 +6367,7 @@ HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rul └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t2) hash_join(t3) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info -HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6436,7 +6436,7 @@ HashJoin 19492.21 root inner join, equal:[eq(planner__core__casetest__rule__rul └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t2) INL_JOIN(t1) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info -HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─IndexJoin 12475.01 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__rule__rule_join_reorder.t.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a) │ ├─TableReader(Build) 9990.00 root data:Selection @@ -6456,7 +6456,7 @@ HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rul └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t2) INL_JOIN(t3) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info -HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6477,7 +6477,7 @@ Warning 1815 Optimizer Hint /*+ INL_JOIN(t3) */ or /*+ TIDB_INLJ(t3) */ is inapp explain format = 'brief' select /*+ leading(t3) INL_JOIN(t1) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info Projection 19492.21 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +└─HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─IndexJoin 12475.01 root inner join, inner:IndexLookUp, outer key:planner__core__casetest__rule__rule_join_reorder.t.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a, equal cond:eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a) │ ├─TableReader(Build) 9990.00 root data:Selection @@ -6498,7 +6498,7 @@ Projection 19492.21 root planner__core__casetest__rule__rule_join_reorder.t.a, explain format = 'brief' select /*+ leading(t3) INL_JOIN(t3) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info Projection 19492.21 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +└─HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6518,7 +6518,7 @@ Level Code Message Warning 1815 Optimizer Hint /*+ INL_JOIN(t3) */ or /*+ TIDB_INLJ(t3) */ is inapplicable explain format = 'brief' select /*+ leading(t2) merge_join(t2) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info -HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6558,7 +6558,7 @@ Projection 19492.21 root planner__core__casetest__rule__rule_join_reorder.t.a, └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t2) merge_join(t3) */ * from t left join t1 on t.a = t1.a right join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info -HashJoin 19492.21 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] +HashJoin 19492.21 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.b)] ├─Projection(Build) 12475.01 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b │ └─HashJoin 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t.a)] │ ├─TableReader(Build) 9980.01 root data:Selection @@ -6599,7 +6599,7 @@ Projection 19492.21 root planner__core__casetest__rule__rule_join_reorder.t.a, explain format = 'brief' select /*+ leading(t3) merge_join(t2) */ * from t right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info Projection 19511.72 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 19511.72 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 19511.72 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -6619,7 +6619,7 @@ Projection 19511.72 root planner__core__casetest__rule__rule_join_reorder.t.a, explain format = 'brief' select /*+ leading(t3) merge_join(t2) */ * from t right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info Projection 19511.72 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 19511.72 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 19511.72 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -6639,7 +6639,7 @@ Projection 19511.72 root planner__core__casetest__rule__rule_join_reorder.t.a, explain format = 'brief' select /*+ leading(t3) merge_join(t3) */ * from t right join t1 on t.a = t1.a join t2 on t1.b = t2.b join t3 on t2.b = t3.b ; id estRows task access object operator info Projection 19511.72 root planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t.b, 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.t3.a, planner__core__casetest__rule__rule_join_reorder.t3.b -└─HashJoin 19511.72 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] +└─HashJoin 19511.72 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -6699,7 +6699,7 @@ Warning 1815 Optimizer Hint /*+ INL_JOIN(t1) */ or /*+ TIDB_INLJ(t1) */ is inapp Warning 1815 Optimizer Hint /*+ INL_JOIN(t1) */ or /*+ TIDB_INLJ(t1) */ is inapplicable explain format = 'brief' select /*+ leading(t4) */ * from t1 join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where t1.a in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12475.01 root semi 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 12475.01 root semi join, left side:Projection, 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo @@ -6717,11 +6717,11 @@ HashJoin 12475.01 root semi join, equal:[eq(planner__core__casetest__rule__rule └─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 where t1.a in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9980.01 root semi 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9980.01 root semi join, left side:HashJoin, 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)), 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) 12475.01 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12475.01 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -6732,7 +6732,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 right join t2 on t1.a=t2.a where t1.a in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9980.01 root semi 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9980.01 root semi join, left side:HashJoin, 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, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t3.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo @@ -6748,10 +6748,10 @@ 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(t4) */ * from t1 join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where t1.a not in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12475.01 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) +HashJoin 12475.01 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] +└─HashJoin(Probe) 15593.77 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo └─HashJoin(Probe) 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -6763,10 +6763,10 @@ HashJoin 12475.01 root anti semi join, equal:[eq(planner__core__casetest__rule_ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) +HashJoin 9990.00 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -6776,10 +6776,10 @@ Level Code Message Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 right join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) +HashJoin 9990.00 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)], other cond:eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -6790,7 +6790,7 @@ 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(t4) */ * from t1 join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12475.01 root semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 12475.01 root semi join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -6808,11 +6808,11 @@ HashJoin 12475.01 root semi join, equal:[eq(planner__core__casetest__rule__rule └─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 where exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9990.00 root semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 9990.00 root semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -6823,7 +6823,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 right join t2 on t1.a=t2.a where exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9980.01 root semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 9980.01 root semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 9990.00 root data:Selection │ └─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 @@ -6839,10 +6839,10 @@ 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(t4) */ * from t1 join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where not exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 12475.01 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 12475.01 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] +└─HashJoin(Probe) 15593.77 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo └─HashJoin(Probe) 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -6854,10 +6854,10 @@ HashJoin 12475.01 root anti semi join, equal:[eq(planner__core__casetest__rule_ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a where not exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 9990.00 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -6867,10 +6867,10 @@ Level Code Message Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 right join t2 on t1.a=t2.a where not exists (select t3.a from t3 where t1.b = t3.b); id estRows task access object operator info -HashJoin 9990.00 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] +HashJoin 9990.00 root anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t3.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -6882,7 +6882,7 @@ Warning 1815 leading hint is inapplicable, check the join type or the join algor 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:HashAgg ├─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 │ └─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 @@ -6897,7 +6897,7 @@ Projection 1.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, Col 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:HashAgg ├─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 │ └─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 @@ -6914,7 +6914,7 @@ Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LE 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 -└─Apply 1.00 root CARTESIAN left outer join +└─Apply 1.00 root CARTESIAN left outer join, left side:HashAgg ├─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 │ └─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 @@ -6985,7 +6985,7 @@ HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rul ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t4.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo - └─HashJoin(Probe) 12475.01 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] + └─HashJoin(Probe) 12475.01 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -7007,7 +7007,7 @@ HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rul ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t4.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo - └─HashJoin(Probe) 12475.01 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] + └─HashJoin(Probe) 12475.01 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -7030,7 +7030,7 @@ HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rul ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t4.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo - └─HashJoin(Probe) 12475.01 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] + └─HashJoin(Probe) 12475.01 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -7050,7 +7050,7 @@ Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, │ └─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 │ └─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)] + └─HashJoin(Probe) 15593.77 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -7074,7 +7074,7 @@ HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rul ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t4.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo - └─HashJoin(Probe) 12475.01 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] + └─HashJoin(Probe) 12475.01 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a)), not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -7127,7 +7127,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(t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a where t1.a in (select t3.a from t3); id estRows task access object operator info -HashJoin 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +HashJoin 12487.50 root left outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─HashJoin(Build) 9990.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t1.a)] │ ├─StreamAgg(Build) 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.a, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.a)->planner__core__casetest__rule__rule_join_reorder.t3.a │ │ └─IndexReader 7992.00 root index:StreamAgg @@ -7156,13 +7156,13 @@ Projection 99800100.00 root planner__core__casetest__rule__rule_join_reorder.t1 └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo 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 not in (select t3.a from t3); id estRows task access object operator info -HashJoin 12487.50 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 12487.50 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t3, index:a(a) keep order:false, stats:pseudo -└─HashJoin(Probe) 15609.38 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] +└─HashJoin(Probe) 15609.38 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo - └─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] + └─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -7171,10 +7171,10 @@ HashJoin 12487.50 root Null-aware anti semi join, equal:[eq(planner__core__case └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t3, index:a(a) keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -7184,7 +7184,7 @@ Level Code Message Warning 1815 leading hint is inapplicable, check the join type or the join algorithm hint explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 join t2 on t1.a=t2.a where t1.a not in (select t3.a from t3); id estRows task access object operator info -HashJoin 9990.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] +HashJoin 9990.00 root Null-aware anti semi join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)] ├─IndexReader(Build) 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t3, index:a(a) keep order:false, stats:pseudo └─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -7212,7 +7212,7 @@ Level Code Message Warning 1815 There are no matching table names for (t3) in optimizer hint /*+ LEADING(t2, t3) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t4) */ * from t1 join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where not exists (select t3.a from t3); id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] +HashJoin 15593.77 root right outer join, left side:HashJoin, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo └─HashJoin(Probe) 12475.01 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] @@ -7224,7 +7224,7 @@ HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rul └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo explain format = 'brief' select /*+ leading(t3@sel_2) */ * from t1 left join t2 on t1.a=t2.a where not exists (select t3.a from t3); id estRows task access object operator info -HashJoin 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +HashJoin 12487.50 root left outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -7266,7 +7266,7 @@ HashJoin 15609.38 root inner join, equal:[eq(planner__core__casetest__rule__rul ├─TableReader(Build) 9990.00 root data:Selection │ └─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) 12487.50 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] +└─HashJoin(Probe) 12487.50 root right outer join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t4.a, planner__core__casetest__rule__rule_join_reorder.t2.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -7277,7 +7277,7 @@ Level Code Message Warning 1815 There are no matching table names for (t4) in optimizer hint /*+ LEADING(t2, t4) */. Maybe you can use the table alias name explain format = 'brief' select /*+ leading(t3) */ * from t1 join t2 on t1.a=t2.a right join (select * from t4) t3 on t2.b=t3.b; id estRows task access object operator info -HashJoin 15593.77 root right outer join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] +HashJoin 15593.77 root right outer join, left side:Projection, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.b, planner__core__casetest__rule__rule_join_reorder.t4.b)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo └─Projection(Probe) 12475.01 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 @@ -7318,7 +7318,7 @@ Projection 12487.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, 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 -└─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 +└─MergeJoin 12487.50 root left outer join, left side:IndexReader, 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) 10000.00 root index:IndexFullScan @@ -7329,7 +7329,7 @@ Warning 1815 leading hint is inapplicable, check if the leading hint table is va 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 -└─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 +└─MergeJoin 12487.50 root right outer join, left side:IndexReader, 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 └─IndexReader(Probe) 10000.00 root index:IndexFullScan 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 e039de6b7b5fd..6af06611be925 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 @@ -149,7 +149,7 @@ Sort 9990.00 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan explain FORMAT='brief' select * from t1 where t1.a not in (select b from t2); id estRows task access object operator info Sort 8000.00 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 8000.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.b)] +└─HashJoin 8000.00 root Null-aware anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.b)] ├─IndexReader(Build) 10000.00 root index:IndexFullScan │ └─IndexFullScan 10000.00 cop[tikv] table:t2, index:b(b) keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -157,7 +157,7 @@ Sort 8000.00 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan explain FORMAT='brief' select * from t1 where t1.a in (select b from t2 where t2.c>t1.c); id estRows task access object operator info Sort 7992.00 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 7992.00 root semi join, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.b)], other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) +└─HashJoin 7992.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.b)], other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(planner__core__casetest__rule__rule_result_reorder.t2.b)), not(isnull(planner__core__casetest__rule__rule_result_reorder.t2.c)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -167,7 +167,7 @@ Sort 7992.00 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan explain FORMAT='brief' select * from t1 where t1.a not in (select b from t2 where t2.c>t1.c); id estRows task access object operator info Sort 8000.00 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 8000.00 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.b)], other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) +└─HashJoin 8000.00 root Null-aware anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.a, planner__core__casetest__rule__rule_result_reorder.t2.b)], other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -175,7 +175,7 @@ Sort 8000.00 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan explain FORMAT='brief' select * from t1 where exists (select 1 from t2 where t2.c>t1.c); id estRows task access object operator info Sort 7992.00 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 7992.00 root CARTESIAN semi join, other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) +└─HashJoin 7992.00 root CARTESIAN semi join, left side:TableReader, other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_result_reorder.t2.c)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -185,7 +185,7 @@ Sort 7992.00 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan explain FORMAT='brief' select * from t1 where not exists (select 1 from t2 where t2.c>t1.c); id estRows task access object operator info Sort 8000.00 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 8000.00 root CARTESIAN anti semi join, other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) +└─HashJoin 8000.00 root CARTESIAN anti semi join, left side:TableReader, other cond:gt(planner__core__casetest__rule__rule_result_reorder.t2.c, planner__core__casetest__rule__rule_result_reorder.t1.c) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -193,7 +193,7 @@ Sort 8000.00 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan explain FORMAT='brief' select * from t1 where exists (select 1 from t2 where t2.c=t1.c); id estRows task access object operator info Sort 7992.00 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 7992.00 root semi join, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c)] +└─HashJoin 7992.00 root semi join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_result_reorder.t2.c)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -203,7 +203,7 @@ Sort 7992.00 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan explain FORMAT='brief' select * from t1 where not exists (select 1 from t2 where t2.c=t1.c); id estRows task access object operator info Sort 8000.00 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 8000.00 root anti semi join, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c)] +└─HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(planner__core__casetest__rule__rule_result_reorder.t1.c, planner__core__casetest__rule__rule_result_reorder.t2.c)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -246,7 +246,7 @@ Sort 12475.01 root planner__core__casetest__rule__rule_result_reorder.t1.a, pla explain FORMAT='brief' select t1.* from t1 left outer join t2 on t1.a=t2.a; id estRows task access object operator info Sort 12500.00 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 -└─MergeJoin 12500.00 root left outer join, left key:planner__core__casetest__rule__rule_result_reorder.t1.a, right key:planner__core__casetest__rule__rule_result_reorder.t2.a +└─MergeJoin 12500.00 root left outer join, left side:TableReader, left key:planner__core__casetest__rule__rule_result_reorder.t1.a, right key:planner__core__casetest__rule__rule_result_reorder.t2.a ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -300,7 +300,7 @@ 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 CARTESIAN semi join, other cond: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) +└─HashJoin 2666.67 root CARTESIAN semi join, left side:TableReader, other cond: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 @@ -309,7 +309,7 @@ Sort 2666.67 root planner__core__casetest__rule__rule_result_reorder.t1.a, plan 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)] +└─HashJoin 2666.67 root anti semi join, left side:TableReader, 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 diff --git a/tests/integrationtest/r/planner/core/cbo.result b/tests/integrationtest/r/planner/core/cbo.result index 7bfdc41e35a67..25f344f76622a 100644 --- a/tests/integrationtest/r/planner/core/cbo.result +++ b/tests/integrationtest/r/planner/core/cbo.result @@ -68,10 +68,10 @@ 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 - └─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)] +Projection_9 1.00 1 root NULL time:, open:, close:, 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:, open:, close:, 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:, open:, close:, 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 + └─HashJoin_51 4.00 3 root NULL time:, open:, close:, 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 │ └─TableFullScan_28 6.00 6 cop[tikv] table:t2 tikv_task:{time:, loops:} keep order:false N/A N/A diff --git a/tests/integrationtest/r/planner/core/integration.result b/tests/integrationtest/r/planner/core/integration.result index 561ac9a568d09..fcbea5bf36e95 100644 --- a/tests/integrationtest/r/planner/core/integration.result +++ b/tests/integrationtest/r/planner/core/integration.result @@ -62,7 +62,7 @@ explain format='brief' select c_custkey, count(o_orderkey) as c_count from custo 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 - └─HashJoin 10000.00 root left outer join, equal:[eq(planner__core__integration.customer.c_custkey, planner__core__integration.orders.o_custkey)] + └─HashJoin 10000.00 root left outer join, left side:TableReader, 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 │ └─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 @@ -76,7 +76,7 @@ explain format='brief' select c_custkey, count(o_orderkey) as c_count from order 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 - └─HashJoin 10000.00 root right outer join, equal:[eq(planner__core__integration.orders.o_custkey, planner__core__integration.customer.c_custkey)] + └─HashJoin 10000.00 root right outer join, left side:HashAgg, 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 │ └─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 @@ -2288,7 +2288,7 @@ TableDual 0.00 root rows:0 drop table t; explain select /*+ HASH_JOIN(@sel_1 t2) */ * FROM (select 1) t1 NATURAL LEFT JOIN (select 2) t2; id estRows task access object operator info -HashJoin_8 1.00 root CARTESIAN left outer join +HashJoin_8 1.00 root CARTESIAN left outer join, left side:Projection_10 ├─Projection_12(Build) 1.00 root 2->Column#2 │ └─TableDual_13 1.00 root rows:1 └─Projection_10(Probe) 1.00 root 1->Column#1 @@ -2902,7 +2902,7 @@ create table t2 (a float default null, b tinyint(4) DEFAULT NULL, key b (b)); insert into t2 values (null, 1); explain select /*+ TIDB_INLJ(t2@sel_2) */ t1.a, t1.b from t1 where t1.a not in (select t2.a from t2 where t1.b=t2.b); id estRows task access object operator info -IndexJoin_12 8000.00 root anti semi join, inner:IndexLookUp_11, outer key:planner__core__integration.t1.b, inner key:planner__core__integration.t2.b, equal cond:eq(planner__core__integration.t1.b, planner__core__integration.t2.b), other cond:eq(planner__core__integration.t1.a, planner__core__integration.t2.a) +IndexJoin_12 8000.00 root anti semi join, inner:IndexLookUp_11, left side:TableReader_22, outer key:planner__core__integration.t1.b, inner key:planner__core__integration.t2.b, equal cond:eq(planner__core__integration.t1.b, planner__core__integration.t2.b), other cond:eq(planner__core__integration.t1.a, planner__core__integration.t2.a) ├─TableReader_22(Build) 10000.00 root data:TableFullScan_21 │ └─TableFullScan_21 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─IndexLookUp_11(Probe) 12500.00 root @@ -3466,7 +3466,7 @@ INSERT INTO t2 VALUES (1,2), (2,2); explain format=brief SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1)); id estRows task access object operator info Selection 8000.00 root not(plus(0, and(eq(planner__core__integration.t1.a, 30), eq(planner__core__integration.t2.b, 1)))) -└─MergeJoin 10000.00 root left outer join, left key:planner__core__integration.t1.a, right key:planner__core__integration.t2.a +└─MergeJoin 10000.00 root left outer join, left side:TableReader, left key:planner__core__integration.t1.a, right key:planner__core__integration.t2.a ├─TableReader(Build) 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(istrue_with_null(plus(0, and(eq(planner__core__integration.t2.a, 30), eq(planner__core__integration.t2.b, 1))))) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo @@ -3572,7 +3572,7 @@ create table t2(id int primary key, col1 int); explain format='brief' SELECT /*+ merge_join(t1, t2)*/ * FROM (t1 LEFT JOIN t2 ON t1.col1=t2.id) order by t2.id; id estRows task access object operator info Sort 12500.00 root planner__core__integration.t2.id -└─MergeJoin 12500.00 root left outer join, left key:planner__core__integration.t1.col1, right key:planner__core__integration.t2.id +└─MergeJoin 12500.00 root left outer join, left side:Sort, left key:planner__core__integration.t1.col1, right key:planner__core__integration.t2.id ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:true, stats:pseudo └─Sort(Probe) 10000.00 root planner__core__integration.t1.col1 @@ -3588,7 +3588,7 @@ explain select one.a from t1 one order by (select two.d from t2 two where two.c id estRows task access object operator info Projection_16 10000.00 root planner__core__integration.t1.a └─Sort_17 10000.00 root planner__core__integration.t2.d - └─Apply_20 10000.00 root CARTESIAN left outer join + └─Apply_20 10000.00 root CARTESIAN left outer join, left side:TableReader_22 ├─TableReader_22(Build) 10000.00 root data:TableFullScan_21 │ └─TableFullScan_21 10000.00 cop[tikv] table:one keep order:false, stats:pseudo └─MaxOneRow_23(Probe) 10000.00 root @@ -3619,7 +3619,7 @@ a explain format = 'brief' select * from t t1 left join t t2 on t1.a=t2.a where t2.a->'$.id'='ish'; id estRows task access object operator info Selection 8000.00 root eq(json_extract(planner__core__integration.t.a, "$.id"), cast("ish", json BINARY)) -└─HashJoin 10000.00 root left outer join, equal:[eq(planner__core__integration.t.a, planner__core__integration.t.a)] +└─HashJoin 10000.00 root left outer join, left side:TableReader, equal:[eq(planner__core__integration.t.a, planner__core__integration.t.a)] ├─TableReader(Build) 8000.00 root data:Selection │ └─Selection 8000.00 cop[tikv] not(isnull(cast(planner__core__integration.t.a, var_string(4294967295)))) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -3919,19 +3919,19 @@ create table t(a int primary key, b varchar(20)); insert into t values (1,1); explain analyze select * from t where a=1; id estRows actRows task access object execution info operator info memory disk -Point_Get_1 1.00 1 root table:t time:, loops:, RU:, Get:{num_rpc:, total_time:} handle: N/A N/A +Point_Get_1 1.00 1 root table:t time:, open:, close:, loops:, RU:, Get:{num_rpc:, total_time:} handle: N/A N/A explain analyze select * from t where a in (1,2,3); id estRows actRows task access object execution info operator info memory disk -Batch_Point_Get_1 3.00 1 root table:t time:, loops:, RU:, BatchGet:{num_rpc:, total_time:} handle:[1 2 3], keep order:false, desc:false N/A N/A +Batch_Point_Get_1 3.00 1 root table:t time:, open:, close:, loops:, RU:, BatchGet:{num_rpc:, total_time:} handle:[1 2 3], keep order:false, desc:false N/A N/A drop table if exists t; create table t (a int, b int, unique index (a)); insert into t values (1,1); explain analyze select * from t where a=1; id estRows actRows task access object execution info operator info memory disk -Point_Get_1 1.00 1 root table:t, index:a(a) time:, loops:, RU:, Get:{num_rpc:, total_time:} NULL N/A N/A +Point_Get_1 1.00 1 root table:t, index:a(a) time:, open:, close:, loops:, RU:, Get:{num_rpc:, total_time:} NULL N/A N/A explain analyze insert ignore into t values (1,1),(2,2),(3,3),(4,4); id estRows actRows task access object execution info operator info memory disk -Insert_1 N/A 0 root NULL time:, loops:, prepare:, check_insert: {total_time:, mem_insert_time:, prefetch:, fk_check:, rpc:{BatchGet:{num_rpc:, total_time:}}}, RU: N/A Bytes N/A +Insert_1 N/A 0 root NULL time:, open:, close:, loops:, prepare:, check_insert: {total_time:, mem_insert_time:, prefetch:, fk_check:, rpc:{BatchGet:{num_rpc:, total_time:}}}, RU: N/A Bytes N/A drop table if exists t; create table t (a int, b int); insert into t values (1, 2); diff --git a/tests/integrationtest/r/planner/core/issuetest/planner_issue.result b/tests/integrationtest/r/planner/core/issuetest/planner_issue.result index d5bc8ced2167f..5ac84d94da81b 100644 --- a/tests/integrationtest/r/planner/core/issuetest/planner_issue.result +++ b/tests/integrationtest/r/planner/core/issuetest/planner_issue.result @@ -750,3 +750,18 @@ NULL NULL 2 2 4 2 show warnings; Level Code Message drop table if exists t1, t2, t3, t4; +drop table if exists t0, v0; +drop view if exists v0; +CREATE TABLE t0(c0 INTEGER); +CREATE VIEW v0(c0) AS SELECT 'a' FROM t0 WHERE (CASE t0.c0 WHEN t0.c0 THEN false END ); +SELECT t0.c0 FROM v0, t0 WHERE RAND(); +c0 +drop table if exists tl6e913fb9; +CREATE TABLE `tl6e913fb9` ( +`col_36` varchar(175) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'asMF', +KEY `idx_35_5` (`col_36`(1)), +PRIMARY KEY (`col_36`) /*T![clustered_index] NONCLUSTERED */, +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 diff --git a/tests/integrationtest/r/planner/core/plan_cost_ver2.result b/tests/integrationtest/r/planner/core/plan_cost_ver2.result index 939db6b4b7b24..3d03758d83ec8 100644 --- a/tests/integrationtest/r/planner/core/plan_cost_ver2.result +++ b/tests/integrationtest/r/planner/core/plan_cost_ver2.result @@ -51,16 +51,16 @@ IndexReader_6 100.00 22616.00 root index:IndexRangeScan_5 └─IndexRangeScan_5 100.00 16280.00 cop[tikv] table:t, index:b(b) range:[-inf,100), keep order:false explain format='verbose' select /*+ use_index(t, primary) */ a from t; id estRows estCost task access object operator info -TableReader_5 100.00 29066.80 root data:TableFullScan_4 -└─TableFullScan_4 100.00 22730.80 cop[tikv] table:t keep order:false +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, b from t; id estRows estCost task access object operator info -TableReader_5 100.00 35402.80 root data:TableFullScan_4 -└─TableFullScan_4 100.00 22730.80 cop[tikv] table:t keep order:false +TableReader_5 100.00 262710.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, b, c from t; id estRows estCost task access object operator info -TableReader_5 100.00 41738.80 root data:TableFullScan_4 -└─TableFullScan_4 100.00 22730.80 cop[tikv] table:t keep order:false +TableReader_5 100.00 269046.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, b) */ * from t where b<1; id estRows estCost task access object operator info IndexLookUp_7 1.00 10241.58 root @@ -78,91 +78,91 @@ IndexLookUp_7 100.00 1024158.30 root └─TableRowIDScan_6(Probe) 100.00 22730.80 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary) */ a from t where mod(a, 20)<10; id estRows estCost task access object operator info -TableReader_7 80.00 32789.60 root data:Selection_6 -└─Selection_6 80.00 27720.80 cop[tikv] lt(mod(planner__core__plan_cost_ver2.t.a, 20), 10) - └─TableFullScan_5 100.00 22730.80 cop[tikv] table:t keep order:false +TableReader_7 80.00 260097.57 root data:Selection_6 +└─Selection_6 80.00 255028.77 cop[tikv] lt(mod(planner__core__plan_cost_ver2.t.a, 20), 10) + └─TableFullScan_5 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary) */ a from t where mod(a, 20)<10 and mod(a, 20)<11; id estRows estCost task access object operator info -TableReader_7 80.00 37779.60 root data:Selection_6 -└─Selection_6 80.00 32710.80 cop[tikv] lt(mod(planner__core__plan_cost_ver2.t.a, 20), 10), lt(mod(planner__core__plan_cost_ver2.t.a, 20), 11) - └─TableFullScan_5 100.00 22730.80 cop[tikv] table:t keep order:false +TableReader_7 80.00 265087.57 root data:Selection_6 +└─Selection_6 80.00 260018.77 cop[tikv] lt(mod(planner__core__plan_cost_ver2.t.a, 20), 10), lt(mod(planner__core__plan_cost_ver2.t.a, 20), 11) + └─TableFullScan_5 100.00 250038.77 cop[tikv] table:t keep order:false explain format='verbose' select /*+ use_index(t, primary) */ a from t where mod(a, 20)<10 and mod(a, 20)<11 and mod(a, 20)<12; id estRows estCost task access object operator info -TableReader_7 80.00 42769.60 root data:Selection_6 -└─Selection_6 80.00 37700.80 cop[tikv] lt(mod(planner__core__plan_cost_ver2.t.a, 20), 10), lt(mod(planner__core__plan_cost_ver2.t.a, 20), 11), lt(mod(planner__core__plan_cost_ver2.t.a, 20), 12) - └─TableFullScan_5 100.00 22730.80 cop[tikv] table:t keep order:false +TableReader_7 80.00 270077.57 root data:Selection_6 +└─Selection_6 80.00 265008.77 cop[tikv] lt(mod(planner__core__plan_cost_ver2.t.a, 20), 10), lt(mod(planner__core__plan_cost_ver2.t.a, 20), 11), lt(mod(planner__core__plan_cost_ver2.t.a, 20), 12) + └─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 34056.80 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#4 -└─TableReader_5 100.00 29066.80 root data:TableFullScan_4 - └─TableFullScan_4 100.00 22730.80 cop[tikv] table:t keep order:false +Projection_3 100.00 261364.77 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#4 +└─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 39046.80 root plus(planner__core__plan_cost_ver2.t.a, 1)->Column#4, plus(planner__core__plan_cost_ver2.t.a, 2)->Column#5 -└─TableReader_5 100.00 29066.80 root data:TableFullScan_4 - └─TableFullScan_4 100.00 22730.80 cop[tikv] table:t keep order:false +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 +└─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 44036.80 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 -└─TableReader_5 100.00 29066.80 root data:TableFullScan_4 - └─TableFullScan_4 100.00 22730.80 cop[tikv] table:t keep order:false +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 +└─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 62699.70 root group by:Column#7, funcs:sum(Column#6)->Column#4 -└─Projection_13 100.00 40442.70 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#6, planner__core__plan_cost_ver2.t.b->Column#7 - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 68489.70 root group by:Column#10, funcs:sum(Column#8)->Column#4, funcs:sum(Column#9)->Column#5 -└─Projection_13 100.00 45432.70 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 - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 74279.70 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 50422.70 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 - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 62699.70 root group by:Column#7, funcs:sum(Column#6)->Column#4 -└─Projection_13 100.00 40442.70 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#6, planner__core__plan_cost_ver2.t.b->Column#7 - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 77669.70 root group by:Column#8, Column#9, funcs:sum(Column#7)->Column#4 -└─Projection_13 100.00 45432.70 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 - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 92639.70 root group by:Column#10, Column#11, Column#9, funcs:sum(Column#8)->Column#4 -└─Projection_13 100.00 50422.70 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 - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 74235.54 root group by:Column#6, funcs:sum(Column#5)->Column#4 -└─Projection_17 100.00 74235.54 root cast(planner__core__plan_cost_ver2.t.a, decimal(10,0) BINARY)->Column#5, planner__core__plan_cost_ver2.t.b->Column#6 - └─Sort_13 100.00 69195.64 root planner__core__plan_cost_ver2.t.b - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 79225.54 root group by:Column#8, funcs:sum(Column#6)->Column#4, funcs:sum(Column#7)->Column#5 -└─Projection_17 100.00 79225.54 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 - └─Sort_13 100.00 69195.64 root planner__core__plan_cost_ver2.t.b - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 84215.54 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 84215.54 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 - └─Sort_13 100.00 69195.64 root planner__core__plan_cost_ver2.t.b - └─TableReader_12 100.00 35402.80 root data:TableFullScan_11 - └─TableFullScan_11 100.00 22730.80 cop[tikv] table:t keep order:false +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 + └─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 /*+ hash_join_build(t1) */ * from t t1, t t2 where t1.b=t2.b and t1.a<10; id estRows estCost task access object operator info HashJoin_35 10.00 63972.68 root inner join, equal:[eq(planner__core__plan_cost_ver2.t.b, planner__core__plan_cost_ver2.t.b)] @@ -254,7 +254,7 @@ explain format='true_card_cost' select * from t; Error 1105 (HY000): 'explain format=true_card_cost' cannot work without 'analyze', please use 'explain analyze format=true_card_cost' explain analyze format='true_card_cost' select * from t where a<3; id estRows estCost costFormula actRows task access object execution info operator info memory disk -TableReader_7 3323.33 135680.23 (((cpu(0*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))) + (net(0*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00 0 root -└─Selection_6 3323.33 2035203.50 (cpu(0*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7)))) 0 cop[tikv] - └─TableFullScan_5 10000.00 2035203.50 (scan(1*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) 0 cop[tikv] table:t +TableReader_7 3323.33 13580.23 (((cpu(0*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(1000*logrowsize(32)*tikv_scan_factor(40.7))))) + (net(0*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00 0 root +└─Selection_6 3323.33 203703.50 (cpu(0*filters(1)*tikv_cpu_factor(49.9))) + ((scan(1*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(1000*logrowsize(32)*tikv_scan_factor(40.7)))) 0 cop[tikv] + └─TableFullScan_5 10000.00 203703.50 (scan(1*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(1000*logrowsize(32)*tikv_scan_factor(40.7))) 0 cop[tikv] table:t set @@tidb_cost_model_version=DEFAULT; diff --git a/tests/integrationtest/r/planner/core/rule_constant_propagation.result b/tests/integrationtest/r/planner/core/rule_constant_propagation.result index 476922478564a..b5b4c8a08acec 100644 --- a/tests/integrationtest/r/planner/core/rule_constant_propagation.result +++ b/tests/integrationtest/r/planner/core/rule_constant_propagation.result @@ -73,7 +73,7 @@ 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 (select * from t where t.id>1) tmp left join s on tmp.id=s.id; -- left join, only left child can be optimized; id estRows task access object operator info -HashJoin_10 4166.67 root left outer join, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] +HashJoin_10 4166.67 root left outer join, left side:TableReader_14, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] ├─TableReader_17(Build) 3333.33 root data:Selection_16 │ └─Selection_16 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.s.id, 1), not(isnull(planner__core__rule_constant_propagation.s.id)) │ └─TableFullScan_15 10000.00 cop[tikv] table:s keep order:false, stats:pseudo @@ -82,7 +82,7 @@ HashJoin_10 4166.67 root left outer join, equal:[eq(planner__core__rule_constan └─TableFullScan_12 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain select * from t left join (select * from s where s.id>1) tmp on t.id=tmp.id; -- can't, left join; id estRows task access object operator info -HashJoin_9 10000.00 root left outer join, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] +HashJoin_9 10000.00 root left outer join, left side:TableReader_12, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] ├─TableReader_15(Build) 3333.33 root data:Selection_14 │ └─Selection_14 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.s.id, 1), not(isnull(planner__core__rule_constant_propagation.s.id)) │ └─TableFullScan_13 10000.00 cop[tikv] table:s keep order:false, stats:pseudo @@ -90,7 +90,7 @@ HashJoin_9 10000.00 root left outer join, equal:[eq(planner__core__rule_constan └─TableFullScan_11 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain select * from t right join (select * from s where s.id>1) tmp on t.id=tmp.id; -- right join, only right child can be optimized; id estRows task access object operator info -HashJoin_10 4166.67 root right outer join, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] +HashJoin_10 4166.67 root right outer join, left side:TableReader_14, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] ├─TableReader_17(Build) 3333.33 root data:Selection_16 │ └─Selection_16 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.s.id, 1) │ └─TableFullScan_15 10000.00 cop[tikv] table:s keep order:false, stats:pseudo @@ -99,7 +99,7 @@ HashJoin_10 4166.67 root right outer join, equal:[eq(planner__core__rule_consta └─TableFullScan_12 10000.00 cop[tikv] table:t keep order:false, stats:pseudo explain select * from (select * from t where t.id>1) tmp right join s on tmp.id=s.id; -- can't, right join; id estRows task access object operator info -HashJoin_10 10000.00 root right outer join, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] +HashJoin_10 10000.00 root right outer join, left side:TableReader_13, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] ├─TableReader_13(Build) 3333.33 root data:Selection_12 │ └─Selection_12 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.t.id, 1), not(isnull(planner__core__rule_constant_propagation.t.id)) │ └─TableFullScan_11 10000.00 cop[tikv] table:t keep order:false, stats:pseudo @@ -172,7 +172,7 @@ HashAgg_24 5325.33 root group by:Column#14, Column#15, funcs:firstrow(Column#14 │ └─Selection_30 3333.33 cop[tikv] gt(planner__core__rule_constant_propagation.t.id, 1), not(isnull(planner__core__rule_constant_propagation.t.id)) │ └─TableFullScan_29 10000.00 cop[tikv] table:t keep order:false, stats:pseudo └─Projection_35 4154.17 root cast(planner__core__rule_constant_propagation.t.id, bigint BINARY)->Column#14, planner__core__rule_constant_propagation.t.name->Column#15 - └─HashJoin_36 4154.17 root left outer join, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] + └─HashJoin_36 4154.17 root left outer join, left side:TableReader_40, equal:[eq(planner__core__rule_constant_propagation.t.id, planner__core__rule_constant_propagation.s.id)] ├─TableReader_43(Build) 3323.33 root data:Selection_42 │ └─Selection_42 3323.33 cop[tikv] lt(planner__core__rule_constant_propagation.s.id, 3), not(isnull(planner__core__rule_constant_propagation.s.id)) │ └─TableFullScan_41 10000.00 cop[tikv] table:s keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/planner/core/rule_join_reorder.result b/tests/integrationtest/r/planner/core/rule_join_reorder.result index 3e4fa745acca8..ebf1ab24af7c7 100644 --- a/tests/integrationtest/r/planner/core/rule_join_reorder.result +++ b/tests/integrationtest/r/planner/core/rule_join_reorder.result @@ -37,7 +37,7 @@ id estRows task access object operator info Sort 2.50 root planner__core__rule_join_reorder.queries_identifier.id └─Projection 2.50 root planner__core__rule_join_reorder.queries_identifier.id, planner__core__rule_join_reorder.queries_identifier.name └─Selection 2.50 root or(and(eq(planner__core__rule_join_reorder.queries_channel.id, 5), eq(planner__core__rule_join_reorder.queries_program.id, 9)), eq(planner__core__rule_join_reorder.queries_program.id, 8)) - └─IndexJoin 3.12 root left outer join, inner:IndexReader, outer key:planner__core__rule_join_reorder.queries_identifier.id, inner key:planner__core__rule_join_reorder.queries_channel.identifier_id, equal cond:eq(planner__core__rule_join_reorder.queries_identifier.id, planner__core__rule_join_reorder.queries_channel.identifier_id) + └─IndexJoin 3.12 root left outer join, inner:IndexReader, left side:IndexHashJoin, outer key:planner__core__rule_join_reorder.queries_identifier.id, inner key:planner__core__rule_join_reorder.queries_channel.identifier_id, equal cond:eq(planner__core__rule_join_reorder.queries_identifier.id, planner__core__rule_join_reorder.queries_channel.identifier_id) ├─IndexHashJoin(Build) 2.50 root inner join, inner:TableReader, outer key:planner__core__rule_join_reorder.queries_program.identifier_id, inner key:planner__core__rule_join_reorder.queries_identifier.id, equal cond:eq(planner__core__rule_join_reorder.queries_program.identifier_id, planner__core__rule_join_reorder.queries_identifier.id) │ ├─Batch_Point_Get(Build) 2.00 root table:queries_program handle:[8 9], keep order:false, desc:false │ └─TableReader(Probe) 2.00 root data:TableRangeScan @@ -48,10 +48,10 @@ explain format='brief' select * from t left join t1 on t.a=t1.a inner join t2 on id estRows task access object operator info Projection 19.51 root planner__core__rule_join_reorder.t.a, planner__core__rule_join_reorder.t1.a, planner__core__rule_join_reorder.t1.b, planner__core__rule_join_reorder.t2.a, planner__core__rule_join_reorder.t2.b, planner__core__rule_join_reorder.t2.c, planner__core__rule_join_reorder.t3.a, planner__core__rule_join_reorder.t3.b, planner__core__rule_join_reorder.t4.a, planner__core__rule_join_reorder.t4.b └─Selection 19.51 root or(gt(planner__core__rule_join_reorder.t2.b, 100), or(gt(planner__core__rule_join_reorder.t.a, 10), lt(planner__core__rule_join_reorder.t1.b, 10))), or(gt(planner__core__rule_join_reorder.t2.b, 100), or(gt(planner__core__rule_join_reorder.t2.a, 10), lt(planner__core__rule_join_reorder.t1.b, 10))) - └─HashJoin 24.39 root left outer join, equal:[eq(planner__core__rule_join_reorder.t2.a, planner__core__rule_join_reorder.t4.a)] - ├─HashJoin(Build) 19.51 root left outer join, equal:[eq(planner__core__rule_join_reorder.t.a, planner__core__rule_join_reorder.t1.a)] + └─HashJoin 24.39 root left outer join, left side:HashJoin, equal:[eq(planner__core__rule_join_reorder.t2.a, planner__core__rule_join_reorder.t4.a)] + ├─HashJoin(Build) 19.51 root left outer join, left side:HashJoin, equal:[eq(planner__core__rule_join_reorder.t.a, planner__core__rule_join_reorder.t1.a)] │ ├─HashJoin(Build) 15.61 root inner join, equal:[eq(planner__core__rule_join_reorder.t2.a, planner__core__rule_join_reorder.t.a)] - │ │ ├─HashJoin(Build) 12.49 root left outer join, equal:[eq(planner__core__rule_join_reorder.t2.a, planner__core__rule_join_reorder.t3.a)] + │ │ ├─HashJoin(Build) 12.49 root left outer join, left side:TableReader, equal:[eq(planner__core__rule_join_reorder.t2.a, planner__core__rule_join_reorder.t3.a)] │ │ │ ├─TableReader(Build) 9.99 root data:Selection │ │ │ │ └─Selection 9.99 cop[tikv] eq(planner__core__rule_join_reorder.t2.c, 100), not(isnull(planner__core__rule_join_reorder.t2.a)) │ │ │ │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -112,7 +112,7 @@ AND tt.offer_pbu_id = o.offer_pbu_id AND tt.te_partition = o.partition_no; id estRows task access object operator info Projection 155781.72 root planner__core__rule_join_reorder.t3.market_id, planner__core__rule_join_reorder.t3.offer_pbu_id -└─HashJoin 155781.72 root right outer join, equal:[eq(planner__core__rule_join_reorder.t3.market_id, planner__core__rule_join_reorder.t3.market_id) eq(planner__core__rule_join_reorder.t3.offer_pbu_id, planner__core__rule_join_reorder.t3.offer_pbu_id) eq(planner__core__rule_join_reorder.t3.te_partition, planner__core__rule_join_reorder.t1.part)] +└─HashJoin 155781.72 root right outer join, left side:IndexReader, equal:[eq(planner__core__rule_join_reorder.t3.market_id, planner__core__rule_join_reorder.t3.market_id) eq(planner__core__rule_join_reorder.t3.offer_pbu_id, planner__core__rule_join_reorder.t3.offer_pbu_id) eq(planner__core__rule_join_reorder.t3.te_partition, planner__core__rule_join_reorder.t1.part)] ├─IndexReader(Build) 9970.03 root index:Selection │ └─Selection 9970.03 cop[tikv] not(isnull(planner__core__rule_join_reorder.t3.market_id)), not(isnull(planner__core__rule_join_reorder.t3.te_partition)) │ └─IndexFullScan 9990.00 cop[tikv] table:tt, index:t_pbu_partition_id(offer_pbu_id, market_id, te_partition) keep order:false, stats:pseudo diff --git a/tests/integrationtest/r/privilege/privileges.result b/tests/integrationtest/r/privilege/privileges.result index 8e81e8e4fcb5d..090176fbb85a4 100644 --- a/tests/integrationtest/r/privilege/privileges.result +++ b/tests/integrationtest/r/privilege/privileges.result @@ -645,3 +645,21 @@ ADMIN SHOW SLOW RECENT 3; Error 8121 (HY000): privilege check for 'Super' fail ADMIN SHOW SLOW TOP ALL 3; Error 8121 (HY000): privilege check for 'Super' fail +ADMIN ALTER DDL JOBS 10 THREAD = 3, BATCH_SIZE = 100, MAX_WRITE_SPEED = '10MiB'; +Error 8121 (HY000): privilege check for 'Super' fail +create table privilege__privileges.tt1 (id bigint,pid bigint,name varchar(20),fullname varchar(20)); +insert into privilege__privileges.tt1 values (1,null,'a',''),(2,1,'b',''),(3,2,'c',''); +CREATE USER u53490; +GRANT USAGE ON *.* TO 'u53490'; +GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,CREATE ROUTINE,ALTER ROUTINE,ALTER,EXECUTE,INDEX,CREATE VIEW,SHOW VIEW ON privilege__privileges.* TO 'u53490'; +with t_f as ( +select id,pid,name,'AAA' fullname from privilege__privileges.tt1 ) +update privilege__privileges.tt1 inner join t_f +set tt1.fullname=t_f.fullname +where tt1.id=t_f.id; +with t_f as ( +select id,pid,name,'AAA' fullname from privilege__privileges.tt1 ) +update privilege__privileges.tt1 inner join t_f +set t_f.fullname=t_f.fullname +where tt1.id=t_f.id; +Error 1288 (HY000): The target table t_f of the UPDATE is not updatable diff --git a/tests/integrationtest/r/select.result b/tests/integrationtest/r/select.result index 1ad0adbb023af..6912f6a7e3ad9 100644 --- a/tests/integrationtest/r/select.result +++ b/tests/integrationtest/r/select.result @@ -330,14 +330,14 @@ drop table if exists t; create table t (id int primary key, a int, b int); explain format = 'brief' select * from (t t1 left join t t2 on t1.a = t2.a) left join (t t3 left join t t4 on t3.a = t4.a) on t2.b = 1; id estRows task access object operator info -HashJoin 155937656.25 root CARTESIAN left outer join, left cond:[eq(select.t.b, 1)] -├─HashJoin(Build) 12487.50 root left outer join, equal:[eq(select.t.a, select.t.a)] +HashJoin 155937656.25 root CARTESIAN left outer join, left side:HashJoin, left cond:[eq(select.t.b, 1)] +├─HashJoin(Build) 12487.50 root left outer join, left side:TableReader, equal:[eq(select.t.a, select.t.a)] │ ├─TableReader(Build) 9990.00 root data:Selection │ │ └─Selection 9990.00 cop[tikv] not(isnull(select.t.a)) │ │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo │ └─TableReader(Probe) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo -└─HashJoin(Probe) 12487.50 root left outer join, equal:[eq(select.t.a, select.t.a)] +└─HashJoin(Probe) 12487.50 root left outer join, left side:TableReader, equal:[eq(select.t.a, select.t.a)] ├─TableReader(Build) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(select.t.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -425,7 +425,7 @@ 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)) +HashJoin 10000.00 root left outer semi join, left side:Projection, 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 │ └─TableReader 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:s keep order:false, stats:pseudo @@ -434,7 +434,7 @@ HashJoin 10000.00 root left outer semi join, equal:[eq(Column#11, Column#12)], └─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; id estRows task access object operator info -HashJoin 10000.00 root left outer semi join, equal:[eq(select.t.b, select.t.b)], other cond:eq(select.t.a, plus(select.t.a, select.t.b)) +HashJoin 10000.00 root left outer semi join, left side:TableReader, equal:[eq(select.t.b, select.t.b)], other cond:eq(select.t.a, plus(select.t.a, select.t.b)) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -443,7 +443,7 @@ drop table t; create table t(a int not null, b int); explain format = 'brief' select a in (select a from t t2 where t2.b = t1.b) from t t1; id estRows task access object operator info -HashJoin 10000.00 root left outer semi join, equal:[eq(select.t.b, select.t.b) eq(select.t.a, select.t.a)] +HashJoin 10000.00 root left outer semi join, left side:TableReader, equal:[eq(select.t.b, select.t.b) eq(select.t.a, select.t.a)] ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -479,7 +479,7 @@ drop table if exists t2; create table t2(a int, b int); explain format = 'brief' select * from t1 where t1.a in (select t2.a as a from t2 where t2.b > t1.b order by t1.b); id estRows task access object operator info -HashJoin 7984.01 root semi join, equal:[eq(select.t1.a, select.t2.a)], other cond:gt(select.t2.b, select.t1.b) +HashJoin 7984.01 root semi join, left side:TableReader, equal:[eq(select.t1.a, select.t2.a)], other cond:gt(select.t2.b, select.t1.b) ├─TableReader(Build) 9980.01 root data:Selection │ └─Selection 9980.01 cop[tikv] not(isnull(select.t2.a)), not(isnull(select.t2.b)) │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo @@ -531,11 +531,11 @@ analyze table t1,t2,t3 all columns; explain format = 'brief' select * from t2 left join t1 on t2.a=t1.a left join t3 on t2.a=t3.a; id estRows task access object operator info Projection 4.00 root select.t2.a, select.t2.b, select.t1.a, select.t1.b, select.t3.a, select.t3.b -└─HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t1.a)] +└─HashJoin 4.00 root left outer join, left side:HashJoin, equal:[eq(select.t2.a, select.t1.a)] ├─TableReader(Build) 4.00 root data:Selection │ └─Selection 4.00 cop[tikv] not(isnull(select.t1.a)) │ └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false - └─HashJoin(Probe) 3.00 root left outer join, equal:[eq(select.t2.a, select.t3.a)] + └─HashJoin(Probe) 3.00 root left outer join, left side:TableReader, equal:[eq(select.t2.a, select.t3.a)] ├─TableReader(Build) 2.00 root data:Selection │ └─Selection 2.00 cop[tikv] not(isnull(select.t3.a)) │ └─TableFullScan 2.00 cop[tikv] table:t3 keep order:false @@ -543,8 +543,8 @@ Projection 4.00 root select.t2.a, select.t2.b, select.t1.a, select.t1.b, select └─TableFullScan 3.00 cop[tikv] table:t2 keep order:false explain format = 'brief' select * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.a=1; id estRows task access object operator info -HashJoin 12.00 root CARTESIAN left outer join, left cond:[eq(select.t2.a, 1)] -├─HashJoin(Build) 4.00 root left outer join, equal:[eq(select.t1.a, select.t3.a)] +HashJoin 12.00 root CARTESIAN left outer join, left side:TableReader, left cond:[eq(select.t2.a, 1)] +├─HashJoin(Build) 4.00 root left outer join, left side:TableReader, equal:[eq(select.t1.a, select.t3.a)] │ ├─TableReader(Build) 2.00 root data:Selection │ │ └─Selection 2.00 cop[tikv] not(isnull(select.t3.a)) │ │ └─TableFullScan 2.00 cop[tikv] table:t3 keep order:false @@ -554,7 +554,7 @@ HashJoin 12.00 root CARTESIAN left outer join, left cond:[eq(select.t2.a, 1)] └─TableFullScan 3.00 cop[tikv] table:t2 keep order:false explain format = 'brief' select * from t2 left join (t1 left join t3 on t1.a=t3.a) on t2.a=t3.a; id estRows task access object operator info -HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t3.a)] +HashJoin 4.00 root left outer join, left side:TableReader, equal:[eq(select.t2.a, select.t3.a)] ├─Projection(Build) 4.00 root select.t1.a, select.t1.b, select.t3.a, select.t3.b │ └─HashJoin 4.00 root inner join, equal:[eq(select.t3.a, select.t1.a)] │ ├─TableReader(Build) 2.00 root data:Selection @@ -568,7 +568,7 @@ HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t3.a)] explain format = 'brief' select * from t2 left join t1 on t1.a=t2.a join t3 on t2.b=t3.b; id estRows task access object operator info Projection 4.00 root select.t2.a, select.t2.b, select.t1.a, select.t1.b, select.t3.a, select.t3.b -└─HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t1.a)] +└─HashJoin 4.00 root left outer join, left side:HashJoin, equal:[eq(select.t2.a, select.t1.a)] ├─HashJoin(Build) 2.00 root inner join, equal:[eq(select.t3.b, select.t2.b)] │ ├─TableReader(Build) 2.00 root data:Selection │ │ └─Selection 2.00 cop[tikv] not(isnull(select.t3.b)) @@ -582,7 +582,7 @@ Projection 4.00 root select.t2.a, select.t2.b, select.t1.a, select.t1.b, select explain format = 'brief' select * from t1 right join t2 on t1.a=t2.a join t3 on t2.b=t3.b; id estRows task access object operator info Projection 4.00 root select.t1.a, select.t1.b, select.t2.a, select.t2.b, select.t3.a, select.t3.b -└─HashJoin 4.00 root right outer join, equal:[eq(select.t1.a, select.t2.a)] +└─HashJoin 4.00 root right outer join, left side:TableReader, equal:[eq(select.t1.a, select.t2.a)] ├─HashJoin(Build) 2.00 root inner join, equal:[eq(select.t3.b, select.t2.b)] │ ├─TableReader(Build) 2.00 root data:Selection │ │ └─Selection 2.00 cop[tikv] not(isnull(select.t3.b)) @@ -595,7 +595,7 @@ Projection 4.00 root select.t1.a, select.t1.b, select.t2.a, select.t2.b, select └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false explain format = 'brief' select * from t2 right join t3 on t3.a=t2.a right join t1 on t2.a=t1.a; id estRows task access object operator info -HashJoin 4.00 root right outer join, equal:[eq(select.t2.a, select.t1.a)] +HashJoin 4.00 root right outer join, left side:Projection, equal:[eq(select.t2.a, select.t1.a)] ├─Projection(Build) 2.00 root select.t2.a, select.t2.b, select.t3.a, select.t3.b │ └─HashJoin 2.00 root inner join, equal:[eq(select.t3.a, select.t2.a)] │ ├─TableReader(Build) 2.00 root data:Selection @@ -608,7 +608,7 @@ HashJoin 4.00 root right outer join, equal:[eq(select.t2.a, select.t1.a)] └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false explain format = 'brief' select * from (t1 left join t2 on t1.a=t2.a) left join (t3 left join t4 on t3.a=t4.a) on t2.a=t4.a; id estRows task access object operator info -HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t4.a)] +HashJoin 4.00 root left outer join, left side:HashJoin, equal:[eq(select.t2.a, select.t4.a)] ├─HashJoin(Build) 2.50 root inner join, equal:[eq(select.t3.a, select.t4.a)] │ ├─TableReader(Build) 2.00 root data:Selection │ │ └─Selection 2.00 cop[tikv] not(isnull(select.t3.a)) @@ -616,7 +616,7 @@ HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t4.a)] │ └─TableReader(Probe) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(select.t4.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo -└─HashJoin(Probe) 4.00 root left outer join, equal:[eq(select.t1.a, select.t2.a)] +└─HashJoin(Probe) 4.00 root left outer join, left side:TableReader, equal:[eq(select.t1.a, select.t2.a)] ├─TableReader(Build) 3.00 root data:Selection │ └─Selection 3.00 cop[tikv] not(isnull(select.t2.a)) │ └─TableFullScan 3.00 cop[tikv] table:t2 keep order:false @@ -624,15 +624,15 @@ HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t4.a)] └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false explain format = 'brief' select * from (t1 left join t2 on t1.a=t2.a) left join (t3 left join t4 on t3.a=t4.a) on t2.a=t3.a; id estRows task access object operator info -HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t3.a)] -├─HashJoin(Build) 2.50 root left outer join, equal:[eq(select.t3.a, select.t4.a)] +HashJoin 4.00 root left outer join, left side:HashJoin, equal:[eq(select.t2.a, select.t3.a)] +├─HashJoin(Build) 2.50 root left outer join, left side:TableReader, equal:[eq(select.t3.a, select.t4.a)] │ ├─TableReader(Build) 2.00 root data:Selection │ │ └─Selection 2.00 cop[tikv] not(isnull(select.t3.a)) │ │ └─TableFullScan 2.00 cop[tikv] table:t3 keep order:false │ └─TableReader(Probe) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(select.t4.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo -└─HashJoin(Probe) 4.00 root left outer join, equal:[eq(select.t1.a, select.t2.a)] +└─HashJoin(Probe) 4.00 root left outer join, left side:TableReader, equal:[eq(select.t1.a, select.t2.a)] ├─TableReader(Build) 3.00 root data:Selection │ └─Selection 3.00 cop[tikv] not(isnull(select.t2.a)) │ └─TableFullScan 3.00 cop[tikv] table:t2 keep order:false @@ -640,7 +640,7 @@ HashJoin 4.00 root left outer join, equal:[eq(select.t2.a, select.t3.a)] └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false explain format = 'brief' select * from (t1 left join t2 on t1.a=t2.a) left join (t3 left join t4 on t3.a=t4.a) on t1.a=t4.a; id estRows task access object operator info -HashJoin 4.00 root left outer join, equal:[eq(select.t1.a, select.t4.a)] +HashJoin 4.00 root left outer join, left side:HashJoin, equal:[eq(select.t1.a, select.t4.a)] ├─HashJoin(Build) 2.50 root inner join, equal:[eq(select.t3.a, select.t4.a)] │ ├─TableReader(Build) 2.00 root data:Selection │ │ └─Selection 2.00 cop[tikv] not(isnull(select.t3.a)) @@ -648,7 +648,7 @@ HashJoin 4.00 root left outer join, equal:[eq(select.t1.a, select.t4.a)] │ └─TableReader(Probe) 9990.00 root data:Selection │ └─Selection 9990.00 cop[tikv] not(isnull(select.t4.a)) │ └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo -└─HashJoin(Probe) 4.00 root left outer join, equal:[eq(select.t1.a, select.t2.a)] +└─HashJoin(Probe) 4.00 root left outer join, left side:TableReader, equal:[eq(select.t1.a, select.t2.a)] ├─TableReader(Build) 3.00 root data:Selection │ └─Selection 3.00 cop[tikv] not(isnull(select.t2.a)) │ └─TableFullScan 3.00 cop[tikv] table:t2 keep order:false diff --git a/tests/integrationtest/r/statistics/integration.result b/tests/integrationtest/r/statistics/integration.result index 4baea6abdeeb1..7c7e0e56f49c2 100644 --- a/tests/integrationtest/r/statistics/integration.result +++ b/tests/integrationtest/r/statistics/integration.result @@ -16,7 +16,7 @@ analyze table t2 all columns; explain format = 'brief' select * from t1 left join t2 on t1.a=t2.a order by t1.a, t2.a; id estRows task access object operator info Sort 4.00 root statistics__integration.t1.a, statistics__integration.t2.a -└─HashJoin 4.00 root left outer join, equal:[eq(statistics__integration.t1.a, statistics__integration.t2.a)] +└─HashJoin 4.00 root left outer join, left side:TableReader, equal:[eq(statistics__integration.t1.a, statistics__integration.t2.a)] ├─TableReader(Build) 1.00 root data:Selection │ └─Selection 1.00 cop[tikv] not(isnull(statistics__integration.t2.a)) │ └─TableFullScan 2.00 cop[tikv] table:t2 keep order:false @@ -25,7 +25,7 @@ Sort 4.00 root statistics__integration.t1.a, statistics__integration.t2.a explain format = 'brief' select * from t2 left join t1 on t1.a=t2.a order by t1.a, t2.a; id estRows task access object operator info Sort 2.00 root statistics__integration.t1.a, statistics__integration.t2.a -└─HashJoin 2.00 root left outer join, equal:[eq(statistics__integration.t2.a, statistics__integration.t1.a)] +└─HashJoin 2.00 root left outer join, left side:TableReader, equal:[eq(statistics__integration.t2.a, statistics__integration.t1.a)] ├─TableReader(Build) 1.00 root data:Selection │ └─Selection 1.00 cop[tikv] not(isnull(statistics__integration.t1.a)) │ └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false @@ -34,7 +34,7 @@ Sort 2.00 root statistics__integration.t1.a, statistics__integration.t2.a explain format = 'brief' select * from t1 right join t2 on t1.a=t2.a order by t1.a, t2.a; id estRows task access object operator info Sort 2.00 root statistics__integration.t1.a, statistics__integration.t2.a -└─HashJoin 2.00 root right outer join, equal:[eq(statistics__integration.t1.a, statistics__integration.t2.a)] +└─HashJoin 2.00 root right outer join, left side:TableReader, equal:[eq(statistics__integration.t1.a, statistics__integration.t2.a)] ├─TableReader(Build) 1.00 root data:Selection │ └─Selection 1.00 cop[tikv] not(isnull(statistics__integration.t1.a)) │ └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false @@ -43,7 +43,7 @@ Sort 2.00 root statistics__integration.t1.a, statistics__integration.t2.a explain format = 'brief' select * from t2 right join t1 on t1.a=t2.a order by t1.a, t2.a; id estRows task access object operator info Sort 4.00 root statistics__integration.t1.a, statistics__integration.t2.a -└─HashJoin 4.00 root right outer join, equal:[eq(statistics__integration.t2.a, statistics__integration.t1.a)] +└─HashJoin 4.00 root right outer join, left side:TableReader, equal:[eq(statistics__integration.t2.a, statistics__integration.t1.a)] ├─TableReader(Build) 1.00 root data:Selection │ └─Selection 1.00 cop[tikv] not(isnull(statistics__integration.t2.a)) │ └─TableFullScan 2.00 cop[tikv] table:t2 keep order:false diff --git a/tests/integrationtest/r/subquery.result b/tests/integrationtest/r/subquery.result index cbef81238b8b7..91bc89089de87 100644 --- a/tests/integrationtest/r/subquery.result +++ b/tests/integrationtest/r/subquery.result @@ -7,7 +7,7 @@ set session tidb_hashagg_partial_concurrency = 1; set session tidb_hashagg_final_concurrency = 1; explain format = 'brief' select * from t1 where t1.a in (select t1.b + t2.b from t2); id estRows task access object operator info -HashJoin 8000.00 root CARTESIAN semi join, other cond:eq(subquery.t1.a, plus(subquery.t1.b, subquery.t2.b)) +HashJoin 8000.00 root CARTESIAN semi join, left side:TableReader, other cond:eq(subquery.t1.a, plus(subquery.t1.b, subquery.t2.b)) ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -19,7 +19,7 @@ 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) +└─Apply 5.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(subquery.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#21 @@ -56,7 +56,7 @@ insert into exam values(1, 'math', 100); set names utf8 collate utf8_general_ci; explain format = 'brief' select * from stu where stu.name not in (select 'guo' from exam where exam.stu_id = stu.id); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(subquery.stu.id, subquery.exam.stu_id)], other cond:eq(subquery.stu.name, "guo") +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(subquery.stu.id, subquery.exam.stu_id)], other cond:eq(subquery.stu.name, "guo") ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:exam keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan @@ -66,7 +66,7 @@ id name set names utf8mb4; explain format = 'brief' select * from stu where stu.name not in (select 'guo' from exam where exam.stu_id = stu.id); id estRows task access object operator info -HashJoin 8000.00 root anti semi join, equal:[eq(subquery.stu.id, subquery.exam.stu_id)], other cond:eq(subquery.stu.name, "guo") +HashJoin 8000.00 root anti semi join, left side:TableReader, equal:[eq(subquery.stu.id, subquery.exam.stu_id)], other cond:eq(subquery.stu.name, "guo") ├─TableReader(Build) 10000.00 root data:TableFullScan │ └─TableFullScan 10000.00 cop[tikv] table:exam keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan diff --git a/tests/integrationtest/r/table/partition.result b/tests/integrationtest/r/table/partition.result index 8dc1d1327194f..f037504a78619 100644 --- a/tests/integrationtest/r/table/partition.result +++ b/tests/integrationtest/r/table/partition.result @@ -584,3 +584,10 @@ a select * from t_54271 partition (p1); a 2020-03-01 00:00:00 +set @@sql_mode=default; +drop table if exists tb; +create table tb (s char(10), b bit(48), bb blob(6)) partition by hash (b) partitions 16; +insert into tb values ('\0\b\n\r\t\Z', _binary '\0\b\n\r\t\Z', unhex('00080A0D091A')); +select hex(b) from tb; +hex(b) +80A0D091A diff --git a/tests/integrationtest/r/table/tables.result b/tests/integrationtest/r/table/tables.result index 9f52a2e817c42..ada09d0f5d006 100644 --- a/tests/integrationtest/r/table/tables.result +++ b/tests/integrationtest/r/table/tables.result @@ -24,3 +24,9 @@ select count(distinct(_tidb_rowid>>48)) from shard_t; count(distinct(_tidb_rowid>>48)) 3 set @@tidb_shard_allocate_step=default; +drop table if exists t; +create table t(a bit(32) default b'1100010001001110011000100100111'); +insert into t values (); +select hex(a) from t; +hex(a) +62273127 diff --git a/tests/integrationtest/r/topn_push_down.result b/tests/integrationtest/r/topn_push_down.result index 7f0861b479cb6..5c8f9e2dae86b 100644 --- a/tests/integrationtest/r/topn_push_down.result +++ b/tests/integrationtest/r/topn_push_down.result @@ -169,7 +169,7 @@ ORDER BY te.expect_time asc LIMIT 0, 5; id estRows task access object operator info Limit 0.00 root offset:0, count:5 -└─IndexJoin 0.00 root left outer join, inner:IndexReader, outer key:topn_push_down.tr.id, inner key:topn_push_down.p.relate_id, equal cond:eq(topn_push_down.tr.id, topn_push_down.p.relate_id) +└─IndexJoin 0.00 root left outer join, inner:IndexReader, left side:TopN, outer key:topn_push_down.tr.id, inner key:topn_push_down.p.relate_id, equal cond:eq(topn_push_down.tr.id, topn_push_down.p.relate_id) ├─TopN(Build) 0.00 root topn_push_down.te.expect_time, offset:0, count:5 │ └─IndexJoin 0.00 root inner join, inner:IndexLookUp, outer key:topn_push_down.tr.id, inner key:topn_push_down.te.trade_id, equal cond:eq(topn_push_down.tr.id, topn_push_down.te.trade_id) │ ├─IndexLookUp(Build) 0.00 root @@ -194,7 +194,7 @@ create table t1(a bigint, b bigint); create table t2(a bigint, b bigint); desc select * from t1 where t1.a in (select t2.a as a from t2 where t2.b > t1.b order by t1.b limit 1); id estRows task access object operator info -Apply_15 9990.00 root semi join, equal:[eq(topn_push_down.t1.a, topn_push_down.t2.a)] +Apply_15 9990.00 root semi join, left side:TableReader_18, equal:[eq(topn_push_down.t1.a, topn_push_down.t2.a)] ├─TableReader_18(Build) 9990.00 root data:Selection_17 │ └─Selection_17 9990.00 cop[tikv] not(isnull(topn_push_down.t1.a)) │ └─TableFullScan_16 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -206,7 +206,7 @@ Apply_15 9990.00 root semi join, equal:[eq(topn_push_down.t1.a, topn_push_down. └─TableFullScan_22 12487.50 cop[tikv] table:t2 keep order:false, stats:pseudo desc select * from t1 where t1.a in (select a from (select t2.a as a, t1.b as b from t2 where t2.b > t1.b) x order by b limit 1); id estRows task access object operator info -Apply_17 9990.00 root semi join, equal:[eq(topn_push_down.t1.a, topn_push_down.t2.a)] +Apply_17 9990.00 root semi join, left side:TableReader_20, equal:[eq(topn_push_down.t1.a, topn_push_down.t2.a)] ├─TableReader_20(Build) 9990.00 root data:Selection_19 │ └─Selection_19 9990.00 cop[tikv] not(isnull(topn_push_down.t1.a)) │ └─TableFullScan_18 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo @@ -230,7 +230,7 @@ explain format = 'brief' select /*+ TIDB_INLJ(t2) */ * from t t1 left join t t2 id estRows task access object operator info Limit 5.00 root offset:0, count:5 └─Selection 5.00 root isnull(topn_push_down.t.a) - └─IndexJoin 5.00 root left outer join, inner:IndexReader, outer key:topn_push_down.t.a, inner key:topn_push_down.t.a, equal cond:eq(topn_push_down.t.a, topn_push_down.t.a) + └─IndexJoin 5.00 root left outer join, inner:IndexReader, left side:TableReader, outer key:topn_push_down.t.a, inner key:topn_push_down.t.a, equal cond:eq(topn_push_down.t.a, topn_push_down.t.a) ├─TableReader(Build) 4.00 root data:TableFullScan │ └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─IndexReader(Probe) 5.00 root index:IndexRangeScan @@ -247,7 +247,7 @@ explain format = 'brief' select /*+ TIDB_SMJ(t1, t2) */ * from t t1 left join t id estRows task access object operator info Limit 5.00 root offset:0, count:5 └─Selection 5.00 root isnull(topn_push_down.t.a) - └─MergeJoin 5.00 root left outer join, left key:topn_push_down.t.a, right key:topn_push_down.t.a + └─MergeJoin 5.00 root left outer join, left side:IndexReader, left key:topn_push_down.t.a, right key:topn_push_down.t.a ├─IndexReader(Build) 4.00 root index:IndexFullScan │ └─IndexFullScan 4.00 cop[tikv] table:t2, index:idx(a) keep order:true, stats:pseudo └─IndexReader(Probe) 4.00 root index:IndexFullScan @@ -264,7 +264,7 @@ explain format = 'brief' select /*+ TIDB_HJ(t1, t2) */ * from t t1 left join t t id estRows task access object operator info Limit 5.00 root offset:0, count:5 └─Selection 5.00 root isnull(topn_push_down.t.a) - └─HashJoin 5.00 root left outer join, equal:[eq(topn_push_down.t.a, topn_push_down.t.a)] + └─HashJoin 5.00 root left outer join, left side:TableReader, equal:[eq(topn_push_down.t.a, topn_push_down.t.a)] ├─TableReader(Build) 4.00 root data:TableFullScan │ └─TableFullScan 4.00 cop[tikv] table:t1 keep order:false, stats:pseudo └─TableReader(Probe) 10000.00 root data:TableFullScan diff --git a/tests/integrationtest/r/tpch.result b/tests/integrationtest/r/tpch.result index 11e2da4d8c310..faaab7cd997da 100644 --- a/tests/integrationtest/r/tpch.result +++ b/tests/integrationtest/r/tpch.result @@ -292,7 +292,7 @@ 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 - └─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) + └─IndexHashJoin 2255437.92 root semi join, inner:IndexLookUp, left side:TableReader, 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) │ └─TableFullScan 75000000.00 cop[tikv] table:orders keep order:false @@ -809,7 +809,7 @@ 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 - └─HashJoin 60000000.00 root left outer join, equal:[eq(tpch50.customer.c_custkey, tpch50.orders.o_custkey)] + └─HashJoin 60000000.00 root left outer join, left side:TableReader, 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 └─TableReader(Probe) 60000000.00 root data:Selection @@ -929,7 +929,7 @@ 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 - └─HashJoin 3870097.51 root anti semi join, equal:[eq(tpch50.partsupp.ps_suppkey, tpch50.supplier.s_suppkey)] + └─HashJoin 3870097.51 root anti semi join, left side:Projection, 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) │ └─TableFullScan 500000.00 cop[tikv] table:supplier keep order:false @@ -1150,7 +1150,7 @@ Sort 19999.44 root tpch50.supplier.s_name ├─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 - │ └─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)] + │ └─HashJoin 4731068.54 root left outer join, left side:IndexHashJoin, 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 │ │ │ └─Selection 39153.78 cop[tikv] like(tpch50.part.p_name, "green%", 92) @@ -1219,8 +1219,8 @@ 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 - └─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) + └─IndexHashJoin 7814888.66 root anti semi join, inner:IndexLookUp, left side:IndexHashJoin, 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, left side:IndexJoin, 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) │ │ ├─HashJoin(Build) 12033011.28 root inner join, equal:[eq(tpch50.supplier.s_suppkey, tpch50.lineitem.l_suppkey)] │ │ │ ├─HashJoin(Build) 19999.44 root inner join, equal:[eq(tpch50.nation.n_nationkey, tpch50.supplier.s_nationkey)] @@ -1293,7 +1293,7 @@ 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 - └─HashJoin 0.64 root anti semi join, equal:[eq(tpch50.customer.c_custkey, tpch50.orders.o_custkey)] + └─HashJoin 0.64 root anti semi join, left side:TableReader, 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 └─TableReader(Probe) 0.80 root data:Selection diff --git a/tests/integrationtest/r/util/ranger.result b/tests/integrationtest/r/util/ranger.result index c6cfef64a3bc3..869a71b88c477 100644 --- a/tests/integrationtest/r/util/ranger.result +++ b/tests/integrationtest/r/util/ranger.result @@ -557,7 +557,7 @@ 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) +└─Apply 2.00 root CARTESIAN left outer semi join, left side:TableReader, other cond:eq(util__ranger.t.e, Column#26) ├─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 diff --git a/tests/integrationtest/t/ddl/column.test b/tests/integrationtest/t/ddl/column.test index e92fd4f0371a0..6cde9ad8f6199 100644 --- a/tests/integrationtest/t/ddl/column.test +++ b/tests/integrationtest/t/ddl/column.test @@ -44,3 +44,17 @@ alter table t1 add column d date default '2024-10'; drop table if exists t; create table t(a decimal(0,0), b decimal(0)); show create table t; + +# TestTooLongDefaultValueForBit +drop table if exists t; +-- error 1067 +create table t(a bit(2) default b'111'); +-- error 1439 +create table t(a bit(65) default b'111'); +create table t(a bit(64) default b'1111111111111111111111111111111111111111111111111111111111111111'); +drop table t; +create table t(a bit(3) default b'111'); +drop table t; +create table t(a bit(3) default b'000111'); +drop table t; +create table t(a bit(32) default b'1111111111111111111111111111111'); \ No newline at end of file diff --git a/tests/integrationtest/t/ddl/ddl_error.test b/tests/integrationtest/t/ddl/ddl_error.test index 4f1ee2cf2a8ac..c724e4170d107 100644 --- a/tests/integrationtest/t/ddl/ddl_error.test +++ b/tests/integrationtest/t/ddl/ddl_error.test @@ -13,3 +13,12 @@ rename table ddl__ddl_error.view_1 to ddl__ddl_error2.view_1; rename table ddl__ddl_error.view_1 to ddl__ddl_error2.view_1; rename table ddl__ddl_error.view_1 to ddl__ddl_error.view_1000; +# issue 53176 +-- error 1351 +create view sql_mode_view as select @@sql_mode; +-- error 1351 +create view sql_mode_view as select @@global.sql_mode; +-- error 1351 +create view sql_mode_view as select @a; +-- error 1351 +create view sql_mode_view as select 1 where @a = 4; diff --git a/tests/integrationtest/t/ddl/partition.test b/tests/integrationtest/t/ddl/partition.test index 98cf1208c67c0..8fa808f8cfceb 100644 --- a/tests/integrationtest/t/ddl/partition.test +++ b/tests/integrationtest/t/ddl/partition.test @@ -198,3 +198,11 @@ create table tp1(id int); ALTER TABLE tp1 PARTITION BY RANGE (id) INTERVAL (100) FIRST PARTITION LESS THAN (200) LAST PARTITION LESS THAN (600); select QUERY from information_schema.ddl_jobs limit 1; drop table tp1; + +# Minute interval partitioning, #57698 +DROP TABLE IF EXISTS t; +CREATE TABLE t (a int NOT NULL, b varchar(20) NOT NULL, c datetime NOT NULL ) PARTITION BY RANGE COLUMNS (c) INTERVAL (1 MINUTE) FIRST PARTITION LESS THAN ('2024-01-01') LAST PARTITION LESS THAN ('2024-01-01 00:10:00'); +SHOW CREATE TABLE t; +ALTER TABLE t FIRST PARTITION LESS THAN ('2024-01-01 00:02:00'); +ALTER TABLE t LAST PARTITION LESS THAN ('2024-01-01 00:12:00'); +SHOW CREATE TABLE t; diff --git a/tests/integrationtest/t/executor/ddl.test b/tests/integrationtest/t/executor/ddl.test index 59bdbcc68cfa1..97df2bd3e865e 100644 --- a/tests/integrationtest/t/executor/ddl.test +++ b/tests/integrationtest/t/executor/ddl.test @@ -258,10 +258,10 @@ create view v6 (c,d) as select * from t1; -- error 1353 create view v7 (c,d,e) as select * from t1; drop view v1,v2,v3,v4,v5,v6; +-- error 1351 create view v1 (c,d) as select a,b+@@global.max_user_connections from t1; --- error 1050 +-- error 1351 create view v1 (c,d) as select a,b from t1 where a = @@global.max_user_connections; -drop view v1; -- error 1353 create view v1 (c,d,e) as select a,b from t1 ; -- error 1353 @@ -313,8 +313,9 @@ create or replace definer='root'@'localhost' view v_nested as select * from v_ne drop table test_v_nested; drop view v_nested, v_nested2; ## Refer https://github.com/pingcap/tidb/issues/25876 +select sleep(1); -- error 1356 -create view v_stale as select * from source_table as of timestamp current_timestamp(3); +create view v_stale as select * from source_table as of timestamp date_sub(current_timestamp(3), interval 1 second); ## Refer https://github.com/pingcap/tidb/issues/32682 drop view if exists v1,v2; drop table if exists t1; diff --git a/tests/integrationtest/t/executor/executor.test b/tests/integrationtest/t/executor/executor.test index dc453b948e829..7e240a2653c70 100644 --- a/tests/integrationtest/t/executor/executor.test +++ b/tests/integrationtest/t/executor/executor.test @@ -2104,8 +2104,8 @@ insert tdouble values (10.23); set sql_mode = ''; insert t values (); show warnings; +-- error 1048 insert t values (null); -show warnings; insert ignore t values (null); show warnings; insert t select null; @@ -2623,12 +2623,12 @@ create table t (id bigint key,b int); split table t by (10),(20),(30); insert into t values (0,0),(10,10),(20,20),(30,30); alter table t add index idx1(b); ---replace_column 1 4 6 7 9 10 11 +--replace_column 1 4 6 7 9 10 11 13 admin show ddl jobs 1; insert into t values (1,0),(2,10),(3,20),(4,30); alter table t add index idx2(b); ---replace_column 1 4 6 7 9 10 11 +--replace_column 1 4 6 7 9 10 11 13 admin show ddl jobs 1; # TestSummaryFailedUpdate diff --git a/tests/integrationtest/t/executor/infoschema_reader.test b/tests/integrationtest/t/executor/infoschema_reader.test index 021a0ffd59324..761e1a2886a2d 100644 --- a/tests/integrationtest/t/executor/infoschema_reader.test +++ b/tests/integrationtest/t/executor/infoschema_reader.test @@ -183,8 +183,9 @@ select * from information_schema.`METRICS_TABLES` where table_name='tidb_qps'; # TestTableConstraintsTable select * from information_schema.TABLE_CONSTRAINTS where TABLE_NAME='gc_delete_range'; -# TestTableSessionVar -select * from information_schema.SESSION_VARIABLES where VARIABLE_NAME='tidb_retry_limit'; +# Test for tables that have moved from information_schema to performance_schema +# https://github.com/pingcap/tidb/issues/9154 +SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='information_schema' AND TABLE_NAME IN ('GLOBAL_VARIABLES','SESSION_VARIABLES','GLOBAL_STATUS','SESSION_STATUS'); # TestSequences drop sequence if exists seq, seq2; @@ -320,3 +321,16 @@ drop table if exists t; create table t (c text); alter table t add index idx_t (c(16)); select SUB_PART from information_schema.statistics where TABLE_SCHEMA = 'executor__infoschema_reader' and TABLE_NAME = 't'; + +# Query should return nothing when WHERE clauses are always false. +# https://github.com/pingcap/tidb/issues/57345 +select table_name from information_schema.columns where table_name = 'a' and table_name = 'b'; +select table_name from information_schema.columns where table_schema = 'a' and table_schema = 'b'; +select table_name from information_schema.tables where table_name = 'a' and table_name = 'b'; +select table_name from information_schema.tables where table_schema = 'a' and table_schema = 'b'; +select table_name from information_schema.partitions where table_name = 'a' and table_name = 'b'; +select table_name from information_schema.partitions where table_schema = 'a' and table_schema = 'b'; +select table_name from information_schema.statistics where table_name = 'a' and table_name = 'b'; +select table_name from information_schema.statistics where table_schema = 'a' and table_schema = 'b'; +select table_name from information_schema.referential_constraints where table_name = 'a' and table_name = 'b'; +select table_name from information_schema.referential_constraints where constraint_schema = 'a' and constraint_schema = 'b'; diff --git a/tests/integrationtest/t/executor/insert.test b/tests/integrationtest/t/executor/insert.test index f2f702e7c0866..07cf8bcd82c8a 100644 --- a/tests/integrationtest/t/executor/insert.test +++ b/tests/integrationtest/t/executor/insert.test @@ -1407,8 +1407,8 @@ show warnings; SELECT * FROM t1 order by f1; SET sql_mode=''; +-- error 1048 INSERT t1 VALUES (1, 1) ON DUPLICATE KEY UPDATE f2 = null; -show warnings; SELECT * FROM t1 order by f1; set sql_mode=default; @@ -1620,3 +1620,27 @@ insert into parent values (2, 3) on duplicate key update ref = 3; --enable_warnings insert ignore into parent values (2, 3) on duplicate key update ref = 3; --disable_warnings + +# TestIssue55457 +drop table if exists t1, t2; +create table t1 (id int primary key, col1 varchar(10) not null default ''); +create table t2 (id int primary key, col1 varchar(10)); +insert into t2 values (1, null); +insert ignore into t1 values(5, null); +set session sql_mode = ''; +-- error 1048 +insert into t1 values(1, null); +-- error 1048 +insert into t1 set id = 1, col1 = null; +-- error 1048 +insert t1 VALUES (5, 5) ON DUPLICATE KEY UPDATE col1 = null; +insert t1 VALUES (5, 5), (6, null) ON DUPLICATE KEY UPDATE col1 = null; +select * from t1; +insert into t1 select * from t2; +show warnings; +insert into t1 values(2, null), (3, 3), (4, 4); +show warnings; +update t1 set col1 = null where id = 3; +show warnings; +insert ignore t1 VALUES (4, 4) ON DUPLICATE KEY UPDATE col1 = null; +select * from t1; diff --git a/tests/integrationtest/t/executor/issues.test b/tests/integrationtest/t/executor/issues.test index ee07ec984db0f..87d8cf0a424dc 100644 --- a/tests/integrationtest/t/executor/issues.test +++ b/tests/integrationtest/t/executor/issues.test @@ -767,3 +767,6 @@ explain analyze select * from pt where val = 126 order by id limit 100; # expec CREATE TABLE test_55837 (col1 int(4) NOT NULL, col2 bigint(4) NOT NULL, KEY col2_index (col2)); insert into test_55837 values(0,1725292800),(0,1725292800); select from_unixtime( if(col2 >9999999999, col2/1000, col2), '%Y-%m-%d %H:%i:%s') as result from test_55837; + +# TestIssue56641 +select ((exists (select 1)) * -5) as c1; \ No newline at end of file diff --git a/tests/integrationtest/t/executor/jointest/hash_join.test b/tests/integrationtest/t/executor/jointest/hash_join.test index 83bc9e6825adb..619b870c355fd 100644 --- a/tests/integrationtest/t/executor/jointest/hash_join.test +++ b/tests/integrationtest/t/executor/jointest/hash_join.test @@ -188,3 +188,15 @@ WHERE ) ) ORDER BY IF(ISNULL(`col_14`),0,1),`col_14`; + +# Test semi join +drop table if exists t1; +drop table if exists t2; +create table t1 (col0 int, col1 int); +create table t2 (col0 int, col1 int); +insert into t1 values (null, 3), (null, 5), (null, null), (1, 1), (1, 2), (1, null), (2, 1), (2, 2), (2, null), (3, 1), (3, 2), (3, 4), (3, null); +insert into t2 values (null, 3), (null, 4), (null, null), (1, 1), (3, 1), (3, 3), (3, null), (4, null), (4, 1), (4, 2), (4, 10); + +select * from t1 where col1 in (select col1 from t2 where t1.col0 = t2.col0) order by t1.col0, t1.col1; +select * from t1 where exists (select 1 from t2 where t1.col0 = t2.col0) order by t1.col0, t1.col1; +select * from t1 where exists (select 1 from t2 where t1.col0 = t2.col0 and t1.col1 > t2.col1) order by t1.col0, t1.col1; diff --git a/tests/integrationtest/t/executor/perfschema.test b/tests/integrationtest/t/executor/perfschema.test new file mode 100644 index 0000000000000..da558e1e28c36 --- /dev/null +++ b/tests/integrationtest/t/executor/perfschema.test @@ -0,0 +1,7 @@ +# TestTableSessionVar +select * from performance_schema.SESSION_VARIABLES where VARIABLE_NAME='tidb_retry_limit'; + +DESCRIBE performance_schema.GLOBAL_VARIABLES; +DESCRIBE performance_schema.SESSION_VARIABLES; +DESCRIBE performance_schema.GLOBAL_STATUS; +DESCRIBE performance_schema.SESSION_STATUS; diff --git a/tests/integrationtest/t/expression/cast.test b/tests/integrationtest/t/expression/cast.test index 7af48437383a9..cc5926168b1e0 100644 --- a/tests/integrationtest/t/expression/cast.test +++ b/tests/integrationtest/t/expression/cast.test @@ -113,3 +113,14 @@ insert into test values(3,'张三'); insert into test values(4,'李四'); select * from test order by cast(update_user as char) desc , id limit 3; +# issue #56494, cast bit as char +drop table if exists test; +create table test(a bit(24)); +insert into test values('中'); +select a from test where '中' like convert(a, char); +select a from test where false not like convert(a, char); +select a from test where false like convert(a, char); +truncate table test; +insert into test values(0xffffff); +-- error 1105 +select a from test where false not like convert(a, char); diff --git a/tests/integrationtest/t/expression/constant_fold.test b/tests/integrationtest/t/expression/constant_fold.test index 43a09302ca740..2db03c24f0a0c 100644 --- a/tests/integrationtest/t/expression/constant_fold.test +++ b/tests/integrationtest/t/expression/constant_fold.test @@ -11,3 +11,9 @@ select collation(ifnull(concat(NULL),ifnull(concat(id),'~'))) from t; select collation(ifnull(concat(id),ifnull(concat(id),'~'))) from t; select collation(ifnull(concat(NULL),id)) from t1; select collation(ifnull(concat(NULL),ifnull(concat(NULL),id))) from t1; + +# https://github.com/pingcap/tidb/issues/53546 +drop table if exists t1; +create table t1 (c1 int); +insert into t1 values (null); +select truncate(1,c1), truncate(1,c1) is not NULL from t1; diff --git a/tests/integrationtest/t/expression/issues.test b/tests/integrationtest/t/expression/issues.test index 1b73368e5da79..3eb6bcb0ead50 100644 --- a/tests/integrationtest/t/expression/issues.test +++ b/tests/integrationtest/t/expression/issues.test @@ -2182,3 +2182,9 @@ 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; + +# TestIssue56339 +drop table if exists test.t; +create table test.t(a double); +insert into test.t values('20000102030405.0078125'); +select * from test.t where date_add(a, interval 1 second) = '2000-01-02 03:04:06.007813'; diff --git a/tests/integrationtest/t/expression/json.test b/tests/integrationtest/t/expression/json.test index baa64d2465f7a..f2925c440fb85 100644 --- a/tests/integrationtest/t/expression/json.test +++ b/tests/integrationtest/t/expression/json.test @@ -484,3 +484,57 @@ SELECT JSON_SCHEMA_VALID('{"properties": {"a": {"exclusiveMinimum": true}}}', '{ # TestIssue54494 # https://github.com/pingcap/tidb/issues/54494 select json_type(cast(cast('2024' as year) as json)); + +# TestJSONValidForNull +drop table if exists t; +create table t(j json, str varchar(255), other int); +insert into t values (NULL, NULL, NULL); +select json_valid(j), json_valid(str), json_valid(other) from t; + +# TestIssue54029 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(id INT PRIMARY KEY, d1 DATE, d2 DATETIME, t1 TIME, t2 TIMESTAMP, b1 BIT, b2 BINARY); +INSERT INTO t1 VALUES (1, '2024-06-14', '2024-06-14 09:37:00', '09:37:00', '2024-06-14 09:37:00', b'0', 0x41); +-- error 3146 +SELECT JSON_TYPE(d1) FROM t1; +-- error 3146 +SELECT JSON_TYPE(d2) FROM t1; +-- error 3146 +SELECT JSON_TYPE(t1) FROM t1; +-- error 3146 +SELECT JSON_TYPE(t2) FROM t1; +-- error 3146 +SELECT JSON_TYPE(b1) FROM t1; +-- error 3144 +SELECT JSON_TYPE(b2) FROM t1; +-- error 3144 +SELECT JSON_EXTRACT(b2, '$') FROM t1; +-- error 3144 +SELECT JSON_MERGE(b2, '{a:"b"}') FROM t1; +-- error 3144 +SELECT JSON_CONTAINS_PATH(b2, 'one', '$.a') FROM t1; +-- error 3144 +SELECT '1' member of(b2) FROM t1; +-- error 3144 +SELECT JSON_CONTAINS(b2, '{a:"b"}') FROM t1; +-- error 3144 +SELECT JSON_OVERLAPS(b2, '{a:"b"}') FROM t1; +-- error 3144 +SELECT JSON_MERGE_PATCH(b2, '{a:"b"}') FROM t1; +-- error 3144 +SELECT JSON_MERGE_PATCH('{a:"b"}', b2) FROM t1; +-- error 3144 +SELECT JSON_MERGE_PRESERVE(b2, '{a:"b"}') FROM t1; +-- error 3144 +SELECT JSON_MERGE_PRESERVE('{a:"b"}', b2) FROM t1; +-- error 3144 +SELECT JSON_SEARCH(b2, 'one', '1') FROM t1; +-- error 3144 +SELECT JSON_KEYS(b2) FROM t1; +-- error 3144 +SELECT JSON_SCHEMA_VALID(b2, '{}') FROM t1; + +# TestIssue54044 +prepare stmt from 'select json_object(?, ?)'; +set @a=1; +execute stmt using @a, @a; \ No newline at end of file diff --git a/tests/integrationtest/t/expression/time.test b/tests/integrationtest/t/expression/time.test index 50efbebbba102..e7c96f3a8ff30 100644 --- a/tests/integrationtest/t/expression/time.test +++ b/tests/integrationtest/t/expression/time.test @@ -326,3 +326,81 @@ insert into t2 values('18446744073709551616', "1000-01-01 00:00:00" + INTERVAL insert into t2 values('-9223372036854775809', "1000-01-01 00:00:00" + INTERVAL -9223372036854775809 YEAR); select a, d from t2 order by a ASC; drop table if exists t1; + +drop table if exists t; +create table t(col0 date, col1 time, col2 varchar(30)); +insert into t values('2024-11-01', '12:00:01.341300', '12:00:01.341300'), ('2024-11-01', '1 12:00:01.341300', '1 12:00:01.341300'), ('2024-11-01', '-1 12:00:01.341300', '-1 12:00:01.341300'),('1000-01-01', '12:00:01.341300', '12:00:01.341300'), ('9999-12-31', '12:00:01.341300', '12:00:01.341300'), (null, '12:00:01.341300', '12:00:01.341300'), ('2020-11-01', null, null); +select addtime(date '2024-11-01', '12:00:01.341300'); +select subtime(date '2024-11-01', '12:00:01.341300'); +select addtime(date '2024-11-01', '1 12:00:01.341300'); +select subtime(date '2024-11-01', '1 12:00:01.341300'); +select addtime(date '2024-11-01', '-1 12:00:01.341300'); +select subtime(date '2024-11-01', '-1 12:00:01.341300'); +select addtime(date '2024-11-01', time '12:00:01.341300'); +select subtime(date '2024-11-01', time '12:00:01.341300'); +select addtime(date '2024-11-01', time '1 12:00:01.341300'); +select subtime(date '2024-11-01', time '1 12:00:01.341300'); +select addtime(date '2024-11-01', time '-1 12:00:01.341300'); +select subtime(date '2024-11-01', time '-1 12:00:01.341300'); +select addtime(col0, '12:00:01.341300') from t order by col0, col1 asc; +select subtime(col0, '12:00:01.341300') from t order by col0, col1 asc; +select addtime(col0, '1 12:00:01.341300') from t order by col0, col1 asc; +select subtime(col0, '1 12:00:01.341300') from t order by col0, col1 asc; +select addtime(col0, '-1 12:00:01.341300') from t order by col0, col1 asc; +select subtime(col0, '-1 12:00:01.341300') from t order by col0, col1 asc; +select addtime(col0, time '12:00:01.341300') from t order by col0, col1 asc; +select subtime(col0, time '12:00:01.341300') from t order by col0, col1 asc; +select addtime(col0, time '1 12:00:01.341300') from t order by col0, col1 asc; +select subtime(col0, time '1 12:00:01.341300') from t order by col0, col1 asc; +select addtime(col0, time '-1 12:00:01.341300') from t order by col0, col1 asc; +select subtime(col0, time '-1 12:00:01.341300') from t order by col0, col1 asc; +select addtime(col0, col1) from t order by col0, col1 asc; +select subtime(col0, col1) from t order by col0, col1 asc; +select addtime(col0, col2) from t order by col0, col1 asc; +select subtime(col0, col2) from t order by col0, col1 asc; +select addtime(col0, null) from t order by col0, col1 asc; +select subtime(col0, null) from t order by col0, col1 asc; +select addtime(null, col1) from t order by col0, col1 asc; +select subtime(null, col1) from t order by col0, col1 asc; +select addtime(null, col2) from t order by col0, col1 asc; +select subtime(null, col2) from t order by col0, col1 asc; + +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(date '0-0-0', '12:00:01.341300'); +select addtime(date '0-0-0', time '12:00:01.341300'); +select addtime(date '0-0-0', '1 12:00:01.341300'); +select addtime(date '0-0-0', time '1 12:00:01.341300'); +select subtime(date '0-0-0', '12:00:01.341300'); +select subtime(date '0-0-0', time '12:00:01.341300'); +select subtime(date '0-0-0', '1 12:00:01.341300'); +select subtime(date '0-0-0', time '1 12:00:01.341300'); + +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +drop table if exists t; +create table t(col0 date, col1 time, col2 varchar(30)); +insert into t values ('0-0-0', '1:1:1', '1:1:1'), ('0-0-0', '0:0:0', '0:0:0'), ('2024-0-1', '1:1:1', '1:1:1'), ('2020-1-1', '-1 1:1:1', '-1 1:1:1'), ('2024-1-0', '1:1:1', '1:1:1'), ('2024-0-1', '1:1:1', '1:1:1'); +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +select subtime(col0, col1) from t order by col0, col1, col2 asc; +select addtime(col0, col2) from t order by col0, col1, col2 asc; +select subtime(col0, col2) from t order by col0, col1, col2 asc; +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +select subtime(col0, col1) from t order by col0, col1, col2 asc; +select addtime(col0, col2) from t order by col0, col1, col2 asc; +select subtime(col0, col2) from t order by col0, col1, col2 asc; + +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +drop table if exists t; +create table t(col0 datetime, col1 time, col2 varchar(30)); +insert into t values ('0-0-0', '1:1:1', '1:1:1'), ('0-0-0', '0:0:0', '0:0:0'), ('2024-0-1', '1:1:1', '1:1:1'), ('2020-1-1', '-1 1:1:1', '-1 1:1:1'), ('2024-1-0', '1:1:1', '1:1:1'), ('2024-0-1', '1:1:1', '1:1:1'); +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +select subtime(col0, col1) from t order by col0, col1, col2 asc; +select addtime(col0, col2) from t order by col0, col1, col2 asc; +select subtime(col0, col2) from t order by col0, col1, col2 asc; +set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; +select addtime(col0, col1) from t order by col0, col1, col2 asc; +select subtime(col0, col1) from t order by col0, col1, col2 asc; +select addtime(col0, col2) from t order by col0, col1, col2 asc; +select subtime(col0, col2) from t order by col0, col1, col2 asc; diff --git a/tests/integrationtest/t/globalindex/insert.test b/tests/integrationtest/t/globalindex/insert.test index e4251d662a822..9e641354a341c 100644 --- a/tests/integrationtest/t/globalindex/insert.test +++ b/tests/integrationtest/t/globalindex/insert.test @@ -5,6 +5,6 @@ select * from t use index (idx); alter table t add unique index idx1(b) global; insert into t values (2, 4), (3, 4) on duplicate key update a=2, b=5; -select * from t use index (idx1); +select * from t use index (idx1) order by a desc; diff --git a/tests/integrationtest/t/globalindex/misc.test b/tests/integrationtest/t/globalindex/misc.test index ebf325ef16e95..b4ef7b441d554 100644 --- a/tests/integrationtest/t/globalindex/misc.test +++ b/tests/integrationtest/t/globalindex/misc.test @@ -139,13 +139,13 @@ CREATE TABLE `t` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin PARTITION BY HASH (`a`) PARTITIONS 3; show create table t; ---error 8200 alter table t partition by key (b) partitions 3; +alter table t partition by key (b) partitions 3 update indexes (idx_b GLOBAL); +alter table t partition by key (b) partitions 3 update indexes (idx_b LOCAL); --error 8264 alter table t partition by hash (a) partitions 3 update indexes (idx_b LOCAL); alter table t partition by hash (a) partitions 3 update indexes (idx_b GLOBAL); show create table t; ---error 8200 alter table t partition by hash (b) partitions 3 update indexes(idx_b global); alter table t partition by hash (b) partitions 3 update indexes(idx_b local); show create table t; diff --git a/tests/integrationtest/t/infoschema/v2.test b/tests/integrationtest/t/infoschema/v2.test index 29fd319442226..aace2b2ee84a5 100644 --- a/tests/integrationtest/t/infoschema/v2.test +++ b/tests/integrationtest/t/infoschema/v2.test @@ -40,4 +40,10 @@ create database infoschema__v2; show databases like 'infoschema%'; -set @@global.tidb_schema_cache_size = default; \ No newline at end of file +set @@global.tidb_schema_cache_size = default; + +# TestIssue57657 +use infoschema__v2; +select TABLE_SCHEMA, TABLE_NAME, TIDB_TABLE_ID from information_schema.tables where TIDB_TABLE_ID = 4611686018427387967; +select TABLE_SCHEMA from information_schema.tables where TIDB_TABLE_ID = 4611686018427387967; +select TABLE_NAME, TABLE_CATALOG from information_schema.tables where TABLE_CATALOG != 'def'; diff --git a/tests/integrationtest/t/planner/core/integration.test b/tests/integrationtest/t/planner/core/integration.test index 202631982ee32..a026f91f8d6a9 100644 --- a/tests/integrationtest/t/planner/core/integration.test +++ b/tests/integrationtest/t/planner/core/integration.test @@ -2077,9 +2077,9 @@ disconnect conn1; drop table if exists t; create table t(a int primary key, b varchar(20)); insert into t values (1,1); ---replace_regex /:[ ]?[.0-9]+[µms]*/:/ /},.*}/}/ +--replace_regex /:[ ]?[.0-9]+[nµms]*/:/ /},.*}/}/ explain analyze select * from t where a=1; ---replace_regex /:[ ]?[.0-9]+[µms]*/:/ /},.*}/}/ +--replace_regex /:[ ]?[.0-9]+[nµms]*/:/ /},.*}/}/ explain analyze select * from t where a in (1,2,3); @@ -2087,9 +2087,9 @@ explain analyze select * from t where a in (1,2,3); drop table if exists t; create table t (a int, b int, unique index (a)); insert into t values (1,1); ---replace_regex /:[ ]?[.0-9]+[µms]*/:/ /},.*}/}/ +--replace_regex /:[ ]?[.0-9]+[nµms]*/:/ /},.*}/}/ explain analyze select * from t where a=1; ---replace_regex /:[ ]?[.0-9]+[µms]*/:/ /},.*}/}}}/ /[0-9]+ Bytes/ Bytes/ +--replace_regex /:[ ]?[.0-9]+[nµms]*/:/ /},.*}/}}}/ /[0-9]+ Bytes/ Bytes/ explain analyze insert ignore into t values (1,1),(2,2),(3,3),(4,4); @@ -2371,4 +2371,4 @@ create table t (col TEXT); select 1 from (select t.col as c0, 46578369 as c1 from t) as t where case when ( t.c0 in (t.c0, cast((cast(1 as unsigned) - cast(t.c1 as signed)) as char)) - ) then 1 else 2 end; \ No newline at end of file + ) then 1 else 2 end; diff --git a/tests/integrationtest/t/planner/core/issuetest/planner_issue.test b/tests/integrationtest/t/planner/core/issuetest/planner_issue.test index 679cf8cb6c767..777402264d84c 100644 --- a/tests/integrationtest/t/planner/core/issuetest/planner_issue.test +++ b/tests/integrationtest/t/planner/core/issuetest/planner_issue.test @@ -517,3 +517,20 @@ SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b order by 1, 2, 3, 4, 5; show warnings; drop table if exists t1, t2, t3, t4; + +# TestIssue56270 +drop table if exists t0, v0; +drop view if exists v0; +CREATE TABLE t0(c0 INTEGER); +CREATE VIEW v0(c0) AS SELECT 'a' FROM t0 WHERE (CASE t0.c0 WHEN t0.c0 THEN false END ); +SELECT t0.c0 FROM v0, t0 WHERE RAND(); + +# TestIssue56479 +drop table if exists tl6e913fb9; +CREATE TABLE `tl6e913fb9` ( + `col_36` varchar(175) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'asMF', + KEY `idx_35_5` (`col_36`(1)), + PRIMARY KEY (`col_36`) /*T![clustered_index] NONCLUSTERED */, + 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 ); diff --git a/tests/integrationtest/t/privilege/privileges.test b/tests/integrationtest/t/privilege/privileges.test index 3dc1f24d76199..a99dffc261953 100644 --- a/tests/integrationtest/t/privilege/privileges.test +++ b/tests/integrationtest/t/privilege/privileges.test @@ -866,6 +866,35 @@ ADMIN SHOW privilege__privileges.admin NEXT_ROW_ID; ADMIN SHOW SLOW RECENT 3; -- error 8121 ADMIN SHOW SLOW TOP ALL 3; +-- error 8121 +ADMIN ALTER DDL JOBS 10 THREAD = 3, BATCH_SIZE = 100, MAX_WRITE_SPEED = '10MiB'; disconnect without_super; connection default; + +# TestIssue53490 +create table privilege__privileges.tt1 (id bigint,pid bigint,name varchar(20),fullname varchar(20)); +insert into privilege__privileges.tt1 values (1,null,'a',''),(2,1,'b',''),(3,2,'c',''); + +CREATE USER u53490; +GRANT USAGE ON *.* TO 'u53490'; +GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,CREATE ROUTINE,ALTER ROUTINE,ALTER,EXECUTE,INDEX,CREATE VIEW,SHOW VIEW ON privilege__privileges.* TO 'u53490'; + +connect (u53490,localhost,u53490,,); +connection u53490; + +with t_f as ( + select id,pid,name,'AAA' fullname from privilege__privileges.tt1 ) + update privilege__privileges.tt1 inner join t_f + set tt1.fullname=t_f.fullname + where tt1.id=t_f.id; + +-- error 1288 +with t_f as ( + select id,pid,name,'AAA' fullname from privilege__privileges.tt1 ) + update privilege__privileges.tt1 inner join t_f + set t_f.fullname=t_f.fullname + where tt1.id=t_f.id; + +disconnect u53490; +connection default; diff --git a/tests/integrationtest/t/table/partition.test b/tests/integrationtest/t/table/partition.test index 07eea01e3db74..6a8b3230999ad 100644 --- a/tests/integrationtest/t/table/partition.test +++ b/tests/integrationtest/t/table/partition.test @@ -441,4 +441,11 @@ insert into t_54271 values('2020-03-01 00:00:00'); select * from t_54271; select * from t_54271 partition (p0); select * from t_54271 partition (p1); +set @@sql_mode=default; + +# Issue57675 +drop table if exists tb; +create table tb (s char(10), b bit(48), bb blob(6)) partition by hash (b) partitions 16; +insert into tb values ('\0\b\n\r\t\Z', _binary '\0\b\n\r\t\Z', unhex('00080A0D091A')); +select hex(b) from tb; diff --git a/tests/integrationtest/t/table/tables.test b/tests/integrationtest/t/table/tables.test index e963a7a1ce073..9446a5b0921a0 100644 --- a/tests/integrationtest/t/table/tables.test +++ b/tests/integrationtest/t/table/tables.test @@ -22,3 +22,9 @@ insert into shard_t values (12); select count(distinct(_tidb_rowid>>48)) from shard_t; set @@tidb_shard_allocate_step=default; + +# TestInsertBitDefaultValue +drop table if exists t; +create table t(a bit(32) default b'1100010001001110011000100100111'); +insert into t values (); +select hex(a) from t; \ No newline at end of file diff --git a/tests/integrationtest2/r/br_integration.result b/tests/integrationtest2/r/br_integration.result index 5c27d7cdffd4f..58cb28a7c585b 100644 --- a/tests/integrationtest2/r/br_integration.result +++ b/tests/integrationtest2/r/br_integration.result @@ -3,8 +3,6 @@ INSERT INTO t1 (b) VALUES (1), (2), (3); SHOW TABLE t1 NEXT_ROW_ID; DB_NAME TABLE_NAME COLUMN_NAME NEXT_GLOBAL_ROW_ID ID_TYPE br_integration t1 _tidb_rowid 101 _TIDB_ROWID -br_integration t1 _tidb_rowid 1 AUTO_INCREMENT SHOW TABLE tt1 NEXT_ROW_ID; DB_NAME TABLE_NAME COLUMN_NAME NEXT_GLOBAL_ROW_ID ID_TYPE br_integration tt1 _tidb_rowid 101 _TIDB_ROWID -br_integration tt1 _tidb_rowid 1 AUTO_INCREMENT diff --git a/tests/realtikvtest/BUILD.bazel b/tests/realtikvtest/BUILD.bazel index 9a50f776291e2..6d7f294c9fd8f 100644 --- a/tests/realtikvtest/BUILD.bazel +++ b/tests/realtikvtest/BUILD.bazel @@ -7,6 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/config", + "//pkg/ddl", "//pkg/domain", "//pkg/kv", "//pkg/session", diff --git a/tests/realtikvtest/addindextest/add_index_test.go b/tests/realtikvtest/addindextest/add_index_test.go index 168817d760e82..df7efe01a371c 100644 --- a/tests/realtikvtest/addindextest/add_index_test.go +++ b/tests/realtikvtest/addindextest/add_index_test.go @@ -169,7 +169,7 @@ func TestAddUniqueDuplicateIndexes(t *testing.T) { tk1.Exec("INSERT INTO t VALUES (-18585,'duplicatevalue',0);") - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { switch job.SchemaState { case model.StateDeleteOnly: _, err := tk1.Exec("delete from t where c = 0;") diff --git a/tests/realtikvtest/addindextest/main_test.go b/tests/realtikvtest/addindextest/main_test.go index 5dfd2cce3dd5f..065c20c779919 100644 --- a/tests/realtikvtest/addindextest/main_test.go +++ b/tests/realtikvtest/addindextest/main_test.go @@ -28,7 +28,7 @@ var FullMode = flag.Bool("full-mode", false, "whether tests run in full mode") func TestMain(m *testing.M) { config.UpdateGlobal(func(conf *config.Config) { - conf.Store = "tikv" + conf.Store = config.StoreTypeTiKV }) realtikvtest.RunTestMain(m) } diff --git a/tests/realtikvtest/addindextest1/BUILD.bazel b/tests/realtikvtest/addindextest1/BUILD.bazel index de6f27ec5ac04..8aa3af30880ab 100644 --- a/tests/realtikvtest/addindextest1/BUILD.bazel +++ b/tests/realtikvtest/addindextest1/BUILD.bazel @@ -12,6 +12,7 @@ go_test( "//pkg/config", "//pkg/ddl/ingest", "//pkg/disttask/framework/storage", + "//pkg/disttask/framework/taskexecutor", "//pkg/errno", "//pkg/meta/model", "//pkg/sessionctx/variable", diff --git a/tests/realtikvtest/addindextest1/disttask_test.go b/tests/realtikvtest/addindextest1/disttask_test.go index 8e5b008c4f7eb..c6948ba640690 100644 --- a/tests/realtikvtest/addindextest1/disttask_test.go +++ b/tests/realtikvtest/addindextest1/disttask_test.go @@ -17,14 +17,17 @@ package addindextest import ( "context" "fmt" + "strings" "sync" "sync/atomic" "testing" + "time" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/pkg/config" "github.com/pingcap/tidb/pkg/ddl/ingest" "github.com/pingcap/tidb/pkg/disttask/framework/storage" + "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor" "github.com/pingcap/tidb/pkg/errno" "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tidb/pkg/sessionctx/variable" @@ -93,10 +96,17 @@ func TestAddIndexDistBasic(t *testing.T) { tk.MustExec("alter table t1 add index idx(a);") tk.MustExec("admin check index t1 idx;") - require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/MockRunSubtaskContextCanceled", "1*return(true)")) + var counter atomic.Int32 + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/afterRunSubtask", + func(e taskexecutor.TaskExecutor, errP *error) { + if counter.Add(1) == 1 { + *errP = context.Canceled + } + }, + ) tk.MustExec("alter table t1 add index idx1(a);") tk.MustExec("admin check index t1 idx1;") - require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/MockRunSubtaskContextCanceled")) + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor/afterRunSubtask") require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/injectPanicForTableScan", "return()")) tk.MustExecToErr("alter table t1 add index idx2(a);") @@ -109,7 +119,7 @@ func TestAddIndexDistBasic(t *testing.T) { tk.MustExec(`set global tidb_enable_dist_task=0;`) } -func TestAddIndexDistCancel(t *testing.T) { +func TestAddIndexDistCancelWithPartition(t *testing.T) { store := realtikvtest.CreateMockStoreAndSetup(t) if store.Name() != "TiKV" { t.Skip("TiKV store only") @@ -150,6 +160,69 @@ func TestAddIndexDistCancel(t *testing.T) { tk.MustExec(`set global tidb_enable_dist_task=0;`) } +func TestAddIndexDistCancel(t *testing.T) { + store := realtikvtest.CreateMockStoreAndSetup(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("drop database if exists addindexlit;") + tk.MustExec("create database addindexlit;") + tk.MustExec("use addindexlit;") + tk.MustExec(`set global tidb_ddl_enable_fast_reorg=on;`) + tk.MustExec("create table t (a int, b int);") + tk.MustExec("insert into t values (1, 1), (2, 2), (3, 3);") + + tk2 := testkit.NewTestKit(t, store) + tk2.MustExec("use addindexlit;") + tk2.MustExec(`set global tidb_ddl_enable_fast_reorg=on;`) + tk2.MustExec("create table t2 (a int, b int);") + tk2.MustExec("insert into t2 values (1, 1), (2, 2), (3, 3);") + + wg := &sync.WaitGroup{} + wg.Add(2) + go func() { + tk.MustExec("alter table t add index idx(a);") + wg.Done() + }() + go func() { + tk2.MustExec("alter table t2 add index idx_b(b);") + wg.Done() + }() + wg.Wait() + rows := tk.MustQuery("admin show ddl jobs 2;").Rows() + require.Len(t, rows, 2) + require.True(t, strings.Contains(rows[0][12].(string) /* comments */, "ingest")) + require.True(t, strings.Contains(rows[1][12].(string) /* comments */, "ingest")) + require.Equal(t, rows[0][7].(string) /* row_count */, "3") + require.Equal(t, rows[1][7].(string) /* row_count */, "3") + + tk.MustExec("set @@global.tidb_enable_dist_task = 1;") + + // test cancel is timely + enter := make(chan struct{}) + testfailpoint.EnableCall( + t, + "github.com/pingcap/tidb/pkg/lightning/backend/local/beforeExecuteRegionJob", + func(ctx context.Context) { + close(enter) + select { + case <-time.After(time.Second * 30): + case <-ctx.Done(): + } + }) + wg.Add(1) + go func() { + defer wg.Done() + err := tk2.ExecToErr("alter table t add index idx_ba(b, a);") + require.ErrorContains(t, err, "Cancelled DDL job") + }() + <-enter + jobID := tk.MustQuery("admin show ddl jobs 1;").Rows()[0][0].(string) + now := time.Now() + tk.MustExec("admin cancel ddl jobs " + jobID) + wg.Wait() + // cancel should be timely + require.Less(t, time.Since(now).Seconds(), 20.0) +} + func TestAddIndexDistPauseAndResume(t *testing.T) { t.Skip("unstable") // TODO(tangenta): fix this unstable test store := realtikvtest.CreateMockStoreAndSetup(t) @@ -200,7 +273,7 @@ func TestAddIndexDistPauseAndResume(t *testing.T) { require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/mockDMLExecutionOnPausedState")) // dist task succeed, job paused and resumed. - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if job.IsPaused() { row := tk1.MustQuery("select job_id from mysql.tidb_ddl_job").Rows() require.Equal(t, 1, len(row)) diff --git a/tests/realtikvtest/addindextest1/main_test.go b/tests/realtikvtest/addindextest1/main_test.go index 30ba7d0424a87..84cf1e47fde20 100644 --- a/tests/realtikvtest/addindextest1/main_test.go +++ b/tests/realtikvtest/addindextest1/main_test.go @@ -28,7 +28,7 @@ var FullMode = flag.Bool("full-mode", false, "whether tests run in full mode") func TestMain(m *testing.M) { config.UpdateGlobal(func(conf *config.Config) { - conf.Store = "tikv" + conf.Store = config.StoreTypeTiKV }) realtikvtest.RunTestMain(m) } diff --git a/tests/realtikvtest/addindextest2/BUILD.bazel b/tests/realtikvtest/addindextest2/BUILD.bazel index 3590e9da6f6ff..4bba0c9c929c9 100644 --- a/tests/realtikvtest/addindextest2/BUILD.bazel +++ b/tests/realtikvtest/addindextest2/BUILD.bazel @@ -11,7 +11,6 @@ go_test( deps = [ "//br/pkg/storage", "//pkg/config", - "//pkg/disttask/framework/scheduler", "//pkg/kv", "//pkg/lightning/backend/external", "//pkg/meta/model", @@ -26,5 +25,6 @@ go_test( "@com_github_phayes_freeport//:freeport", "@com_github_pingcap_failpoint//:failpoint", "@com_github_stretchr_testify//require", + "@com_github_tikv_client_go_v2//oracle", ], ) diff --git a/tests/realtikvtest/addindextest2/global_sort_test.go b/tests/realtikvtest/addindextest2/global_sort_test.go index c8ba7fa79dad0..f7c212b24a9f8 100644 --- a/tests/realtikvtest/addindextest2/global_sort_test.go +++ b/tests/realtikvtest/addindextest2/global_sort_test.go @@ -20,13 +20,13 @@ import ( "strconv" "strings" "testing" + "time" "github.com/fsouza/fake-gcs-server/fakestorage" "github.com/phayes/freeport" "github.com/pingcap/failpoint" "github.com/pingcap/tidb/br/pkg/storage" "github.com/pingcap/tidb/pkg/config" - "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/lightning/backend/external" "github.com/pingcap/tidb/pkg/meta/model" @@ -38,6 +38,7 @@ import ( "github.com/pingcap/tidb/pkg/types" "github.com/pingcap/tidb/tests/realtikvtest" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" ) func init() { @@ -85,7 +86,10 @@ func TestGlobalSortBasic(t *testing.T) { store := realtikvtest.CreateMockStoreAndSetup(t) tk := testkit.NewTestKit(t, store) - testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", "return()") + ch := make(chan struct{}, 1) + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", func() { + ch <- struct{}{} + }) tk.MustExec("drop database if exists addindexlit;") tk.MustExec("create database addindexlit;") tk.MustExec("use addindexlit;") @@ -111,24 +115,24 @@ func TestGlobalSortBasic(t *testing.T) { tk.MustExec(sb.String()) var jobID int64 - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { jobID = job.ID }) tk.MustExec("alter table t add index idx(a);") tk.MustExec("admin check table t;") - <-scheduler.WaitCleanUpFinished + <-ch checkFileCleaned(t, jobID, cloudStorageURI) testfailpoint.Enable(t, "github.com/pingcap/tidb/pkg/ddl/forceMergeSort", "return()") tk.MustExec("alter table t add index idx1(a);") tk.MustExec("admin check table t;") - <-scheduler.WaitCleanUpFinished + <-ch checkFileCleaned(t, jobID, cloudStorageURI) tk.MustExec("alter table t add unique index idx2(a);") tk.MustExec("admin check table t;") - <-scheduler.WaitCleanUpFinished + <-ch checkFileCleaned(t, jobID, cloudStorageURI) } @@ -240,9 +244,9 @@ func TestAddIndexIngestShowReorgTp(t *testing.T) { rows := tk.MustQuery("admin show ddl jobs 1;").Rows() require.Len(t, rows, 1) - jobType, rowCnt := rows[0][3].(string), rows[0][7].(string) - require.True(t, strings.Contains(jobType, "ingest")) - require.False(t, strings.Contains(jobType, "cloud")) + jobType, rowCnt := rows[0][12].(string), rows[0][7].(string) + require.True(t, strings.Contains(jobType, "ingest"), jobType) + require.False(t, strings.Contains(jobType, "cloud"), jobType) require.Equal(t, rowCnt, "3") } @@ -294,7 +298,7 @@ func TestIngestUseGivenTS(t *testing.T) { store, dom := realtikvtest.CreateMockStoreAndDomainAndSetup(t) var tblInfo *model.TableInfo var idxInfo *model.IndexInfo - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobUpdated", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterWaitSchemaSynced", func(job *model.Job) { if idxInfo == nil { tbl, _ := dom.InfoSchema().TableByID(context.Background(), job.TableID) tblInfo = tbl.Meta() @@ -318,7 +322,11 @@ func TestIngestUseGivenTS(t *testing.T) { t.Cleanup(func() { tk.MustExec("set @@global.tidb_cloud_storage_uri = '';") }) - err = failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockTSForGlobalSort", `return(123456789)`) + + presetTS := oracle.GoTimeToTS(time.Now()) + failpointTerm := fmt.Sprintf(`return(%d)`, presetTS) + + err = failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/mockTSForGlobalSort", failpointTerm) require.NoError(t, err) tk.MustExec("create table t (a int);") @@ -334,10 +342,10 @@ func TestIngestUseGivenTS(t *testing.T) { require.NoError(t, err) tikvStore := dom.Store().(helper.Storage) newHelper := helper.NewHelper(tikvStore) - mvccResp, err := newHelper.GetMvccByEncodedKeyWithTS(idxKey, 123456789) + mvccResp, err := newHelper.GetMvccByEncodedKeyWithTS(idxKey, presetTS) require.NoError(t, err) require.NotNil(t, mvccResp) require.NotNil(t, mvccResp.Info) require.Greater(t, len(mvccResp.Info.Writes), 0) - require.Equal(t, uint64(123456789), mvccResp.Info.Writes[0].CommitTs) + require.Equal(t, presetTS, mvccResp.Info.Writes[0].CommitTs) } diff --git a/tests/realtikvtest/addindextest2/main_test.go b/tests/realtikvtest/addindextest2/main_test.go index 30ba7d0424a87..84cf1e47fde20 100644 --- a/tests/realtikvtest/addindextest2/main_test.go +++ b/tests/realtikvtest/addindextest2/main_test.go @@ -28,7 +28,7 @@ var FullMode = flag.Bool("full-mode", false, "whether tests run in full mode") func TestMain(m *testing.M) { config.UpdateGlobal(func(conf *config.Config) { - conf.Store = "tikv" + conf.Store = config.StoreTypeTiKV }) realtikvtest.RunTestMain(m) } diff --git a/tests/realtikvtest/addindextest3/functional_test.go b/tests/realtikvtest/addindextest3/functional_test.go index aaa6eb4e29764..d2c371abce67a 100644 --- a/tests/realtikvtest/addindextest3/functional_test.go +++ b/tests/realtikvtest/addindextest3/functional_test.go @@ -85,7 +85,7 @@ func TestDDLTestEstimateTableRowSize(t *testing.T) { func TestBackendCtxConcurrentUnregister(t *testing.T) { store := realtikvtest.CreateMockStoreAndSetup(t) discovery := store.(tikv.Storage).GetRegionCache().PDClient().GetServiceDiscovery() - bCtx, err := ingest.LitBackCtxMgr.Register(context.Background(), 1, false, nil, discovery, "test", 1, 0) + bCtx, err := ingest.LitBackCtxMgr.Register(context.Background(), 1, false, nil, discovery, "test", 1, 0, 0) require.NoError(t, err) idxIDs := []int64{1, 2, 3, 4, 5, 6, 7} uniques := make([]bool, 0, len(idxIDs)) @@ -125,7 +125,7 @@ func TestTiDBEncodeKeyTempIndexKey(t *testing.T) { tk.MustExec("create table t (a int primary key, b int);") tk.MustExec("insert into t values (1, 1);") runDML := false - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if !runDML && job.Type == model.ActionAddIndex && job.SchemaState == model.StateWriteOnly { tk2 := testkit.NewTestKit(t, store) tk2.MustExec("use test") diff --git a/tests/realtikvtest/addindextest3/ingest_test.go b/tests/realtikvtest/addindextest3/ingest_test.go index 0f9967e263a7a..7c4efd1fa3575 100644 --- a/tests/realtikvtest/addindextest3/ingest_test.go +++ b/tests/realtikvtest/addindextest3/ingest_test.go @@ -104,8 +104,8 @@ func TestAddIndexIngestLimitOneBackend(t *testing.T) { wg.Wait() rows := tk.MustQuery("admin show ddl jobs 2;").Rows() require.Len(t, rows, 2) - require.True(t, strings.Contains(rows[0][3].(string) /* job_type */, "ingest")) - require.True(t, strings.Contains(rows[1][3].(string) /* job_type */, "ingest")) + require.True(t, strings.Contains(rows[0][12].(string) /* comments */, "ingest")) + require.True(t, strings.Contains(rows[1][12].(string) /* comments */, "ingest")) require.Equal(t, rows[0][7].(string) /* row_count */, "3") require.Equal(t, rows[1][7].(string) /* row_count */, "3") @@ -160,7 +160,7 @@ func TestAddIndexIngestWriterCountOnPartitionTable(t *testing.T) { tk.MustExec("alter table t add index idx(a);") rows := tk.MustQuery("admin show ddl jobs 1;").Rows() require.Len(t, rows, 1) - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) } @@ -204,7 +204,7 @@ func TestIngestMVIndexOnPartitionTable(t *testing.T) { tk.MustExec(c) rows := tk.MustQuery("admin show ddl jobs 1;").Rows() require.Len(t, rows, 1) - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) addIndexDone.Store(true) wg.Wait() @@ -260,7 +260,7 @@ func TestAddIndexIngestAdjustBackfillWorker(t *testing.T) { tk.MustExec("admin check table t;") rows := tk.MustQuery("admin show ddl jobs 1;").Rows() require.Len(t, rows, 1) - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) } @@ -290,7 +290,7 @@ func TestAddIndexIngestAdjustBackfillWorkerCountFail(t *testing.T) { tk.MustExec("alter table t add index idx(a);") rows := tk.MustQuery("admin show ddl jobs 1;").Rows() require.Len(t, rows, 1) - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) ingest.ImporterRangeConcurrencyForTest = nil } @@ -307,7 +307,7 @@ func TestAddIndexIngestEmptyTable(t *testing.T) { rows := tk.MustQuery("admin show ddl jobs 1;").Rows() require.Len(t, rows, 1) - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) } @@ -335,7 +335,7 @@ func TestAddIndexIngestRestoredData(t *testing.T) { tk.MustExec("admin check table tbl_5;") rows := tk.MustQuery("admin show ddl jobs 1;").Rows() require.Len(t, rows, 1) - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) } @@ -444,10 +444,38 @@ func TestAddIndexMockFlushError(t *testing.T) { tk.MustExec("admin check table t;") rows := tk.MustQuery("admin show ddl jobs 1;").Rows() //nolint: forcetypeassert - jobTp := rows[0][3].(string) + jobTp := rows[0][12].(string) require.True(t, strings.Contains(jobTp, "ingest"), jobTp) } +func TestAddIndexDiskQuotaTS(t *testing.T) { + store := realtikvtest.CreateMockStoreAndSetup(t) + tk := testkit.NewTestKit(t, store) + + tk.MustExec("set @@global.tidb_enable_dist_task = 0;") + testAddIndexDiskQuotaTS(t, tk) + tk.MustExec("set @@global.tidb_enable_dist_task = 1;") + testAddIndexDiskQuotaTS(t, tk) +} + +func testAddIndexDiskQuotaTS(t *testing.T, tk *testkit.TestKit) { + tk.MustExec("drop database if exists addindexlit;") + tk.MustExec("create database addindexlit;") + tk.MustExec("use addindexlit;") + tk.MustExec(`set global tidb_ddl_enable_fast_reorg=on;`) + tk.MustExec("set @@tidb_ddl_reorg_worker_cnt=1;") + + tk.MustExec("create table t(id int primary key, b int, k int);") + tk.MustQuery("split table t by (30000);").Check(testkit.Rows("1 1")) + tk.MustExec("insert into t values(1, 1, 1);") + tk.MustExec("insert into t values(100000, 1, 1);") + + ingest.ForceSyncFlagForTest = true + tk.MustExec("alter table t add index idx_test(b);") + ingest.ForceSyncFlagForTest = false + tk.MustExec("update t set b = b + 1;") +} + func TestAddIndexRemoteDuplicateCheck(t *testing.T) { store := realtikvtest.CreateMockStoreAndSetup(t) tk := testkit.NewTestKit(t, store) @@ -482,7 +510,7 @@ func TestAddIndexBackfillLostUpdate(t *testing.T) { tk1.MustExec("use addindexlit;") var runDML bool - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunAfter", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/afterRunOneJobStep", func(job *model.Job) { if t.Failed() || runDML { return } diff --git a/tests/realtikvtest/addindextest3/main_test.go b/tests/realtikvtest/addindextest3/main_test.go index 30ba7d0424a87..84cf1e47fde20 100644 --- a/tests/realtikvtest/addindextest3/main_test.go +++ b/tests/realtikvtest/addindextest3/main_test.go @@ -28,7 +28,7 @@ var FullMode = flag.Bool("full-mode", false, "whether tests run in full mode") func TestMain(m *testing.M) { config.UpdateGlobal(func(conf *config.Config) { - conf.Store = "tikv" + conf.Store = config.StoreTypeTiKV }) realtikvtest.RunTestMain(m) } diff --git a/tests/realtikvtest/addindextest3/operator_test.go b/tests/realtikvtest/addindextest3/operator_test.go index 5fac1ec6063ae..a6b67ee79279a 100644 --- a/tests/realtikvtest/addindextest3/operator_test.go +++ b/tests/realtikvtest/addindextest3/operator_test.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "strings" + "sync" "sync/atomic" "testing" @@ -88,15 +89,16 @@ func TestBackfillOperators(t *testing.T) { var chunkResults []ddl.IndexRecordChunk { // Make sure the buffer is large enough since the chunks do not recycled. - srcChkPool := make(chan *chunk.Chunk, regionCnt*2) - for i := 0; i < regionCnt*2; i++ { - srcChkPool <- chunk.NewChunkWithCapacity(copCtx.GetBase().FieldTypes, 100) + srcChkPool := &sync.Pool{ + New: func() any { + return chunk.NewChunkWithCapacity(copCtx.GetBase().FieldTypes, 100) + }, } ctx := context.Background() opCtx, cancel := ddl.NewDistTaskOperatorCtx(ctx, 1, 1) src := testutil.NewOperatorTestSource(opTasks...) - scanOp := ddl.NewTableScanOperator(opCtx, sessPool, copCtx, srcChkPool, 3, nil, 0) + scanOp := ddl.NewTableScanOperator(opCtx, sessPool, copCtx, srcChkPool, 3, nil, 0, nil) sink := testutil.NewOperatorTestSink[ddl.IndexRecordChunk]() operator.Compose[ddl.TableScanTask](src, scanOp) @@ -134,7 +136,11 @@ func TestBackfillOperators(t *testing.T) { values = append(values, val) } - srcChkPool := make(chan *chunk.Chunk, regionCnt*2) + srcChkPool := &sync.Pool{ + New: func() any { + return chunk.NewChunkWithCapacity(copCtx.GetBase().FieldTypes, 100) + }, + } pTbl := tbl.(table.PhysicalTable) index := tables.NewIndex(pTbl.GetPhysicalID(), tbl.Meta(), idxInfo) mockBackendCtx := &ingest.MockBackendCtx{} @@ -368,3 +374,50 @@ func (p *sessPoolForTest) Get() (sessionctx.Context, error) { func (p *sessPoolForTest) Put(sctx sessionctx.Context) { p.pool.Put(sctx.(pools.Resource)) } + +func TestTuneWorkerPoolSize(t *testing.T) { + store, dom := realtikvtest.CreateMockStoreAndDomainAndSetup(t) + tk := testkit.NewTestKit(t, store) + tbl, idxInfo, _, _, copCtx := prepare(t, tk, dom, 10) + sessPool := newSessPoolForTest(t, store) + + // Test TableScanOperator. + { + ctx := context.Background() + opCtx, cancel := ddl.NewDistTaskOperatorCtx(ctx, 1, 1) + scanOp := ddl.NewTableScanOperator(opCtx, sessPool, copCtx, nil, 2, nil, 0, nil) + + scanOp.Open() + require.Equal(t, scanOp.GetWorkerPoolSize(), int32(2)) + scanOp.TuneWorkerPoolSize(8) + require.Equal(t, scanOp.GetWorkerPoolSize(), int32(8)) + scanOp.TuneWorkerPoolSize(1) + require.Equal(t, scanOp.GetWorkerPoolSize(), int32(1)) + + cancel() + require.NoError(t, opCtx.OperatorErr()) + } + + // Test IndexIngestOperator. + { + ctx := context.Background() + opCtx, cancel := ddl.NewDistTaskOperatorCtx(ctx, 1, 1) + pTbl := tbl.(table.PhysicalTable) + index := tables.NewIndex(pTbl.GetPhysicalID(), tbl.Meta(), idxInfo) + mockBackendCtx := &ingest.MockBackendCtx{} + mockEngine := ingest.NewMockEngineInfo(nil) + ingestOp := ddl.NewIndexIngestOperator(opCtx, copCtx, mockBackendCtx, sessPool, pTbl, []table.Index{index}, + []ingest.Engine{mockEngine}, nil, 2, nil, + nil, &ddl.EmptyRowCntListener{}) + + ingestOp.Open() + require.Equal(t, ingestOp.GetWorkerPoolSize(), int32(2)) + ingestOp.TuneWorkerPoolSize(8) + require.Equal(t, ingestOp.GetWorkerPoolSize(), int32(8)) + ingestOp.TuneWorkerPoolSize(1) + require.Equal(t, ingestOp.GetWorkerPoolSize(), int32(1)) + + cancel() + require.NoError(t, opCtx.OperatorErr()) + } +} diff --git a/tests/realtikvtest/addindextest4/main_test.go b/tests/realtikvtest/addindextest4/main_test.go index 30ba7d0424a87..84cf1e47fde20 100644 --- a/tests/realtikvtest/addindextest4/main_test.go +++ b/tests/realtikvtest/addindextest4/main_test.go @@ -28,7 +28,7 @@ var FullMode = flag.Bool("full-mode", false, "whether tests run in full mode") func TestMain(m *testing.M) { config.UpdateGlobal(func(conf *config.Config) { - conf.Store = "tikv" + conf.Store = config.StoreTypeTiKV }) realtikvtest.RunTestMain(m) } diff --git a/tests/realtikvtest/brietest/backup_restore_test.go b/tests/realtikvtest/brietest/backup_restore_test.go index 58b88aa3f27e3..870b581a112af 100644 --- a/tests/realtikvtest/brietest/backup_restore_test.go +++ b/tests/realtikvtest/brietest/backup_restore_test.go @@ -35,7 +35,7 @@ func initTestKit(t *testing.T) *testkit.TestKit { store := realtikvtest.CreateMockStoreAndSetup(t) cfg := config.GetGlobalConfig() - cfg.Store = "tikv" + cfg.Store = config.StoreTypeTiKV cfg.Path = "127.0.0.1:2379" config.StoreGlobalConfig(cfg) diff --git a/tests/realtikvtest/flashbacktest/flashback_test.go b/tests/realtikvtest/flashbacktest/flashback_test.go index ab97b14603a1b..60bd9d64755a4 100644 --- a/tests/realtikvtest/flashbacktest/flashback_test.go +++ b/tests/realtikvtest/flashbacktest/flashback_test.go @@ -556,7 +556,7 @@ func TestFlashbackInProcessErrorMsg(t *testing.T) { require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/pkg/ddl/injectSafeTS", fmt.Sprintf("return(%v)", injectSafeTS))) - testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore", func(job *model.Job) { + testfailpoint.EnableCall(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep", func(job *model.Job) { if job.Type == model.ActionFlashbackCluster && job.SchemaState == model.StateWriteReorganization { txn, err := store.Begin() assert.NoError(t, err) @@ -570,7 +570,7 @@ func TestFlashbackInProcessErrorMsg(t *testing.T) { } }) tk.Exec(fmt.Sprintf("flashback cluster to timestamp '%s'", oracle.GetTimeFromTS(ts).Format(types.TimeFSPFormat))) - testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/onJobRunBefore") + testfailpoint.Disable(t, "github.com/pingcap/tidb/pkg/ddl/beforeRunOneJobStep") require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/injectSafeTS")) } diff --git a/tests/realtikvtest/importintotest/BUILD.bazel b/tests/realtikvtest/importintotest/BUILD.bazel index 8f059b7eebd08..f3fdf0801649a 100644 --- a/tests/realtikvtest/importintotest/BUILD.bazel +++ b/tests/realtikvtest/importintotest/BUILD.bazel @@ -22,7 +22,6 @@ go_test( "//br/pkg/utils", "//pkg/config", "//pkg/disttask/framework/proto", - "//pkg/disttask/framework/scheduler", "//pkg/disttask/framework/storage", "//pkg/disttask/framework/testutil", "//pkg/disttask/importinto", diff --git a/tests/realtikvtest/importintotest/import_into_test.go b/tests/realtikvtest/importintotest/import_into_test.go index 0b45fd819ff49..32e3920c4f758 100644 --- a/tests/realtikvtest/importintotest/import_into_test.go +++ b/tests/realtikvtest/importintotest/import_into_test.go @@ -35,7 +35,6 @@ import ( "github.com/pingcap/tidb/br/pkg/mock/mocklocal" "github.com/pingcap/tidb/br/pkg/utils" "github.com/pingcap/tidb/pkg/disttask/framework/proto" - "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/importinto" "github.com/pingcap/tidb/pkg/domain/infosync" @@ -864,7 +863,10 @@ func (s *mockGCSSuite) TestImportMode() { // NOTE: this case only runs when current instance is TiDB owner, if you run it locally, // better start a cluster without TiDB instance. testfailpoint.Enable(s.T(), "github.com/pingcap/tidb/pkg/parser/ast/forceRedactURL", "return(true)") - testfailpoint.Enable(s.T(), "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", "return()") + ch := make(chan struct{}, 1) + testfailpoint.EnableCall(s.T(), "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", func() { + ch <- struct{}{} + }) sql := fmt.Sprintf(`IMPORT INTO load_data.import_mode FROM 'gs://test-load/import_mode-*.tsv?access-key=aaaaaa&secret-access-key=bbbbbb&endpoint=%s'`, gcsEndpoint) rows := s.tk.MustQuery(sql).Rows() s.Len(rows, 1) @@ -872,7 +874,7 @@ func (s *mockGCSSuite) TestImportMode() { s.NoError(err) s.tk.MustQuery("SELECT * FROM load_data.import_mode;").Sort().Check(testkit.Rows("1 11 111")) s.Greater(intoNormalTime, intoImportTime) - <-scheduler.WaitCleanUpFinished + <-ch s.checkTaskMetaRedacted(int64(jobID)) // after import step, we should enter normal mode, i.e. we only call ToImportMode once intoNormalTime, intoImportTime = time.Time{}, time.Time{} @@ -888,7 +890,7 @@ func (s *mockGCSSuite) TestImportMode() { s.Greater(intoNormalTime, intoImportTime) s.NoError(failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/importinto/clearLastSwitchTime")) s.NoError(failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/importinto/waitBeforePostProcess")) - <-scheduler.WaitCleanUpFinished + <-ch // test disable_tikv_import_mode, should not call ToImportMode and ToNormalMode s.tk.MustExec("truncate table load_data.import_mode;") @@ -896,7 +898,7 @@ func (s *mockGCSSuite) TestImportMode() { s.tk.MustQuery(sql) s.tk.MustQuery("SELECT * FROM load_data.import_mode;").Sort().Check(testkit.Rows("1 11 111")) s.tk.MustExec("truncate table load_data.import_mode;") - <-scheduler.WaitCleanUpFinished + <-ch // test with multirocksdb testfailpoint.Enable(s.T(), "github.com/pingcap/tidb/pkg/ddl/util/IsRaftKv2", "return(true)") @@ -905,7 +907,7 @@ func (s *mockGCSSuite) TestImportMode() { s.tk.MustQuery(sql) s.tk.MustQuery("SELECT * FROM load_data.import_mode;").Sort().Check(testkit.Rows("1 11 111")) s.tk.MustExec("truncate table load_data.import_mode;") - <-scheduler.WaitCleanUpFinished + <-ch s.NoError(failpoint.Disable("github.com/pingcap/tidb/pkg/ddl/util/IsRaftKv2")) @@ -921,7 +923,7 @@ func (s *mockGCSSuite) TestImportMode() { err = s.tk.QueryToErr(sql) s.Error(err) s.Greater(intoNormalTime, intoImportTime) - <-scheduler.WaitCleanUpFinished + <-ch s.checkTaskMetaRedacted(importer.TestLastImportJobID.Load()) s.NoError(failpoint.Disable("github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished")) } diff --git a/tests/realtikvtest/importintotest4/BUILD.bazel b/tests/realtikvtest/importintotest4/BUILD.bazel index fefb8666c8626..6abaad334c7af 100644 --- a/tests/realtikvtest/importintotest4/BUILD.bazel +++ b/tests/realtikvtest/importintotest4/BUILD.bazel @@ -13,7 +13,6 @@ go_test( deps = [ "//pkg/config", "//pkg/disttask/framework/proto", - "//pkg/disttask/framework/scheduler", "//pkg/disttask/framework/storage", "//pkg/disttask/framework/testutil", "//pkg/disttask/importinto", diff --git a/tests/realtikvtest/importintotest4/global_sort_test.go b/tests/realtikvtest/importintotest4/global_sort_test.go index acc0bec8aba0d..6734ff65ee7e8 100644 --- a/tests/realtikvtest/importintotest4/global_sort_test.go +++ b/tests/realtikvtest/importintotest4/global_sort_test.go @@ -26,7 +26,6 @@ import ( "github.com/fsouza/fake-gcs-server/fakestorage" "github.com/pingcap/tidb/pkg/disttask/framework/proto" - "github.com/pingcap/tidb/pkg/disttask/framework/scheduler" "github.com/pingcap/tidb/pkg/disttask/framework/storage" "github.com/pingcap/tidb/pkg/disttask/importinto" "github.com/pingcap/tidb/pkg/executor/importer" @@ -63,7 +62,10 @@ func (s *mockGCSSuite) TestGlobalSortBasic() { s.tk.MustExec(`create table t (a bigint primary key, b varchar(100), c varchar(100), d int, key(a), key(c,d), key(d));`) testfailpoint.Enable(s.T(), "github.com/pingcap/tidb/pkg/parser/ast/forceRedactURL", "return(true)") - testfailpoint.Enable(s.T(), "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", "return()") + ch := make(chan struct{}, 1) + testfailpoint.EnableCall(s.T(), "github.com/pingcap/tidb/pkg/disttask/framework/scheduler/WaitCleanUpFinished", func() { + ch <- struct{}{} + }) sortStorageURI := fmt.Sprintf("gs://sorted/import?endpoint=%s&access-key=aaaaaa&secret-access-key=bbbbbb", gcsEndpoint) importSQL := fmt.Sprintf(`import into t FROM 'gs://gs-basic/t.*.csv?endpoint=%s' @@ -78,7 +80,7 @@ func (s *mockGCSSuite) TestGlobalSortBasic() { )) // check all sorted data cleaned up - <-scheduler.WaitCleanUpFinished + <-ch _, files, err := s.server.ListObjectsWithOptions("sorted", fakestorage.ListOptions{Prefix: "import"}) s.NoError(err) @@ -106,7 +108,7 @@ func (s *mockGCSSuite) TestGlobalSortBasic() { "1 foo1 bar1 123", "2 foo2 bar2 456", "3 foo3 bar3 789", "4 foo4 bar4 123", "5 foo5 bar5 223", "6 foo6 bar6 323", )) - <-scheduler.WaitCleanUpFinished + <-ch // failed task, should clean up all sorted data too. testfailpoint.Enable(s.T(), "github.com/pingcap/tidb/pkg/disttask/importinto/failWhenDispatchWriteIngestSubtask", "return(true)") @@ -121,7 +123,7 @@ func (s *mockGCSSuite) TestGlobalSortBasic() { return task.State == proto.TaskStateReverted }, 30*time.Second, 300*time.Millisecond) // check all sorted data cleaned up - <-scheduler.WaitCleanUpFinished + <-ch _, files, err = s.server.ListObjectsWithOptions("sorted", fakestorage.ListOptions{Prefix: "import"}) s.NoError(err) diff --git a/tests/realtikvtest/pushdowntest/BUILD.bazel b/tests/realtikvtest/pushdowntest/BUILD.bazel new file mode 100644 index 0000000000000..5128eab1cb102 --- /dev/null +++ b/tests/realtikvtest/pushdowntest/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "pushdowntest_test", + timeout = "short", + srcs = [ + "expr_test.go", + "main_test.go", + ], + flaky = True, + deps = [ + "//pkg/testkit", + "//tests/realtikvtest", + "@com_github_stretchr_testify//require", + ], +) diff --git a/tests/realtikvtest/pushdowntest/expr_test.go b/tests/realtikvtest/pushdowntest/expr_test.go new file mode 100644 index 0000000000000..110d240b8da43 --- /dev/null +++ b/tests/realtikvtest/pushdowntest/expr_test.go @@ -0,0 +1,36 @@ +// Copyright 2024 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 pushdowntest + +import ( + "testing" + + "github.com/pingcap/tidb/pkg/testkit" + "github.com/pingcap/tidb/tests/realtikvtest" + "github.com/stretchr/testify/require" +) + +// TestBitCastInTiKV see issue: https://github.com/pingcap/tidb/issues/56494 +func TestBitCastInTiKV(t *testing.T) { + store := realtikvtest.CreateMockStoreAndSetup(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("drop table if exists t1") + defer tk.MustExec("drop table if exists t1") + tk.MustExec("create table t1(a bit(24))") + tk.MustExec("insert into t1 values(0xffffff)") + err := tk.QueryToErr("select a from t1 where false not like convert(a, char)") + require.EqualError(t, err, "[tikv:3854]Cannot convert string '\\xFF\\xFF\\xFF' from binary to utf8mb4") +} diff --git a/tests/realtikvtest/pushdowntest/main_test.go b/tests/realtikvtest/pushdowntest/main_test.go new file mode 100644 index 0000000000000..fc34188dac29d --- /dev/null +++ b/tests/realtikvtest/pushdowntest/main_test.go @@ -0,0 +1,25 @@ +// Copyright 2024 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 pushdowntest + +import ( + "testing" + + "github.com/pingcap/tidb/tests/realtikvtest" +) + +func TestMain(m *testing.M) { + realtikvtest.RunTestMain(m) +} diff --git a/tests/realtikvtest/sessiontest/session_fail_test.go b/tests/realtikvtest/sessiontest/session_fail_test.go index b4220ce56a2ff..6aa93bf456c27 100644 --- a/tests/realtikvtest/sessiontest/session_fail_test.go +++ b/tests/realtikvtest/sessiontest/session_fail_test.go @@ -65,10 +65,13 @@ func TestGetTSFailDirtyState(t *testing.T) { ctx := failpoint.WithHook(context.Background(), func(ctx context.Context, fpname string) bool { return fpname == "github.com/pingcap/tidb/pkg/session/mockGetTSFail" }) - _, err := tk.Session().Execute(ctx, "select * from t") - if config.GetGlobalConfig().Store == "unistore" { + rss, err := tk.Session().Execute(ctx, "select * from t") + if config.GetGlobalConfig().Store == config.StoreTypeUniStore { require.Error(t, err) } else { + for _, rs := range rss { + rs.Close() + } require.NoError(t, err) } @@ -322,3 +325,10 @@ func TestTiKVClientReadTimeout(t *testing.T) { explain = fmt.Sprintf("%v", rows[0]) require.Regexp(t, ".*TableReader.* root time:.*, loops:.* cop_task: {num: 1, .*num_rpc:(3|4|5).*", explain) } + +func TestIssue57530(t *testing.T) { + store := realtikvtest.CreateMockStoreAndSetup(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use information_schema") + tk.MustQuery("select * from TIKV_REGION_STATUS where table_id = 81920").Check(testkit.Rows()) +} diff --git a/tests/realtikvtest/testkit.go b/tests/realtikvtest/testkit.go index 8ea85a7b7bff5..02940ef6d900a 100644 --- a/tests/realtikvtest/testkit.go +++ b/tests/realtikvtest/testkit.go @@ -17,6 +17,7 @@ package realtikvtest import ( + "context" "flag" "fmt" "strings" @@ -25,6 +26,7 @@ import ( "time" "github.com/pingcap/tidb/pkg/config" + "github.com/pingcap/tidb/pkg/ddl" "github.com/pingcap/tidb/pkg/domain" "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/session" @@ -89,6 +91,8 @@ func RunTestMain(m *testing.M) { // backoff function will lead to sleep, so there is a high probability of goroutine leak while it's doing backoff. goleak.IgnoreTopFunction("github.com/tikv/client-go/v2/config/retry.(*Config).createBackoffFn.newBackoffFn.func2"), goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + // the resolveFlushedLocks goroutine runs in the background to commit or rollback locks. + goleak.IgnoreAnyFunction("github.com/tikv/client-go/v2/txnkv/transaction.(*twoPhaseCommitter).resolveFlushedLocks.func1"), } callback := func(i int) int { // wait for MVCCLevelDB to close, MVCCLevelDB will be closed in one second @@ -118,15 +122,21 @@ func CreateMockStoreAndDomainAndSetup(t *testing.T, opts ...mockstore.MockTiKVSt if *WithRealTiKV { var d driver.TiKVDriver + storeBak := config.GetGlobalConfig().Store config.UpdateGlobal(func(conf *config.Config) { conf.TxnLocalLatches.Enabled = false conf.KeyspaceName = *KeyspaceName + conf.Store = config.StoreTypeTiKV }) store, err = d.Open(*TiKVPath) require.NoError(t, err) - + require.NoError(t, ddl.StartOwnerManager(context.Background(), store)) dom, err = session.BootstrapSession(store) require.NoError(t, err) + // TestGetTSFailDirtyState depends on the dirty state to work, i.e. some + // special branch on uni-store, else it causes DATA RACE, so we need to switch + // back to make sure it works, see https://github.com/pingcap/tidb/issues/57221 + config.GetGlobalConfig().Store = storeBak sm := testkit.MockSessionManager{} dom.InfoSyncer().SetSessionManager(&sm) tk := testkit.NewTestKit(t, store) @@ -158,6 +168,7 @@ func CreateMockStoreAndDomainAndSetup(t *testing.T, opts ...mockstore.MockTiKVSt t.Cleanup(func() { dom.Close() + ddl.CloseOwnerManager() require.NoError(t, store.Close()) transaction.PrewriteMaxBackoff.Store(20000) view.Stop()